[hibernate-commits] Hibernate SVN: r19714 - in core/branches/gradle2: hibernate-release and 22 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Jun 10 12:31:34 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-06-10 12:31:26 -0400 (Thu, 10 Jun 2010)
New Revision: 19714

Added:
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Core_Reference_Guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Revision_History.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/readonly.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/legal_notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/quickstart.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/readonly.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/legal_notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/quickstart.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/readonly.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/legal_notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/quickstart.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/legal_notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/Book_Info.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/Hibernate_Reference.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/author_group.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/architecture.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/association_mapping.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/basic_mapping.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/batch.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/best_practices.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/bibliography.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/collection_mapping.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/component_mapping.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/configuration.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/events.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_mappings.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_parentchild.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_weblog.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/filters.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/inheritance_mapping.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/performance.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/persistent_classes.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/portability.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/preface.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_criteria.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_hql.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_sql.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/readonly.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/session_api.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/toolset_guide.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/transactions.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/tutorial.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/xml.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Conventions.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Feedback.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Legal_Notice.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pot/legal_notice.pot
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/quickstart.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/readonly.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/legal_notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/publican.cfg
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Book_Info.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Hibernate_Reference.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/author_group.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/architecture.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/association_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/basic_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/batch.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/best_practices.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/bibliography.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/collection_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/component_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/configuration.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/events.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_mappings.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_parentchild.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_weblog.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/filters.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/inheritance_mapping.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/performance.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/persistent_classes.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/portability.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/preface.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_criteria.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_hql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_sql.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/quickstart.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/readonly.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/session_api.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/toolset_guide.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/transactions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/tutorial.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/xml.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Conventions.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Feedback.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Legal_Notice.po
   core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/legal_notice.po
Removed:
   core/branches/gradle2/documentation/manual/
Modified:
   core/branches/gradle2/hibernate-release/hibernate-release.gradle
Log:
migrated docs to hibernate-release module (still think they ultimately fit better in hibernate-core) and finished adding translations to gradle build

Modified: core/branches/gradle2/hibernate-release/hibernate-release.gradle
===================================================================
--- core/branches/gradle2/hibernate-release/hibernate-release.gradle	2010-06-10 16:22:34 UTC (rev 19713)
+++ core/branches/gradle2/hibernate-release/hibernate-release.gradle	2010-06-10 16:31:26 UTC (rev 19714)
@@ -29,7 +29,7 @@
 
 jdocbook {
     masterSourceDocumentName = 'HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.xml'
-    translation 'fr-FR'
+    translations = ['de-DE', 'es-ES', 'fr-FR', 'ja-JP', 'ko-KR', 'pt-BR', 'zh-CN']
     profiling {
         enabled = true
     }

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,313 @@
+# translation of Book_Info.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007, 2010 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-01-10 09:33+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, fuzzy, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Hibernate Core Referenz-Handbuch"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr ""
+
+#~ msgid "The JBoss Hibernate Core 3.3.2.GA Reference Guide"
+#~ msgstr "Das JBoss Hibernate Core 3.3.2.GA Referenz-Handbuch"
+
+#~ msgid ""
+#~ "by Gavin King, Christian Bauer, Max Rydahl Andersen, Emmanuel Bernard, "
+#~ "and Steve Ebersole and thanks to James Cobb (Graphic Design) and Cheyenne "
+#~ "Weaver (Graphic Design)"
+#~ msgstr ""
+#~ "von Gavin King, Christian Bauer, Max Rydahl Andersen, Emmanuel Bernard "
+#~ "und Steve Ebersole. Wir danken auch James Cobb (Grafisches Design) und "
+#~ "Cheyenne Weaver (Grafisches Design)"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,315 @@
+# translation of Feedback.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007, 2010 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-12-03T00:15:25\n"
+"PO-Revision-Date: 2010-01-11 10:23+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Feedback"
+msgstr "Feedback"
+
+#. Tag: para
+#, 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 ""
+"Falls SIe einen Tippfehler in diesem Handbuch finden oder eine Idee dazu haben "
+"wie wir es verbessern können, so würden wir uns freuen, von Ihnen zu hören! "
+"Machen Sie eine Meldung in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> zum "
+"Produkt: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Komponente: <emphasis>Doc</"
+"emphasis>. Falls Sie einen Vorschlag zur Verbesserung der Dokumentation haben, "
+"versuchen Sie bitte so genau wie möglich zu sein. Falls Sie einen Fehler finden, "
+"informieren Sie uns bitte zur Nummer des Abschnitts und geben Sie einen Teil "
+"des umgebenden Texts an, damit wir diesen leichter finden."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,14 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-02-11T05:38:14\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Core_Reference_Guide.po
===================================================================

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,29 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-02-11T05:38:14\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Revision_History.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Revision_History.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/Revision_History.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,311 @@
+# translation of Revision_History.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007, 2010 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Revision_History\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-01-11 10:44+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Revision History"
+msgstr "Änderungsverzeichnis"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Ben"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Jared"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Richard"
+msgstr ""
+
+#. Tag: member
+#, no-c-format
+msgid "Merged with EAP5 and translations added"
+msgstr "Mit EAP5 verbunden und Übersetzungen hinzugefügt"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,149 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-02-11T05:38:14\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr ""
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr ""
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,899 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "Architektur"
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "Übersicht"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr "Eine (sehr) hohe Ansicht der Hibernate-Architektur:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We do not have the scope in this document to provide a more detailed view of "
+"all the runtime architectures available; Hibernate is flexible and supports "
+"several different approaches. We will, however, show the two extremes: "
+"\"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+"Wir würden gerne eine detaillierte Ansicht der Runtime-Architektur zeigen, "
+"jedoch ist Hibernate leider flexibel und unterstützt mehrere "
+"Vorgehensweisen. Daher erläutern wir hier die beiden Extreme. Bei der "
+"\"abgespeckten\" Architektur liefert die Anwendung ihre eigenen JDBC-"
+"Verbindungen und verwaltet ihre eigenen Transaktionen. Diese Vorgehensweise "
+"verwendet einen minimalen Teilsatz der APIs von Hibernate:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This next diagram illustrates how Hibernate utilizes database and "
+"configuration data to provide persistence services, and persistent objects, "
+"to the application."
+msgstr ""
+"Dieses Diagram zeigt, wie Hibernate die Datenbank und die "
+"Konfigurationsdaten verwendet, um Persistenzdienste (und persistente "
+"Objekte) für die Anwendung zu liefern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The \"minimal\" architecture has the application provide its own JDBC "
+"connections and manage its own transactions. This approach uses a minimal "
+"subset of Hibernate's APIs:"
+msgstr ""
+"Wir würden gerne eine detaillierte Ansicht der Runtime-Architektur zeigen, "
+"jedoch ist Hibernate leider flexibel und unterstützt mehrere "
+"Vorgehensweisen. Daher erläutern wir hier die beiden Extreme. Bei der "
+"\"abgespeckten\" Architektur liefert die Anwendung ihre eigenen JDBC-"
+"Verbindungen und verwaltet ihre eigenen Transaktionen. Diese Vorgehensweise "
+"verwendet einen minimalen Teilsatz der APIs von Hibernate:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The \"comprehensive\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+"Die \"vollständige\" Architektur zieht die Anwendung von den zu Grunde "
+"liegenden JDBC/JTA APIs ab, so dass Hibernate sich um Details kümmern kann."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr ""
+"Nachfolgend sehen Sie einige Definitionen von Objekten innerhalb der "
+"Diagramme:"
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A threadsafe, immutable cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can "
+"hold an optional (second-level) cache of data that is reusable between "
+"transactions at a process, or cluster, level."
+msgstr ""
+"Ein thread-sicheres (unveränderliches) Cache kompilierter Mappings für eine "
+"einzelne Datenbank. Eine Factory für <literal>Session</literal> und ein "
+"Client von <literal>ConnectionProvider</literal>. Kann über ein optionales "
+"Datencache (zweite Ebene) verfügen, das zwischen Transaktionen "
+"wiederverwendet werden kann, sei es auf Prozess- oder auch auf Cluster-Ebene."
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. It wraps a JDBC connection and is "
+"a factory for <literal>Transaction</literal>. <literal>Session</literal> "
+"holds a mandatory first-level cache of persistent objects that are used when "
+"navigating the object graph or looking up objects by identifier."
+msgstr ""
+"Ein aus einem Thread bestehendes, kurzlebiges Objekt, dass einen Dialog "
+"zwischen der Anwendung und dem persistenten Speicher repräsentiert. Wrappt "
+"eine JDBC-Verbindung. Factory für <literal>Transaction</literal>. Enthält "
+"einen obligatorischen Cachespeicher persistenter Objekte (auf erster Ebene), "
+"die bei der Navigation des Objektgraphs oder bei der Suche nach Objekten "
+"durch den Bezeichner verwendet werden."
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "Persistente Objekte und Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These can be ordinary JavaBeans/POJOs. They are "
+"associated with exactly one <literal>Session</literal>. Once the "
+"<literal>Session</literal> is closed, they will be detached and free to use "
+"in any application layer (for example, directly as data transfer objects to "
+"and from presentation)."
+msgstr ""
+"Kurzlebige, aus einem Thread bestehende Objekte, die persistenten Status und "
+"Unternehmensfunktionen beinhalten. Dabei kann es sich um gewöhnliche "
+"JavaBeans/POJOs handeln. Ihre Besonderheit besteht darin, dass sie zum "
+"aktuellen Zeitpunkt mit (genau einer) <literal>Session</literal> verbunden "
+"sind. Sobald die <literal>Session</literal> geschlossen wird, lösen sie sich "
+"und können innerhalb jeder Anwendungsschicht (etwa als direkte "
+"Datentransferobjekte einer Präsentation) verwendet werden."
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "Temporäre und abgesetzte Objekte und Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not yet persisted, or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"Instanzen persistenter Klassen, die zum aktuellen Zeitpunkt mit keiner "
+"<literal>Session</literal> verbunden sind. Sie können von der Anwendung "
+"instanziiert worden und (noch) nicht persistiert oder von einer "
+"geschlossenen <literal>Session</literal> instanziiert worden sein."
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "Transaktion (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. It abstracts the application from the "
+"underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> "
+"might span several <literal>Transaction</literal>s in some cases. However, "
+"transaction demarcation, either using the underlying API or "
+"<literal>Transaction</literal>, is never optional."
+msgstr ""
+"(Optional) Ein aus einem Thread bestehendes, kurzlebiges Objekt, das von der "
+"Anwendung zur Bestimmung elementarer Arbeitseinheiten verwendet wird. "
+"Abstrahiert die Anwendung von der zu Grunde liegenden JDBC-, JTA- oder CORBA-"
+"Transaktion. Eine <literal>Session</literal> kann manchmal mehrere "
+"<literal>Transaction</literal>s umfassen. Transaktionsabgrenzung, ob unter "
+"Verwendung der zu Grunde liegenden API oder <literal>Transaction</literal>, "
+"ist jedoch nie optional!"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"(Optional) A factory for, and pool of, JDBC connections. It abstracts the "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. It is not exposed to application, but it "
+"can be extended and/or implemented by the developer."
+msgstr ""
+"(Optional) Eine Factory für (und ein Pool von) JDBC-Verbindungen. "
+"Abstrahiert die Anwendung von der zu Grunde liegenden <literal>Datasource</"
+"literal> oder <literal>DriverManager</literal>. Nicht der Anwendung "
+"ausgesetzt, kann jedoch vom Entwickler erweitert/implementiert werden."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. It is not "
+"exposed to the application, but it can be extended and/or implemented by the "
+"developer."
+msgstr ""
+"(Optional) Eine Factory für <literal>Transaction</literal>-Instanzen. Nicht "
+"der Anwendung ausgesetzt, kann jedoch durch den Entwickler erweitert/"
+"implementiert werden."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "Erweiterungsschnittstellen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate offers a range of optional extension interfaces you can implement "
+"to customize the behavior of your persistence layer. See the API "
+"documentation for details."
+msgstr ""
+"Hibernate bietet zahlreiche optionale Erweiterungsschnittstellen zur "
+"Implemetierung an, mit denen Sie das Verhalten Ihrer Persistenzschicht Ihren "
+"individuellen Wünschen anpassen können. Weitere Informationen finden Sie in "
+"der API-Dokumentation."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Given a \"minimal\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC "
+"directly."
+msgstr ""
+"Bei einer \"abgespeckten\" Architektur umgeht die Anwendung "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> und/"
+"oder <literal>ConnectionProvider</literal> APIs kommunizieren direkt mit JTA "
+"oder JDBC."
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "Instanzstatus"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of a persistent class can be in one of three different states. "
+"These states are defined in relation to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context. The three different states are as follows:"
+msgstr ""
+"Der Status der Instanz einer persistenten Klasse kann drei Formen haben, die "
+"unter Berücksichtigung eines <emphasis>Persistenzkontexts</emphasis> (sog. "
+"\"Persistence Context\") definiert sind. Das Hibernate <literal>Session</"
+"literal>-Objekt ist der Persistenzkontext:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "transient"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The instance is not associated with any persistence context. It has no "
+"persistent identity or primary key value."
+msgstr ""
+"Die Instanz ist nicht (und war auch nie) mit einem Persistenzkontext "
+"assoziiert. Sie besitzt keine persistente Identität (Wert des primären "
+"Kernbegriffs)."
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "persistent"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and can have a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity in relation to the in-memory location of the object."
+msgstr ""
+"Die Instanz wird zum aktuellen Zeitpunkt mit einem Persistenzkontext "
+"assoziiert. Sie besitzt eine persistente Identität (Wert des primären "
+"Kernbegriffs) und möglicherweise eine korrespondierende Reihe in der "
+"Datenbank. Für einen bestimmten Persistenzkontext <emphasis>garantiert</"
+"emphasis> Hibernate, dass die persistente Identität äquivalent zur Java "
+"Identität (Speicherstelle des Objekts) ist."
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "detached (\"abgesetzt\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and can have a corresponding row in the database. "
+"For detached instances, Hibernate does not guarantee the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"Die Instanz war vormals mit einem Persistenzkontext assoziiert, aber der "
+"Kontext wurde geschlossen oder die Instanz in einem anderen Vorgang "
+"serialisiert. Sie besitzt eine persistente Identität und möglicherweise eine "
+"korrespondierende Reihe in der Datenbank. Für Instanzen im abgesetzten "
+"Status (\"detached\") garantiert Hibernate keine Verbindung zwischen "
+"persistenter Identität und Java-Identität."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "JMX-Integration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"JMX is the J2EE standard for the management of Java components. Hibernate "
+"can be managed via a JMX standard service. AN MBean implementation is "
+"provided in the distribution: <literal>org.hibernate.jmx.HibernateService</"
+"literal>."
+msgstr ""
+"JMX ist der J2EE-Standard für das Management von Java-Komponenten. Hibernate "
+"kann mittels eines JMX-Standardservice verwaltet werden. In der Distribution "
+"wird ein MBean in <literal>org.hibernate.jmx.HibernateService</literal> "
+"bereitgestellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For an example of how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. JBoss AS also provides "
+"these benefits if you deploy using JMX:"
+msgstr ""
+"Ein Beispiel wie Hibernate als ein JMX-Dienst auf dem JBoss "
+"Applikationsserver ausgeführt wird, finden Sie im JBoss Benutzerhandbuch. "
+"Auf dem JBoss AS genießen Sie die gleichen Vorteile, wenn Sie JMX verwenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means that you no longer have to manually open and close "
+"the <literal>Session</literal>; this becomes the job of a JBoss EJB "
+"interceptor. You also do not have to worry about transaction demarcation in "
+"your code (if you would like to write a portable persistence layer use the "
+"optional Hibernate <literal>Transaction</literal> API for this). You call "
+"the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>Session Management:</emphasis> Der Lebenszyklus der Hibernate "
+"<literal>Session</literal> kann automatisch an den Gültigkeitsbereich einer "
+"JTA-Transaktion gebunden werden. Das bedeutet, dass Sie die "
+"<literal>Session</literal> nicht mehr manuell öffnen und schließen müssen, "
+"da diese Aufgabe von einem JBoss EJB-Interzeptor übernommen wird. Sie müssen "
+"sich auch nicht um die Transaktionsabgrenzung in Ihrem Code kümmern (außer "
+"natürlich Sie möchten eine übertragbare Persistenzschicht schreiben, in "
+"welchem Fall Sie die optionale Hibernate <literal>Transaction</literal>-API "
+"verwenden). Sie rufen den <literal>HibernateContext</literal> auf, um auf "
+"eine <literal>Session</literal> zuzugreifen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed "
+"using a JBoss service deployment descriptor in an EAR and/or SAR file, as it "
+"supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still need to name all your "
+"mapping files in the deployment descriptor. If you use the optional HAR "
+"deployment, JBoss will automatically detect all mapping files in your HAR "
+"file."
+msgstr ""
+"<emphasis>HAR-Deployment:</emphasis> In der Regel führen Sie den Hibernate "
+"JMX-Dienst unter Verwendung eines JBoss Service Deployment-Deskriptors (in "
+"einer EAR- und/oder SAR-Datei) aus. Dabei werden die üblichen "
+"Konfigurationsoptionen einer Hibernate <literal>SessionFactory</literal> "
+"unterstützt. Sie müssen jedoch noch alle Ihre Mapping-Dateien im Deployment-"
+"Deskriptor benennen. Falls Sie sich für die Benutzung des optionalen HAR-"
+"Deployments entscheiden, wird JBoss automatisch sämtliche Mapping-Dateien in "
+"Ihrer HAR-Datei auffinden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"Weitere Informationen zu diesen Optionen finden Sie im JBoss AS "
+"Benutzerhandbuch."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another feature available as a JMX service is runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\" /> for more "
+"information."
+msgstr ""
+"Ein weiteres, als JMX-Dienst verfügbares Feature sind Runtime Hibernate "
+"Statistiken, siehe <xref linkend=\"configuration-optional-statistics\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "JCA-Support"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate can also be configured as a JCA connector. Please see the website "
+"for more information. Please note, however, that at this stage Hibernate JCA "
+"support is under development."
+msgstr ""
+"Hibernate kann auch als ein JCA-Konnektor konfiguriert werden. Weitere "
+"Informationen dazu finden Sie auf der Website. Bitte beachten Sie, dass der "
+"Hibernate JCA-Support noch als experimentell gilt."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Contextual sessions"
+msgstr "Kontextbezogene Sessions"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" session, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks, such as Spring or Pico, which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"Die meisten Hibernate verwendenen Anwendungen benötigen irgendeine Form von "
+"\"kontextbezogenen\" Sessions (sog. \"contextual sessions\"), bei denen eine "
+"bestimmte Session innerhalb des gesamten Gültigkeitsbereichs eines "
+"bestimmten Kontextes gültig ist. Allerdings ist die Definition darüber, was "
+"einen Kontext ausmacht in der Regel unterschiedlich, und unterschiedliche "
+"Kontexte definieren unterschiedliche Gültigkeitsbereiche von aktuell. "
+"Anwendungen, die eine frühere Version als Hibernate 3.0 verwenden, neigen "
+"dazu Ihre eigenen <literal>ThreadLocal</literal>-basierten kontextbezogenen "
+"Sessions zu benutzen, Helferklassen wie <literal>HibernateUtil</literal> "
+"oder Rahmensysteme Dritter (wie Spring oder Pico), die Proxy/Interception-"
+"basierte kontextbezogene Sessions bereitstellen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. Given "
+"the maturity of the numerous stand-alone <literal>JTA TransactionManager</"
+"literal> implementations, most, if not all, applications should be using "
+"<literal>JTA</literal> transaction management, whether or not they are "
+"deployed into a <literal>J2EE</literal> container. Based on that, the "
+"<literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+"Ab Version 3.0.1 verfügt Hibernate über eine <literal>SessionFactory."
+"getCurrentSession()</literal>-Methode. Ursprünglich wurde dabei vom Gebrauch "
+"der <literal>JTA</literal>-Transaktionen ausgegangen, bei denen die "
+"<literal>JTA</literal>-Transaktion sowohl den Gültigkeitsbereich als auch "
+"den Kontext einer aktuellen Session bestimmt. Das Hibernate-Team ist der "
+"Ansicht, dass in Anbetracht der zahlreichen selbständigen <literal>JTA "
+"TransactionManager</literal>-Implementierungen, die meisten (wenn nicht "
+"alle) Anwendungen das <literal>JTA</literal>-Transaktionsmanagement "
+"verwenden sollten - unabhängig davon, ob sie in einen <literal>J2EE</"
+"literal>-Container deployt werden oder nicht. Davon ausgehend sind die "
+"<literal>JTA</literal>-basierten, kontextbezogenen Sessions alles was Sie "
+"benötigen dürften."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, "
+"and a new configuration parameter, <literal>hibernate."
+"current_session_context_class</literal>, have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"Seit Version 3.1 ist die Bearbeitung hinter <literal>SessionFactory."
+"getCurrentSession()</literal> nun einbindbar. Eine neue "
+"Erweiterungsschnittstelle (<literal>org.hibernate.context."
+"CurrentSessionContext</literal>) sowie ein neuer Konfigurationsparameter "
+"(<literal>hibernate.current_session_context_class</literal>) kamen hinzu, um "
+"die Einbindbarkeit von dem die aktuelle Session definierenden "
+"Gültigkeitsbereich und Kontext zu ermöglichen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface:"
+msgstr ""
+"Weitere Informationen zu diesem Vertrag finden Sie in den Javadocs für das "
+"<literal>org.hibernate.context.CurrentSessionContext</literal>-Interface. Es "
+"wird eine einzelne Methode definiert <literal>currentSession()</literal>, "
+"mit der die Implementierung für die Verfolgung der aktuellen "
+"kontextbezogenen Session verantwortlich ist. Hibernate wird mit drei "
+"Implementierungen dieses Interface geliefert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: current sessions "
+"are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal> - aktuelle "
+"Sessions werden verfolgt und durch eine <literal>JTA</literal>-Transaktion "
+"begrenzt. Die Bearbeitung läuft hier genauso wie bei der älteren, "
+"ausschließlich mit JTA arbeitenden Vorgehensweise. Weitere Informationen "
+"finden Sie in Javadocs."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current "
+"sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - "
+"aktuelle Sessions werden mittels Ausführungs-Thread verfolgt. Auch hierzu "
+"finden Sie weitere Informationen in Javadocs."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal> - aktuelle "
+"Sessions werden mittels Ausführungs-Thread verfolgt. Allerdings müssen Sie "
+"hier selbst eine <literal>Session</literal>-Instanz mit statischen Methoden "
+"an diese Klasse binden, eine <literal>Session</literal> wird nie geöffnet, "
+"geräumt oder geschlossen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model. This is also known and used as "
+"<emphasis>session-per-request</emphasis>. The beginning and end of a "
+"Hibernate session is defined by the duration of a database transaction. If "
+"you use programmatic transaction demarcation in plain JSE without JTA, you "
+"are advised to use the Hibernate <literal>Transaction</literal> API to hide "
+"the underlying transaction system from your code. If you use JTA, you can "
+"utilize the JTA interfaces to demarcate transactions. If you execute in an "
+"EJB container that supports CMT, transaction boundaries are defined "
+"declaratively and you do not need any transaction or session demarcation "
+"operations in your code. Refer to <xref linkend=\"transactions\" /> for more "
+"information and code examples."
+msgstr ""
+"Die ersten beiden Implementierungen bieten ein \"eine Session - eine "
+"Datenbanktransaktion\"-Programmiermodell, das auch als <emphasis>Session-per-"
+"Request</emphasis> (\"Session pro Anfrage\") bekannt ist und verwendet wird. "
+"Anfang und Ende einer Hibernate-Session werden durch die Dauer der "
+"Datenbanktransaktion bestimmt. Falls Sie eine progammatische "
+"Transaktionsabgrenzung in einfachem JSE ohne JTA verwenden, so empfehlen wir "
+"die Verwendung der Hibernate <literal>Transaction</literal>-API, um das zu "
+"Grunde liegende Transaktionssystem vor Ihrem Code zu verbergen. Falls Sie "
+"JTA verwenden, so benutzen Sie die JTA-Schnittstellen um Transaktionen "
+"abzugrenzen. Falls Sie einen EJB-Container ausführen, der CMT unterstützt, "
+"sind die Transaktionsrahmen deklarativ definiert, und Sie benötigen in Ihrem "
+"Code keine Transaktions- oder Sessionabgrenzungen. Weitere Informationen und "
+"Code-Beispiele finden Sie unter <xref linkend=\"transactions\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. For backwards "
+"compatibility, if this configuration parameter is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use. For the three out-of-the-box implementations, "
+"however, there are three corresponding short names: \"jta\", \"thread\", and "
+"\"managed\"."
+msgstr ""
+"Der <literal>hibernate.current_session_context_class</literal> "
+"Konfigurationsparameter definiert, welche <literal>org.hibernate.context."
+"CurrentSessionContext</literal>-Implementierung verwendet wird. Bitte "
+"beachten Sie, dass für Abwärtskompatibilität - falls dieser "
+"Konfigurationsparameter nicht eingestellt, sondern <literal>org.hibernate."
+"transaction.TransactionManagerLookup</literal> konfiguriert ist - Hibernate "
+"<literal>org.hibernate.context.JTASessionContext</literal> verwendet. "
+"Normalerweise benennt der Wert dieses Parameters lediglich die zu "
+"verwendende Implementierungsklasse für die drei gelieferten "
+"Implementierungen, jedoch existieren drei entsprechende Kurznamen \"jta\", "
+"\"thread\" sowie \"managed\"."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1425 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "Assoziations-Mappings"
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"Assoziations-Mappings sind häufig die am schwierigsten einzustellenden "
+"Aspekte. In diesem Abschnitt gehen wir Schritt für Schritt die einzelnen "
+"Fälle durch, wobei wir zunächst auf unidirektionale Mappings eingehen, ehe "
+"wir mit bidirektionalen Fällen weitermachen. In sämtlichen Beispielen werden "
+"<literal>Person</literal> und <literal>Address</literal> verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"Wir klassifizieren Assoziationen danach, ob sie zu einer intervenierenden "
+"Verbundtabelle mappen sowie nach Multiplizität."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"Nullbare Fremdschlüssel werden nicht als optimales Verfahren bei der "
+"herkömmlichen Datenmodellierung angesehen, daher verwenden wir in allen "
+"unseren Beispielen Fremdschlüssel die nicht Null sind. Das ist keine "
+"Anforderung von Hibernate und sämtliche Mappings funktionieren, wenn Sie die "
+"\"Nullability\"-Bedingungen aufheben."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "Unidirektionale Assoziationen"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-one"
+msgstr "many-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"Eine <emphasis>unidirektionale \"Many-to-One\"-Assoziation</emphasis> ist "
+"der gängigste Typ unidirektionaler Assoziationen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-one"
+msgstr "one-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"Eine <emphasis>unidirektionale \"One-to-One\"-Assoziation an einem "
+"Fremdschlüssel</emphasis> ist fast identisch. Der einzige Unterschied "
+"besteht in der Spalte der eindeutigen Bedingung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"Eine <emphasis>unidirektionale \"One-to-One\"-Assoziation an einem "
+"Primärschlüssel</emphasis> verwendet in der Regel einen speziellen id-"
+"Generator. (Bitte beachten Sie, dass wir in diesem Beispiel die Richtung der "
+"Assoziation umgedreht haben)."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-many"
+msgstr "\"One-to-Many\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"Eine <emphasis>unidirektionale \"One-to-Many\"-Assoziation an einem "
+"Fremdschlüssel</emphasis> ist sehr ungewöhnlich und wird nicht empfohlen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr ""
+"Wir halten die Verwendung einer Verbundtabelle (sog. \"Join-Table\") bei "
+"dieser Art von Assoziation für besser."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "Unidirektionale Assoziationen mit Verbundtabellen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"Eine <emphasis>unidirektionale \"One-to-Many\"-Assoziation an einer "
+"Verbundtabelle</emphasis> ist vorzuziehen. Bitte beachten Sie, dass durch "
+"die Spezifizierung von <literal>unique=\"true\"</literal>, die Multiplizität "
+"von \"Many-to-Many\" zu \"One-to-Many\" geändert wurde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"Eine <emphasis>unidirektionale \"Many-to-One\"-Assoziation an einer "
+"Verbundtabelle</emphasis> ist recht gängig, wenn es sich um eine optionale "
+"Assoziation handelt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Eine <emphasis>unidirektionale \"One-to-One\"-Assoziation an einer "
+"Verbundtabelle</emphasis> ist zwar sehr ungewöhnlich, aber möglich."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-many"
+msgstr "\"Many-to-Many\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr ""
+"Es gibt jedoch auch eine <emphasis>unidirektionale \"Many-to-Many\"-"
+"Assoziation</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Bidirektionale Assoziationen"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "\"One-to-Many\" / \"Many-to-One\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"Eine <emphasis>bidirektionale \"Many-to-One\"-Assoziation</emphasis> ist der "
+"gängigste Assoziationstyp. (Die standardmäßige \"Parent/Child\"-Beziehung)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"Falls Sie eine <literal>List</literal> (oder eine andere indizierte "
+"Collection) verwenden, müssen Sie die <literal>key</literal>-Spalte des "
+"Fremdschlüssels auf <literal>not null</literal> setzen und Hibernate die "
+"Assoziation von Collection-Seite aus verwalten lassen, um den Index jeden "
+"Elements aufrechtzuerhalten (die andere Seite durch Einstellung von "
+"<literal>update=\"false\"</literal> und <literal>insert=\"false\"</literal> "
+"somit invertierend):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Es ist wichtig, <literal>not-null=\"true\"</literal> im <literal>&lt;key&gt;"
+"</literal>-Element des Collection-Mappings zu definieren, falls die zu "
+"Grunde liegende Spalte des Fremdschlüssels <literal>NOT NULL</literal> ist. "
+"Deklarieren Sie nicht nur <literal>not-null=\"true\"</literal> für ein "
+"mögliches verschachteltes <literal>&lt;column&gt;</literal>-Element, sondern "
+"für das <literal>&lt;key&gt;</literal>-Element."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr ""
+"Eine <emphasis>bidirektionale \"One-to-One\"-Assoziation an einem "
+"Fremdschlüssel</emphasis> ist recht gängig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"Eine <emphasis>bidirektionale \"One-to-One\"-Assoziation an einem "
+"Primärschlüssel</emphasis> verwendet einen speziellen id-Generator."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "Bidirektionale Assoziationen mit Verbundtabellen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"Eine <emphasis>bidirektionale \"One-to-Many\"-Assoziation an einer "
+"Verbundtabelle</emphasis>. Bitte beachten Sie, dass <literal>inverse=\"true"
+"\"</literal> sich an beiden Enden der Assoziation, der Datenerfassung oder "
+"des \"Join\" befinden kann."
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "\"One-to-One\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Eine <emphasis>bidirektionale \"One-to-One\"-Assoziation an einer "
+"Verbundtabelle</emphasis> ist zwar ungewöhnlich, aber möglich."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"Desweiteren gibt es eine <emphasis>bidirektionale \"Many-to-Many\"-"
+"Assoziation</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "Komplexere Assoziations-Mappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"Komplexere Assoziationsverbünde sind <emphasis>sehr</emphasis> selten. "
+"Hibernate macht es möglich, auch komplexe Situationen durch Verwendung von "
+"im Mapping-Dokument eingebetteten SQL-Fragmenten zu berarbeiten. Wenn etwa "
+"eine Tabelle mit historischen Daten zu Kontoinformationen "
+"<literal>accountNumber</literal>, <literal>effectiveEndDate</literal> und "
+"<literal>effectiveStartDate</literal>-Spalten definiert, so lautet das "
+"Mapping wie folgt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"Anschließend kann eine Assoziation zur <emphasis>aktuellen</emphasis> "
+"Instanz gemappt werden (diejenige mit \"Null\" <literal>effectiveEndDate</"
+"literal>). Dies geschieht unter Verwendung von:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"Bei einem komplexeren Beispiel könnte etwa die Assoziation zwischen "
+"<literal>Employee</literal> und <literal>Organization</literal> in einer "
+"<literal>Employment</literal>-Tabelle voll historischer Beschäftigungsdaten "
+"geführt werden. Eine Assoziation zum <emphasis>aktuellsten</emphasis> "
+"Arbeitgeber eines Beschäftigten (derjenige mit dem aktuellsten "
+"<literal>startDate</literal>) könnte folgendermaßen gemappt werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"Diese Funktionalität erlaubt es Ihnen zwar kreativ zu sein, aber es ist in "
+"der Regel praktischer diese Fälle mittels HQL oder einer Kriterienanfrage zu "
+"behandeln."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;person&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"person\" constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint \n"
+#~ "    not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint\n"
+#~ "    not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, \n"
+#~ "    primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"people\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Person\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "   &lt;id name=\"id\"/&gt;\n"
+#~ "   ...\n"
+#~ "   &lt;many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "   &lt;id name=\"id\"/&gt;\n"
+#~ "   ...\n"
+#~ "   &lt;list name=\"people\"&gt;\n"
+#~ "      &lt;key column=\"addressId\" not-null=\"true\"/&gt;\n"
+#~ "      &lt;list-index column=\"peopleIdx\"/&gt;\n"
+#~ "      &lt;one-to-many class=\"Person\"/&gt;\n"
+#~ "   &lt;/list&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "   &lt;one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"address\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;person&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"people\" inverse=\"true\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;properties name=\"currentAccountKey\"&gt;\n"
+#~ "    &lt;property name=\"accountNumber\" type=\"string\" not-null=\"true\"/"
+#~ "&gt;\n"
+#~ "    &lt;property name=\"currentAccount\" type=\"boolean\"&gt;\n"
+#~ "        &lt;formula&gt;case when effectiveEndDate is null then 1 else 0 "
+#~ "end&lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "&lt;/properties&gt;\n"
+#~ "&lt;property name=\"effectiveEndDate\" type=\"date\"/&gt;\n"
+#~ "&lt;property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\"&gt;\n"
+#~ "    &lt;column name=\"accountNumber\"/&gt;\n"
+#~ "    &lt;formula&gt;'1'&lt;/formula&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "&lt;join&gt;\n"
+#~ "    &lt;key column=\"employeeId\"/&gt;\n"
+#~ "    &lt;subselect&gt;\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    &lt;/subselect&gt;\n"
+#~ "    &lt;many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/&gt;\n"
+#~ "&lt;/join&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,6283 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "Grundlagen des O/R Mappings"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "Mapping-Deklaration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations and not table declarations."
+msgstr ""
+"Objekt/relationale Mappings sind in der Regel in einem XML-Dokument "
+"definiert. Das Mapping-Dokument ist so angelegt, dass es lesbar und manuell "
+"veränderbar ist. Die Mapping-Sprache ist Java-zentrisch, d.h. Mappings sind "
+"um die Deklarationen persistenter Klassen und nicht um Tabellen-"
+"Deklarationen konstruiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that even though many Hibernate users choose to write the XML by "
+"hand, a number of tools exist to generate the mapping document. These "
+"include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+"Bitte beachten Sie, dass - obwohl viele Benutzer von Hibernate XML manuell "
+"schreiben - es eine Reihe von Tools zur Generierung des Mapping-Dokuments "
+"gibt, darunter XDoclet, Middlegen und AndroMDA."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is an example mapping:"
+msgstr "Beginnen wir mit einem Beispiel-Mapping:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe, however, the document elements and attributes that are used by "
+"Hibernate at runtime. The mapping document also contains some extra optional "
+"attributes and elements that affect the database schemas exported by the "
+"schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+"Wir gehen nun auf den Inhalt des Mapping-Dokuments ein. Es werden nur die "
+"von Hibernate zur Runtime verwendeten Elemente und Attribute des Dokuments "
+"erläutert. Das Mapping-Dokument enthält außerdem einige optionale Attribute "
+"und Elemente, die Einfluss auf die vom Schema-Export-Tool exportierten "
+"Datenbankschemas haben. (Zum Beispiel das <literal> not-null</literal>-"
+"Attribut)."
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD can be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate "
+"will always look for the DTD in its classpath first. If you experience "
+"lookups of the DTD using an Internet connection, check the DTD declaration "
+"against the contents of your classpath."
+msgstr ""
+"Alle XML-Mappings sollten den gezeigten doctype deklarieren. Die "
+"tatsächliche Dokumenttyp-Definition (\"DTD\") kann in der URL oben, im "
+"Verzeichnis <literal>hibernate-x.x.x/src/org/hibernate </literal> oder in "
+"<literal>hibernate3.jar</literal> gefunden werden. Hibernate wird stets "
+"zuerst in seinem Klassenpfad nach der DTD suchen. Falls es bei Ihnen zu "
+"Suchläufen der DTD mittels einer Internetverbindung kommt, überprüfen Sie "
+"Ihre DTD-Deklaration hinsichtlich der Inhalte Ihres Klassenpfads."
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "EntityResolver"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will first attempt to resolve DTDs in its classpath. It does this "
+"is by registering a custom <literal>org.xml.sax.EntityResolver</literal> "
+"implementation with the SAXReader it uses to read in the xml files. This "
+"custom <literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces:"
+msgstr ""
+"Wie bereits erwähnt, wird Hibernate zuerst versuchen, DTDs in seinem "
+"Klassenpfad aufzulösen. Dies geschieht, indem eine anwenderdefinierte "
+"<literal>org.xml.sax.EntityResolver</literal>-Implementierung mit dem "
+"SAXReader, der zum Lesen der xml-Dateien verwendet wird, registriert wird. "
+"Dieser anwenderorientierte <literal>EntityResolver</literal> erkennt zwei "
+"verschiedene \"systemId\"-Namensräume."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounters a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>. The resolver attempts to resolve these entities via the "
+"classloader which loaded the Hibernate classes."
+msgstr ""
+"ein <literal>hibernate namespace</literal> wird erkannt, sobald der "
+"\"Resolver\" (Auflöser) einer mit <literal>http://hibernate.sourceforge.net/"
+"</literal> beginnenden systemId begegnet. Der Resolver versucht diese "
+"Entities über den Klassenlader (sog. \"Classloader\"), der die Hibernate-"
+"Klassen geladen hat, aufzulösen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounters a systemId using a <literal>classpath://</literal> URL protocol. "
+"The resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"ein <literal>user namespace</literal> wird erkannt, sobald der Resolver "
+"einem <literal>classpath://</literal> URL-Protokoll verwendenden systemId "
+"begegnet. Der Resolver wird versuchen, diese Entities über (1) den aktuellen "
+"Thread-Kontext-Klassenlader und (2) den Klassenlader, der die Hibernate-"
+"Klassen geladen hat, aufzulösen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "Ein Beispiel der Verwendung des Benutzer-Namespacing:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"Wo <literal>types.xml</literal> eine Ressource in im <literal>your.domain</"
+"literal> Paket ist und eine anwenderdefinierte <xref linkend=\"mapping-types-"
+"custom\"/>-Typedef enthält."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Hibernate-mapping"
+msgstr "hibernate-mapping"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If they are "
+"specified, tablenames will be qualified by the given schema and catalog "
+"names. If they are missing, tablenames will be unqualified. The "
+"<literal>default-cascade</literal> attribute specifies what cascade style "
+"should be assumed for properties and collections that do not specify a "
+"<literal>cascade</literal> attribute. By default, the <literal>auto-import</"
+"literal> attribute allows you to use unqualified class names in the query "
+"language."
+msgstr ""
+"Dieses Element besitzt mehrere optionale Attribute. Die <literal>schema</"
+"literal> und <literal>catalog</literal>-Attribute spezifizieren, dass die in "
+"diesem Mapping aufgeführten Tabellen zum genannten Schema und/oder Katalog "
+"gehören. Falls bestimmt, werden Tabellennamen durch die gegebenen Schema- "
+"und Katalognamen definiert. Falls nicht vorhanden, so bleiben die "
+"Tabellennamen undefiniert. Das <literal>default-cascade</literal>-Attribut "
+"bestimmt, welcher Weitergabestil (sog. \"Cascade-Style\" für Properties und "
+"Collections angenommen werden sollte, die kein <literal>cascade</literal>-"
+"Attribut spezifizieren. Das <literal>auto-import</literal>-Attribut erlaubt "
+"die Verwendung undefinierter Klassennamen in der Abfragensprache in der "
+"Standardeinstellung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr "<literal>schema</literal> (optional): Der Name eines Datenbankschemas."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr ""
+"<literal>catalog</literal> (optional): Der Name eines Datenbankkatalogs."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): a default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (optional - die Standardeinstellung "
+"lautet <literal>none</literal>): Ein standardmäßiger Weitergabestil "
+"(\"Cascade-Style\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing all properties. "
+"It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (optional - der Standard ist "
+"<literal>property</literal>): Die Strategie, die Hibernate für den Zugriff "
+"auf alle Properties benutzen sollte. Kann eine anwenderdefinierte "
+"Implementierung von <literal>PropertyAccessor</literal> sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): the default value for unspecified <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>): Der Standardwert für nicht spezifizierte "
+"<literal>lazy</literal> Attribute von Klassen- und Collection-Mappings."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): specifies whether we can use unqualified class names of classes "
+"in this mapping in the query language."
+msgstr ""
+"<literal>auto-import</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>): Legt fest, ob in der Abfragensprache ein "
+"undefinierter Klassenname verwendet werden kann (von Klassen in diesem "
+"Mapping)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>package</literal> (optional): specifies a package prefix to use for "
+"unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (optional): Spezifiziert einen Paket-Präfix, der "
+"für undefinierte Klassennamen im Mapping-Dokument angenommen werden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you have two persistent classes with the same unqualified name, you "
+"should set <literal>auto-import=\"false\"</literal>. An exception will "
+"result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"Falls Sie zwei persistente Klassen mit demselben (undefinierten) Namen "
+"besitzen, sollten Sie die Einstellung <literal>auto-import=\"false\"</"
+"literal> vornehmen. Hibernate wird eine Ausnahme melden, wenn Sie versuchen, "
+"zwei Klassen demselben \"importierten\" Namen zuzuordnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>hibernate-mapping</literal> element allows you to nest several "
+"persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, "
+"however, good practice (and expected by some tools) to map only a single "
+"persistent class, or a single class hierarchy, in one mapping file and name "
+"it after the persistent superclass. For example, <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"Bitte beachten Sie, dass das <literal>hibernate-mapping</literal>-Element es "
+"Ihnen ermöglicht, mehrere persistente <literal>&lt;class&gt;</literal>-"
+"Mappings (wie oben dargestellt) zu verschachteln. Es ist jedoch eine gute "
+"Angewohnheit (und wird von einigen Tools vorausgesetzt) nur eine einzelne "
+"persistente Klasse (oder eine Einzelklassenhierarchie) in einer Mapping-"
+"Datei zu mappen und diese nach der persistenten Superklasse zu benennen, z."
+"B. <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal> oder - "
+"falls Sie \"Inheritance\" (d.h. Vererbung) verwenden - <literal>Animal.hbm."
+"xml</literal>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Class"
+msgstr "subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can declare a persistent class using the <literal>class</literal> "
+"element. For example:"
+msgstr ""
+"Sie können unter Verwendung des <literal>class</literal>-Elements eine "
+"persistente Klasse deklarieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the fully qualified Java class name of "
+"the persistent class or interface. If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (optional): Der vollständige Java-Klassenname der "
+"persistenten Klasse (oder des Interface). Falls dieses Attribut fehlt, wird "
+"angenommen, dass es sich um das Mapping für eine nicht-POJO Entity handelt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): the name of its database table."
+msgstr ""
+"<literal>table</literal> (optional - Standardeinstellung ist der "
+"undefinierte Klassenname): Der Name der Datenbanktabelle."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses that is used for "
+"polymorphic behavior. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (optional - Standard ist der "
+"Klassenname): Ein Wert, der zwischen individuellen Subklassen unterscheidet "
+"und für polymorphes Verhalten verwendet wird. Akzeptierte Werte sind "
+"<literal>null</literal> und <literal>not null</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (optional, Standardeinstellung <literal>true</"
+"literal>): Legt fest, dass die Instanzen der Klasse (nicht) variabel sind."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): overrides the schema name specified by "
+"the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>schema</literal> (optional): Setzt den vom Hauptverzeichnis "
+"<literal>&lt;hibernate-mapping&gt;</literal>-Element spezifizierten "
+"Schemanamen außer Kraft."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): overrides the catalog name specified "
+"by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>catalog</literal> (optional): Setzt den vom Hauptverzeichnis (\"Root"
+"\") <literal>&lt;hibernate-mapping&gt;</literal>-Element spezifizierten "
+"Katalognamen außer Kraft."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies an interface to use for lazy "
+"initializing proxies. You can specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (optional): Bestimmt ein zu verwendendes Interface "
+"für die Initialisierung von Proxies nur bei Bedarf (sog. \"Lazy Initializing "
+"Proxies\"). Sie können den Namen der Klasse selbst festlegen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and can contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (optional, Standardeinstellung "
+"<literal>false</literal>): Bestimmt, dass <literal>UPDATE</literal> SQL zur "
+"Runtime generiert wird und nur diejenigen Spalten enthalten soll, deren "
+"Werte sich geändert haben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (optional, Standardeinstellung "
+"<literal>false</literal>): Bestimmt, dass <literal>INSERT</literal> SQL zur "
+"Runtime generiert wird und nur diejenigen Spalten enthalten soll, deren "
+"Werte nicht \"Null\" sind."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional - defaults to "
+"<literal>false</literal>): specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. Only when a transient object has been "
+"associated with a new session using <literal>update()</literal>, will "
+"Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an "
+"<literal>UPDATE</literal> is actually required."
+msgstr ""
+"<literal>select-before-update</literal> (optional, Standardeinstellung "
+"<literal>false</literal>): Bestimmt, dass Hibernate <emphasis>nie</emphasis> "
+"ein SQL <literal>UPDATE</literal> durchführt, außer es ist ganz sicher, dass "
+"ein Objekt tatsächlich verändert wurde. In bestimmten Fällen (nur wenn ein "
+"transientes Objekt unter Verwendung von <literal>update()</literal> mit "
+"einer neuen Session in Verbindung gebracht wird), bedeutet dies, dass "
+"Hibernate ein extra SQL <literal>SELECT</literal> durchführen wird, um zu "
+"bestimmen, ob ein <literal>UPDATE</literal> tatsächlich erforderlich ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional - defaults to <literal>implicit</"
+"literal>): determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (optional, Standardeinstellung "
+"<literal>implicit</literal>): Bestimmt, ob implizite oder explizite "
+"Polymorphie für Anfragen verwendet wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition to be used when retrieving objects of "
+"this class."
+msgstr ""
+"<literal>where</literal> (optional) legt eine beliebige SQL <literal>WHERE</"
+"literal>-Bedingung zur Verwendung beim Aufruf von Objekten dieser Klasse fest"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (optional): Spezifiziert einen "
+"anwenderdefinierten <literal>ClassPersister</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for fetching instances of this class by "
+"identifier."
+msgstr ""
+"<literal>batch-size</literal> (optional, Standardeinstellung <literal>1</"
+"literal>) bestimmt eine Stapelgröße (sog. \"Batch Size\") für den Abruf von "
+"Instanzen dieser Klasse durch den Bezeichner."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>version</"
+"literal>): determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional, die Standardeinstellung lautet "
+"<literal>version</literal>): Bestimmt die Strategie für das optimistische "
+"Sperren (sog. \"Optimistic Locking\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): lazy fetching can be disabled by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (optional): Mit der Einstellung <literal>lazy=\"false"
+"\"</literal> deaktivieren Sie \"Lazy Fetching\" (d.h. das Nachladen "
+"assoziierter Objekte bei Bedarf) vollständig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional - defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times, potentially to "
+"different tables. It also allows entity mappings that are represented by "
+"Maps or XML at the Java level. In these cases, you should provide an "
+"explicit arbitrary name for the entity. See <xref linkend=\"persistent-"
+"classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+"<literal>entity-name</literal> (optional, Standardeinstellung ist der "
+"Klassenname): Hibernate3 ermöglicht das mehrfache Mappen einer Klasse "
+"(eventuell zu verschiedenen Tabellen) sowie durch Maps oder XML "
+"repräsentierte Entity-Mappings auf Java-Ebene. In diesen Fällen sollte Sie "
+"einen expliziten arbiträren Namen für die Entity bereitstellen. Unter <xref "
+"linkend=\"persistent-classes-dynamicmodels\"/> und <xref linkend=\"xml\"/> "
+"finden Sie weitere Information hierzu."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>check</literal> (optional): an SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (optional): Ein SQL-Ausdruck wird verwendet, um "
+"eine <emphasis>Datenüberprüfungs</emphasis>bedingung mehrerer Reihen für die "
+"automatische Schemagenerierung zu erstellen. "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. "
+"On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra "
+"column for fast updates once this option has been set to <literal>rowid</"
+"literal>. A ROWID is an implementation detail and represents the physical "
+"location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (optional): Hibernate kann so genannte ROWIDs bei "
+"Datenbanken verwenden, die z.B. Oracle unterstützen. Hibernate kann die "
+"Extraspalte von<literal>rowid</literal> für schnelle Aktualisierungen "
+"verwenden, wenn Sie diese Option mit der Einstellung <literal>rowid</"
+"literal> wählen. Eine ROWID ist ein Implementierungsdetail und repräsentiert "
+"den realen Standort eines gespeicherten Tupel."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): maps an immutable and read-only "
+"entity to a database subselect. This is useful if you want to have a view "
+"instead of a base table. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (optional): Mappt eine unveränderbare und "
+"schreibgeschützte Entity zu einer Datenbankunterauswahl (sog. \"Database "
+"Subselect\"). Das ist von Nutzen, wenn Sie statt der Basistabelle eine "
+"Ansicht wünschen, aber nicht haben. Weitere Informationen finden Sie unten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): is used to mark abstract "
+"superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (optional): Wird verwendet, um abstrakte "
+"Superklassen in <literal>&lt;union-subclass&gt;</literal>-Hierarchien zu "
+"kennzeichnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is acceptable for the named persistent class to be an interface. You can "
+"declare implementing classes of that interface using the <literal>&lt;"
+"subclass&gt;</literal> element. You can persist any <emphasis>static</"
+"emphasis> inner class. Specify the class name using the standard form i.e. "
+"<literal>e.g.Foo$Bar</literal>."
+msgstr ""
+"Es ist völlig in Ordnung, wenn es sich bei der benannten persistenten Klasse "
+"um ein Interface handelt. Sie würden in diesem Fall implemetierende Klassen "
+"dieses Interface unter Verwendung des <literal>&lt;subclass&gt;</literal>-"
+"Elements deklarieren. Sie können jegliche <emphasis>static</emphasis> innere "
+"Klassen (sog. \"inner class\") persistieren. Der Klassenname sollte unter "
+"Verwendung des Standardformulars d.h. <literal>eg.Foo&#36;Bar</literal> "
+"spezifiziert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"Unveränderliche Klassen, <literal>mutable=\"false\"</literal>, können durch "
+"die Anwendung nicht aktualisiert oder gelöscht werden. Dies ermöglicht "
+"Hibernate kleinere Optimierungen hinsichtlich der Performance."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies that implement the named interface. The persistent object will load "
+"when a method of the proxy is invoked. See \"Initializing collections and "
+"proxies\" below."
+msgstr ""
+"Das optionale <literal>proxy</literal>-Attribut aktiviert die \"lazy "
+"Initialization\" persistenter Instanzen der Klasse. Hibernate wird anfangs "
+"mit CGLIB-Proxies reagieren, die das benannte Interface implementieren. Das "
+"eigentliche persistente Objekt wird geladen, wenn eine Methode des Proxy "
+"aufgerufen wird. Sehen Sie dazu \"Proxies für die Lazy Initialization\" "
+"unten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or class, and that instances of any subclass of the class will be "
+"returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class. Queries that name the class will "
+"return only instances of subclasses mapped inside this <literal>&lt;class&gt;"
+"</literal> declaration as a <literal>&lt;subclass&gt;</literal> or "
+"<literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default "
+"<literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table This allows a \"lightweight\" class that contains a subset of the "
+"table columns."
+msgstr ""
+"<emphasis>Implicit</emphasis>-Polymorphie bedeutet, dass die Instanzen der "
+"Klasse von einer Anfrage beantwortet werden, die eine Superklasse, ein "
+"implementiertes Interface oder die Klasse zurücksendet und die Instanzen "
+"einer beliebigen Subklasse der betreffenden Klasse von einer die Klasse "
+"selbst nennenden Anfrage zurückgeschickt werden. <emphasis>Explizite</"
+"emphasis> Polymorphie bedeutet, dass die Instanzen der Klasse nur von "
+"Anfragen zurückgeschickt werden, die die Klasse explizit nennen und nur auf "
+"Instanzen, die innerhalb dieser <literal>&lt;class&gt;</literal> Deklaration "
+"als <literal>&lt;subclass&gt;</literal> oder <literal>&lt;joined-subclass&gt;"
+"</literal> gemappt sind, reagiert wird. In den meisten Fällen ist die "
+"Standardeinstellung <literal>polymorphism=\"implicit\"</literal> angemessen. "
+"Explizite Polymorphie ist insbesondere dann von Nutzen, wenn zwei "
+"verschiedene Klassen ein Mapping zu derselben Tabelle besitzen (es bietet "
+"sich dadurch die Möglichkeit der Erstellung einer \"abgespeckten\" und alle "
+"Tabellenspalten als Teilsatz enthaltenden Klasse)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You can, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, "
+"or you can even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements, "
+"for example, persistence via stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+"Das <literal>persister</literal>-Attribut erlaubt die Anpassung der für die "
+"Klasse zu verwendenden Persistenzstrategie. Sie können zum Beispiel Ihre "
+"eigene Subklasse von <literal>org.hibernate.persister.EntityPersister</"
+"literal> bestimmen oder sogar eine vollständig neue Implementierung des "
+"Interface <literal>org.hibernate.persister.ClassPersister</literal> "
+"bereitsstellen, das z.B. mittels gespeicherter Prozeduraufrufe, "
+"Serialisierung verknüpfungsloser (zweidimensionaler Dateien (sog. \"flat "
+"Files\") oder LDAP Persistenz implementiert. Siehe <literal>org.hibernate."
+"test.CustomPersister</literal> für ein einfaches Beispiel (von \"Persistenz"
+"\" zu einer <literal>Hashtable</literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> "
+"settings are not inherited by subclasses, so they can also be specified on "
+"the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</"
+"literal> elements. Although these settings can increase performance in some "
+"cases, they can actually decrease performance in others."
+msgstr ""
+"Bitte beachten Sie, dass die <literal>dynamic-update</literal> und "
+"<literal>dynamic-insert</literal> Einstellungen nicht an die Subklassen "
+"vererbt werden und daher auch in den <literal>&lt;subclass&gt;</literal> "
+"oder <literal>&lt;joined-subclass&gt;</literal>-Elementen spezifiziert "
+"werden können. Diese Einstellungen können die Performance in einigen Fällen "
+"verbessern, in anderen Fällen jedoch auch verschlechtern. Verwenden Sie sie "
+"daher umsichtig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is useful to prevent a database update trigger being called "
+"unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"Die Verwendung von <literal>select-before-update</literal> wird die "
+"Performance in der Regel verschlechtern. Es ist sehr hilfreich, um den "
+"Aufruf eines Datenbankaktualisierungs-Triggers abzufangen, wenn Sie einen "
+"Graph abgesetzter Instanzen wieder an eine <literal>Session</literal> binden "
+"möchten."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"Wenn Sie <literal>dynamic-update</literal> aktivieren, haben Sie die Wahl "
+"zwischen verschiedenen Strategien für das optimistische Sperren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr "<literal>version</literal> Prüfung der Version-/Zeitstempel-Spalten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dirty</literal>: check the changed columns, allowing some "
+"concurrent updates"
+msgstr ""
+"<literal>dirty</literal> Prüfung der veränderten Spalten, Möglichkeit "
+"einiger simultaner Aktualisierungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none</literal> verwendet kein optimistisches Sperren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is <emphasis>strongly</emphasis> recommended that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This strategy "
+"optimizes performance and correctly handles modifications made to detached "
+"instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+"Wir empfehlen <emphasis>sehr</emphasis> dringend die Verwendung von Version-/"
+"Zeitstempel-Spalten für das optimistische Sperren mit Hibernate. Im Hinblick "
+"auf die Performance handelt es sich dabei um die beste Strategie, und es ist "
+"auch die einzige Strategie, die Veränderungen an abgesetzten Instanzen "
+"korrekt bearbeitet (d.h. wenn <literal>Session.merge()</literal> verwendet "
+"wird)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping. This is transparent at the database level, although some DBMS do "
+"not support views properly, especially with updates. Sometimes you want to "
+"use a view, but you cannot create one in the database (i.e. with a legacy "
+"schema). In this case, you can map an immutable and read-only entity to a "
+"given SQL subselect expression:"
+msgstr ""
+"Es gibt keinen Unterschied zwischen einer Ansicht und einer Basistabelle für "
+"ein Hibernate Mapping, und wie erwartet ist dies auf Datenbankebene "
+"transparent (bitte beachten Sie, dass einige DBMS Ansichten nicht korrekt "
+"unterstützen, insbesondere im Hinblick auf Aktualisierungen). Manchmal "
+"möchten Sie zwar eine Ansicht verwenden, jedoch wird diese in der Datenbank "
+"nicht erstellt (d.h. mit einem \"Legacy Schema\"). In diesem Fall können Sie "
+"eine unveränderbare und schreibgeschützte Entity zu einem gegebenen SQL "
+"Subselect-Ausdruck mappen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly and that queries against the derived entity do not return "
+"stale data. The <literal>&lt;subselect&gt;</literal> is available both as an "
+"attribute and a nested mapping element."
+msgstr ""
+"Deklarieren Sie die Tabellen mit denen diese Entity synchronisiert werden "
+"soll und stellen Sie sicher, dass \"Auto-Flush\" ordnungsgemäß abläuft und "
+"Anfragen an die abgeleitete Entity keine alten Daten wiedergeben. "
+"<literal>&lt;subselect&gt;</literal> ist sowohl als Attribut als auch als "
+"verschachteltes Mapping-Element verfügbar."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "id"
+msgstr "uuid"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal>&lt;id&gt;</"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"Gemappte Klassen <emphasis>müssen</emphasis> die Spalte des Primärschlüssels "
+"der Datenbanktabelle deklarieren. Die meisten Klassen werden außerdem eine "
+"Property nach Art von JavaBeans besitzen, die den eindeutigen Bezeichner "
+"einer Instanz enthält. Das <literal>&lt;id&gt;</literal>-Element definiert "
+"das Mapping von der Property zur Spalte des Primärschlüssels."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the name of the identifier property."
+msgstr "<literal>name</literal> (optional): Name der Bezeichner-Property."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr ""
+"<literal>type</literal> (optional): Ein Name, der den Hibernate-Typ anzeigt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung ist der Property-"
+"Name): Der Name der Primärschlüsselspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): an identifier property value that indicates an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal> (optional - Standardeinstellung ist ein "
+"\"sinnvoller\" Wert): Ein Wert der Bezeichner-Property, der anzeigt, dass "
+"eine Instanz neu instanziiert (ungespeichert) ist und der sie von "
+"abgesetzten Instanzen einer vorangegangenen Session unterscheidet, die "
+"gespeichert oder geladen wurden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"<literal>access</literal> (optional - Standardeinstellung ist "
+"<literal>property</literal>): Die Strategie, die Hibernate für den Zugriff "
+"auf den Property-Wert verwenden soll."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"Falls das <literal>name</literal>-Attribut fehlt, wird davon ausgegangen, "
+"dass die Klasse keine Bezeichner-Property besitzt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"Das <literal>unsaved-value</literal>-Attribut wird in Hibernate3 fast nie "
+"benötigt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is an alternative <literal>&lt;composite-id&gt;</literal> declaration "
+"that allows access to legacy data with composite keys. Its use is strongly "
+"discouraged for anything else."
+msgstr ""
+"Es existiert eine alternative <literal>&lt;composite-id&gt;</literal>-"
+"Deklaration, die Zugriff auf Stammdaten mit zusammengesetzten Schlüsseln "
+"(sog. \"composite keys\") erlaubt. Wir empfehlen dringend, diese "
+"ausschließlich hierfür zur verwenden."
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "Programmgenerator"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;generator&gt;</literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal>&lt;param&gt;</"
+"literal> element."
+msgstr ""
+"Das optionale <literal>&lt;generator&gt;</literal>-Unterelement benennt eine "
+"Java-Klasse, die zur Generierung eindeutiger Bezeichner für Instanzen der "
+"persistenten Klasse verwendet werden. Falls Parameter zur Konfiguration oder "
+"Initialisierung der Generatorinstanz benötigt werden, werden Sie unter "
+"Verwendung des <literal>&lt;param&gt;</literal>-Elements weitergeleitet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface. Some "
+"applications can choose to provide their own specialized implementations, "
+"however, Hibernate provides a range of built-in implementations. The "
+"shortcut names for the built-in generators are as follows:"
+msgstr ""
+"Alle Generatoren implementieren das Interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. Es handelt sich dabei um ein sehr einfaches "
+"Interface; manche Anwendungen stellen ein eigenes, spezialisiertes Interface "
+"bereit. Hiberante bietet jedoch eine Reihe eingebauter Implementierungen. "
+"Für die eingebauten Generatoren existieren abgekürzte Namen:"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"generiert Bezeichner des Typs <literal>long</literal>, <literal>short</"
+"literal> oder <literal>int</literal>, die nur eindeutig sind, wenn kein "
+"anderer Vorgang Daten derselben Tabelle hinzufügt. <emphasis>Nicht in einem "
+"Cluster zu verwenden.</emphasis>"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>id-type</literal>: Der Bezeichnertyp."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"unterstützt die Identitätsspalten in DB2, MySQL, MS SQL Server, Sybase und "
+"HypersonicSQL. Der zurückgesendete Bezeichner ist vom Typ <literal>long</"
+"literal>, <literal>short</literal> oder <literal>int</literal>."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"verwendet eine Sequenz in DB2, PostgreSQL, Oracle, SAP DB, McKoi oder einen "
+"Generator in Interbase. Der zurückgeschickte Bezeichner ist vom Typ "
+"<literal>long</literal>, <literal>short</literal> oder <literal>int</literal>"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"verwendet einen hi/lo Algorithmus um effizient Bezeichner des Typs "
+"<literal>long</literal>, <literal>short</literal> oder <literal>int</"
+"literal> zu generieren, bei gegebener Tabelle und Spalte "
+"(Standardeinstellung lautet <literal>hibernate_unique_key</literal> bzw. "
+"<literal>next_hi</literal>) als Quelle der hi-Werte. Der hi/lo-Algorithmus "
+"generiert Bezeichner, die für eine bestimmte Datenbank eindeutig sind."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"verwendet einen hi/lo-Algorithmus um effizient Bezeichner des Typs "
+"<literal>long</literal>, <literal>short</literal> oder <literal>int</"
+"literal> zu generieren, bei einer vorgegebenen und benannten "
+"Datenbanksequenz."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>id</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string that "
+"are unique within a network (the IP address is used). The UUID is encoded as "
+"a string of 32 hexadecimal digits in length."
+msgstr ""
+"verwendet einen 128-bit UUID-Algorithmus, um Bezeichner des String-Typs "
+"(Zeichenkettentyp) zu generieren, die innerhalb eines Netzwerks eindeutig "
+"sind (die IP-Adresse wird verwendet). Der UUID (Universally Unique "
+"Identifier) ist als Zeichenkette hexadezimaler Ziffern von 32 Zeichen Länge "
+"verschlüsselt."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>id</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr ""
+"verwendet einen von der Datenbank generierten GUID-String auf dem MS SQL "
+"Server und MySQL."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"selects <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"wählt <literal>identity</literal>, <literal>sequence</literal> oder "
+"<literal>hilo</literal> je nach Leistungsfähigkeit der zu Grunde liegenden "
+"Datenbank."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"lets the application assign an identifier to the object before <literal>save"
+"()</literal> is called. This is the default strategy if no <literal>&lt;"
+"generator&gt;</literal> element is specified."
+msgstr ""
+"lässt die Anwendung dem Objekt einen Bezeichner zuordnen ehe <literal>save()"
+"</literal> aufgerufen wird. Falls kein <literal>&lt;generator&gt;</literal>-"
+"Element festgelegt ist, so ist dies die Standardstrategie."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"retrieves a primary key, assigned by a database trigger, by selecting the "
+"row by some unique key and retrieving the primary key value."
+msgstr ""
+"ruft von einem Datenbank-Trigger zugeordnete Primärschlüssel auf, indem die "
+"Reihe durch einen eindeutigen Schlüssel ausgewählt und der Wert des "
+"Primärschlüssels abgefragt wird."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"uses the identifier of another associated object. It is usually used in "
+"conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key "
+"association."
+msgstr ""
+"verwendet den Bezeichner eines anderen zugehörigen Objekts. In der Regel in "
+"Verbindung mit einer <literal>&lt;one-to-one&gt;</literal>-Assoziation des "
+"Primärschlüssels verwendet."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "sequence-identity"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a specialized sequence generation strategy that utilizes a database sequence "
+"for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to return the generated identifier value as part of the "
+"insert statement execution. This strategy is only supported on Oracle 10g "
+"drivers targeted for JDK 1.4. Comments on these insert statements are "
+"disabled due to a bug in the Oracle drivers."
+msgstr ""
+"eine spezialisierte Sequenzgenerierungsstrategie, die eine Datenbanksequenz "
+"zu Generierung der tatsächlichen Werte verwendet. Dabei kombiniert sie diese "
+"mit JDBC3 getGeneratedKeys, um den generierten Bezeichnerwert als Teil der "
+"Ausführung der Einfügungsanweisung zurückzusenden. Diese Strategie wird bis "
+"jetzt nur von auf JDK 1.4 ausgerichteten Oracle 10g Treibern unterstützt. "
+"Bitte beachten Sie, dass Kommentare in diesen Einfügungsanweisungen aufgrund "
+"eines Bugs innerhalb der Oracle Treiber deaktiviert sind."
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "Hi/lo-Algorithmus"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm. The first "
+"implementation requires a \"special\" database table to hold the next "
+"available \"hi\" value. Where supported, the second uses an Oracle-style "
+"sequence."
+msgstr ""
+"Die <literal>hilo</literal> und <literal>seqhilo</literal>-Generatoren "
+"stellen zwei alternierende Implementierungen des hi/lo-Algorithmus bereit, "
+"einer bevorzugten Vorgehensweise bei der Bezeichnergenerierung. Die erste "
+"Implementierung erfordert eine \"spezielle\" Datenbanktabelle, die den "
+"nächstverfügbaren \"hi\"-Wert enthält. Die zweite verwendet eine Sequenz "
+"nach Oracle-Art (falls unterstützt)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unfortunately, you cannot use <literal>hilo</literal> when supplying your "
+"own <literal>Connection</literal> to Hibernate. When Hibernate uses an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must configure the <literal>hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+"Leider können Sie <literal>hilo</literal> nicht verwenden, wenn Sie Ihre "
+"eigene <literal>Connection</literal> für Hibernate bereitstellen. Wenn "
+"Hibernate eine Datenquelle des Applikationsservers verwendet, um mit JTA "
+"gelistete Verbindungen zu erhalten, müssen Sie die <literal>hibernate."
+"transaction.manager_lookup_class</literal> korrekt konfigurieren."
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "UUID-Algorithmus"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM that is accurate to a "
+"quarter second, system time and a counter value that is unique within the "
+"JVM. It is not possible to obtain a MAC address or memory address from Java "
+"code, so this is the best option without using JNI."
+msgstr ""
+"Der UUID enthält: IP-Adresse, Startup-Zeit der JVM (bis auf eine "
+"Viertelsekunde genau), Systemzeit und Zählerwert (innerhalb der JVM "
+"eindeutig). Es ist nicht möglich, aus Java-Code eine MAC-Adresse oder "
+"Speicheradresse zu erhalten, so dass es sich dabei um die bestmögliche "
+"Option ohne Verwendung von JNI handelt."
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "Identitätsspalten und Sequenzen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you can use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"can use <literal>sequence</literal> style key generation. Both of these "
+"strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+"Für Datenbanken, die Identitätsspalten unterstützen (DB2, MySQL, Sybase, MS "
+"SQL), können Sie <literal>identity</literal>-Schlüsselgenerierung verwenden. "
+"Für Datenbanken, die Sequenzen unterstützen (DB2, Oracle, PostgreSQL, "
+"Interbase, McKoi, SAP DB) können Sie Schlüsselgenerierung nach "
+"<literal>sequence</literal>-Art verwenden. Bei beiden Strategien muss ein "
+"neues Objekt durch zwei SQL-Anfragen eingefügt werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will, "
+"depending on the capabilities of the underlying database, choose from the "
+"<literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</"
+"literal> strategies."
+msgstr ""
+"Für die plattformübergreifende Entwicklung wählt die <literal>native</"
+"literal> Strategie unter den <literal>identity</literal>, <literal>sequence</"
+"literal> und <literal>hilo</literal>-Strategien je nach Leistungsfähigkeit "
+"der zu Grunde liegenden Datenbank die entsprechende aus."
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "Zugeordnete Bezeichner"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want the application to assign identifiers, as opposed to having "
+"Hibernate generate them, you can use the <literal>assigned</literal> "
+"generator. This special generator uses the identifier value already assigned "
+"to the object's identifier property. The generator is used when the primary "
+"key is a natural key instead of a surrogate key. This is the default "
+"behavior if you do not specify a <literal>&lt;generator&gt;</literal> "
+"element."
+msgstr ""
+"Falls die Anwendung Bezeichner zuordnen soll (statt deren Generierung durch "
+"Hibernate), so können Sie den <literal>assigned</literal>-Generator "
+"verwenden. Dieser spezielle Generator wird den der Bezeichner-Property des "
+"Objekts bereits zugeordneten Bezeichnerwert verwenden. Dieser Generator "
+"kommt zum Einsatz, wenn es sich beim Primärschlüssel um einen natürlichen "
+"statt einen Surrogatschlüssel handelt. Dieses ist das Standardverhalten, "
+"wenn Sie kein <literal>&lt;generator&gt;</literal>-Element festlegen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go "
+"to the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"Bei Auswahl des <literal>assigned</literal>-Generators verwendet Hibernate "
+"<literal>unsaved-value=\"undefined\"</literal>, wodurch Hibernate in der "
+"Datenbank prüfen muss, ob eine Instanz transient oder abgesetzt ist, falls "
+"keine Version oder eine Zeitstempel-Property vorhanden sind oder Sie "
+"<literal>Interceptor.isUnsaved()</literal> definieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "Durch Trigger zugeordnete Primärschlüssel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr "Nur für Legacy-Schemas (Hibernate generiert DDL nicht mit Triggern)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal>. It is defined by the class, as a "
+"natural key and a surrogate key named <literal>person_id</literal>, whose "
+"value is generated by a trigger."
+msgstr ""
+"Im Beispiel oben ist eine eindeutige Property mit dem Namen "
+"<literal>socialSecurityNumber</literal> definiert durch die Klasse als ein "
+"natürlicher Schlüssel sowie einen Surrogatschlüssel mit Namen "
+"<literal>person_id</literal>, dessen Wert durch einen Trigger generiert wird."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "Die \"Getter\"-Methode des Bezeichners"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization Optimization means that "
+"you do not have to query the database for every request for a new identifier "
+"value. These two new generators are intended to take the place of some of "
+"the named generators described above, starting in 3.3.x. However, they are "
+"included in the current releases and can be referenced by FQN."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended, firstly, as a "
+"replacement for the <literal>sequence</literal> generator and, secondly, as "
+"a better portability generator than <literal>native</literal>. This is "
+"because <literal>native</literal> generally chooses between "
+"<literal>identity</literal> and <literal>sequence</literal> which have "
+"largely different semantics that can cause subtle issues in applications "
+"eyeing portability. <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, however, achieves portability in a "
+"different manner. It chooses between a table or a sequence in the database "
+"to store its incrementing values, depending on the capabilities of the "
+"dialect being used. The difference between this and <literal>native</"
+"literal> is that table-based and sequence-based storage have the same exact "
+"semantic. In fact, sequences are exactly what Hibernate tries to emulate "
+"with its table-based generators. This generator has a number of "
+"configuration parameters:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): the name of the sequence or table to "
+"be used."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung lautet "
+"<literal>class</literal>) der Name der Diskriminatorspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): the initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typically named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>base</literal> (optional, standardmäßig <literal>0</literal>): Der "
+"Wert der Indexspalte, die mit dem ersten Element der Liste oder Array "
+"korrespondiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): the value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause "
+"typically named \"INCREMENT BY\"."
+msgstr ""
+"<literal>base</literal> (optional, standardmäßig <literal>0</literal>): Der "
+"Wert der Indexspalte, die mit dem ersten Element der Liste oder Array "
+"korrespondiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional - defaults to <literal>false</"
+"literal>): should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>inverse</literal> (optional - standardmäßig <literal>false</"
+"literal>) kennzeichnen Sie diese Collection als das \"invertierte\" Ende "
+"einer biderektionalen Assoziation"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional - defaults to <literal>next_val</"
+"literal>): only relevant for table structures, it is the name of the column "
+"on the table which is used to hold the value."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung lautet "
+"<literal>class</literal>) der Name der Diskriminatorspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" /"
+">"
+msgstr ""
+"<literal>cascade</literal> (optional- die Standardeinstellung lautet "
+"<literal>none</literal>): der \"Cascade-Style\" (Weitergabestil)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, which is intended, firstly, as a replacement for "
+"the <literal>table</literal> generator, even though it actually functions "
+"much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</"
+"literal>, and secondly, as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> that utilizes the notion of "
+"pluggable optimizers. Essentially this generator defines a table capable of "
+"holding a number of different increment values simultaneously by using "
+"multiple distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional - defaults to "
+"<literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+"<literal>type</literal> (optional - die Standardeinstellung lautet "
+"<literal>integer</literal>): Der Versionsnummerntyp."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional - defaults to "
+"<literal>next_val</literal>): the name of the column on the table that is "
+"used to hold the value."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung lautet "
+"<literal>class</literal>) der Name der Diskriminatorspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional - defaults to "
+"<literal>sequence_name</literal>): the name of the column on the table that "
+"is used to hold the \"segment key\". This is the value which identifies "
+"which increment value to use."
+msgstr ""
+"<literal>base</literal> (optional, standardmäßig <literal>0</literal>): Der "
+"Wert der Indexspalte, die mit dem ersten Element der Liste oder Array "
+"korrespondiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional - defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>base</literal> (optional, standardmäßig <literal>0</literal>): Der "
+"Wert der Indexspalte, die mit dem ersten Element der Liste oder Array "
+"korrespondiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional - defaults to "
+"<literal>255</literal>): Used for schema generation; the column size to "
+"create this segment key column."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung lautet "
+"<literal>class</literal>) der Name der Diskriminatorspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional - defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>type</literal> (optional - die Standardeinstellung lautet "
+"<literal>integer</literal>): Der Versionsnummerntyp."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>type</literal> (optional - die Standardeinstellung lautet "
+"<literal>integer</literal>): Der Versionsnummerntyp."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal></literal>): "
+"See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+"<literal>cascade</literal> (optional- die Standardeinstellung lautet "
+"<literal>none</literal>): der \"Cascade-Style\" (Weitergabestil)."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Identifier generator optimization"
+msgstr "Die \"Getter\"-Methode des Bezeichners"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For identifier generators that store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you can group a bunch of them in memory and "
+"only hit the database when you have exhausted your in-memory value group. "
+"This is the role of the pluggable optimizers. Currently only the two "
+"enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> "
+"support this operation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): this will not perform any optimizations and hit the database for "
+"each and every request."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\". The "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this "
+"optimizer attempts to minimize the number of hits to the database. Here, "
+"however, we simply store the starting value for the \"next group\" into the "
+"database structure rather than a sequential value in combination with an in-"
+"memory grouping algorithm. Here, <literal>increment_size</literal> refers to "
+"the values coming from the database."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "composite-id"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A table with a composite key can be mapped with multiple properties of the "
+"class as identifier properties. The <literal>&lt;composite-id&gt;</literal> "
+"element accepts <literal>&lt;key-property&gt;</literal> property mappings "
+"and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+"Für eine Tabelle mit einem zusammengesetzten Schlüssel, können Sie mehrere "
+"Properties der Klasse als Bezeichner-Properties mappen. Das <literal>&lt;"
+"composite-id&gt;</literal>-Element akzeptiert <literal>&lt;key-property&gt;</"
+"literal>-Property-Mappings und <literal>&lt;key-many-to-one&gt;</literal>-"
+"Mappings als untergeordnete Elemente."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+"Ihre persistente Klasse <emphasis>muss</emphasis> sowohl <literal>equals()</"
+"literal> als auch <literal>hashCode()</literal> außer Kraft setzen, um die "
+"Gleichwertigkeit zusammengesetzter Bezeichner zu implementieren. Sie muss "
+"außerdem <literal>Serializable</literal> implementieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unfortunately, this approach means that a persistent object is its own "
+"identifier. There is no convenient \"handle\" other than the object itself. "
+"You must instantiate an instance of the persistent class itself and populate "
+"its identifier properties before you can <literal>load()</literal> the "
+"persistent state associated with a composite key. We call this approach an "
+"<emphasis>embedded</emphasis> composite identifier, and discourage it for "
+"serious applications."
+msgstr ""
+"Leider bedeutet diese Vorgehensweise bei zusammengesetzten Bezeichnern, dass "
+"ein persistentes Objekt sein eigener Bezeichner ist. Es existiert keine "
+"praktische \"Handhabung\" außer dem Objekt selbst. Sie müssen eine Instanz "
+"der persistenten Klasse selbst instanziieren und deren Bezeichner-Properties "
+"auffüllen, ehe Sie mit <literal>load()</literal> den persistenten Status "
+"eines zugehörigen zusammengesetzten Schlüssels laden können. Diese "
+"Vorgehensweise gilt als <emphasis>eingebetteter</emphasis> (\"embedded\") "
+"zusammengesetzter Bezeichner und wird nicht für ernsthafte Anwendungen "
+"empfohlen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal>&lt;"
+"composite-id&gt;</literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"Eine zweite Vorgehensweise trägt den Namen <emphasis>gemappter</emphasis> "
+"zusammengesetzter Bezeichner (sog. \"mapped composite identifier\"), wobei "
+"die innerhalb des <literal>&lt;composite-id&gt;</literal>-Elements genannten "
+"Bezeichner-Properties sowohl an der persistenten Klasse als auch einer "
+"separaten Bezeichnerklasse dupliziert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement <literal>Serializable</literal>. "
+"The main disadvantage of this approach is code duplication."
+msgstr ""
+"In diesem Beispiel besitzen sowohl die Klasse des zusammengesetzten "
+"Bezeichners <literal>MedicareId</literal> als auch die Entity-Klasse selbst "
+"Properties mit dem Namen <literal>medicareNumber</literal> und "
+"<literal>dependent</literal>. Die Bezeichnerklasse muss <literal>equals()</"
+"literal> und <literal>hashCode()</literal> außer Kraft setzen und "
+"<literal>Serializable</literal> implementieren. Der Nachteil dieser "
+"Vorgehensweise ist offensichtlich&mdash; Code-Duplizierung."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following attributes are used to specify a mapped composite identifier:"
+msgstr ""
+"Die folgenden Attribute werden verwendet, um einen gemappten "
+"zusammengesetzten Bezeichner zu bestimmen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional - defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (optional, Standardeinstellung <literal>false</"
+"literal>): zeigt an, dass ein gemappter zusammengesetzter Bezeichner "
+"verwendet wird und die enthaltenen Property-Mappings auf die Entity-Klasse "
+"und die zusammengesetzte Bezeichnerklasse verweisen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - but required for a mapped composite "
+"identifier): the class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (optional, für einen gemappten Bezeichner jedoch "
+"erforderlich): Die als zusammengesetzter Bezeichner verwendete Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach, where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\" />. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"Abschließend erläutern wir einen dritte, noch praktischere Vorgehensweise, "
+"bei der der zusammengesetzte Bezeichner als Komponentenklasse in <xref "
+"linkend=\"components-compositeid\"/> implementiert wird. Die unten "
+"beschriebenen Attribute gelten nur für diese Vorgehensweise:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional - required for this approach): a property "
+"of component type that holds the composite identifier. Please see chapter 9 "
+"for more information."
+msgstr ""
+"<literal>name</literal> (optional, bei dieser Vorgehensweise erforderlich): "
+"Eine Property nach Komponententyp, die den zusammengesetzten Bezeichner "
+"enthält (siehe Kapitel 9)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+"<literal>access</literal> (optional - Standardeinstellung ist "
+"<literal>property</literal>): Die Strategie, die Hibernate für den Zugriff "
+"auf den Property-Wert verwenden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the component class used as a composite "
+"identifier. Please see the next section for more information."
+msgstr ""
+"<literal>class</literal> (optional - Standardeinstellung ist der durch die "
+"Reflexion bestimmte Property-Typ): Die als ein zusammengesetzter "
+"Bezeichnerverwendete Komponentenklasse (siehe nächster Abschnitt)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The third approach, an <emphasis>identifier component</emphasis>, is "
+"recommended for almost all applications."
+msgstr ""
+"Bei dieser dritten Vorhegensweise empfehlen wir eine "
+"<emphasis>Bezeichnerkomponente</emphasis> für fast alle Anwendungen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Discriminator"
+msgstr "discriminator"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;discriminator&gt;</literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping "
+"strategy. It declares a discriminator column of the table. The discriminator "
+"column contains marker values that tell the persistence layer what subclass "
+"to instantiate for a particular row. A restricted set of types can be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"Das <literal>&lt;discriminator&gt;</literal>-Element wird für die polymorphe "
+"Persistenz unter Verwendung der Tabelle-pro-Klasse-Hierarchie (sog. \"table-"
+"per-class-hierarchy\") Mapping-Strategie benötigt und deklariert eine "
+"Diskriminatorspalte der Tabelle. Diese Diskriminatorspalte enthält "
+"Markierungswerte, die der Persistenzschicht mitteilen, welche Subklasse für "
+"eine bestimmte Reihe instanziiert werden soll. Ein beschränkter Typensatz "
+"kann hierfür verwendet werden: <literal>string</literal>, "
+"<literal>character</literal>, <literal>integer</literal>, <literal>byte</"
+"literal>, <literal>short</literal>, <literal>boolean</literal>, "
+"<literal>yes_no</literal>, <literal>true_false</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>): "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung lautet "
+"<literal>class</literal>) der Name der Diskriminatorspalte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>): "
+"a name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (optional - die Standardeinstellung lautet "
+"<literal>string</literal>) ein Name, der den Hibernate-Typ angibt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>): "
+"\"forces\" Hibernate to specify the allowed discriminator values, even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>) \"zwingt\" Hibernate dazu, die erlaubten "
+"Diskriminatorwerte beim Abruf aller Instanzen der Stammklasse zu "
+"spezifizieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. It tells Hibernate not to include the "
+"column in SQL <literal>INSERTs</literal>."
+msgstr ""
+"<literal>insert</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>) wählen Sie hier die Einstellung <literal>false</"
+"literal>, falls Ihre Diskriminatortspalte auch Teil des zusammengesetzten "
+"Bezeichners ist. (Hibernate wird mitgeteilt, die Spalte nicht in SQL "
+"<literal>INSERT</literal>s mit einzuschließen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. It allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (optional) ein beliebiger SQL-Ausdruck, der "
+"ausgeführt wird, wenn ein Typ evaluiert werden muss. Erlaubt inhaltsbasierte "
+"Unterscheidung (sog. \"discrimination\")."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal>&lt;"
+"class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+"Die tatsächlichen Werte der Diskriminatorspalte werden durch das "
+"<literal>discriminator-value</literal>-Attribut der <literal>&lt;class&gt;</"
+"literal> und <literal>&lt;subclass&gt;</literal>-Elemente spezifiziert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is only useful if the table contains "
+"rows with \"extra\" discriminator values that are not mapped to a persistent "
+"class. This will not usually be the case."
+msgstr ""
+"Das <literal>force</literal>-Attribut ist (nur) von Nutzen, wenn die Tabelle "
+"eine Reihe mit \"zusätzlichen\" Diskriminatorwerten enthält, die nicht zu "
+"einer persistenten Klasse gemappt sind. Dies ist in der Regel jedoch nicht "
+"der Fall."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>formula</literal> attribute allows you to declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+"Mit dem <literal>formula</literal>-Attribut können Sie einen beliebigen SQL-"
+"Ausdruck deklarieren, der dann zur Evaluierung des Reihentyps verwendet wird:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Version (optional)"
+msgstr "version (optional)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;version&gt;</literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis>. See below for more "
+"information:"
+msgstr ""
+"Das <literal>&lt;version&gt;</literal>-Element ist optional und zeigt an, "
+"dass die Tabelle versionierte Daten enthält. Das ist insbesondere dann "
+"nützlich, wenn Sie vorhaben, <emphasis>lange Transaktionen</emphasis> zu "
+"verwenden (siehe unten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung ist der Property-"
+"Name): Der Name der Spalte, die die Versionsnummer enthält."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a property of the persistent class."
+msgstr ""
+"<literal>name</literal>: Der Name einer Property der persistenten Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"the type of the version number."
+msgstr ""
+"<literal>type</literal> (optional - die Standardeinstellung lautet "
+"<literal>integer</literal>): Der Versionsnummerntyp."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+"<literal>access</literal> (optional - Standardeinstellung ist "
+"<literal>property</literal>): Die Strategie, die Hibernate für den Zugriff "
+"auf den Property-Wert verwenden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (optional - die Standardeinstellung lautet "
+"<literal>undefined</literal>): Ein Property-Wert der Version, der anzeigt, "
+"dass eine Instanz neu instanziiert wurde (ungespeichert) und diese von "
+"abgesetzten Instanzen, die in einer vorhergehenden Session bereits "
+"gespeichert oder geladen wurden, unterscheidet. (<literal>undefined</"
+"literal> legt fest, dass der Property-Wert des Bezeichners verwendet werden "
+"sollte)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this version property value is generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (optional - die Standardeinstellung lautet "
+"<literal>never</literal>): Legt fest, dass der Property-Wert dieser Version "
+"von der Datenbank generiert wird. Siehe dazu auch die Erläuterungen in <xref "
+"linkend=\"mapping-generated\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"specifies whether the version column should be included in SQL insert "
+"statements. It can be set to <literal>false</literal> if the database column "
+"is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>): Legt fest, ob die Versionsspalte in die SQL "
+"Einfügungsanweisungen eingeschlossen werden soll. Die Einstellung kann "
+"<literal>false</literal> lauten, wenn (und nur in diesem Fall) die "
+"Datenbankspalte mit dem Standardwert <literal>0</literal> definiert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Version numbers can be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"Die Versionsnummern können vom Hibernate-Typ <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> oder <literal>calendar</literal> sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance. Hibernate will detect any instance with a null version or "
+"timestamp as transient, irrespective of what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid problems with transitive "
+"reattachment in Hibernate. It is especially useful for people using assigned "
+"identifiers or composite keys</emphasis>."
+msgstr ""
+"Eine Versions- oder Zeitstempel-Property sollte für abgesetzte Instanzen "
+"niemals Null sein, damit Hibernate Instanzen mit Null-Version oder -"
+"Zeitstempel als transient entdeckt, ganz unabhängig davon, welche anderen "
+"<literal>unsaved-value</literal>-Strategien festgelegt sind. <emphasis>Die "
+"Deklaration einer nullbaren Version oder Zeitstempel-Property ist eine "
+"einfache Art, Probleme mit transitiver Wiederanbindung in Hibernate zu "
+"vermeiden; besonders nützlich ist dies für Personen, die zugeteilte "
+"Bezeichner oder zusammengesetzte Schlüssel verwenden!</emphasis>"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Timestamp (optional)"
+msgstr "Zeitstempel (optional)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The optional <literal>&lt;timestamp&gt;</literal> element indicates that the "
+"table contains timestamped data. This provides an alternative to versioning. "
+"Timestamps are a less safe implementation of optimistic locking. However, "
+"sometimes the application might use the timestamps in other ways."
+msgstr ""
+"Das optionale <literal>&lt;timestamp&gt;</literal>-Element zeigt an, dass "
+"die Tabelle Daten mit Zeitstempel enthält. Dies ist als Alternative zur "
+"Versionierung gedacht. Zeitstempel sind generell eine weniger sichere "
+"Implementierung des optimistischen Sperrens. Jedoch wird die Anwendung die "
+"Zeitstempel manchmal auf andere Weise benutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (optional - die Standardeinstellung ist der "
+"Property-Name): Der Name einer Spalte, die den Zeitstempel enthält."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: Der Name einer Property im JavaBeans-Stil von Java-"
+"Typ <literal>Date</literal> oder <literal>Timestamp</literal> der "
+"persistenten Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (optional - die Standardeinstellung lautet "
+"<literal>null</literal>): Ein Property-Wert der Version, der anzeigt, dass "
+"eine Instanz neu instanziiert ungespeichert) wurde und sie von abgesetzten "
+"Instanzen unterscheidet, die bereits in einer vorangegangenen Session "
+"gespeichert oder geladen wurden. (<literal>undefined</literal> bestimmt, "
+"dass der Property-Wert des Identifiers verwendet werden soll.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"Where should Hibernate retrieve the timestamp value from? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\". It "
+"is safer to use in clustered environments. Not all <literal>Dialects</"
+"literal> are known to support the retrieval of the database's current "
+"timestamp. Others may also be unsafe for usage in locking due to lack of "
+"precision (Oracle 8, for example)."
+msgstr ""
+"<literal>source</literal> (optional - die Standardeinstellung lautet "
+"<literal>vm</literal>): Wo soll Hibernate den Wert des Zeitstempels abrufen? "
+"Von der Datenbank oder von der aktuellen JVM? Auf der Datenbank basierende "
+"Zeitstempel können zu einem Overhead führen, da Hibernate auf die Datenbank "
+"zugreifen muss, um den \"nächsten Wert\" zu bestimmen. In geclusterten "
+"Umgebungen ist dies sicherer. Bitte beachten Sie, dass nicht alle "
+"<literal>Dialect</literal>s den Abruf des aktuellen Zeitstempels von der "
+"Datenbank unterstützen, während andere möglicherweise aufgrund mangelnder "
+"Genauigkeit nicht beim Sperren verwendet werden sollten (zum Beispiel Oracle "
+"8)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (optional - die Standardeinstellung lautet "
+"<literal>never</literal>): Bestimmt, dass der Property-Wert dieses "
+"Zeitstempels tatsächlich durch die Datenbank generiert wird. Siehe dazu auch "
+"die Erläuterungen unter <xref linkend=\"mapping-generated\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db"
+"\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp"
+"\"&gt;</literal>"
+msgstr ""
+"Bitte beachten Sie, dass <literal>&lt;timestamp&gt;</literal> äquivalent zu "
+"<literal>&lt;version type=\"timestamp\"&gt;</literal> und <literal>&lt;"
+"timestamp source=\"db\"&gt;</literal> äquivalent zu <literal>&lt;version "
+"type=\"dbtimestamp\"&gt;</literal> ist"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Property"
+msgstr "property"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;property&gt;</literal> element declares a persistent "
+"JavaBean style property of the class."
+msgstr ""
+"Das <literal>&lt;property&gt;</literal>-Element deklariert eine persistente "
+"Property der Klasse nach Art von JavaBean."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr ""
+"<literal>name</literal>: Der Name der Property mit klein geschriebenem "
+"Anfangsbuchstaben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This can also be specified by "
+"nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+"<literal>column</literal> (optional - Standardeinstellung ist der Property-"
+"Name): Der Name der gemappten Tabellenspalte der Datenbank. Dies kann auch "
+"durch verschachtelte <literal>&lt;column&gt;</literal>-Element(e) "
+"spezifiziert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>): Legt fest, dass die gemappten Spalten in SQL "
+"<literal>UPDATE</literal> und/oder <literal>INSERT</literal>-Anweisungen "
+"eingeschlossen sein sollten. Die Einstellung beider auf <literal>false</"
+"literal> gestattet eine reine \"abgeleitete\" Property, deren Wert von einer "
+"anderen Property, die zu derselben/denselben Spalte(n) mappt oder durch "
+"einen Trigger in einer anderen Anwendung, initialisiert wird."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (optional): ein SQL-Ausdruck, der den Wert für "
+"eine <emphasis>errechnete</emphasis> Property definiert. Errechnete "
+"Properties besitzen kein eigenes Spalten-Mapping."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this property should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>): Legt fest, dass diese Property mittels \"Lazy "
+"Fetching\" (d.h. Nachladen assoziierter Objekte bei Bedarf) abgerufen werden "
+"soll, wenn erstmals auf die Instanzvariable zugegriffen wird (erfordert "
+"Build-time Bytecode Instrumentierung)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (optional): Aktiviert die DDL-Generierung einer "
+"eindeutigen Bedingung für die Spalten. Dies kann auch das Ziel (sog. \"target"
+"\") einer <literal>property-ref</literal> sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (optional): Aktiviert die DDL-Generierung einer "
+"\"Nullability\"-Bedingung für die Spalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, it determines if a "
+"version increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional - die Standardeinstellung "
+"lautet <literal>true</literal>): Legt fest, ob Aktualisierungen (\"Updates"
+"\") dieser Property die Erfassung einer optimistischen Sperre benötigen oder "
+"nicht. Mit anderen Worten, es wird bestimmt, ob eine Erhöhung der Version "
+"stattfinden soll, wenn die Inhalte dieser Property sich verändert haben (man "
+"sagt sie sein dann \"dirty\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (optional - die Standardeinstellung lautet "
+"<literal>never</literal>): Legt fest, dass dieser Property-Wert tatsächlich "
+"durch die Datenbank generiert ist. Siehe dazu auch die Erläuterungen unter "
+"<xref linkend=\"mapping-generated\"/>."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>typename</emphasis> könnte sein:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The name of a Hibernate basic type: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+"Der Name eines Hibernate Grundtyps (z.B. <literal>integer, string, "
+"character, date, timestamp, float, binary, serializable, object, blob</"
+"literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The name of a Java class with a default basic type: <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal> etc."
+msgstr ""
+"Der Name einer Java-Klasse mit einem Grundtyp als Standard (z.B. "
+"<literal>int, float, char, java.lang.String, java.util.Date, java.lang."
+"Integer, java.sql.Clob</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "Der Name einer serialisierbaren Java-Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class name of a custom type: <literal>com.illflow.type.MyCustomType</"
+"literal> etc."
+msgstr ""
+"Der Klassenname eines anwenderdefinierten Typs (z.B. <literal>com.illflow."
+"type.MyCustomType</literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property and guess the correct Hibernate type. Hibernate will attempt to "
+"interpret the name of the return class of the property getter using, in "
+"order, rules 2, 3, and 4. In certain cases you will need the <literal>type</"
+"literal> attribute. For example, to distinguish between <literal>Hibernate."
+"DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a "
+"custom type."
+msgstr ""
+"Falls Sie keinen Typ festlegen, so wird Hibernate mittels Reflexion an der "
+"genannten Property versuchen, den korrekten Typ zu ermitteln. Hibernate wird "
+"dabei versuchen, den Namen der Rückgabeklasse des Property-\"Getters\" unter "
+"Verwendung der Regeln 2, 3, 4 (in dieser Reihenfolge) zu ermitteln. Das "
+"reicht jedoch nicht immer. In bestimmten Fällen wird nach wie vor das "
+"<literal>type</literal>-Attribut benötigt. (Um zum Beispiel zwischen "
+"<literal>Hibernate.DATE</literal> und <literal>Hibernate.TIMESTAMP</literal> "
+"zu unterscheiden oder einen anwenderdefinierten Typ zu bestimmen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>access</literal> attribute allows you to control how Hibernate "
+"accesses the property at runtime. By default, Hibernate will call the "
+"property get/set pair. If you specify <literal>access=\"field\"</literal>, "
+"Hibernate will bypass the get/set pair and access the field directly using "
+"reflection. You can specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"Das <literal>access</literal>-Attribut ermöglicht Ihnen die Kontrolle "
+"darüber, wie Hibernate zur Runtime auf die Property zugreift. In der "
+"Standardeinstellung wird Hibernate das Get/Set-Paar der Property aufrufen. "
+"Wenn Sie aber <literal>access=\"field\"</literal> festlegen, so wird "
+"Hibernate das Get/Set-Paar umgehen und mittels Reflexion direkt auf das Feld "
+"zugreifen. Sie können Ihre eigene Strategie für den Zugriff auf Properties "
+"festlegen, indem Sie eine Klasse festlegen, die das Interface <literal>org."
+"hibernate.property.PropertyAccessor</literal> implementiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A powerful feature is derived properties. These properties are by definition "
+"read-only. The property value is computed at load time. You declare the "
+"computation as an SQL expression. This then translates to a <literal>SELECT</"
+"literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+"Ein besonders leistungsstarkes Feature sind abgeleitete Properties. Diese "
+"Properties sind definitionsgemäß schreibgeschützt, und ihr Wert wird zum "
+"Zeitpunkt des Ladens errechnet. Sie deklarieren die Berechnung als einen SQL-"
+"Ausdruck, was in eine <literal>SELECT</literal>-Klausel Unteranfrage in der "
+"eine Instanz ladenden SQL-Anfrage übersetzt wird:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can reference the entity table by not declaring an alias on a particular "
+"column. This would be <literal>customerId</literal> in the given example. "
+"You can also use the nested <literal>&lt;formula&gt;</literal> mapping "
+"element if you do not want to use the attribute."
+msgstr ""
+"Bitte beachten Sie, dass Sie auf die eigene Tabelle der Entities verweisen "
+"können, indem Sie keinen Alias einer bestimmten Spalte deklarieren "
+"(<literal>customerId</literal> in dem gegebenen Beispiel). Bitte beachten "
+"Sie außerdem, dass Sie das verschachtelte <literal>&lt;formula&gt;</literal> "
+"Mapping-Element statt des Attributs verwenden können."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-one"
+msgstr "many-to-one"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association; a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"Eine reguläre Assoziation zu einer anderen persistenten Klasse wird unter "
+"Verwendung eines <literal>many-to-one</literal>-Elements deklariert. Das "
+"relationale Modell ist eine \"Many-to-One\"-Assoziation: Der Fremdschlüssel "
+"in einer Tabelle verweist auf die Spalte(n) des Primärschlüssels der "
+"Zieltabelle."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>: Der Name der Property."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column. "
+"This can also be specified by nested <literal>&lt;column&gt;</literal> "
+"element(s)."
+msgstr ""
+"<literal>column</literal> (optional): Der Spaltenname des Fremdschlüssels. "
+"Kann auch durch verschachtelte <literal>&lt;column&gt;</literal>-Element(e) "
+"spezifiziert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the associated class."
+msgstr ""
+"<literal>class</literal> (optional - Standard ist der durch die Reflexion "
+"bestimmte Property-Typ): Der Name der assoziierten Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (optional) legt fest, welche Vorgänge vom "
+"übergeordneten Objekt an das assoziierte Objekt weitergegeben werden sollen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"<literal>fetch</literal> (optional - die Standardeinstellung lautet "
+"<literal>select</literal>): Wählt zwischen \"Outer-Join-Fetching\" oder "
+"sequentiellem \"Select-Fetching\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from another property that maps to "
+"the same column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (optional - die Standardeinstellung lautet "
+"<literal>true</literal>) legt fest, dass die gemappten Spalten in SQL "
+"<literal>UPDATE</literal> und/oder <literal>INSERT</literal>-Anweisungen "
+"eingeschlossen werden sollten. Wählt man bei beiden die Einstellung "
+"<literal>false</literal>, so ist eine reine, \"abgeleitete\" Assoziation "
+"möglich, deren Wert aus einer anderen Property, die zu derselben/denselben "
+"Spalte(n) mappt oder durch einen Trigger oder eine andere Anwendung "
+"initialisiert wird, möglich."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (optional) Der Name einer Property der "
+"assoziierten Klasse die mit diesem Fremdschlüssel verbunden ist. Falls nicht "
+"festgelegt, so wird der Primärschlüssel der assoziierten Klasse verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. By allowing this to be the target of "
+"a <literal>property-ref</literal>, you can make the association multiplicity "
+"one-to-one."
+msgstr ""
+"<literal>unique</literal> (optional): Aktiviert die DDL-Generierung einer "
+"eindeutigen Bedingung für die Spalte des Fremdschlüssels. Kann auch das Ziel "
+"einer <literal>property-ref</literal> sein. Dadurch ist die "
+"Assoziationsmultiplizität \"one-to-one\" effektiv."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (optional): Aktiviert die DDL-Generierung einer "
+"\"Nullability\"-Bedingung für die Fremdschlüsselspalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. This requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (optional - die Standardeinstellung lautet "
+"<literal>proxy</literal>): In der Standardeinstellung werden \"Single-Point"
+"\"-Assoziationen geproxied. <literal>lazy=\"no-proxy\"</literal> bestimmt, "
+"dass für die Property \"lazy Fetching\" gilt (d.h. assoziierte Objekte "
+"werden bei Bedarf nachgeladen), wenn erstmals auf die Instanzvariable "
+"zugegriffen wird (erfordert Build-time Bytecode Instrumentierung). "
+"<literal>lazy=\"false\"</literal> bestimmt, dass für die Assoziation stets "
+"\"eager Fetching\" gilt (d.h. zusammengefasstes Laden von Objekt und "
+"assoziierten Objekten mit Verbundoperationen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (optional - standardmäßig <literal>exception</"
+"literal>): Bestimmt, wie Fremdschlüssel, die auf fehlende Reihen verweisen, "
+"behandelt werden. Mit <literal>ignore</literal> wird eine fehlende Reihe als "
+"Null-Assoziation angesehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class."
+msgstr ""
+"<literal>entity-name</literal> (optional): Der Entity-Name der assoziierten "
+"Klasse."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (optional): Ein SQL-Ausdruck, der den Wert für "
+"einen <emphasis>errechneten</emphasis> Fremdschlüssel definiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are divided into "
+"three categories. First, basic operations, which include: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>; "
+"second, special values: <literal>delete-orphan</literal>; and third,"
+"<literal>all</literal> comma-separated combinations of operation names: "
+"<literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,"
+"delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> "
+"for a full explanation. Note that single valued, many-to-one and one-to-one, "
+"associations do not support orphan delete."
+msgstr ""
+"Wird der Wert des <literal>cascade</literal>-Attributs auf einen anderen "
+"sinnvollen Wert als <literal>none</literal> gesetzt, so pflanzen sich "
+"bestimmte Vorgänge zum zugehörigen Objekt fort. Zu den sinnvollen Werten "
+"gehören Hibernates Grundvorgänge <literal>persist, merge, delete, save-"
+"update, evict, replicate, lock, refresh</literal>, die Sonderwerte "
+"<literal>delete-orphan</literal> und <literal>all</literal> sowie durch "
+"Komma getrennte Kombinationen von Vorgangsnamen, zum Beispiel "
+"<literal>cascade=\"persist,merge,evict\"</literal> oder <literal>cascade="
+"\"all,delete-orphan\"</literal>. Eine vollständige Erläuterung hierzu finden "
+"Sie unter <xref linkend=\"objectstate-transitive\"/>. Bitte beachten Sie, "
+"dass einwertige Assoziationen (Many-to-One und One-to-One Assoziationen) "
+"\"Orphan Delete\" nicht unterstützen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr ""
+"Eine typische <literal>many-to-one</literal>-Deklaration sieht so "
+"unkompliziert wie die Folgende aus:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is a complicated and "
+"confusing relational model. For example, if the <literal>Product</literal> "
+"class had a unique serial number that is not the primary key. The "
+"<literal>unique</literal> attribute controls Hibernate's DDL generation with "
+"the SchemaExport tool."
+msgstr ""
+"Das <literal>property-ref</literal>-Attribut sollte nur für das Mapping von "
+"Stammdaten verwendet werden, in denen ein Fremdschlüssel auf einen "
+"eindeutigen Schlüssel der assoziierten Tabelle verweist, der nicht der "
+"Primärschlüssel ist. Es handelt sich dabei um ein nicht besonders "
+"ansehnliches relationales Modell. Nehmen wir zum Beispiel an, dass die "
+"<literal>Product</literal>-Klasse eine eindeutige Seriennummer besitzt, die "
+"nicht der Primärschlüssel ist. (Das <literal>unique</literal>-Attribut "
+"steuert Hibernates DDL-Generierung mittels dem SchemaExport-Tool)."
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr ""
+"Dann könnte das Mapping für <literal>OrderItem</literal> folgendes verwenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This is not encouraged, however."
+msgstr "Allerdings wird dies nicht empfohlen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal>&lt;"
+"properties&gt;</literal> element."
+msgstr ""
+"Wenn der eindeutige Schlüssel, auf den verwiesen wird, mehrere Properties "
+"der zugehörigen Entity enthält, so sollten die Properties, auf die verwiesen "
+"wird, in einem benannten <literal>&lt;properties&gt;</literal>-Element "
+"gemappt werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you can specify "
+"a property path:"
+msgstr ""
+"Falls der eindeutige Schlüssel, auf den verwiesen wird, die Property einer "
+"Komponente ist, so können Sie einen Property-Pfad festlegen:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-one"
+msgstr "one-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"Eine \"One-to-One\"-Assoziation mit einer anderen persistenten Klasse wird "
+"unter Verwendung eines <literal>one-to-one</literal>-Elements deklariert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional): specifies that a foreign key "
+"constraint on the primary key of the mapped table and references the table "
+"of the associated class. This option affects the order in which <literal>save"
+"()</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association can be proxied. It is also used by the schema export "
+"tool."
+msgstr ""
+"<literal>constrained</literal> (optional) legt fest, dass eine "
+"Fremdschlüsselbedingung auf dem Primärschlüssel der gemappten Tabelle auf "
+"die Tabelle der assoziierten Klasse verweist. Diese Option hat Einfluss auf "
+"die Reihenfolge in der <literal>save()</literal> und <literal>delete()</"
+"literal> aufeinander folgen und bestimmt, ob die Assoziation geproxied "
+"werden kann (wird auch vom Schema-Export-Tool verwendet)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (optional) Der Name einer Property der "
+"assoziierten Klasse, die mit dem Primärschlüssel dieser Klasse verbunden "
+"ist. Falls nicht anders festgelegt, so wird der Primärschlüssel der "
+"assoziierten Klasse verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): almost all one-to-one associations "
+"map to the primary key of the owning entity. If this is not the case, you "
+"can specify another column, columns or expression to join on using an SQL "
+"formula. See <literal>org.hibernate.test.onetooneformula</literal> for an "
+"example."
+msgstr ""
+"<literal>formula</literal> (optional): Fast alle \"One-to-One\" -"
+"Assoziationen mappen zum Primärschlüssel der Entity, die sie besitzt. Im "
+"seltenen Falle, dass dem nicht so ist, können Sie festlegen, dass sich eine "
+"andere Spalte, Spalten oder Ausdruck unter Verwendung einer SQL-Formel "
+"verbinden. (Siehe zum Beispiel <literal>org.hibernate.test.onetooneformula</"
+"literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. It requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+"<literal>lazy</literal> (optional - die Standardeinstellung lautet "
+"<literal>proxy</literal>): In der Standardeinstellung werden \"Single-Point"
+"\"-Assoziationen geproxied. <literal>lazy=\"no-proxy\"</literal> legt fest, "
+"dass für die Property \"lazy Fetching\" gilt (d.h. assoziierte Objekte "
+"werden bei Bedarf nachgeladen), wenn erstmals auf die Instanzvariable "
+"zugegriffen wird (erfordert Build-time Bytecode Instrumentierung). "
+"<literal>lazy=\"false\"</literal> legt fest, dass für die Assoziation stets "
+"\"eager Fetching\" gilt (d.h. zusammengefasstes Laden von Objekt und "
+"assoziierten Objekten mit Verbundoperationen).<emphasis>Bitte beachten Sie, "
+"dass bei <literal>constrained=\"false\"</literal> das Erstellen von Proxies "
+"nicht möglich ist und Hibernate bei der Assoziation \"eager Fetching\" "
+"anwendet!</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "Es existieren zwei Arten von \"One-to-One\"-Assoziation:"
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "Assoziationen des Primärschlüssels"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "Assoziationen eines eindeutigen Fremdschlüssels"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Primary key associations do not need an extra table column. If two rows are "
+"related by the association, then the two table rows share the same primary "
+"key value. To relate two objects by a primary key association, ensure that "
+"they are assigned the same identifier value."
+msgstr ""
+"Assoziationen von Primärschlüsseln benötigen keine Extra-Tabellenspalte. "
+"Wenn zwei Reihen durch die Assoziation verbunden sind, dann teilen die "
+"beiden Tabellenspalten denselben Primärschlüsselwert. Falls Sie also "
+"wünschen, dass zwei Objekte mittels Assoziation des Primärschlüssels "
+"verbunden werden, müssen Sie sicherstellen, dass ihnen derselbe "
+"Bezeichnerwert zugeschrieben wird!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+"Für eine Assoziation des Primärschlüssels fügen Sie die folgenden Mappings "
+"zu <literal>Employee</literal> beziehungsweise <literal>Person</literal> "
+"hinzu."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE "
+"tables are equal. You use a special Hibernate identifier generation strategy "
+"called <literal>foreign</literal>:"
+msgstr ""
+"Nun muss sicher gestellt werden, dass die Primärschlüssel verbundener Reihen "
+"in den PERSON- und EMPLOYEE-Tabellen gleich sind. Dabei kommt eine besondere "
+"Strategie namens <literal>foreign</literal> für die Generierung des "
+"Bezeichners durch Hibernate zum Einsatz:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is assigned the same "
+"primary key value as the <literal>Employee</literal> instance referred with "
+"the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+"Einer neu gespeicherten Instanz von <literal>Person</literal> wird dann "
+"derselbe Wert des Primärschlüssels zugeschrieben wie der <literal>Employee</"
+"literal>-Instanz, die mit der <literal>employee</literal>-Property dieser "
+"<literal>Person</literal> referenziert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, can be expressed "
+"as:"
+msgstr ""
+"Alternativ kann ein Fremdschlüssel mit eindeutiger Bedingung von "
+"<literal>Employee</literal> zu <literal>Person</literal> wie folgt "
+"ausgedrückt werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This association can be made bidirectional by adding the following to the "
+"<literal>Person</literal> mapping:"
+msgstr ""
+"Und diese Assoziation kann durch Hinzufügen des Folgenden zum "
+"<literal>Person</literal>-Mapping bidirektional gemacht werden:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Natural-id"
+msgstr "natural-id"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Although we recommend the use of surrogate keys as primary keys, you should "
+"try to identify natural keys for all entities. A natural key is a property "
+"or combination of properties that is unique and non-null. It is also "
+"immutable. Map the properties of the natural key inside the <literal>&lt;"
+"natural-id&gt;</literal> element. Hibernate will generate the necessary "
+"unique key and nullability constraints and, as a result, your mapping will "
+"be more self-documenting."
+msgstr ""
+"Obwohl wir die Verwendung von Surrogatschlüsseln als Primärschlüssel "
+"empfehlen, sollten Sie nach wie vor versuchen natürliche Schlüssel für alle "
+"Entities zu identifizieren. Ein natürlicher Schlüssel ist eine Property oder "
+"Kombination von Properties die eindeutig und ungleich Null ist. Falls sie "
+"außerdem unveränderbar ist, umso besser. Mappen Sie die Properties des "
+"natürlichen Schlüssels innerhalb des <literal>&lt;natural-id&gt;</literal>-"
+"Elements. Hibernate generiert den nötigen eindeutigen Schlüssel sowie "
+"\"Nullability\"-Bedingungen, und Ihr Mapping wird selbst-dokumentierender."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"Wir empfehlen dringend die Implementierung von <literal>equals()</literal> "
+"und <literal>hashCode()</literal>, um die Properties des natürlischen "
+"Schlüssels der Entity zu vergleichen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This mapping is not intended for use with entities that have natural primary "
+"keys."
+msgstr ""
+"Dieses Mapping ist nicht für die Verwendung mit Entities mit natürlichen "
+"Primärschlüsseln vorgesehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>false</"
+"literal>): by default, natural identifier properties are assumed to be "
+"immutable (constant)."
+msgstr ""
+"<literal>mutable</literal> (optional, die Standardeinstellung lautet "
+"<literal>false</literal>): In der Standardeinstellung wird davon "
+"ausgegangen, dass die natürlichen Bezeichner-Properties unveränderbar "
+"(konstant) sind."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Component and dynamic-component"
+msgstr "component, dynamic-component"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components can, in turn, "
+"declare their own properties, components or collections. See the \"Component"
+"\" examples below:"
+msgstr ""
+"Das <literal>&lt;component&gt;</literal>-Element mappt die Properties eines "
+"untergeordneten Objekts zu den Spalten der Tabelle der übergeordneten "
+"Klasse. Komponenten wiederum können ihre eigenen Properties, Komponenten "
+"oder \"Collections\" deklarieren. Siehe \"Komponenten\" unten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (optional - Standardeinstellung ist der durch "
+"Reflexion bestimmte Property-Typ): Der Name der (untergeordneten) "
+"Komponentenklasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: do the mapped columns appear in SQL "
+"<literal>INSERTs</literal>?"
+msgstr ""
+"<literal>insert</literal>: Erscheinen die gemappten Spalten in SQL "
+"<literal>INSERT</literal>s?"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update</literal>: do the mapped columns appear in SQL "
+"<literal>UPDATEs</literal>?"
+msgstr ""
+"<literal>update</literal>: Erscheinen die gemappten Spalten in SQL "
+"<literal>UPDATE</literal>s?"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this component should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>): Legt fest, dass für diese Komponente \"lazy "
+"Fetching\" gilt, wenn erstmals auf die Instanzvariable zugegriffen wird "
+"(erfordert Build-time Bytecode Instrumentierung)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this component either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional - die Standardeinstellung "
+"lautet <literal>true</literal>): Legt fest, ob Aktualisierungen dieser "
+"Komponente die Erfassung einer optimistischen Sperre benötigen oder nicht. "
+"Mit anderen Worten, es wird bestimmt, ob eine Erhöhung der Version "
+"stattfinden soll, wenn die Inhalte dieser Property sich verändert haben (man "
+"sagt sie sein dann \"dirty\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>): Bestimmt, dass eine eindeutige Bedingung an allen "
+"gemappten Spalten der Komponente existiert."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The child <literal>&lt;property&gt;</literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"Die untergeordneten <literal>&lt;property&gt;</literal>-Tags mappen "
+"Properties der untergeordneten Klasse zu den Spalten der Tabelle."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"Das <literal>&lt;component&gt;</literal>-Element ermöglicht ein <literal>&lt;"
+"parent&gt;</literal>-Subelement, das eine Property der Komponentenklasse als "
+"Rückreferenz zur enthaltenden Entity mappt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;dynamic-component&gt;</literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for "
+"more information."
+msgstr ""
+"Das <literal>&lt;dynamic-component&gt;</literal>-Element erlaubt es einer "
+"<literal>Map</literal> als Komponente gemappt zu werden, wenn die Namen der "
+"Properties auf Schlüssel der Map verweisen, siehe <xref linkend=\"components-"
+"dynamic\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Properties"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;properties&gt;</literal> element allows the definition of a "
+"named, logical grouping of the properties of a class. The most important use "
+"of the construct is that it allows a combination of properties to be the "
+"target of a <literal>property-ref</literal>. It is also a convenient way to "
+"define a multi-column unique constraint. For example:"
+msgstr ""
+"Das <literal>&lt;properties&gt;</literal>-Element erlaubt die Definition "
+"einer benannten, logischen Gruppierung der Properties einer Klasse. Der "
+"wichtigste Aspekt des Konstrukts ist, dass es die Verwendung einer Gruppe "
+"von Properties als Ziel einer <literal>property-ref</literal> ermöglicht. Es "
+"bietet außerdem eine gute Möglichkeit, eine eindeutige Mehrspalten-Bedingung "
+"zu definieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the logical name of the grouping. It is "
+"<emphasis>not</emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: Der logische Name der Gruppierung - <emphasis>kein</"
+"emphasis> tatsächlicher Property-Name."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to these properties either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional - die Standardeinstellung "
+"lautet <literal>true</literal>): Legt fest, ob Aktualisierungen dieser "
+"Properties die Erfassung einer optimistischen Sperre benötigen oder nicht. "
+"Mit anderen Worten, es wird bestimmt, ob eine Erhöhung der Version "
+"stattfinden soll, wenn die Inhalte dieser Properties sich verändert haben "
+"(man sagt sie seien dann \"dirty\")."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal>&lt;properties&gt;</literal> "
+"mapping:"
+msgstr ""
+"Nehmen wir etwa das folgende <literal>&lt;properties&gt;</literal>-Mapping:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You might have some legacy data association that refers to this unique key "
+"of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"Und wir könnten eine Stammdatenassoziation haben, die auf diesen eindeutigen "
+"Schlüssel der <literal>Person</literal>-Tabelle verweist, statt auf den "
+"Primärschlüssel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The use of this outside the context of mapping legacy data is not "
+"recommended."
+msgstr ""
+"Außerhalb vom Kontext des Mappens von Stammdaten wird diese Vorgehensweise "
+"jedoch nicht empfohlen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Subclass"
+msgstr "subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Polymorphic persistence requires the declaration of each subclass of the "
+"root persistent class. For the table-per-class-hierarchy mapping strategy, "
+"the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+"Schließlich erfordert die polymorphe Persistenz die Deklaration jeder "
+"Subklasse der persistenten Stammklasse. Für die Tabelle-pro-Klasse-"
+"Hierarchie (sog. \"table-per-class-hierarchy\") Mapping-Strategie wird die "
+"<literal>&lt;subclass&gt;</literal>-Deklaration verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr "<literal>name</literal>: Der vollständige Klassenname der Subklasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (optional - die Standardeinstellung "
+"ist der Klassenname): Ein Wert, der einzelne Subklassen unterscheidet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface used for "
+"lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (optional): Bestimmt eine Klasse oder ein "
+"Interface, die/das für die Initialisierung von Proxies bei Bedarf (sog. "
+"\"lazy initializing proxies\") verwendet werden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (optional, die Standardeinstellung lautet "
+"<literal>true</literal>): Die Einstellung <literal>lazy=\"false\"</literal> "
+"deaktiviert die Verwendung von \"Lazy Fetching\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Each subclass declares its own persistent properties and subclasses. "
+"<literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a hierarchy must define a unique <literal>discriminator-value</literal>. If "
+"this is not specified, the fully qualified Java class name is used."
+msgstr ""
+"Jede Subklasse sollte ihre eigenen persistenten Properties und Subklassen "
+"deklarieren. Die <literal>&lt;version&gt;</literal> und <literal>&lt;id&gt;</"
+"literal>-Properties werden als von der Stammklasse vererbt vorausgesetzt. "
+"Jede Subklasse einer Hierarchie muss einen eindeutigen "
+"<literal>discriminator-value</literal> definieren. Ist keiner festgelegt, so "
+"wird der vollständige Java Klassenname verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For information about inheritance mappings see <xref linkend=\"inheritance"
+"\" />."
+msgstr ""
+"Informationen zu Vererbungsmappings (\"sog. \"inheritance mappings\") finden "
+"Sie unter <xref linkend=\"inheritance\"/>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Joined-subclass"
+msgstr "joined-subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Each subclass can also be mapped to its own table. This is called the table-"
+"per-subclass mapping strategy. An inherited state is retrieved by joining "
+"with the table of the superclass. To do this you use the <literal>&lt;joined-"
+"subclass&gt;</literal> element. For example:"
+msgstr ""
+"Alternativ kann jede Subklasse zu ihrer eigenen Tabelle gemappt werden (sog. "
+"\"Table-per-Subclass\" Mapping-Strategie). Der vererbte Status wird durch "
+"Verbindung mit der Tabelle der Superklasse abgerufen. Es wird das "
+"<literal>&lt;joined-subclass&gt;</literal>-Element verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal>: Der Name der Subklassentabelle."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (optional): Bestimmt eine Klasse oder ein "
+"Interface, die/das für die Initialisierung von Proxies bei Bedarf (sog. "
+"\"lazy initializing proxies\") verwendet werden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (optional, die Standardeinstellung lautet "
+"<literal>true</literal>): Die Einstellung <literal>lazy=\"false\"</literal> "
+"deaktiviert die Verwendung von \"Lazy Fetching\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A discriminator column is not required for this mapping strategy. Each "
+"subclass must, however, declare a table column holding the object identifier "
+"using the <literal>&lt;key&gt;</literal> element. The mapping at the start "
+"of the chapter would then be re-written as:"
+msgstr ""
+"Bei dieser Mapping-Strategie ist keine Diskriminatortabelle erforderlich. "
+"Jede Subklasse muss jedoch unter Verwendung des <literal>&lt;key&gt;</"
+"literal>-Elements eine Tabellenspalte deklarieren, die den Objektbezeichner "
+"enthält. Das Mapping vom Kapitelbeginn würde dann wie folgt umgeschrieben:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Union-subclass"
+msgstr "union-subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables. This is called the table-per-concrete-class strategy. "
+"Each table defines all persistent states of the class, including the "
+"inherited state. In Hibernate, it is not necessary to explicitly map such "
+"inheritance hierarchies. You can map each class with a separate <literal>&lt;"
+"class&gt;</literal> declaration. However, if you wish use polymorphic "
+"associations (e.g. an association to the superclass of your hierarchy), you "
+"need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For "
+"example:"
+msgstr ""
+"Eine dritte Möglichkeit besteht darin, nur die konkreten Klassen einer "
+"Vererbungshierarchie zu Tabellen zu mappen (sog. \"table-per-concrete-class"
+"\"-Strategie), bei der jede Tabelle jeden persistenten Status "
+"(einschließlich vererbter) definiert. In Hibernate ist es absolut nicht "
+"notwendig solche Vererbungshierarchien explizit zu mappen. Sie können "
+"einfach jede Klasse mit einer separaten <literal>&lt;class&gt;</literal>-"
+"Deklaration mappen. Falls Sie jedoch polymorphe Assoziationen verwenden "
+"wollen (z.B. eine Assoziation zur Superklasse Ihrer Hierarchie), so müssen "
+"Sie das <literal>&lt;union-subclass&gt;</literal>-Mapping verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No discriminator column or key column is required for this mapping strategy."
+msgstr ""
+"Für diese Mapping-Strategie ist keine Diskriminatorspalte oder "
+"Schlüsselspalte erforderlich."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Join"
+msgstr "join"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using the <literal>&lt;join&gt;</literal> element, it is possible to map "
+"properties of one class to several tables that have a one-to-one "
+"relationship. For example:"
+msgstr ""
+"Mittels des <literal>&lt;join&gt;</literal>-Elements können Properties einer "
+"Klasse zu mehreren Tabellen gemappt werden, wenn eine 1-zu-1 Beziehung "
+"zwischen den Tabellen besteht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal>: Der Name der verbundenen Tabelle."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"if set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its "
+"superclasses. It will use an outer join for a <literal>&lt;join&gt;</"
+"literal> defined by a subclass. If set to <literal>select</literal> then "
+"Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> "
+"defined on a subclass. This will be issued only if a row represents an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (optional - die Standardeinstellung lautet "
+"<literal>join</literal>): Falls im Standard auf <literal>join</literal> "
+"eingestellt, so verwendet Hibernate einen inneren Verbund (sog. \"inner join"
+"\"), um einen durch eine Klasse oder deren Superklasse definierten "
+"<literal>&lt;join&gt;</literal> und einen äußeren Verbund (sog. \"outer join"
+"\") für einen durch eine Subklasse definierten <literal>&lt;join&gt;</"
+"literal> abzurufen. Bei der Einstellung <literal>select</literal> verwendet "
+"Hibernate eine sequentielle Auswahl für einen an einer Subklasse definierten "
+"<literal>&lt;join&gt;</literal>, welcher nur herausgegeben wird, wenn "
+"festgestellt wird, dass eine Reihe eine Instanz der Subklasse repräsentiert. "
+"Innere Verbünde werden nach wie vor verwendet, um einen durch eine Klasse "
+"oder deren Superklasse definierten <literal>&lt;join&gt;</literal> abzurufen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will not insert or update the properties "
+"defined by this join."
+msgstr ""
+"<literal>inverse</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>): Falls aktiviert, wird Hibernate nicht versuchen, "
+"die durch diese Verknüpfung definierten Properties einzufügen oder zu "
+"aktualisieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null. It will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (optional - die Standardeinstellung lautet "
+"<literal>false</literal>): Falls aktiviert, wird Hibernate nur dann eine "
+"Reihe einfügen, wenn die durch diese Verknüpfung definierten Properties "
+"ungleich Null sind. Es wird außerdem stets einen äußeren Verbund beim Abruf "
+"der Properties verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For example, address information for a person can be mapped to a separate "
+"table while preserving value type semantics for all properties:"
+msgstr ""
+"Die Adressinformationen einer Person können zum Beispiel zu einer separaten "
+"Tabelle gemappt werden (unter Berücksichtigung der Semantik der Wertetypen "
+"aller Properties):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models. We recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"Dieses Feature ist bei Stammdatenmodellen oft sehr nützlich, wir empfehlen "
+"weniger Tabellen als Klassen sowie ein feinstufiges Domainmodell. Es ist "
+"jedoch von Nutzen, wenn zwischen Mapping-Strategien der Vererbung in einer "
+"einzelnen Hierarchie gewechselt wird. Wir gehen später noch näher darauf ein."
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;key&gt;</literal> element has featured a few times within "
+"this guide. It appears anywhere the parent mapping element defines a join to "
+"a new table that references the primary key of the original table. It also "
+"defines the foreign key in the joined table:"
+msgstr ""
+"Das <literal>&lt;key&gt;</literal>-Element ist nun bereits öfter "
+"aufgetreten. Es erscheint überall dort, wo das übergeordnete Mapping-Element "
+"die Verknüpfung zu einer neuen Tabelle definiert. Es definiert den "
+"Fremdschlüssel in der verknüpften Tabelle, der auf den Primärschlüssel der "
+"Originaltabelle verweist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional - defaults to <literal>noaction</"
+"literal>): specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (optional, die Standardeinstellung lautet "
+"<literal>noaction</literal>): Legt fest, ob die Bedingung für den "
+"Fremdschlüssel auf Datenbankebene \"cascade delete\" aktiviert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): specifies that the foreign key "
+"refers to columns that are not the primary key of the original table. It is "
+"provided for legacy data."
+msgstr ""
+"<literal>property-ref</literal> (optional): Legt fest, dass der "
+"Fremdschlüssel auf Spalten verweist, die nicht der Primärschlüssel der "
+"Originaltabelle sind (für existierende Daten, sog. \"Legacy Data\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): specifies that the foreign key "
+"columns are not nullable. This is implied whenever the foreign key is also "
+"part of the primary key."
+msgstr ""
+"<literal>not-null</literal> (optional): Legt fest, dass die Spalten des "
+"Fremdschlüssels nicht nullbar (\"nullable\") sind (wird immer dann "
+"vorausgesetzt, wenn der Fremdschlüssel auch Teil des Primärschlüssels ist)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update</literal> (optional): specifies that the foreign key should "
+"never be updated. This is implied whenever the foreign key is also part of "
+"the primary key."
+msgstr ""
+"<literal>update</literal> (optional): Legt fest, dass der Fremdschlüssel "
+"niemals aktualisiert werden soll (wird immer dann vorausgesetzt, wenn der "
+"Fremdschlüssel auch Teil des Primärschlüssels ist)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): specifies that the foreign key should "
+"have a unique constraint. This is implied whenever the foreign key is also "
+"the primary key."
+msgstr ""
+"<literal>unique</literal> (optional): Legt fest, dass der Fremdschlüssel "
+"eine eindeutige Bedingung haben soll (wird immer dann vorausgesetzt, wenn "
+"der Fremdschlüssel auch der Primärschlüssel ist)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For systems where delete performance is important, we recommend that all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"uses a database-level <literal>ON CASCADE DELETE</literal> constraint, "
+"instead of many individual <literal>DELETE</literal> statements. Be aware "
+"that this feature bypasses Hibernate's usual optimistic locking strategy for "
+"versioned data."
+msgstr ""
+"Wir empfehlen, dass für Systeme bei denen \"Delete Performance\" wichtig "
+"ist, alle Schlüssel als <literal>on-delete=\"cascade\"</literal> definiert "
+"werden und Hibernate eine Bedingung der Datenbankebene <literal>ON CASCADE "
+"DELETE</literal> statt einzelner <literal>DELETE</literal>-Anweisungen "
+"verwendet. Bitte beachten Sie, dass dieses Feature Hibernates reguläre "
+"Strategie für optimistisches Sperren für versionierte Daten umgeht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one-to-many association. If you map a "
+"unidirectional one-to-many association to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>."
+msgstr ""
+"Die <literal>not-null</literal> und <literal>update</literal>-Attribute sind "
+"insbesondere beim Mappen einer unidirektionalen \"One-to-Many\"-Assoziation "
+"hilfreich. Falls Sie eine unidirektionale \"One-to-Many\" zu einem nicht-"
+"nullbaren Fremdschlüssel mappen, so<emphasis>müssen</emphasis> Sie die "
+"Spalte des Schlüssels unter Verwendung von <literal>&lt;key not-null=\"true"
+"\"&gt;</literal> deklarieren."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Column and formula elements"
+msgstr "Spalten- und Formel-Elemente"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Mapping elements which accept a <literal>column</literal> attribute will "
+"alternatively accept a <literal>&lt;column&gt;</literal> subelement. "
+"Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the "
+"<literal>formula</literal> attribute. For example:"
+msgstr ""
+"Jedes Mapping-Element das ein <literal>column</literal>-Attribut akzeptiert, "
+"akzeptiert alternativ auch ein <literal>&lt;column&gt;</literal>-Subelement. "
+"Ebenso ist <literal>&lt;formula&gt;</literal> eine Alternative zum "
+"<literal>formula</literal>-Attribut."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most of the attributes on <literal>column</literal> provide a means of "
+"tailoring the DDL during automatic schema generation. The <literal>read</"
+"literal> and <literal>write</literal> attributes allow you to specify custom "
+"SQL that Hibernate will use to access the column's value. For more on this, "
+"see the discussion of <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link>."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>column</literal> and <literal>formula</literal> elements can "
+"even be combined within the same property or association mapping to express, "
+"for example, exotic join conditions."
+msgstr ""
+"Die <literal>column</literal> und <literal>formula</literal>-Attribute "
+"können sogar innerhalb desselben auszudrückenden Property- oder "
+"Assoziationsmappings kombiniert werden, zum Beispiel ausgefallene "
+"Verbundbedingungen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Import"
+msgstr "import"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your application has two persistent classes with the same name, and you "
+"do not want to specify the fully qualified package name in Hibernate "
+"queries, classes can be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You can also import classes and "
+"interfaces that are not explicitly mapped:"
+msgstr ""
+"Nehmen wir an, Ihre Anwendung besitzt zwei persistente Klassen mit demselben "
+"Namen, und Sie wollen nicht den vollständigen (Paket-) Namen in Hibernate "
+"Anfragen spezifizieren. Klassen können explizit \"importiert\" werden, statt "
+"auf <literal>auto-import=\"true\"</literal> angewiesen zu sein. Sie können "
+"sogar Klassen und Interfaces importieren, die nicht explizit gemappt sind."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr ""
+"<literal>class</literal>: Der vollständige Klassenname einer Java-Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): a name that can be used in the query language."
+msgstr ""
+"<literal>rename</literal> (optional - die Standardeinstellung ist der nicht "
+"definierte Klassenname): Ein Name, der in der Anfragensprache verwendet "
+"werden kann."
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is one more type of property mapping. The <literal>&lt;any&gt;</"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping requires more than one column. The "
+"first column contains the type of the associated entity. The remaining "
+"columns contain the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association. This is not the usual way of "
+"mapping polymorphic associations and you should use this only in special "
+"cases. For example, for audit logs, user session data, etc."
+msgstr ""
+"Es gibt noch einen weiteren Typ von Property-Mapping. Das <literal>&lt;"
+"any&gt;</literal> Mapping-Element definiert eine polymorphe Assoziation zu "
+"Klassen mehrerer Tabellen. Diese Art von Mapping erfordert immer mehr als "
+"eine Spalte. Die erste Spalte enthält den Typ der zugehörigen Entity. Die "
+"übrigen Spalten enthalten den Bezeichner. Es ist unmöglich, eine Bedingung "
+"für den Fremdschlüssel für diese Art von Assoziation festzulegen, daher ist "
+"dies nicht als reguläre Art des Mappings (polymorpher) Assoziationen "
+"gedacht. Sie sollten diesen Typ von Mapping nur in ganz besonderen Fällen "
+"anwenden (z.B. für Überprüfungsprotokolle, Daten der Benutzersession usw.)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute allows the application to specify "
+"a custom type that maps database column values to persistent classes that "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"Das <literal>meta-type</literal>-Attribut ermöglicht es der Anwendung einen "
+"anwenderdefinierten Typ festzulegen, der die Werte der Datenbankspalte zu "
+"persistenten Klassen mit durch <literal>id-type</literal> bestimmte "
+"Bezeichner-Properties mappt. Das Mapping muss aus Werten des Meta-Typs zu "
+"Klassennamen bestimmt werden."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>: Der Bezeichnertyp."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal> (optional - die Standardeinstellung lautet "
+"<literal>string</literal>): Jeder Typ, der für ein Diskriminator-Mapping "
+"gestattet ist."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (optional- die Standardeinstellung lautet "
+"<literal>none</literal>): der \"Cascade-Style\" (Weitergabestil)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property either do or do not "
+"require acquisition of the optimistic lock. It defines whether a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional - die Standardeinstellung "
+"lautet <literal>true</literal>): Legt fest, ob Aktualisierungen dieser "
+"Property die Erfassung einer optimistischen Sperre benötigen oder nicht. Mit "
+"anderen Worten, es wird bestimmt ob eine Erhöhung der Version stattfinden "
+"soll, wenn die Inhalte dieser Property sich verändert haben."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Hibernate types"
+msgstr "Hibernate-Typen"
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "Entities und Werte"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In relation to the persistence service, Java language-level objects are "
+"classified into two groups:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model, "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted. Saves and deletions, however, can be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children. This is "
+"different from the ODMG model of object persistence by reachability and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They can "
+"also be versioned."
+msgstr ""
+"Eine <emphasis>Entity</emphasis> existiert unabhängig von anderen Objekten, "
+"die Verweise zu der Entity enthalten. Das steht im Gegensatz zu dem üblichen "
+"Java-Modell bei dem ein unreferenziertes Objekt aus dem Speicher bereinigt "
+"wird. Entities müssen explizit gespeichert und gelöscht werden (ausgenommen, "
+"dass Speicherungen und Löschungen von einer übergeordneten Entity an die ihr "
+"untergeordneten Entities <emphasis>weitergegeben</emphasis> werden können). "
+"Das unterscheidet sich vom ODMG-Modell der Objektpersistenz durch "
+"Erreichbarkeit - und entspricht eher der Weise, in der Anwendungsobjekte in "
+"der Regel in großen Systemen verwendet werden. Entities unterstützen "
+"zirkulare und geteilte Verweise. Sie können auch versioniert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives: "
+"collections (not what is inside a collection), components and certain "
+"immutable objects. Unlike entities, values in particular collections and "
+"components, <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects and primitives are persisted and deleted along with "
+"their containing entity, they cannot be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"Der persistente Zustand einer Entity besteht aus Verweisen auf andere "
+"Entities sowie Instanzen des <emphasis>Werte</emphasis>typs. Werte sind "
+"\"Primitives\", Collections (nicht, was innerhalb einer Collection ist), "
+"Komponenten und bestimmte unveränderliche Objekte. Ungleich Entities "
+"<emphasis>werden </emphasis> Werte (insbesondere Collections und "
+"Komponenten) persistiert und nach Erreichbarkeit gelöscht. Da Wertobjekte "
+"(und \"Primitives\") mit der sie enthaltenden Entity persistiert und "
+"gelöscht werden, können sie nicht unabhängig versioniert werden. Werte "
+"besitzen keine unabhängige Identität und können daher nicht von zwei "
+"Entities oder Collections geteilt werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Until now, we have been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Not all user-defined classes with a "
+"persistent state, however, are entities. A <emphasis>component</emphasis> is "
+"a user-defined class with value semantics. A Java property of type "
+"<literal>java.lang.String</literal> also has value semantics. Given this "
+"definition, all types (classes) provided by the JDK have value type "
+"semantics in Java, while user-defined types can be mapped with entity or "
+"value type semantics. This decision is up to the application developer. An "
+"entity class in a domain model will normally have shared references to a "
+"single instance of that class, while composition or aggregation usually "
+"translates to a value type."
+msgstr ""
+"Bis jetzt wurde der Begriff \"persistente Klasse\" im Zusammenhang mit "
+"Entities verwendet, was auch weiterhin der Fall sein wird. Streng genommen "
+"sind jedoch nicht alle benutzerdefinierten Klassen mit persistentem Status "
+"Entities. Eine <emphasis>Komponente</emphasis> ist eine benutzerdefinierte "
+"Klasse mit Wertsemantik. Eine Java-Property des Typs <literal>java.lang."
+"String</literal> besitzt ebenfalls Wertsemantik. Angesichts dieser "
+"Definition kann man sagen, dass alle von der JDK bereitgestellten Typen "
+"(Klassen) in Java über Wertetyp-Semantik verfügen, während "
+"benutzerdefinierte Typen mit Entity- oder Wertetyp-Semantik gemappt werden "
+"können. Die Entscheidung bleibt hierbei dem Entwickler der Anwendung "
+"überlassen. Eine gute Idee für eine Entity-Klasse in einem Domain-Modell "
+"sind geteilte Verweise auf eine einzelne Instanz der Klasse, während "
+"Komposition oder Aggregation in der Regel für einen Wertetyp geeignet sind. "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr ""
+"Beide Konzepte werden innerhalb der Dokumentation noch wiederholt "
+"aufgegriffen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The challenge is to map the Java type system, and the developers' definition "
+"of entities and value types, to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate. For entities, <literal>&lt;"
+"class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. "
+"For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;"
+"component&gt;</literal>etc., that usually have a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides a range of mappings "
+"for standard JDK value types out of the box. You can write your own mapping "
+"types and implement your own custom conversion strategies."
+msgstr ""
+"Die Herausforderung besteht darin, das System des Java-Typs (und die "
+"Definitionen von Entities und Wertetypen der Entwickler) zu einem System des "
+"SQL/Datenbanktyps zu mappen. Die Brücke zwischen beiden Systemen wird von "
+"Hibernate bereitgestellt: Für Entities werden <literal>&lt;class&gt;</"
+"literal>, <literal>&lt;subclass&gt;</literal> usw. verwendet. Für Wertetypen "
+"werden <literal>&lt;property&gt;</literal>, <literal>&lt;component&gt;</"
+"literal>, usw. - in der Regel mit einem <literal>type</literal>-Attribut - "
+"verwendet. Der Wert dieses Attributs ist der Name eines Hibernate "
+"<emphasis>Mapping-Typs</emphasis>. Hibernate bietet viele Mappings (für "
+"Standard JDK Wertetypen). Sie können auch eigene Mapping-Typen erstellen und "
+"auch Ihre eigenen angepassten Datenkonvertierungsstrategien implementieren. "
+"Darauf gehen wir später noch ein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With the exception of collections, all built-in Hibernate types support null "
+"semantics."
+msgstr ""
+"Alle eingebauten Hibernate-Typen außer \"Collections\" unterstützen Null-"
+"Semantik (sog. \"null semantics\"."
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "Grundlegende Wertetypen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> can be roughly "
+"categorized into the following:"
+msgstr ""
+"Die eingebauten, <emphasis>grundlegenden Mapping-Typen</emphasis> können im "
+"Wesentlichen wie folgt kategorisiert werden"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+msgstr ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"Typen-Mappings von Java-\"Primitives\" oder \"Wrapper-Klassen\" zu passenden "
+"(Anbieter-spezifischen) SQL-Spaltentypen. <literal>boolean, yes_no</literal> "
+"und <literal>true_false</literal> sind alternative Verschlüsselungen für "
+"einen Java <literal>boolean</literal> oder <literal>java.lang.Boolean</"
+"literal>."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"Ein \"Type-Mapping\" von <literal>java.lang.String</literal> zu "
+"<literal>VARCHAR</literal> (oder Oracle <literal>VARCHAR2</literal>)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "date, time, timestamp"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"Type-Mappings von <literal>java.util.Date</literal> und dessen Subklassen zu "
+"SQL-Typen <literal>DATE</literal>, <literal>TIME</literal> und "
+"<literal>TIMESTAMP</literal> (oder äquivalent)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "calendar, calendar_date"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"Type-Mappings von <literal>java.util.Calendar</literal> zu SQL-Typen "
+"<literal>TIMESTAMP</literal> und <literal>DATE</literal> (oder äquivalent)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "big_decimal, big_integer"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"Type-Mappings von <literal>java.math.BigDecimal</literal> und <literal>java."
+"math.BigInteger</literal> zu <literal>NUMERIC</literal> (oder Oracle "
+"<literal>NUMBER</literal>)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "locale, timezone, currency"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
+msgstr ""
+"Type-Mappings von <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> und <literal>java.util.Currency</literal> "
+"zu<literal>VARCHAR</literal> (oder Oracle <literal>VARCHAR2</literal>). "
+"Instanzen von <literal>Locale</literal> und <literal>Currency</literal> "
+"werden zu ihren ISO-Codes gemappt. Instanzen von <literal>TimeZone</literal> "
+"werden zu ihrer <literal>ID</literal> gemappt."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
+msgstr ""
+"Ein Type-Mapping von <literal>java.lang.Class</literal> zu <literal>VARCHAR</"
+"literal> (oder Oracle <literal>VARCHAR2</literal>). Eine <literal>Class</"
+"literal> wird zu ihrem vollständigen Namen gemappt."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "Mappt Byte-Arrays zum zugehörigen SQL-Binärtyp."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>name</literal>: Der Property-Name."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"Mappt lange Java-Strings zum SQL <literal>CLOB</literal> oder <literal>TEXT</"
+"literal>-Typ."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You can also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+"Mappt serialisierbare Java-Typen zu einem zugehörigen SQL-Binärtyp. Sie "
+"können auch den Hibernate-Typ <literal>serializable</literal> mit dem Namen "
+"einer serialisierbaren Java-Klasse oder einem Interface (das in der "
+"Standardeinstellung kein Grundtyp ist) anzeigen."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>all</literal> Prüfung aller Spalten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types can be inconvenient for some "
+"applications, since the blob or clob object cannot be reused outside of a "
+"transaction. Driver support is patchy and inconsistent."
+msgstr ""
+"Typen-Mappings für dieJDBC-Klassen <literal>java.sql.Clob</literal> und "
+"<literal>java.sql.Blob</literal>. Diese Typen können sich für manche "
+"Anwendungen als unpraktisch erweisen, da das \"blob\" oder \"clob\"-Objekt "
+"nicht außerhalb einer Transaktion wiederverwendet werden darf. (Auch der "
+"Treiber-Support ist lückenhaft und uneinheitlich)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+msgstr ""
+"imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Type mappings for what are considered mutable Java types. This is where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new, "
+"nonidentical, object to the property."
+msgstr ""
+"Typen-Mappings für in der Regel als veränderlich angesehene Java-Typen, "
+"wobei Hibernate bestimmte und nur für unveränderliche Java-Typen passende "
+"Optimierungen vornimmt und die Anwendung das Objekt als unveränderlich "
+"behandelt. Sie sollten zum Beispiel nicht <literal>Date.setTime()</literal> "
+"für eine als <literal>imm_timestamp</literal> gemappte Instanz aufrufen. Um "
+"den Wert der Property zu verändern und diese Änderung persistent zu machen, "
+"muss die Anwendung der Property ein neues (nicht identisches) Objekt "
+"zuordnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unique identifiers of entities and collections can be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. Composite identifiers are also allowed. See below for more "
+"information."
+msgstr ""
+"Eindeutige Bezeichner von Entities und Collections können jeden Grundtyp "
+"außer <literal>binary</literal>, <literal>blob</literal> und <literal>clob</"
+"literal> besitzen. (Zusammengesetzte Bezeichner sind ebenfalls möglich, "
+"siehe unten)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"Die grundlegenden Wertetypen haben entsprechende <literal>Type</literal>-"
+"Konstanten, die auf <literal>org.hibernate.Hibernate</literal> definiert "
+"sind. So repräsentiert <literal>Hibernate.STRING</literal> zum Beispiel den "
+"<literal>string</literal>-Typ."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "Angepasste Wertetypen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. Custom types are not limited to "
+"mapping a property, or collection element, to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"Es ist relativ einfach für Entwickler, ihre eigenen Wertetypen zu erstellen. "
+"Sie könnten zum Beispiel die Properties vom Typ <literal>java.lang."
+"BigInteger</literal> zu <literal>VARCHAR</literal>-Spalten persistieren. "
+"Hibernate bietet hierfür keinen eingebauten Typ. Aber angepasste "
+"(anwenderdefinierte) Typen beschränken sich nicht auf das Mappen einer "
+"Property (oder eines Collection-Elements) zu einer einzelnen Tabellenspalte. "
+"So könnten Sie zum Beispiel eine Java-Property <literal>getName()</literal>/"
+"<literal>setName()</literal> des Typs <literal>java.lang.String</literal> "
+"haben, die zu den Spalten <literal>FIRST_NAME</literal>, <literal>INITIAL</"
+"literal>, <literal>SURNAME</literal> persistiert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. View "
+"<literal>org.hibernate.test.DoubleStringType</literal> to see the kind of "
+"things that are possible."
+msgstr ""
+"Um einen angepassten Typ zu implementieren, implementieren Sie entweder "
+"<literal>org.hibernate.UserType</literal> oder <literal>org.hibernate."
+"CompositeUserType</literal> und deklarieren Sie Properties unter Verwendung "
+"des vollständigen Klassennamens des Typs. Unter <literal>org.hibernate.test."
+"DoubleStringType</literal> finden Sie die unterschiedlichen Möglichkeiten, "
+"die es dabei gibt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice the use of <literal>&lt;column&gt;</literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"Beachten Sie die Verwendung von <literal>&lt;column&gt;</literal>-Tags beim "
+"Mappen einer Property zu mehreren Spalten."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"Die <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal> und "
+"<literal>UserVersionType</literal> Interfaces unterstützen auch speziellere "
+"Einsatzmöglichkeiten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal>&lt;"
+"type&gt;</literal> element in your mapping files."
+msgstr ""
+"Sie können sogar Parameter für einen <literal>UserType</literal> in der "
+"Mappingdatei bereitstellen. Dazu muss Ihr <literal>UserType</literal> das "
+"<literal>org.hibernate.usertype.ParameterizedType</literal>-Interface "
+"implementieren. Um Parameter für Ihren angepassten Typ bereitzustellen "
+"können Sie das <literal>&lt;type&gt;</literal>-Element in Ihren "
+"Mappingdateien verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"Der <literal>UserType</literal> kann jetzt den Wert für den Parameter mit "
+"Namen <literal>default</literal> von dem an ihn geleiteten "
+"<literal>Properties</literal>-Objekt abrufen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you regularly use a certain <literal>UserType</literal>, it is useful to "
+"define a shorter name for it. You can do this using the <literal>&lt;"
+"typedef&gt;</literal> element. Typedefs assign a name to a custom type, and "
+"can also contain a list of default parameter values if the type is "
+"parameterized."
+msgstr ""
+"Wenn Sie einen bestimmten <literal>UserType</literal> sehr oft verwenden, so "
+"kann es nützlich sein, wenn Sie einen kürzeren Namen für ihn definieren. Um "
+"das zu tun verwenden Sie das <literal>&lt;typedef&gt;</literal>-Element. "
+"\"Typedefs\" ordnen einem angepassten Typ einen Namen zu und können außerdem "
+"eine Liste standardmäßiger Parameterwerte enthalten, wenn der Typ "
+"parametriert wird."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"Es ist auch möglich, die in einer \"typedef\" bereitgestellten Parameter von "
+"Fall zu Fall unter Verwendung der Typ-Parameter des Property-Mappings außer "
+"Kraft zu setzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will rarely need to use a custom type, it is considered "
+"good practice to use custom types for non-entity classes that occur "
+"frequently in your application. For example, a <literal>MonetaryAmount</"
+"literal> class is a good candidate for a <literal>CompositeUserType</"
+"literal>, even though it could be mapped as a component. One reason for this "
+"is abstraction. With a custom type, your mapping documents would be "
+"protected against changes to the way monetary values are represented."
+msgstr ""
+"Obwohl die breit gefächerte Palette eingebauter Typen und Support bedeutet, "
+"dass Sie einen angepassten Typ nur sehr selten werden benutzen "
+"<emphasis>müssen</emphasis>, so ist es dennoch eine gute Angewohnheit "
+"angepasste Typen für in Ihrer Anwendung häufig vorkommende (nicht-Entity) "
+"Klassen zu verwenden. So ist zum Beispiel eine <literal>MonetaryAmount</"
+"literal>-Klasse ein guter Kandidat für einen <literal>CompositeUserType</"
+"literal>, obwohl sie leicht als eine Komponente gemappt werden könnte. Ein "
+"Grund hierfür ist Abstraktion. Mit einem angepassten Typ wären Ihre Mapping-"
+"Dokumente in Zukunft gegen mögliche Veränderungen in der Art, in der Ihre "
+"Geldwerte repräsentiert werden, gesichert."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "Das mehrfache Mappen einer Klasse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case, you must specify an <emphasis>entity name</emphasis> to "
+"disambiguate between instances of the two mapped entities. By default, the "
+"entity name is the same as the class name. Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"Es ist möglich, mehr als ein Mapping für eine bestimmte persistente Klasse "
+"bereitzustellen. In diesem Fall müssen Sie einen <emphasis>Entity-Namen</"
+"emphasis> bereitstellen, um die Instanzen der beiden gemappten Entities "
+"eindeutig zu machen. (In der Standardeinstellung ist der Entity-Name "
+"derselbe wie der Klassenname). Hibernate lässt Sie den Entity-Namen "
+"festlegen, wenn Sie mit persistenten Objekten arbeiten, wenn Sie Anfragen "
+"schreiben oder Assoziationen zu der genannten Entity mappen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Associations are now specified using <literal>entity-name</literal> instead "
+"of <literal>class</literal>."
+msgstr ""
+"Beachten Sie, wie Assoziationen nun unter Verwendung von <literal>entity-"
+"name</literal> statt <literal>class</literal> spezifiziert werden."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "SQL angeführte Bezeichner"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal>. This is usually double quotes, but the SQL Server uses brackets "
+"and MySQL uses backticks."
+msgstr ""
+"Sie können Hibernate dazu zwingen, einen Bezeichner in der generierten SQL "
+"anzugeben, indem Sie den Tabellen- oder Spaltennamen innerhalb des Mapping-"
+"Dokuments in Backtick-Zeichen einschließen. Hibernate wird den korrekten "
+"\"Quotation-Style\" für den SQL <literal>Dialect</literal> verwenden (in der "
+"Regel doppelte Anführungszeichen, aber Klammern für SQL-Server und Backticks "
+"für MySQL)."
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "Metadata-Alternativen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"XML does not suit all users so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
+msgstr ""
+"XML ist nicht jedermanns Sache, daher gibt es auch alternative Möglichkeiten "
+"O/R Mapping Metadaten in Hibernate zu definieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "Die Verwendung von XDoclet-Markup"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover "
+"this approach in this reference guide since it is considered part of "
+"XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings:"
+msgstr ""
+"Viele Benutzer von Hibernate ziehen es vor, Mapping-Informationen unter "
+"Verwendung von XDoclet <literal>@hibernate.tags</literal> direkt im "
+"Quellcode einzubetten. Diese Vorgehensweise wird hier nicht behandelt, da es "
+"sich ausschließlich um einen Teil von XDoclet handelt. Allerdings zeigen wir "
+"das nachfolgende Beispiel der <literal>Cat</literal>-Klasse mit XDoclet-"
+"Mappings."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr ""
+"Weitere Beispiele zu XDoclet und Hibernate finden Sie auf der Hibernate "
+"Website."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "Die Verwendung von JDK 5.0 Annotationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level that are "
+"type-safe and checked at compile time. This mechanism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API). Support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+"JDK 5.0 hat Annotationen im XDoclet-Stil auf der Sprachebene vorgestellt, "
+"die typensicher und zum Zeitpunkt der Kompilierung geprüft sind. Dieser "
+"Mechanismus ist leistungsstärker als XDoclet-Annotationen und bietet "
+"besseren Support durch Tools und IDEs . IntelliJ IDEA zum Beispiel "
+"unterstützt Auto-Vervollständigung und Syntax-Hervorhebungen von JDK 5.0 "
+"Annotationen. Die neue Revision der EJB-Spezifikation (JSR-220) verwendet "
+"JDK 5.0 Annotationen als primären Metadata-Mechanismus für Entity-Beans. "
+"Hibernate3 implementiert den <literal>EntityManager</literal> von JSR-220 "
+"(das Persistenz-API), Support für Mapping-Metadata ist mittels des "
+"<emphasis>Hibernate Annotations</emphasis>-Pakets als separater Download "
+"verfügbar. Sowohl EJB3 (JSR-220) und Hibernate3 Metadata werden unterstützt."
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr ""
+"Nachfolgend sehen Sie ein Beispiel für eine als EJB Entity-Bean annotierte "
+"POJO-Klasse:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Support for JDK 5.0 Annotations (and JSR-220) is currently under "
+"development. Please refer to the Hibernate Annotations module for more "
+"details."
+msgstr ""
+"Bitte beachten Sie, dass am Support für JDK 5.0 Annotationen (und JSR-220) "
+"noch gearbeitet wird und dieser noch nicht vollständig verfügbar ist. "
+"Weitere Einzelheiten entnehmen Sie bitte dem Hibernate Annotationsmodul."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Generated properties"
+msgstr "Generierte Properties"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Generated properties are properties that have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects that contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. When Hibernate issues "
+"an SQL INSERT or UPDATE for an entity that has defined generated properties, "
+"it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+"Bei generierten Properties handelt es sich um Properties, deren Wert durch "
+"die Datenbank generiert wird. In der Regel mussten Hibernate-Anwendungen "
+"Objekte <literal>refresh</literal> (auffrischen), die Properties enthalten, "
+"für die die Datenbank Werte generierte. Werden die Properties jedoch als "
+"generiert gekennzeichnet, so delegiert die Anwendung diese Zuständigkeit an "
+"Hibernate. Jedes Mal wenn Hibernate ein SQL INSERT oder UPDATE für eine "
+"Entity mit als generiert definierten Properties herausgibt, gibt es ein "
+"\"select afterwards\" (Hinterher-Auswahl) heraus, um die generierten Werte "
+"abzufragen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link>, "
+"can be marked as generated."
+msgstr ""
+"Als generiert gekennzeichnete Properties müssen zusätzlich auch nicht "
+"einfügbar und nicht aktualisierbar sein (d.h. \"non-insertable\" bzw. \"non-"
+"updateable\"). Nur <xref linkend=\"mapping-declaration-version\"/>-"
+"Versionen, <xref linkend=\"mapping-declaration-timestamp\"/>-Zeitstempel und "
+"einfache <xref linkend=\"mapping-declaration-property\"/>-Properties können "
+"als generiert gekennzeichnet sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>never</literal> (the default): the given property value is not "
+"generated within the database."
+msgstr ""
+"<literal>never</literal> (the default) - bedeutet, dass der gegebene "
+"Property-Wert nicht innerhalb der Datenbank generiert wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: the given property value is generated on insert, "
+"but is not regenerated on subsequent updates. Properties like created-date "
+"fall into this category. Even though <link linkend=\"mapping-declaration-"
+"version\">version</link> and <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> properties can be marked as generated, this option is "
+"not available."
+msgstr ""
+"<literal>insert</literal> - besagt, dass der gegebene Property-Wert bei der "
+"Einfügung generiert wird, jedoch bei nachfolgenden Aktualisierungen nicht "
+"aufgefrischt wird. Dinge wie Erstelldatum fallen zum Beispiel in diese "
+"Kategorie. Bitte beachten Sie, dass <xref linkend=\"mapping-declaration-"
+"version\"/>-Version und <xref linkend=\"mapping-declaration-timestamp\"/>-"
+"Zeitstempel-Properties zwar als generiert gekennzeichnet werden können, "
+"diese Option dort jedoch nicht existiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>always</literal>: the property value is generated both on insert "
+"and on update."
+msgstr ""
+"<literal>always</literal> - besagt, dass der Property-Wert sowohl bei der "
+"Einfügung als auch bei der Aktualisierung generiert wird."
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to customize the SQL it uses to read and write the "
+"values of columns mapped to <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. For example, if your database provides a set of "
+"data encryption functions, you can invoke them for individual columns like "
+"this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate applies the custom expressions automatically whenever the property "
+"is referenced in a query. This functionality is similar to a derived-"
+"property <literal>formula</literal> with two differences:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The property is backed by one or more columns that are exported as part of "
+"automatic schema generation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>write</literal> expression, if specified, must contain exactly "
+"one '?' placeholder for the value."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Auxiliary database objects"
+msgstr "Datenbankhilfsobjekte"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Auxiliary database objects allow for the CREATE and DROP of arbitrary "
+"database objects. In conjunction with Hibernate's schema evolution tools, "
+"they have the ability to fully define a user schema within the Hibernate "
+"mapping files. Although designed specifically for creating and dropping "
+"things like triggers or stored procedures, any SQL command that can be run "
+"via a <literal>java.sql.Statement.execute()</literal> method is valid (for "
+"example, ALTERs, INSERTS, etc.). There are essentially two modes for "
+"defining auxiliary database objects:"
+msgstr ""
+"Erlaubt CREATE und DROP beliebiger Datenbankobjekte in Verbindung mit "
+"Hibernates Schema-Evolution-Tools, um die Möglichkeit der vollständigen "
+"Definition des Benutzerschemas innerhalb der Hibernate Mapping-Dateien zu "
+"bieten. Obwohl speziell für die Erstellung und das \"Dropping\" von Triggern "
+"oder gespeicherten Vorgängen entwickelt, kann eigentlich so ziemlich jeder "
+"SQL-Befehl mittels der <literal>java.sql.Statement.execute()</literal>-"
+"Methode ausgeführt werden und ist hier gültig (ALTERs, INSERTS, usw). Es "
+"gibt im Wesentlichen zwei Modi der Definition von Datenbankhilfsobjekten..."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands in the "
+"mapping file:"
+msgstr ""
+"Die erste Methode ist die explizite Auflistung der CREATE- und DROP-Befehle "
+"in der Mapping-Datei:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The second mode is to supply a custom class that constructs the CREATE and "
+"DROP commands. This custom class must implement the <literal>org.hibernate."
+"mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+"Die zweite Methode ist die Bereitstellung einer angepassten Klasse, die "
+"weiß, wie CREATE- und DROP-Befehle erstellt werden. Diese angepasste Klasse "
+"muss das <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal>-"
+"Interface implementieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped so that they "
+"only apply when certain dialects are used."
+msgstr ""
+"Zusätzlich können diese Datenbankobjekte wahlweise so abgegrenzt werden, "
+"dass Sie nur in Kraft treten, wenn bestimmte Dialekte verwendet werden."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\"\n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\">\n"
+#~ "\n"
+#~ "                <id name=\"id\">\n"
+#~ "                        <generator class=\"native\"/>\n"
+#~ "                </id>\n"
+#~ "\n"
+#~ "                <discriminator column=\"subclass\"\n"
+#~ "                     type=\"character\"/>\n"
+#~ "\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "\n"
+#~ "                <property name=\"birthdate\"\n"
+#~ "                    type=\"date\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"sex\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\">\n"
+#~ "                        <key column=\"mother_id\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "\n"
+#~ "                <subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\">\n"
+#~ "\n"
+#~ "                        <property name=\"name\"\n"
+#~ "                            type=\"string\"/>\n"
+#~ "\n"
+#~ "                </subclass>\n"
+#~ "\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Cat\" \n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\"&gt;\n"
+#~ "                \n"
+#~ "                &lt;id name=\"id\"&gt;\n"
+#~ "                        &lt;generator class=\"native\"/&gt;\n"
+#~ "                &lt;/id&gt;\n"
+#~ "\n"
+#~ "                &lt;discriminator column=\"subclass\" \n"
+#~ "                     type=\"character\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"weight\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"birthdate\"\n"
+#~ "                    type=\"date\" \n"
+#~ "                    not-null=\"true\" \n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"sex\"\n"
+#~ "                    not-null=\"true\" \n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\"&gt;\n"
+#~ "                        &lt;key column=\"mother_id\"/&gt;\n"
+#~ "                        &lt;one-to-many class=\"Cat\"/&gt;\n"
+#~ "                &lt;/set&gt;\n"
+#~ "\n"
+#~ "                &lt;subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\"&gt;\n"
+#~ "\n"
+#~ "                        &lt;property name=\"name\" \n"
+#~ "                            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Dog\"&gt;\n"
+#~ "                &lt;!-- mapping for Dog could go here --&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+#~ "    <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+#~ "]>\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"your.domain\">\n"
+#~ "    <class name=\"MyEntity\">\n"
+#~ "        <id name=\"id\" type=\"my-custom-id-type\">\n"
+#~ "            ...\n"
+#~ "        </id>\n"
+#~ "    <class>\n"
+#~ "    &types;\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "[...]\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " />]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " /&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Summary\">\n"
+#~ "    <subselect>\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    </subselect>\n"
+#~ "    <synchronize table=\"item\"/>\n"
+#~ "    <synchronize table=\"bid\"/>\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Summary\"&gt;\n"
+#~ "    &lt;subselect&gt;\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    &lt;/subselect&gt;\n"
+#~ "    &lt;synchronize table=\"item\"/&gt;\n"
+#~ "    &lt;synchronize table=\"bid\"/&gt;\n"
+#~ "    &lt;id name=\"name\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        <generator class=\"generatorClass\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\"&gt;\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        &lt;generator class=\"generatorClass\"/&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+#~ "                <param name=\"table\">uid_table</param>\n"
+#~ "                <param name=\"column\">next_hi_value_column</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"org.hibernate.id.TableHiLoGenerator\"&gt;\n"
+#~ "                &lt;param name=\"table\"&gt;uid_table&lt;/param&gt;\n"
+#~ "                &lt;param name=\"column\"&gt;next_hi_value_column&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#~ msgid "increment"
+#~ msgstr "increment"
+
+#~ msgid "identity"
+#~ msgstr "identity"
+
+#~ msgid "sequence"
+#~ msgstr "sequence"
+
+#~ msgid "hilo"
+#~ msgstr "hilo"
+
+#~ msgid "seqhilo"
+#~ msgstr "seqhilo"
+
+#~ msgid "guid"
+#~ msgstr "guid"
+
+#~ msgid "native"
+#~ msgstr "native"
+
+#~ msgid "assigned"
+#~ msgstr "assigned"
+
+#~ msgid "select"
+#~ msgstr "select"
+
+#~ msgid "foreign"
+#~ msgstr "foreign"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"hilo\">\n"
+#~ "                <param name=\"table\">hi_value</param>\n"
+#~ "                <param name=\"column\">next_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"&gt;\n"
+#~ "                &lt;param name=\"table\"&gt;hi_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"column\"&gt;next_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"max_lo\"&gt;100&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"seqhilo\">\n"
+#~ "                <param name=\"sequence\">hi_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"seqhilo\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;hi_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"max_lo\"&gt;100&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">person_id_sequence</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;person_id_sequence&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value="
+#~ "\"0\">\n"
+#~ "        <generator class=\"identity\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0"
+#~ "\"&gt;\n"
+#~ "        &lt;generator class=\"identity\"/&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"select\">\n"
+#~ "                <param name=\"key\">socialSecurityNumber</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\"&gt;\n"
+#~ "        &lt;generator class=\"select\"&gt;\n"
+#~ "                &lt;param name=\"key\"&gt;socialSecurityNumber&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        <key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/>\n"
+#~ "        <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+#~ "\"column_name\"/>\n"
+#~ "        ......\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"&gt;\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        &lt;key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/&gt;\n"
+#~ "        &lt;key-many-to-one name=\"propertyName class=\"ClassName\" "
+#~ "column=\"column_name\"/&gt;\n"
+#~ "        ......\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id>\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"medicareNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"dependent\"/&gt;\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id class=\"MedicareId\" mapped=\"true\"&gt;\n"
+#~ "        &lt;key-property name=\"medicareNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"dependent\"/&gt;\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/>]]>"
+#~ msgstr ""
+#~ "&lt;discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column="
+#~ "\"PRODUCT_ID\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" "
+#~ "column=\"SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"serialNumber\" unique=\"true\" type=\"string\" column="
+#~ "\"SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" "
+#~ "column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" property-ref=\"serialNumber\" column="
+#~ "\"PRODUCT_SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" class=\"Person\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained="
+#~ "\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">employee</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;employee&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID"
+#~ "\" unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref="
+#~ "\"person\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name\"employee\" class=\"Employee\" property-ref=\"person"
+#~ "\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
+#~ "        <property ... />\n"
+#~ "        <many-to-one ... />\n"
+#~ "        ......\n"
+#~ "</natural-id>]]>"
+#~ msgstr ""
+#~ "&lt;natural-id mutable=\"true|false\"/&gt;\n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        &lt;many-to-one ... /&gt;\n"
+#~ "        ......\n"
+#~ "&lt;/natural-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<component\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</component>]]>"
+#~ msgstr ""
+#~ "&lt;component \n"
+#~ "        name=\"propertyName\" \n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/component&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<properties\n"
+#~ "        name=\"logicalName\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</properties>]]>"
+#~ msgstr ""
+#~ "&lt;properties \n"
+#~ "        name=\"logicalName\" \n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/properties&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"personNumber\"/>\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    <properties name=\"name\"\n"
+#~ "            unique=\"true\" update=\"false\">\n"
+#~ "        <property name=\"firstName\"/>\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"lastName\"/>\n"
+#~ "    </properties>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"personNumber\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;properties name=\"name\" \n"
+#~ "            unique=\"true\" update=\"false\"&gt;\n"
+#~ "        &lt;property name=\"firstName\"/&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"lastName\"/&gt;\n"
+#~ "    &lt;/properties&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\"\n"
+#~ "         class=\"Person\" property-ref=\"name\">\n"
+#~ "    <column name=\"firstName\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "    <column name=\"lastName\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" \n"
+#~ "         class=\"Person\" property-ref=\"name\"&gt;\n"
+#~ "    &lt;column name=\"firstName\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "    &lt;column name=\"lastName\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</subclass>]]>"
+#~ msgstr ""
+#~ "&lt;subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <key .... >\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</joined-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;key .... &gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/joined-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\" table=\"CATS\">\n"
+#~ "                <id name=\"id\" column=\"uid\" type=\"long\">\n"
+#~ "                        <generator class=\"hilo\"/>\n"
+#~ "                </id>\n"
+#~ "                <property name=\"birthdate\" type=\"date\"/>\n"
+#~ "                <property name=\"color\" not-null=\"true\"/>\n"
+#~ "                <property name=\"sex\" not-null=\"true\"/>\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "                <many-to-one name=\"mate\"/>\n"
+#~ "                <set name=\"kittens\">\n"
+#~ "                        <key column=\"MOTHER\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "                <joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\">\n"
+#~ "                    <key column=\"CAT\"/>\n"
+#~ "                    <property name=\"name\" type=\"string\"/>\n"
+#~ "                </joined-subclass>\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"eg.Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Cat\" table=\"CATS\"&gt;\n"
+#~ "                &lt;id name=\"id\" column=\"uid\" type=\"long\"&gt;\n"
+#~ "                        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "                &lt;/id&gt;\n"
+#~ "                &lt;property name=\"birthdate\" type=\"date\"/&gt;\n"
+#~ "                &lt;property name=\"color\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"sex\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"weight\"/&gt;\n"
+#~ "                &lt;many-to-one name=\"mate\"/&gt;\n"
+#~ "                &lt;set name=\"kittens\"&gt;\n"
+#~ "                        &lt;key column=\"MOTHER\"/&gt;\n"
+#~ "                        &lt;one-to-many class=\"Cat\"/&gt;\n"
+#~ "                &lt;/set&gt;\n"
+#~ "                &lt;joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\"&gt;\n"
+#~ "                    &lt;key column=\"CAT\"/&gt;\n"
+#~ "                    &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "                &lt;/joined-subclass&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"eg.Dog\"&gt;\n"
+#~ "                &lt;!-- mapping for Dog could go here --&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</union-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/union-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\">\n"
+#~ "\n"
+#~ "        <key ... />\n"
+#~ "\n"
+#~ "        <property ... />\n"
+#~ "        ...\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "&lt;join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\"&gt;\n"
+#~ "        \n"
+#~ "        &lt;key ... /&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        ...\n"
+#~ "&lt;/join&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    table=\"PERSON\">\n"
+#~ "\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
+#~ "\n"
+#~ "    <join table=\"ADDRESS\">\n"
+#~ "        <key column=\"ADDRESS_ID\"/>\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </join>\n"
+#~ "    ...]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"\n"
+#~ "    table=\"PERSON\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;...&lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;join table=\"ADDRESS\"&gt;\n"
+#~ "        &lt;key column=\"ADDRESS_ID\"/&gt;\n"
+#~ "        &lt;property name=\"address\"/&gt;\n"
+#~ "        &lt;property name=\"zip\"/&gt;\n"
+#~ "        &lt;property name=\"country\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "    ..."
+
+#, fuzzy
+#~ msgid "<title>Key</title>"
+#~ msgstr "<title>key</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/>]]>"
+#~ msgstr ""
+#~ "&lt;column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<formula>SQL expression</formula>]]>"
+#~ msgstr "&lt;formula&gt;SQL expression&lt;/formula&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\">\n"
+#~ "    <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
+#~ "    <formula>'MAILING'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\"&gt;\n"
+#~ "    &lt;column name=\"person_id\" not-null=\"true\" length=\"10\"/&gt;\n"
+#~ "    &lt;formula&gt;'MAILING'&lt;/formula&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
+#~ msgstr "&lt;import class=\"java.lang.Object\" rename=\"Universe\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<title>Any</title>"
+#~ msgstr "<title>any</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
+#~ "    <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
+#~ "    <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
+#~ "    <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
+#~ "    <column name=\"table_name\"/>\n"
+#~ "    <column name=\"id\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"being\" id-type=\"long\" meta-type=\"string\"&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_HUMAN\" class=\"Human\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ALIEN\" class=\"Alien\"/&gt;\n"
+#~ "    &lt;column name=\"table_name\"/&gt;\n"
+#~ "    &lt;column name=\"id\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ ">\n"
+#~ "        <meta-value ... />\n"
+#~ "        <meta-value ... />\n"
+#~ "        .....\n"
+#~ "        <column .... />\n"
+#~ "        <column .... />\n"
+#~ "        .....\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        .....\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/any&gt;"
+
+#~ msgid "string"
+#~ msgstr "string"
+
+#, fuzzy
+#~ msgid "class"
+#~ msgstr "subclass"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "text"
+#~ msgstr "text"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "clob, blob"
+#~ msgstr "clob, blob"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\">\n"
+#~ "    <column name=\"first_string\"/>\n"
+#~ "    <column name=\"second_string\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\"&gt;\n"
+#~ "    &lt;column name=\"first_string\"/&gt;\n"
+#~ "    &lt;column name=\"second_string\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"priority\">\n"
+#~ "    <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
+#~ "        <param name=\"default\">0</param>\n"
+#~ "    </type>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"priority\"&gt;\n"
+#~ "    &lt;type name=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\"&gt;\n"
+#~ "        &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "    &lt;/type&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\" name=\"default_zero\">\n"
+#~ "    <param name=\"default\">0</param>\n"
+#~ "</typedef>]]>"
+#~ msgstr ""
+#~ "&lt;typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" "
+#~ "name=\"default_zero\"&gt;\n"
+#~ "    &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "&lt;/typedef&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
+#~ msgstr "&lt;property name=\"priority\" type=\"default_zero\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
+#~ "        entity-name=\"CurrentContract\">\n"
+#~ "    ...\n"
+#~ "    <set name=\"history\" inverse=\"true\"\n"
+#~ "            order-by=\"effectiveEndDate desc\">\n"
+#~ "        <key column=\"currentContractId\"/>\n"
+#~ "        <one-to-many entity-name=\"HistoricalContract\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Contract\" table=\"ContractHistory\"\n"
+#~ "        entity-name=\"HistoricalContract\">\n"
+#~ "    ...\n"
+#~ "    <many-to-one name=\"currentContract\"\n"
+#~ "            column=\"currentContractId\"\n"
+#~ "            entity-name=\"CurrentContract\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Contract\" table=\"Contracts\" \n"
+#~ "        entity-name=\"CurrentContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;set name=\"history\" inverse=\"true\" \n"
+#~ "            order-by=\"effectiveEndDate desc\"&gt;\n"
+#~ "        &lt;key column=\"currentContractId\"/&gt;\n"
+#~ "        &lt;one-to-many entity-name=\"HistoricalContract\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Contract\" table=\"ContractHistory\" \n"
+#~ "        entity-name=\"HistoricalContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;many-to-one name=\"currentContract\" \n"
+#~ "            column=\"currentContractId\" \n"
+#~ "            entity-name=\"CurrentContract\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
+#~ "    <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/"
+#~ "></id>\n"
+#~ "    <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"LineItem\" table=\"`Line Item`\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"`Item Id`\"/&gt;&lt;generator class="
+#~ "\"assigned\"/&gt;&lt;/id&gt;\n"
+#~ "    &lt;property name=\"itemNumber\" column=\"`Item #`\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set<Order> orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set&lt;Order&gt; orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <create>CREATE TRIGGER my_trigger ...</create>\n"
+#~ "        <drop>DROP TRIGGER my_trigger</drop>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;create&gt;CREATE TRIGGER my_trigger ...&lt;/create&gt;\n"
+#~ "        &lt;drop&gt;DROP TRIGGER my_trigger&lt;/drop&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle9iDialect\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle10gDialect\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/"
+#~ "&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/"
+#~ "&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,984 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "Batch-Verarbeitung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A naive approach to inserting 100,000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Eine unkomplizierte Einfügung von 100.000 Reihen in die Datenbank mittels "
+"Hibernate könnte wie folgt aussehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50,000th row. That is because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+"Dies würde mit der Ausnahme <literal>OutOfMemoryException</literal> irgendwo "
+"um die 50.000ste Reihe herum kippen, da Hibernate alle neu eingefügten "
+"<literal>Customer</literal>-Instanzen im Cache der Session-Ebene speichert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you are undertaking batch processing you will need to enable the use of "
+"JDBC batching. This is absolutely essential if you want to achieve optimal "
+"performance. Set the JDBC batch size to a reasonable number (10-50, for "
+"example):"
+msgstr ""
+"In diesem Kapitel wollen wir Ihnen zeigen, wie dieses Problem vermieden "
+"werden kann. Zunächst jedoch muss bei der Verwendung von Batch-Verarbeitung "
+"(auch: Stapelverarbeitung) die Einstellung \"JDBC-Batching\" aktiviert sein, "
+"falls eine zufriedenstellende Leistung erzielt werden soll. Die Größe des "
+"JDBC-Batch (m.a.W. die Stapelgröße) sollte dabei sinnvoll gewählt sein (z.B. "
+"10-50):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate disables insert batching at the JDBC level transparently if you "
+"use an <literal>identity</literal> identifier generator."
+msgstr ""
+"Bitte beachten Sie, dass Hibernate das Einfügungs-Batching auf JDBC-Ebene "
+"transparent deaktiviert, falls Sie einen <literal>identiy</literal> "
+"Bezeichner-Generator verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also do this kind of work in a process where interaction with the "
+"second-level cache is completely disabled:"
+msgstr ""
+"Sie können diesen Vorgang auch durchführen, wenn das Cache der zweiten Ebene "
+"vollständig deaktiviert ist:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"Dies ist jedoch nicht unbedingt erforderlich, da der <literal>CacheMode</"
+"literal> so eingestellt werden kann, dass die Interaktion mit dem Cache der "
+"zweiten Ebene deaktiviert ist."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "Batch-Einfügungen (\"Batch-Inserts\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When making new objects persistent <literal>flush()</literal> and then "
+"<literal>clear()</literal> the session regularly in order to control the "
+"size of the first-level cache."
+msgstr ""
+"Werden neue Objekte persistent gemacht, so muss in der Session regelmäßig "
+"<literal>flush()</literal> und anschließend <literal>clear()</literal> "
+"erfolgen, um die Größe des Caches der ersten Ebene zu kontrollieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "Batch-Aktualisierungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For retrieving and updating data, the same ideas apply. In addition, you "
+"need to use <literal>scroll()</literal> to take advantage of server-side "
+"cursors for queries that return many rows of data."
+msgstr ""
+"Beim Abruf und der Aktualisierung von Daten gilt dasselbe. Desweiteren "
+"müssen Sie hier <literal>scroll()</literal> verwenden, um für Anfragen, die "
+"mit zahlreichen Datenreihen reagieren, die Vorteile des Cursors auf "
+"Serverseite auszunutzen."
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "Das Interface der StatelessSession"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that can be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session never cascade to associated instances. Collections "
+"are ignored by a stateless session. Operations performed via a stateless "
+"session bypass Hibernate's event model and interceptors. Due to the lack of "
+"a first-level cache, Stateless sessions are vulnerable to data aliasing "
+"effects. A stateless session is a lower-level abstraction that is much "
+"closer to the underlying JDBC."
+msgstr ""
+"Alternativ bietet Hibernate ein befehlsorientiertes API, das in Form von "
+"abgesetzten Objekten für das Streaming von Daten von und zur Datenbank "
+"verwendet werden kann. Eine <literal>StatelessSession</literal> verfügt "
+"nicht über einen mit ihr assozierten Persistenzkontext und bietet nicht viel "
+"von der Lebenszyklus-Semantik der höheren Ebene. Insbesondere implementiert "
+"eine \"stateless Session\" weder ein Cache auf erster Ebene noch interagiert "
+"sie mit irgendeinem Anfragen-Cache oder Cache der zweiten Ebene. Es werden "
+"weder transaktionales Hinterher-Speichern noch automatisches \"Dirty-Checking"
+"\" (auf vorherigen Zugriff) implementiert. Vorgänge, die unter Verwendung "
+"einer stateless Session erfolgen, werden nie an zugehörige Instanzen "
+"weitergeleitet. Collections werden von einer stateless Session ebenfalls "
+"übergangen. Vorgänge, die unter Verwendung einer stateless Session erfolgen, "
+"umgehen außerdem Hibernates Ereignismodell und Interzeptoren. Es kann in "
+"stateless Sessions außerdem zu Datenverfälschungen (sog. \"Data Aliasing\") "
+"kommen, da ein Cache auf erster Ebene fehlt. Eine stateless Session ist eine "
+"Abstraktion auf niedrigerer Ebene, wesentlich näher an der zu Grunde "
+"liegenden JDBC."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this code example, the <literal>Customer</literal> instances returned by "
+"the query are immediately detached. They are never associated with any "
+"persistence context."
+msgstr ""
+"Bitte beachten Sie, dass in diesem Code-Beispiel die durch die Anfrage "
+"erstellten <literal>Customer</literal>-Instanzen sofort abgesetzt werden. "
+"Sie werden zu keinem Zeitpunkt mit einem Persistenzkontext assoziiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations. They result in the "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. They have different semantics to the "
+"<literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>Session</literal> interface."
+msgstr ""
+"Die vom <literal>StatelessSession</literal>-Interface definierten "
+"<literal>insert(), update()</literal> und <literal>delete()</literal> "
+"Vorgänge werden als direkte Datenbankvorgänge auf Reihenebene angesehen, die "
+"eine sofortige Ausführung einer SQL <literal>INSERT, UPDATE</literal> bzw. "
+"<literal>DELETE</literal> mit sich bringen. Sie besitzen daher eine andere "
+"Semantik als <literal>save(), saveOrUpdate()</literal> und <literal>delete()"
+"</literal>-Vorgänge, die durch das <literal>Session</literal>-Interface "
+"definiert werden."
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "Vorgänge im DML-Stil"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of the object state. The object state is "
+"available in memory. This means that manipulating data directly in the "
+"database (using the SQL <literal>Data Manipulation Language</literal> (DML) "
+"the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) will not affect in-memory state. However, "
+"Hibernate provides methods for bulk SQL-style DML statement execution that "
+"is performed through the Hibernate Query Language (<link linkend=\"queryhql"
+"\">HQL</link>)."
+msgstr ""
+"Wie bereits erläutert, hängt das automatische und transparente "
+"objektrelationale Mapping mit dem Management des Objektstatus zusammen. Das "
+"bedeutet, dass der Objektstatus im Speicher verfügbar ist, weswegen (unter "
+"Verwendung der SQL <literal>Data Manipulation Language</literal> (DML) "
+"Anweisungen: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) Daten direkt in der Datenbank den gespeicherten "
+"Status nicht manipulieren.Hibernate bietet jedoch Methoden für die "
+"Massenausführung von DML-Anweisungen im SQL-Stil, was durch die Hibernate "
+"Query Language (<xref linkend=\"queryhql\"/>) erfolgt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+msgstr ""
+"Die Pseudo-Syntax für <literal>UPDATE</literal> und <literal>DELETE</"
+"literal>-Anweisungen lautet: <literal>( UPDATE | DELETE ) FROM? EntityName "
+"(WHERE where_conditions)?</literal>. Hierzu einige wichtige Punkte:"
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "In der \"from\"-Klausel, ist der \"FROM\"-Schlüsselbegriff optional"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause. It can, however, "
+"be aliased. If the entity name is aliased, then any property references must "
+"be qualified using that alias. If the entity name is not aliased, then it is "
+"illegal for any property references to be qualified."
+msgstr ""
+"In der \"from\"-Klausel kann nur eine einzelne Entity genannt werden; sie "
+"kann optional auch einen Alias-Namen tragen. Falls der Name der Entity ein "
+"Alias ist, müssen sämtliche Property-Verweise unter Verwendung dieses Alias "
+"qualifiziert sein. Ist dies nicht der Fall, so ist es unzulässig Property-"
+"Verweise zu qualifizieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or "
+"explicit, can be specified in a bulk HQL query. Sub-queries can be used in "
+"the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+"Kein <xref linkend=\"queryhql-joins-forms\"/> (weder implizit noch explizit) "
+"kann in einer Massen-HQL-Anfrage spezifiziert werden. Unteranfragen (sog. "
+"\"Subqueries\") können in der \"where\"-Klausel verwendet werden; die "
+"Unteranfragen selbst können Verbünde (sog. \"Joins\") enthalten."
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "Die \"where\"-Klausel ist ebenfalls optional."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method. The method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>:"
+msgstr ""
+"Um zum Beispiel HQL <literal>UPDATE</literal> auszuführen, verwenden Sie die "
+"<literal>Query.executeUpdate()</literal>-Methode (die Methode wird für "
+"diejenigen genannt, die mit JDBCs <literal>PreparedStatement.executeUpdate()"
+"</literal>) vertraut sind:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> "
+"statements, by default, do not effect the <link linkend=\"mapping-"
+"declaration-version\">version</link> or the <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> property values for the affected "
+"entities. However, you can force Hibernate to reset the <literal>version</"
+"literal> or <literal>timestamp</literal> property values through the use of "
+"a <literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"HQL <literal>UPDATE</literal>-Anweisungen haben standardmäßig keinen "
+"Einfluss auf die <xref linkend=\"mapping-declaration-version\"/>-Version "
+"oder die <xref linkend=\"mapping-declaration-timestamp\"/>-Zeitstempel-"
+"Property-Werte der betreffenden Entities; dies erfolgt in Übereinstimmung "
+"mit der EJB3-Spezifikation. Sie können Hibernate jedoch zwingen, die "
+"<literal>version</literal> oder <literal>timestamp</literal> Property-Werte "
+"ordnungsgemäß zurückzusetzen, indem Sie ein <literal>versioned update</"
+"literal> verwenden. Dies geschieht durch Hinzufügen des <literal>VERSIONED</"
+"literal>-Schlüsselbegriffs hinter dem <literal>UPDATE</literal>-"
+"Schlüsselbegriff."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Custom version types, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>, are not allowed in conjunction with a <literal>update versioned</"
+"literal> statement."
+msgstr ""
+"Bitte beachten Sie, dass angepasste Versionstypen (<literal>org.hibernate."
+"usertype.UserVersionType</literal>) nicht in Verbindung mit einer "
+"<literal>update versioned</literal>-Anweisung erlaubt sind."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"Um HQL <literal>DELETE</literal>auszuführen, verwenden Sie dieselbe "
+"<literal>Query.executeUpdate()</literal>-Methode:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicates the number of entities effected by the "
+"operation. This may or may not correlate to the number of rows effected in "
+"the database. An HQL 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 ""
+"Der durch die <literal>Query.executeUpdate()</literal>-Methode erhaltene "
+"<literal>int</literal>-Wert gibt die Anzahl der durch den Vorgang "
+"betroffenen Entities an. Beachten Sie, dass dies mit der Anzahl der "
+"betroffenen Datenbankreihen korrelieren kann oder auch nicht. Ein HQL-"
+"Massenvorgang kann in der Ausführung mehrerer tatsächlicher SQL-Anweisungen "
+"resultieren, etwa für verbundene Subklassen. Die erhaltene Zahl gibt die "
+"Anzahl tatsächlicher Entities an, die von der Anweisung betroffen sind. Um "
+"auf das Beispiel der verbundenen Subklassen zurückzukommen - eine der "
+"Subklassen betreffende Löschung kann zu Löschungen nicht nur der Tabelle, zu "
+"der diese Subklasse gemappt ist, sondern auch zur \"Root\"-Tabelle und "
+"möglicherweise verbundenen Subklassentabellen führen, die in der "
+"Vererbungshierarchie weiter unten angesiedelt sind."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"Die Pseudo-Syntax für <literal>INSERT</literal>-Anweisungen lautet: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Hierzu einige wichtige Punkte:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"Nur INSERT INTO ... SELECT ... wird unterstützt, nicht jedoch INSERT "
+"INTO ... VALUES ...."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column specification</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritance, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"Die properties_list ist analog zur <literal>column speficiation</literal> in "
+"der SQL <literal>INSERT</literal>-Anweisung. Für in gemappte Vererbung "
+"involvierte Entities können nur Properties verwendet werden, die direkt auf "
+"dieser bestimmten Klassenebene in der properties_list definiert sind. "
+"Superklassen-Properties sind nicht gestattet und Subklassen-Properties "
+"machen keinen Sinn. Mit anderen Worten <literal>INSERT</literal>-Anweisungen "
+"sind inhärent nicht-polymorph."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. This might, however, cause problems between Hibernate "
+"<literal>Type</literal>s which are <emphasis>equivalent</emphasis> as "
+"opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"Ein select_statement kann jede gültige HQL-Auswahlanfrage sein, mit dem "
+"Vorbehalt, dass Rückmeldungstypen mit den durch die Einfügung erwarteten "
+"Typen übereinstimmen müssen. Derzeit wird dies während der "
+"Anfragenkompilierung statt beim Rückverweis auf die Datenbank geprüft. Bitte "
+"beachten Sie, dass dies zu Problemen zwischen Hibernate <literal>Type</"
+"literal>en, die <emphasis>äquivalent</emphasis> und nicht <emphasis>gleich</"
+"emphasis> sind, führen kann. Es kann dadurch zu Fehlzuordnungen zwischen "
+"einer als <literal>org.hibernate.type.DateType</literal> definierten "
+"Property und einer als <literal>org.hibernate.type.TimestampType</literal> "
+"definierten Property kommen, selbst wenn die Datenbank keine Unterscheidung "
+"macht oder die Konversion durchführen könnte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list, in which "
+"case its value is taken from the corresponding select expression, or omit it "
+"from the properties_list, in which case a generated value is used. This "
+"latter option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. For the purposes of this "
+"discussion, in-database generators are considered to be <literal>org."
+"hibernate.id.SequenceGenerator</literal> (and its subclasses) and any "
+"implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>. The most notable exception here is <literal>org.hibernate.id."
+"TableHiLoGenerator</literal>, which cannot be used because it does not "
+"expose a selectable way to get its values."
+msgstr ""
+"Bei der id-Property bietet die Einfügungsanweisung zwei Möglichkeiten. Sie "
+"können die Property entweder explizit in der properties_list festlegen (in "
+"diesem Fall wird deren Wert vom zugehörigen Auswahlausdruck genommen) oder "
+"sie aus von der properties_list löschen (in diesem Fall wird ein generierter "
+"Wert verwendet). Diese letztere Option ist nur verfügbar, wenn innerhalb der "
+"Datenbank operierende id-Generatoren verwendet werden. Der Versuch diese "
+"Option mit jeglichen \"in memory\"-Typen zu verwenden führt während des "
+"Parsens zu einer Ausnahmemeldung. Bitte beachten Sie, dass in diesem "
+"Zusammenhang Generatoren innerhalb der Datenbank als <literal>org.hibernate."
+"id.SequenceGenerator</literal> (und dessen Subklassen) sowie jegliche "
+"Implementierungen von <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal> angesehen werden. Die wohl "
+"wichtigste Ausnahme ist hier <literal>org.hibernate.id.TableHiLoGenerator</"
+"literal>, der nicht gewählt werden kann, da er keine wählbare Weise bietet, "
+"um an seine Werte zu gelangen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list, in which case "
+"its value is taken from the corresponding select expressions, or omit it "
+"from the properties_list, in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+"Für entweder als <literal>version</literal> oder <literal>timestamp</"
+"literal> gemappte Properties bietet die Einfügungsanweisung zwei Optionen. "
+"Sie können die Property entweder explizit in der properties_list festlegen "
+"(in diesem Fall wird deren Wert vom zugehörigen Auswahlausdruck genommen) "
+"oder sie aus von der properties_list löschen (in diesem Fall wird der durch "
+"<literal>org.hibernate.type.VersionType</literal> definierte <literal>seed "
+"value</literal> verwendet)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is an example of an HQL <literal>INSERT</literal> statement "
+"execution:"
+msgstr ""
+"Ein Beispiel für die Ausführung einer HQL <literal>INSERT</literal>-"
+"Anweisung:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i&lt;100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+#~ msgstr "hibernate.jdbc.batch_size 20"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+#~ msgstr "hibernate.cache.use_second_level_cache false"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i&lt;100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i &#37; 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count &#37; 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "StatelessSession session = sessionFactory.openStatelessSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer \n"
+#~ "    c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,708 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "Optimale Verfahren"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
+"literal>:"
+msgstr ""
+"Schreiben Sie feinstufige Klassen, und Mappen Sie diese mittels <literal>&lt;"
+"component&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"Verwenden Sie eine <literal>Address</literal>-Klasse, um <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal> einzukapseln. Das unterstützt die "
+"Wiederverwendung des Code und vereinfacht die Erhöhung der "
+"Bedienerfreundlichkeit."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "Deklarieren Sie Bezeichner-Properties an persistenten Klassen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are a range of reasons "
+"why you should use them. We recommend that identifiers be 'synthetic', that "
+"is, generated with no business meaning."
+msgstr ""
+"Hibernate macht Bezeichner-Properties optional. Es gibt eine Reihe von "
+"Gründen, warum Sie diese verwenden sollten. Wir empfehlen \"synthetische\" "
+"Bezeichner (generiert, mit keiner Unternehmensbedeutung)."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Identify natural keys:"
+msgstr "Identifizierung natürlicher Schlüssel."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal>&lt;"
+"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"Bestimmen Sie natürliche Schlüssel für alle Entities, und mappen Sie diese "
+"mittels <literal>&lt;natural-id&gt;</literal>. Implementieren Sie "
+"<literal>equals()</literal> und <literal>hashCode()</literal>, um die "
+"Properties, aus denen der natürliche Schlüssel besteht, zu vergleichen."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "Platzieren Sie jedes Klassen-Mapping in dessen eigener Datei."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"sense, particularly in a team environment."
+msgstr ""
+"Verwenden Sie kein einzelnes, monolithisches Mapping-Dokument. Mappen Sie "
+"<literal>com.eg.Foo</literal> in der Datei <literal>com/eg/Foo.hbm.xml</"
+"literal>. Das ist insbesondere in einer Team-Umgebung sinnvoll."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Load mappings as resources:"
+msgstr "Laden Sie die Mappings als Ressourcen."
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "Deployen Sie die Mappings gemeinsam mit den Klassen, die sie mappen."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "Ziehen Sie die Externalisierung von Anfragenstrings in Erwägung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is recommended if your queries call non-ANSI-standard SQL functions. "
+"Externalizing the query strings to mapping files will make the application "
+"more portable."
+msgstr ""
+"Das ist eine gute Vorgehensweise, wenn Ihre Anfragen nicht-ANSI-Standard SQL "
+"Funktionen aufrufen. Die Externalisierung der Anfragenstrings zu Mapping-"
+"Dateien macht die Anwendung übertragbarer."
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "Verwenden Sie \"bind\"-Variablen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Do not use string "
+"manipulation to bind a non-constant value in a query. You should also "
+"consider using named parameters in queries."
+msgstr ""
+"Wie in JDBC ersetzen Sie nicht konstante Werte immer durch \"?\". Verwenden "
+"Sie nie String-Manipulation, um einen nicht konstanten Wert in einer Anfrage "
+"zu binden! Viel besser ist es, benannte Parameter in Anfragen zu benutzen."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "Managen Sie nicht Ihre eigenen JDBC-Verbindungen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate allows the application to manage JDBC connections, but his "
+"approach should be considered a last-resort. If you cannot use the built-in "
+"connection providers, consider providing your own implementation of "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate lässt die Anwendung die JDBC-Verbindungen verwalten. Diese "
+"Vorgehensweise sollte als letzter Ausweg angesehen werden. Falls Sie die "
+"eingebauten Verbindungs-Provider nicht benutzen können, sollten Sie Ihre "
+"eigene Implementierung von <literal>org.hibernate.connection."
+"ConnectionProvider</literal> in Erwägung ziehen."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider using a custom type:"
+msgstr "Verwenden Sie einen angepassten Typ."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose you have a Java type from a library that needs to be persisted but "
+"does not provide the accessors needed to map it as a component. You should "
+"consider implementing <literal>org.hibernate.UserType</literal>. This "
+"approach frees the application code from implementing transformations to/"
+"from a Hibernate type."
+msgstr ""
+"Nehmen wir an Sie haben einen Java-Typ, etwa aus irgendeiner Bibliothek, der "
+"persistiert werden muss aber keine Zugänge bietet, die notwendig sind, um "
+"ihn als Komponente zu mappen. Sie sollten die Implementierung von "
+"<literal>org.hibernate.UserType</literal> in Betracht ziehen. Diese "
+"Vorgehensweise befreit den Anwendungscode von der Implementierung von "
+"Transformationen zu / von einem Hibernate-Typ."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "Verwenden Sie handkodiertes JDBC in Engpässen (\"Bottlenecks\")."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
+"faster. Please wait until you <emphasis>know</emphasis> something is a "
+"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
+"<literal>Session</literal>, wrap your JDBC operation as a <literal>org."
+"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
+"way you can still use the same transaction strategy and underlying "
+"connection provider."
+msgstr ""
+"In Teilen des Systems, bei denen die Performance besonders wichtig ist, "
+"profitieren einige Vorgänge von der direkten JDBC. Aber bitte, warten Sie "
+"bis Sie <emphasis>wissen</emphasis>, dass es sich um einen Engpass handelt. "
+"Und gehen Sie nicht davon aus, dass direkte JDBC unbedingt schneller ist. "
+"Falls Sie direkte JDBC verwenden müssen, kann es sinnvoll sein, eine "
+"Hibernate <literal>Session</literal> zu öffnen und diese JDBC-Verbindung zu "
+"benutzen. Auf diese Weise können Sie nach wie vor diesselbe "
+"Transaktionsstrategie und den zu Grunde liegenden Verbindungsprovider "
+"verwenden."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "Die <literal>Session</literal>-Räumung verstehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes the Session synchronizes its persistent state with the database. "
+"Performance will be affected if this process occurs too often. You can "
+"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
+"even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"Von Zeit zu Zeit synchronisiert die Session ihren persistenten Status mit "
+"der Datenbank. Findet dies zu oft statt, so wird die Performance "
+"beeinträchtigt. Manchmal können durch Deaktivierung der automatischen "
+"Räumung (sog. \"Flushing\") oder sogar durch Änderung der "
+"Anfragenreihenfolge und anderer Vorgänge innerhalb einer bestimmten "
+"Transaktion unnötige Räumungen minimiert werden."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr ""
+"Bei einer Drei-Schichten-Architektur (sog. \"three-tiered-architecture\") "
+"empfiehlt sich die Verwendung abgesetzter Objekte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When using a servlet/session bean architecture, you can pass persistent "
+"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
+"new session to service each request. Use <literal>Session.merge()</literal> "
+"or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the "
+"database."
+msgstr ""
+"Bei Verwendung einer Servlet-/Session-Bean-Architektur können Sie im Session-"
+"Bean geladene persistente Objekte in die und aus der Servlet-/JSP-Schicht "
+"weitergeben. Verwenden Sie eine neue Session, um jede Anfrage zu warten. "
+"Verwenden Sie <literal>Session.merge()</literal> oder <literal>Session."
+"saveOrUpdate()</literal> zur Synchronisation von Objekten mit der Datenbank."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr ""
+"In einer Zwei-Schichten-Architektur (sog. \"two tiered architecture\") "
+"empfiehlt sich die Verwendung von langen Persistenz-Kontexten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often necessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An appropriate alternative in a two "
+"tiered architecture, is to maintain a single open persistence contact "
+"session for the whole life cycle of the application transaction. Then simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction or you will be working with "
+"stale data."
+msgstr ""
+"Für die beste Skalierbarkeit sollten Datenbanktransaktionen so kurz wie "
+"möglich sein. Allerdings ist es oft notwendig, lang laufende "
+"<emphasis>Anwendungstransaktionen</emphasis> zu implementieren, aus "
+"Benutzersicht eine einzelne Arbeitseinheit. Eine Anwendungstransaktion kann "
+"mehrere Client Anfragen-/Antwortenzyklen umfassen. Es ist üblich, abgesetzte "
+"Objekte zur Implemetierung von Anwendungstransaktionen zu verwenden. Eine "
+"insbesondere für die Zwei-Schichten-Architektur passende Alternative ist die "
+"Instandhaltung eines einzelnen offenen Persistenzkontakts (Session) während "
+"des gesamten Lebenszyklus der Anwendungstransaktion. Am Ende jeder Anfrage "
+"wird die JDBC-Verbindung dann unterbrochen und zu Beginn der darauf "
+"folgenden Anfrage erneut aufgestellt. Eine einzelne Session sollte nie über "
+"mehr als eine Anwendungstransaktion hinweg geteilt werden, da Sie sonst mit "
+"veralteten Daten arbeiten."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "Behandeln Sie Ausnahmen nicht als wiederherstellbar."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you do not do this, Hibernate cannot "
+"guarantee that in-memory state accurately represents the persistent state. "
+"For example, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"Dies ist eher eine notwendige Vorgehensweise als das \"beste\" Verfahren. "
+"Wird eine Ausnahme gemeldet, führen Sie einen Rollback der "
+"<literal>Transaction</literal> durch und schließen Sie die <literal>Session</"
+"literal>. Falls Sie dies nicht tun, kann Hibernate nicht garantieren, dass "
+"der gespeicherte Status tatsächlich den persistenten Status repräsentiert. "
+"Als Sonderfall hierbei verwenden Sie nicht <literal>Session.load()</literal> "
+"um zu bestimmen, ob eine Instanz des gegebenen Bezeichners in der Datenbank "
+"existiert, verwenden Sie statt dessen <literal>Session.get()</literal> oder "
+"eine Anfrage."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "\"Lazy Fetching\" für Assoziationen ist vorzuziehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When join fetching is appropriate "
+"to a particular use case, use a query with a <literal>left join fetch</"
+"literal>."
+msgstr ""
+"Verwenden Sie \"eager Fetching\" sparsam. Verwenden Sie Proxies und \"lazy "
+"Collections\" für die meisten Assoziationen zu Klassen, die aller "
+"Wahrscheinlichkeit nach eher nicht vollständig im Cache der zweiten Ebene "
+"aufbewahrt werden. Für Assoziationen zu gecachten Klassen, bei denen eine "
+"sehr hohe Wahrscheinlichkeit eines Cache-Treffers besteht, deaktivieren Sie "
+"\"eager Fetching\" explizit mittels <literal>lazy=\"false\"</literal>. Wenn "
+"ein \"Join-Fetching\" (Verbundabruf) in einem bestimmten Fall passend ist, "
+"verwenden Sie eine Anfrage mit einem <literal>left join fetch</literal>."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+"Verwenden Sie das <emphasis>offene Session in Ansicht</emphasis>-Muster oder "
+"eine <emphasis>Assembly Phase</emphasis>, um Probleme mit nicht abgerufenen "
+"Daten zu vermeiden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. Unless you are prepared to hold the persistence context (the "
+"session) open across the view rendering process, you will still need an "
+"assembly phase. Think of your business methods as having a strict contract "
+"with the presentation tier about what data is available in the detached "
+"objects. This is not a limitation of Hibernate. It is a fundamental "
+"requirement of safe transactional data access."
+msgstr ""
+"Hibernate nimmt dem Entwickler das Schreiben langwieriger "
+"<emphasis>Datentransferobjekte </emphasis> (DTO) ab. In einer herkömmlichen "
+"EJB-Architektur dienen DTOs zwei Zwecken: Zunächst einmal umgehen sie das "
+"Problem, dass Entity-Beans nicht serialisierbar sind, und zweitens "
+"definieren sie implizit eine Programmumwandlungsphase wenn alle von der "
+"Ansicht zu verwendenden Daten abgerufen und in die DTOs geleitet werden, ehe "
+"die Steuerung zur Präsentationsschicht zurückkehrt. Hibernate eleminiert den "
+"ersten Zweck. Sie benötigen jedoch nach wie vor eine "
+"Programmumwandlungsphase (stellen Sie sich vor, dass Ihre "
+"Unternehmensmethoden einen strengen Vertrag mit der Präsentationsschicht "
+"bezüglich der in den abgesetzten Daten verfügbaren Daten besitzen), außer "
+"Sie sind bereit den Persistenzkontext (die Session) während des gesamten "
+"Renderingvorgangs der Ansicht geöffnet zu lassen. Es handelt sich hierbei "
+"nicht um eine Einschränkung von Hibernate! Es handelt sich um eine "
+"grundlegende Voraussetzung für den sicheren Zugriff auf transaktionale Daten."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr ""
+"Ziehen Sie die Abstraktion Ihrer Business-Logik von Hibernate in Erwägung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hide Hibernate data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC "
+"associated to Hibernate via a <literal>UserType</literal>. This advice is, "
+"however, intended for \"sufficiently large\" applications. It is not "
+"appropriate for an application with five tables."
+msgstr ""
+"Verbergen Sie den (Hibernate) Datenzugriffscode hinter einem Interface. "
+"Verbinden Sie <emphasis>DAO</emphasis> und <emphasis>Thread Local Session</"
+"emphasis>-Modell. Sie können sogar über einige mit handkodiertem JDBC "
+"verfügen, die mittels eines <literal>UserType</literal> mit Hibernate "
+"assoziiert sind. (Dieser Ratschlag gilt für \"ausreichend große\" "
+"Anwendungen; er ist unpassend für eine Anwendung mit fünf Tabellen!)"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "Verwenden Sie keine exotischen Assoziationsmappings."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Practical test cases for real many-to-many associations are rare. Most of "
+"the time you need additional information stored in the \"link table\". In "
+"this case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, most associations are one-to-many and many-"
+"to-one. For this reason, you should proceed cautiously when using any other "
+"association style."
+msgstr ""
+"Gute Anwendungsfälle für echte \"Many-to-Many\"-Assoziationen sind selten. "
+"In den meisten Fällen benötigen Sie zusätzliche Informationen, die in der "
+"Verbindungstabelle (\"Link Table) gespeichert sind. In diesem Fall ist es "
+"besser zwei \"One-to-Many\"-Assoziationen zu einer dazwischen liegenden Link-"
+"Klasse zu verwenden. Genau genommen sind wir der Ansicht, dass die meisten "
+"Assoziationen \"One-to-Many\" und \"Many-to-One\" sind, und Sie sollten "
+"andere Assoziationsstile mit Vorsicht einsetzen und sich stets fragen, ob "
+"diese tatsächlich unvermeidbar sind."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "Geben Sie bidirektionalen Assoziationen den Vorzug."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"Unidirektionale Assoziationen sind schwieriger abzufragen. In einer großen "
+"Anwendung müssen fast alle Assoziationen bei Anfragen nach beiden Richtungen "
+"navigierbar sein."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2333 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Collection mapping"
+msgstr "Collection-Mappings"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "Persistente Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type. For example:"
+msgstr ""
+"In Hibernate müssen persistente Collection-wertige Felder als Interface-Typ "
+"deklariert werden, zum Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or anything you like (\"anything you "
+"like\" means you will have to write an implementation of <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"Das tatsächliche Interface könnte <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> oder ... was immer Sie möchten sein! "
+"(Wobei \"was immer Sie möchten\" bedeutet, dass Sie eine Implementierung von "
+"<literal>org.hibernate.usertype.UserCollectionType</literal> werden "
+"schreiben müssen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Notice how the instance variable was initialized with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent, by calling <literal>persist()</literal> for "
+"example, Hibernate will actually replace the <literal>HashSet</literal> with "
+"an instance of Hibernate's own implementation of <literal>Set</literal>. Be "
+"aware of the following errors:"
+msgstr ""
+"Beachten Sie, wie wir die Instanzvariable mit einer Instanz von "
+"<literal>HashSet</literal> initialisiert haben. Dieses ist die beste Art, "
+"neu initialisierte (nicht-persistente) Collection-wertige Properties zu "
+"instanziieren. Wenn Sie - etwa durch Aufruf von <literal>persist()</literal> "
+"- die Instanz persistent machen, so wird Hibernate das <literal>HashSet</"
+"literal> durch eine Instanz seiner eigenen Implementierung von <literal>Set</"
+"literal> ersetzen. Achten Sie auf mögliche Fehler wie den folgenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending on the interface type."
+msgstr ""
+"Je nach Interface-Typ verhalten sich die von Hibernate eingespeisten "
+"Collections wie <literal>HashMap</literal>, <literal>HashSet</literal>, "
+"<literal>TreeMap</literal>, <literal>TreeSet</literal> oder "
+"<literal>ArrayList</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and are "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities cannot share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics. Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"Instanzen von Collections folgen dem Verhalten von Wertetypen. Sie werden "
+"automatisch persistent gemacht, wenn durch ein persistentes Objekt auf sie "
+"verwiesen wird und gelöscht, wenn kein Verweis auf sie existiert. Falls eine "
+"Collection von einem persistenten Objekt an ein anderes weitergegeben wird, "
+"so ist es möglich, dass deren Elemente von einer Tabelle zu einer anderen "
+"Tabelle verschoben werden. Zwei Entities können sich keinen Verweis zu "
+"derselben Instanz einer Collection teilen. Wegen des zu Grunde liegenden "
+"relationalen Modells unterstützen Collection-wertige Properties keine "
+"Nullwert-Semantik. Hibernate unterscheidet nicht zwischen einem Null-"
+"Collection-Verweis und einer leeren Collection."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use persistent collections the same way you use ordinary Java collections. "
+"However, please ensure you understand the semantics of bidirectional "
+"associations (these are discussed later)."
+msgstr ""
+"Sie werden mit all dem jedoch meist wenig zu tun haben. Verwenden Sie "
+"persistente Collections genau so, wie sie reguläre Java-Collections "
+"verwenden würden. Stellen Sie aber sicher, dass Sie die Semantik "
+"bidirektionaler Assoziationen verstehen (wir gehen später noch näher darauf "
+"ein)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "Collection-Mappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections "
+"that cover many common relational models. We suggest you experiment with the "
+"schema generation tool so that you understand how various mapping "
+"declarations translate to database tables."
+msgstr ""
+"Es gibt eine ganze Reihe von Mappings, die für Collections generiert werden "
+"können und die zahlreiche gängige relationale Modelle abdecken. Es ist "
+"wahrscheinlich sinnvoll, wenn Sie mit dem Tool zur Schemagenerierung "
+"experimentieren, um zu sehen, wie die verschiedenen Mapping-Deklarationen "
+"bei Datenbanktabellen umgesetzt werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of interface. For example, a <literal>&lt;set&gt;</literal> element is "
+"used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"Das Hibernate Mapping-Element, das für das Mapping einer Collection "
+"verwendet wird, hängt vom Typ des Interface ab. Zum Beispiel wird ein "
+"<literal>&lt;set&gt;</literal>-Element für Mapping-Properties des Typs "
+"<literal>Set</literal> verwendet."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;"
+"list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</"
+"literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-"
+"array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> "
+"element is representative:"
+msgstr ""
+"Neben <literal>&lt;set&gt;</literal> gibt es auch <literal>&lt;list&gt;</"
+"literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal>, "
+"<literal>&lt;array&gt;</literal> und <literal>&lt;primitive-array&gt;</"
+"literal> Mapping-Elemente. Das <literal>&lt;map&gt;</literal>-Element ist "
+"charakteristisch:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal> der Property-Name der Collection"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name): the name of "
+"the collection table. It is not used for one-to-many associations."
+msgstr ""
+"<literal>table</literal> (optional - standardmäßig der Property-Name) der "
+"Name der Collection-Tabelle (wird nicht für \"One-to-Many\"-Assoziationen "
+"verwendet)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"disables lazy fetching and specifies that the association is always eagerly "
+"fetched. It can also be used to enable \"extra-lazy\" fetching where most "
+"operations do not initialize the collection. This is suitable for large "
+"collections."
+msgstr ""
+"<literal>lazy</literal> (optional - standardmäßig <literal>true</literal>) "
+"kann verwendet werden, um das \"lazy Fetching\" (d.h. das Nachladen "
+"assoziierter Objekte bei Bedarf) zu deaktivieren und zu bestimmen, dass auf "
+"die Assoziation stets mittels \"eager Fetching\" (d.h. zusammengefasstem "
+"Laden von Objekt und assoziierten Objekten mit Verbundoperationen) "
+"zugegriffen wird. Ebenfalls zur Aktivierung von \"extra-lazy\" Fetching "
+"verwendet, bei dem die meisten Vorgänge die Collection nicht initialisieren "
+"(passend für sehr große Collections)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): marks this collection as the \"inverse\" end of a bidirectional "
+"association."
+msgstr ""
+"<literal>inverse</literal> (optional - standardmäßig <literal>false</"
+"literal>) kennzeichnen Sie diese Collection als das \"invertierte\" Ende "
+"einer biderektionalen Assoziation"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>): "
+"enables operations to cascade to child entities."
+msgstr ""
+"<literal>cascade</literal> (optional - standardmäßig <literal>none</"
+"literal>) aktiviert Vorgänge zur Weitergabe an untergeordnete Entities (sog. "
+"\"child entities\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>sort</literal> (optional): specifies a sorted collection with "
+"<literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+"<literal>sort</literal> (optional) bestimmt eine sortierte Collection mit "
+"<literal>natural</literal> Sortierordnung oder eine bestimmte Klasse von "
+"Vergleichsprogramm"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only): specifies a table "
+"column or columns that define the iteration order of the <literal>Map</"
+"literal>, <literal>Set</literal> or bag, together with an optional "
+"<literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+"<literal>order-by</literal> (optional, nur JDK1.4) bestimmt eine (oder "
+"mehrere) Tabellenspalte(n), die die Iterationsreihenfolge von <literal>Map</"
+"literal>, <literal>Set</literal> oder \"Bag\" (d.h. Duplikate, Multimenge) "
+"mit einem optionalen <literal>asc</literal> oder <literal>desc</literal> "
+"definieren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition that is used when retrieving or removing "
+"the collection. This is useful if the collection needs to contain only a "
+"subset of the available data."
+msgstr ""
+"<literal>where</literal> (optional) bestimmt eine arbiträre SQL "
+"<literal>WHERE</literal>-Bedingung, die bei der Abfrage oder Entfernung der "
+"Collection verwendet werden soll (besonders dann nützlich, wenn die "
+"Collection nur einen Untersatz der verfügbaren Daten enthalten soll)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>): "
+"chooses between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (optional, standardmäßig <literal>select</literal>) "
+"Wählen Sie zwischen \"Outer-Join\"-Abruf (d.h. äußerem Verbund), Abruf nach "
+"sequentieller Auswahl und Fetching nach sequentieller Unterauswahl."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (optional, standardmäßig <literal>1</literal>) "
+"bestimmt eine \"Batch-Größe\" für das \"lazy Fetching\" von Instanzen dieser "
+"Collection."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the collection property "
+"value."
+msgstr ""
+"<literal>access</literal> (optional - standardmäßig <literal>property</"
+"literal>): Die von Hibernate zu verwendende Strategie für den Zugriff auf "
+"den Property-Wert der Collection."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that changes to the state of the collection results in "
+"increments of the owning entity's version. For one-to-many associations you "
+"may want to disable this setting."
+msgstr ""
+"<literal>optimistic-lock</literal> (optional - standardmäßig <literal>true</"
+"literal>): Bestimmt die Statusänderungen der Collection-Ergebnisse in "
+"Versionserhöhung der besitzenden Entity. (Bei \"One-to-Many\"-Assoziationen "
+"ist es oftmals sinnvoll, diese Einstellung zu deaktivieren)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"a value of <literal>false</literal> specifies that the elements of the "
+"collection never change. This allows for minor performance optimization in "
+"some cases."
+msgstr ""
+"<literal>mutable</literal> (optional - standardmäßig <literal>true</"
+"literal>): Ein Wert von <literal>false</literal> bestimmt, dass die Elemente "
+"der Collection sich niemals ändern (in manchen Fällen eine leichte "
+"Optimierung der Performance)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "Collection-Fremdschlüssel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis>, or columns, of the collection "
+"table. The collection key column is mapped by the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Die Instanzen der Collection werden in der Datenbank durch den "
+"Fremdschlüssel der Entity, zu der die Collection gehört, unterschieden. "
+"Dieser Fremdschlüssel wird als <emphasis>Schlüsselspalte der Collection</"
+"emphasis> (oder Spalten) der Collection-Tabelle bezeichnet. Die "
+"Schlüsselspalte der Collection wird durch das <literal>&lt;key&gt;</literal>-"
+"Element gemappt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There can be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one-to-many associations, "
+"the foreign key column is nullable by default, so you may need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"Es ist möglich, dass eine \"Nullability\"-Bedingung an der Spalte des "
+"Fremdschlüssels existiert. Für die meisten Collections wird dies "
+"vorausgesetzt. Bei unidirektionalen \"One-to-Many\"-Assoziationen ist die "
+"Spalte des Fremdschlüssels standardmäßig \"nullbar\", weswegen es möglich "
+"ist, dass Sie <literal>not-null=\"true\"</literal> festlegen müssen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"Die Bedingung für den Fremdschlüssel kann <literal>ON DELETE CASCADE</"
+"literal> verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Die vollständige Definition des <literal>&lt;key&gt;</literal>-Elements "
+"finden Sie im vorangegangenen Kapitel."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "Collection-Elemente"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections can contain almost any other Hibernate type, including: basic "
+"types, custom types, components and references to other entities. This is an "
+"important distinction. An object in a collection might be handled with "
+"\"value\" semantics (its life cycle fully depends on the collection owner), "
+"or it might be a reference to another entity with its own life cycle. In the "
+"latter case, only the \"link\" between the two objects is considered to be a "
+"state held by the collection."
+msgstr ""
+"Collections können fast jeden beliebigen anderen Hibernate-Typ enthalten, "
+"einschließlich sämtlicher Grundtypen, angepasster Typen, Komponenten und "
+"natürlich Referenzen zu anderen Entities. Das ist ein wichtiger Unterschied: "
+"Ein Objekt einer Collection könnte mit \"Wert\"semantik bearbeitet werden "
+"(sein Lebenszyklus hängt vollständig vom Besitzer der Collection ab) oder es "
+"könnte ein Verweis auf eine andere Entity mit ihrem eigenen Lebenszyklus "
+"sein. Im letzteren Fall wird nur die \"Verbindung\" zwischen den beiden "
+"Objekten als von der Collection gehaltener Status angesehen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</"
+"literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of "
+"entity references, with <literal>&lt;one-to-many&gt;</literal> or "
+"<literal>&lt;many-to-many&gt;</literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"Der enthaltene Typ wird als <emphasis>Typ von Collection-Element</emphasis> "
+"bezeichnet. Collection-Elemente werden durch <literal>&lt;element&gt;</"
+"literal> oder <literal>&lt;composite-element&gt;</literal> - oder im Fall "
+"von Entity-Verweisen - durch <literal>&lt;one-to-many&gt;</literal> oder "
+"<literal>&lt;many-to-many&gt;</literal> gemappt. Die ersten beiden Elemente "
+"mappen mit Wertsemantik, die beiden folgenden werden für das Mappen von "
+"Entity-Assoziationen verwendet."
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "Indizierte Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table. An index column "
+"is a column that maps to an array index, or <literal>List</literal> index, "
+"or <literal>Map</literal> key. The index of a <literal>Map</literal> may be "
+"of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be "
+"an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</"
+"literal>, or it can be a composite type mapped with <literal>&lt;composite-"
+"map-key&gt;</literal>. The index of an array or list is always of type "
+"<literal>integer</literal> and is mapped using the <literal>&lt;list-"
+"index&gt;</literal> element. The mapped column contains sequential integers "
+"that are numbered from zero by default."
+msgstr ""
+"Alle Collection-Mappings - außer denen mit \"Set\"- und \"Bag\"-Semantik - "
+"benötigen eine <emphasis>Indexspalte</emphasis> in der Collection-Tabelle. "
+"Es handelt sich dabei um eine Spalte, die zu einem Verzeichnis von "
+"Datenelementen, <literal>List</literal>-Verzeichnis oder <literal>Map</"
+"literal>-Schlüssel mappt. Der Index einer <literal>Map</literal> kann jeden "
+"Grundtyp besitzen, der mit <literal>&lt;map-key&gt;</literal> gemappt ist. "
+"Es kann ein mit <literal>&lt;map-key-many-to-many&gt;</literal> gemappter "
+"Entity-Verweis oder ein mit <literal>&lt;composite-map-key&gt;</literal> "
+"gemappter zusammengesetzter Typ sein. Der Index eines Datenelements oder "
+"einer Liste ist immer vom Typ her <literal>integer</literal> und wird "
+"mittels <literal>&lt;list-index&gt;</literal>-Element gemappt. Die gemappte "
+"Spalte enthält sequenzielle ganze Zahlen (im Standard ab Null "
+"durchnummeriert)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column_name</literal> (required): the name of the column holding "
+"the collection index values."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>base</literal> (optional - defaults to <literal>0</literal>): the "
+"value of the index column that corresponds to the first element of the list "
+"or array."
+msgstr ""
+"<literal>cascade</literal> (optional - standardmäßig <literal>none</"
+"literal>) aktiviert Vorgänge zur Weitergabe an untergeordnete Entities (sog. "
+"\"child entities\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection index values."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQL formula used to evaluate the "
+"key of the map."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column for "
+"the collection index values."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQ formula used to evaluate the "
+"foreign key of the map key."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (required): the entity class used as the map key."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your table does not have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you can map the property as a "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order "
+"when it is retrieved from the database, but it can be optionally sorted or "
+"ordered."
+msgstr ""
+"Falls Ihre Tabelle keine Indexspalte besitzt und Sie nach wie vor "
+"<literal>List</literal> als Property-Typ verwenden wollen, so sollten Sie "
+"die Property als eine <emphasis>&lt;Bag&gt;</emphasis> mappen. Eine \"Bag\" "
+"bewahrt ihre Reihenfolge beim Abruf aus der Datenbank nicht, kann aber "
+"optional sortiert oder geordnet werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "Collections von Werten und \"Many-to-Many\"-Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any collection of values or many-to-many associations requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns, and possibly an "
+"index column or columns."
+msgstr ""
+"Jede Collection von Werten oder \"Many-to-Many\"-Assoziation erfordert eine "
+"zugeordnete <emphasis>Collection-Tabelle</emphasis> mit einer oder mehreren "
+"Fremdschlüsselspalten, <emphasis>Collection-Element-Spalte(n)</emphasis> "
+"oder möglicherweise einer oder mehreren Indexspalte(n)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a collection of values use the <literal>&lt;element&gt;</literal> tag. "
+"For example:"
+msgstr ""
+"Für eine Collection von Werten wird das <literal>&lt;element&gt;</literal>-"
+"Tag verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection element values."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>many-to-many association</emphasis> is specified using the "
+"<literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the element foreign key "
+"column."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element foreign key value."
+msgstr ""
+"<literal>schema</literal> (optional) der Name eines Tabellenschemas, der das "
+"im Stammelement deklarierte Schema außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr ""
+"<literal>class</literal> (erforderlich): Der Name der zugehörigen Klasse."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching in a single <literal>SELECT</"
+"literal> of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching,not only of the collection "
+"itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</"
+"literal> nested element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. This makes the association "
+"multiplicity effectively one-to-many."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (optional - standardmäßig <literal>exception</"
+"literal>): Bestimmt, wie gespeicherte Bezeichner (sog. \"Identifier\"), die "
+"auf fehlende Reihen verweisen, behandelt werden. Mit <literal>ignore</"
+"literal> wird eine fehlende Reihe als Null-Assoziation angesehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"<literal>entity-name</literal> (optional): Der Entity-Name der zugehörigen "
+"Klasse als Alternative zu <literal>class</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A bag containing integers with an iteration order determined by the "
+"<literal>order-by</literal> attribute:"
+msgstr ""
+"Eine ganze Zahlen enthaltende \"Bag\" (mit einer durch das <literal>order-"
+"by</literal>-Attribut bestimmten Reihenfolge):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr ""
+"Ein Datenelement von Entities - in diesem Fall eine \"Many-to-Many\"-"
+"Assoziation:"
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "Eine Map von String-Indexen zu Daten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr ""
+"Eine List von Komponenten (wird im nachfolgenden Kapitel näher erläutert):"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "\"One-to-Many\"-Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>one-to-many association</emphasis> links the tables of two "
+"classes via a foreign key with no intervening collection table. This mapping "
+"loses certain semantics of normal Java collections:"
+msgstr ""
+"Eine <emphasis>\"One-to-Many\"-Assoziation</emphasis> verbindet die Tabellen "
+"zweier Klassen mittels des Fremdschlüssels ohne eine intervenierende "
+"Collection-Tabelle. Dieses Mapping verliert bestimmte Teile der Semantik "
+"regulärer Java-Collections:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of the contained entity class cannot belong to more than one "
+"instance of the collection."
+msgstr ""
+"Eine Instanz der enthaltenen Entity-Klasse kann nicht zu mehr als einer "
+"Instanz der Collection gehören"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of the contained entity class cannot appear at more than one "
+"value of the collection index."
+msgstr ""
+"Eine Instanz der enthaltenen Entity-Klasse kann nicht an mehr als einem Wert "
+"des Collection-Index erscheinen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires the existence of a foreign key column and possibly an index column "
+"to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</"
+"literal> tag indicates that this is a one-to-many association."
+msgstr ""
+"Eine Assoziation von <literal>Product</literal> zu <literal>Part</literal> "
+"macht die Existenz einer Spalte mit Fremdschlüssel und möglicherweise einer "
+"Indexspalte zur <literal>Part</literal>-Tabelle erforderlich. Ein "
+"<literal>&lt;one-to-many&gt;</literal>-Tag zeigt an, dass dies eine \"One-to-"
+"Many\"-Assoziation ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how cached identifiers that reference missing rows will "
+"be handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (optional - standardmäßig <literal>exception</"
+"literal>): Bestimmt, wie gespeicherte Bezeichner (sog. \"Identifier\"), die "
+"auf fehlende Reihen verweisen, behandelt werden. Mit <literal>ignore</"
+"literal> wird eine fehlende Reihe als Null-Assoziation angesehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;one-to-many&gt;</literal> element does not need to declare "
+"any columns. Nor is it necessary to specify the <literal>table</literal> "
+"name anywhere."
+msgstr ""
+"Beachten Sie, dass das <literal>&lt;one-to-many&gt;</literal>-Element keine "
+"Spalten deklarieren muss. Es ist außerdem nicht nötig, den <literal>table</"
+"literal>-Namen irgendwo zu bestimmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> "
+"association is declared <literal>NOT NULL</literal>, you must declare the "
+"<literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> "
+"or <emphasis>use a bidirectional association</emphasis> with the collection "
+"mapping marked <literal>inverse=\"true\"</literal>. See the discussion of "
+"bidirectional associations later in this chapter for more information."
+msgstr ""
+"<emphasis>Sehr wichtig:</emphasis> Falls die Fremdschlüsselspalte einer "
+"<literal>&lt;one-to-many&gt;</literal>-Assoziation als <literal>NOT NULL</"
+"literal> deklariert ist, müssen Sie beim <literal>&lt;key&gt;</literal>-"
+"Mapping <literal>not-null=\"true\"</literal> deklarieren oder <emphasis>eine "
+"bidirektionale Assoziation</emphasis> mit als <literal>inverse=\"true\"</"
+"literal> gekennzeichnetem Collection-Mapping verwenden. Wir gehen später in "
+"diesem Kapitel noch näher auf bidirektionale Assoziationen ein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following example shows a map of <literal>Part</literal> entities by "
+"name, where <literal>partName</literal> is a persistent property of "
+"<literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+"Dieses Beispiel zeigt die Map von <literal>Part</literal>-Entities nach Name "
+"(wobei <literal>partName</literal> eine persistente Property von "
+"<literal>Part</literal>) ist. Beachten Sie die Verwendung eines "
+"formelbasierten Index."
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "Fortgeschrittene Collection-Mappings"
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "Sortierte Collections"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"Hibernate unterstützt <literal>java.util.SortedMap</literal> und "
+"<literal>java.util.SortedSet</literal> implementierende Collections. Sie "
+"müssen ein Vergleichsprogramm in der Mapping-Datei bestimmen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"Erlaubte Werte für das <literal>sort</literal>-Attribut sind "
+"<literal>unsorted</literal>, <literal>natural</literal> und der Name einer "
+"Klassenimplementierung <literal>java.util.Comparator</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Sortierte Collections verhalten sich tatsächlich wie <literal>java.util."
+"TreeSet</literal> oder <literal>java.util.TreeMap</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements, use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher and is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This "
+"performs the ordering in the SQL query and not in the memory."
+msgstr ""
+"Falls Sie wollen, dass die Datenbank selbst die Elemente der Collection "
+"ordnet, verwenden Sie das <literal>order-by</literal>-Attribut von "
+"<literal>set</literal>, <literal>bag</literal> oder <literal>map</literal>-"
+"Mappings. Diese Lösung ist nur bei JDK 1.4 oder späteren Versionen verfügbar "
+"(sie wird unter <literal>LinkedHashSet</literal> oder "
+"<literal>LinkedHashMap</literal> implementiert). Dadurch wird die Anordnung "
+"in der SQL-Anfrage - nicht im Speicher - durchgeführt."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The value of the <literal>order-by</literal> attribute is an SQL ordering, "
+"not an HQL ordering."
+msgstr ""
+"Beachten Sie, dass der Wert des <literal>order-by</literal>-Attributs eine "
+"SQL-Anordnung, keine HQL-Anordnung ist!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Associations can even be sorted by arbitrary criteria at runtime using a "
+"collection <literal>filter()</literal>:"
+msgstr ""
+"Assoziationen können zur Runtime mittels Collection <literal>filter()</"
+"literal> sogar nach beliebigen Kriterien sortiert werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Bidirektionale Assoziationen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"Eine <emphasis>bidirektionale Assoziation</emphasis> erlaubt die Navigation "
+"von beiden \"Enden\" der Assoziation. Es werden zwei Arten bidirektionaler "
+"Assoziationen unterstützt:"
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "\"One-to-Many\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr ""
+"an einem Ende von \"Set\"- oder \"Bag\"-wertig, am anderen Ende einwertig"
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "\"Many-to-Many\""
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "an beiden Enden \"Set\"- oder \"Bag\"-wertig"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify a bidirectional many-to-many association by mapping two many-"
+"to-many associations to the same database table and declaring one end as "
+"<emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+"Sie können eine bidirektionale \"Many-to-Many\"-Assoziation ganz einfach "
+"festlegen, indem Sie zwei \"Many-to-Many\"-Assoziationen zur selben "
+"Datenbanktabelle mappen und ein Ende als <emphasis>invertiert</emphasis> "
+"deklarieren (welches bleibt Ihnen überlassen, es kann jedoch keine "
+"indizierte Collection sein)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example of a bidirectional many-to-many association that "
+"illustrates how each category can have many items and each item can be in "
+"many categories:"
+msgstr ""
+"Nachfolgend sehen Sie ein Beispiel für eine bidirektionale \"Many-to-Many\"-"
+"Assoziation. Jede Kategorie kann viele Posten besitzen und jeder Posten kann "
+"sich in vielen Kategorien befinden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association: one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+"Änderungen können nur am invertierten Ende der Assoziation gemacht werden "
+"und sind <emphasis>nicht</emphasis> persistiert. Das bedeutet, dass "
+"Hibernate zwei Darstellungen jeder bidirektionalen Assoziation im Speicher "
+"besitzt - eine Verbindung von A zu B und eine weitere Verbindung von B zu A. "
+"Dies ist leichter zu verstehen, wenn man an das Objektmodell von Java denkt "
+"und daran, wie in Java eine \"Many-to-Many\"-Beziehung erstellt wird:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr ""
+"Die nicht-invertierte Seite wird dazu benutzt, die gespeicherte Darstellung "
+"in der Datenbank zu speichern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"Sie können eine bidirektionale \"One-to-Many\"-Assoziation definieren, indem "
+"Sie eine \"One-to-Many\"-Assoziation zu derselben (oder denselben) "
+"Tabellenspalte(n) wie eine \"Many-to-One\"-Assoziation mappen und für das "
+"mehrwertige Ende <literal>inverse=\"true\"</literal> deklarieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+"Das Mappen eines der Enden einer Assoziation mit <literal>inverse=\"true\"</"
+"literal> hat keinen Einfluss auf die Weitergabevorgänge (sog. \"Cascades\"), "
+"es handelt sich um orthogonale Konzepte!"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "Bidirektionale Assoziationen mit indizierten Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal>&lt;"
+"list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special "
+"consideration. If there is a property of the child class that maps to the "
+"index column you can use <literal>inverse=\"true\"</literal> on the "
+"collection mapping:"
+msgstr ""
+"Eine bidirektionale Assoziation, bei der ein Ende als <literal>&lt;list&gt;</"
+"literal> oder <literal>&lt;map&gt;</literal> dargestellt ist, erfordert "
+"besondere Beachtung. Falls eine Property der untergeordneten Klasse (sog. "
+"\"child class\") existiert, die zur Indexspalte mappt, dann gibt es keine "
+"Probleme und wir können mit der Verwendung von <literal>inverse=\"true\"</"
+"literal> beim Collection-Mapping fortfahren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If there is no such property on the child class, the association cannot be "
+"considered truly bidirectional. That is, there is information available at "
+"one end of the association that is not available at the other end. In this "
+"case, you cannot map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, you could use the following mapping:"
+msgstr ""
+"Falls aber an der untergeordneten Klasse keine solche Property vorhanden "
+"ist, so kann man sich die Assoziation nicht als wahrhaft bidirektional "
+"vorstellen (es sind Informationen an einem Ende vorhanden, die am anderen "
+"Ende nicht verfügbar sind). In diesem Fall können wir die Collection nicht "
+"<literal>inverse=\"true\"</literal> mappen. Statt dessen empfehlen wir "
+"folgendes Mapping:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key."
+msgstr ""
+"Bitte beachten Sie, dass bei diesem Mapping das Collection-wertige Ende der "
+"Assoziation für Aktualisierungen am Fremdschlüssel verantwortlich ist. TODO: "
+"Führt dies zu unnötigen Aktualisierungsanweisungen? "
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "Dreifache Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One "
+"approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"Es gibt drei mögliche Arten eine dreifache Assoziation zu mappen. Eine davon "
+"ist die Verwendung von <literal>Map</literal> mit einer Assoziation als "
+"deren Index:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A second approach is to remodel the association as an entity class. This is "
+"the most common approach."
+msgstr ""
+"Ein zweiter Weg ist es, die Assoziation einfach als eine Entity-Klasse zu "
+"gestalten. Das ist die am häufigsten gewählte Herangehensweise."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which will be discussed "
+"later."
+msgstr ""
+"Die dritte und letzte Variante besteht in der Verwendung zusammengesetzter "
+"Elemente, auf die wir zu einem späteren Zeitpunkt näher eingehen werden."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "Die Verwendung einer &lt;idbag&gt;"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The majority of the many-to-many associations and collections of values "
+"shown previously all map to tables with composite keys, even though it has "
+"been have suggested that entities should have synthetic identifiers "
+"(surrogate keys). A pure association table does not seem to benefit much "
+"from a surrogate key, although a collection of composite values "
+"<emphasis>might</emphasis>. It is for this reason that Hibernate provides a "
+"feature that allows you to map many-to-many associations and collections of "
+"values to a table with a surrogate key."
+msgstr ""
+"Falls Sie unsere Ansicht teilen und ebenfalls der Meinung sind, dass "
+"zusammengesetzte Schlüssel keine gute Sache sind und Entities synthetische "
+"Bezeichner (Surrogatschlüssel) besitzen sollten, dann werden Sie es "
+"wahrscheinlich seltsam finden, dass die bis jetzt von uns gezeigten \"Many-"
+"to-Many\"-Assoziationen und Wert-Collections zu Tabellen mit "
+"zusammengesetzten Schlüsseln mappen! Nun, über diesen Punkt lässt sich "
+"streiten. Einer reinen Assoziationstabelle scheint ein Surrogatschlüssel "
+"(obwohl eine Collection zusammengesetzter Werte das <emphasis>könnte</"
+"emphasis>) nicht viel zu bringen. Trotzdem bietet Hibernate ein Feature, das "
+"es Ihnen ermöglicht, \"Many-to-Many\"-Assoziationen und Wert-Collections zu "
+"einer Tabelle mit einem Surrogatschlüssel zu mappen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+"Das <literal>&lt;idbag&gt;</literal>-Element lässt Sie eine <literal>List</"
+"literal> (oder <literal>Collection</literal>) mit \"Bag\"-Semantik mappen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like "
+"an entity class. A different surrogate key is assigned to each collection "
+"row. Hibernate does not, however, provide any mechanism for discovering the "
+"surrogate key value of a particular row."
+msgstr ""
+"Wie Sie sehen hat <literal>&lt;idbag&gt;</literal> einen synthetischen id-"
+"Generator, ganz wie eine Entity-Klasse! Ein anderer Surrogatschlüssel wird "
+"jeder Reihe der Collection zugeordnet. Hibernate bietet jedoch keinen "
+"Mechanismus, um den Wert eines Surrogatschlüssels für eine bestimmte Reihe "
+"herauszufinden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a "
+"regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows "
+"efficiently and update or delete them individually, similar to a list, map "
+"or set."
+msgstr ""
+"Beachten Sie, dass die Aktualiserungsperformance einer <literal>&lt;idbag&gt;"
+"</literal> <emphasis>wesentlich</emphasis> besser als eine reguläre "
+"<literal>&lt;bag&gt;</literal> ist! Hibernate kann auf effiziente Weise "
+"einzelne Reihen lokalisieren und sie individuell aktualisieren oder löschen, "
+"ganz wie bei einer Liste, einer Map oder einem Set."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal>&lt;idbag&gt;</literal> "
+"collection identifiers."
+msgstr ""
+"In der aktuellen Implementierung wird die <literal>native</literal> "
+"Bezeichnergenerierungsstrategie nicht für <literal>&lt;idbag&gt;</literal> "
+"Collection-Bezeichner unterstützt."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "Collection-Beispiele"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This section covers collection examples."
+msgstr "Collection-Beispiele"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following class has a collection of <literal>Child</literal> instances:"
+msgstr ""
+"Der folgende Code würde verwendet, um ein neues <literal>Child</literal> "
+"hinzuzufügen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If each child has, at most, one parent, the most natural mapping is a one-to-"
+"many association:"
+msgstr ""
+"besitzt eine Collection von <literal>Child</literal>-Instanzen. Wenn jedes "
+"\"child\" (untergeordnet) höchstens einen \"parent\" (übergeordnet) besitzt, "
+"so ist das natürlichste Mapping eine \"One-to-Many\"-Assoziation:"
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "Das mappt zu den folgenden Tabellendefinitionen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"Falls der \"parent\" <emphasis>erforderlich</emphasis> ist, verwenden Sie "
+"eine bidirektionale \"One-to-Many\"-Assoziation:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "Beachten Sie die <literal>NOT NULL</literal>-Bedingung:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, if this association must be unidirectional you can declare "
+"the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</"
+"literal> mapping:"
+msgstr ""
+"Andernfalls - falls Sie absolut darauf bestehen, dass diese Assoziation "
+"unidirektional ist - können Sie die <literal>NOT NULL</literal>-Bedingung am "
+"<literal>&lt;key&gt;</literal>-Mapping deklarieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"On the other hand, if a child has multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"Wenn jedoch ein \"child\" mehrere \"parents\" besitzen kann, ist die \"Many-"
+"to-Many\"-Assoziation passender:"
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "Tabellendefinitionen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For more examples and a complete explanation of a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+"Weitere Beispiele und eine vollständige Abhandlung des Mappings der \"parent/"
+"child\"-Beziehung finden Sie unter <xref linkend=\"example-parentchild\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr ""
+"Es sind sogar noch weitaus exotischere Assoziations-Mappings möglich, die "
+"wir im nächsten Kapitel ausführen."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!]]>"
+#~ msgstr ""
+#~ "Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Product\">\n"
+#~ "    <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+#~ "    <set name=\"parts\">\n"
+#~ "        <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Part\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Product\"&gt;\n"
+#~ "    &lt;id name=\"serialNumber\" column=\"productSerialNumber\"/&gt;\n"
+#~ "    &lt;set name=\"parts\"&gt;\n"
+#~ "        &lt;key column=\"productSerialNumber\" not-null=\"true\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Part\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "    <key .... />\n"
+#~ "    <map-key .... />\n"
+#~ "    <element .... />\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "\n"
+#~ "    &lt;key .... /&gt;\n"
+#~ "    &lt;map-key .... /&gt;\n"
+#~ "    &lt;element .... /&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+#~ msgstr "&lt;key column=\"productSerialNumber\" not-null=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+#~ msgstr "&lt;key column=\"productSerialNumber\" on-delete=\"cascade\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+#~ "    <key column=\"person_id\"/>\n"
+#~ "    <element column=\"person_name\" type=\"string\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"names\" table=\"person_names\"&gt;\n"
+#~ "    &lt;key column=\"person_id\"/&gt;\n"
+#~ "    &lt;element column=\"person_name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\">\n"
+#~ "    <key column=\"item_id\"/>\n"
+#~ "    <element column=\"size\" type=\"integer\"/>\n"
+#~ "</bag>]]>"
+#~ msgstr ""
+#~ "&lt;bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\"&gt;\n"
+#~ "    &lt;key column=\"item_id\"/&gt;\n"
+#~ "    &lt;element column=\"size\" type=\"integer\"/&gt;\n"
+#~ "&lt;/bag&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\">\n"
+#~ "    <key column=\"personId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+#~ "</array>]]>"
+#~ msgstr ""
+#~ "&lt;array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\"&gt;\n"
+#~ "    &lt;key column=\"personId\"/&gt;\n"
+#~ "    &lt;list-index column=\"sortOrder\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"addressId\" class=\"Address\"/&gt;\n"
+#~ "&lt;/array&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\"&gt;\n"
+#~ "    &lt;key column=\"id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date\" type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\">\n"
+#~ "    <key column=\"carId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <composite-element class=\"CarComponent\">\n"
+#~ "        <property name=\"price\"/>\n"
+#~ "        <property name=\"type\"/>\n"
+#~ "        <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</list>]]>"
+#~ msgstr ""
+#~ "&lt;list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\"&gt;\n"
+#~ "    &lt;key column=\"carId\"/&gt;\n"
+#~ "    &lt;list-index column=\"sortOrder\"/&gt;\n"
+#~ "    &lt;composite-element class=\"CarComponent\"&gt;\n"
+#~ "        &lt;property name=\"price\"/&gt;\n"
+#~ "        &lt;property name=\"type\"/&gt;\n"
+#~ "        &lt;property name=\"serialNumber\" column=\"serialNum\"/&gt;\n"
+#~ "    &lt;/composite-element&gt;\n"
+#~ "&lt;/list&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]>"
+#~ msgstr ""
+#~ "&lt;one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    /&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"parts\"\n"
+#~ "        cascade=\"all\">\n"
+#~ "    <key column=\"productId\" not-null=\"true\"/>\n"
+#~ "    <map-key formula=\"partName\"/>\n"
+#~ "    <one-to-many class=\"Part\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"parts\"\n"
+#~ "        cascade=\"all\"&gt;\n"
+#~ "    &lt;key column=\"productId\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;map-key formula=\"partName\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Part\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\"&gt;\n"
+#~ "    &lt;key column=\"person\"/&gt;\n"
+#~ "    &lt;element column=\"name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;map name=\"holidays\" sort=\"my.custom.HolidayComparator\"&gt;\n"
+#~ "    &lt;key column=\"year_id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date\" type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+#~ "(name) asc\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) "
+#~ "asc\"&gt;\n"
+#~ "    &lt;key column=\"person\"/&gt;\n"
+#~ "    &lt;element column=\"name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;map name=\"holidays\" order-by=\"hol_date, hol_name\"&gt;\n"
+#~ "    &lt;key column=\"year_id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this."
+#~ "name\" ).list();]]>"
+#~ msgstr ""
+#~ "sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" )."
+#~ "list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Category\">\n"
+#~ "    <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+#~ "    ...\n"
+#~ "    <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+#~ "        <key column=\"CATEGORY_ID\"/>\n"
+#~ "        <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Item\">\n"
+#~ "    <id name=\"id\" column=\"ITEM_ID\"/>\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    <!-- inverse end -->\n"
+#~ "    <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+#~ "        <key column=\"ITEM_ID\"/>\n"
+#~ "        <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Category\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;bag name=\"items\" table=\"CATEGORY_ITEM\"&gt;\n"
+#~ "        &lt;key column=\"CATEGORY_ID\"/&gt;\n"
+#~ "        &lt;many-to-many class=\"Item\" column=\"ITEM_ID\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Item\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    &lt;!-- inverse end --&gt;\n"
+#~ "    &lt;bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"ITEM_ID\"/&gt;\n"
+#~ "        &lt;many-to-many class=\"Category\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be "
+#~ "saved]]>"
+#~ msgstr ""
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be saved"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"/>\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;map name=\"children\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"/&gt;\n"
+#~ "        &lt;map-key column=\"name\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;property name=\"name\" \n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\">\n"
+#~ "        <key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;map name=\"children\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        &lt;map-key column=\"name\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"contracts\">\n"
+#~ "    <key column=\"employer_id\" not-null=\"true\"/>\n"
+#~ "    <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+#~ "    <one-to-many class=\"Contract\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"contracts\"&gt;\n"
+#~ "    &lt;key column=\"employer_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;map-key-many-to-many column=\"employee_id\" class=\"Employee\"/"
+#~ "&gt;\n"
+#~ "    &lt;one-to-many class=\"Contract\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"connections\">\n"
+#~ "    <key column=\"incoming_node_id\"/>\n"
+#~ "    <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+#~ "    <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"connections\"&gt;\n"
+#~ "    &lt;key column=\"incoming_node_id\"/&gt;\n"
+#~ "    &lt;map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/"
+#~ "&gt;\n"
+#~ "    &lt;many-to-many column=\"connection_id\" class=\"Connection\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+#~ "    <collection-id column=\"ID\" type=\"long\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </collection-id>\n"
+#~ "    <key column=\"PERSON1\"/>\n"
+#~ "    <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+#~ "</idbag>]]>"
+#~ msgstr ""
+#~ "&lt;idbag name=\"lovers\" table=\"LOVERS\"&gt;\n"
+#~ "    &lt;collection-id column=\"ID\" type=\"long\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"/&gt;\n"
+#~ "    &lt;/collection-id&gt;\n"
+#~ "    &lt;key column=\"PERSON1\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/"
+#~ "&gt;\n"
+#~ "&lt;/idbag&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" inverse=\"true\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id"
+#~ "\" not-null=\"true\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"parent\" class=\"Parent\" column="
+#~ "\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" table=\"childset\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\" table=\"childset\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Child\" column=\"child_id\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1073 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "Komponenten-Mapping"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts and purposes throughout Hibernate."
+msgstr ""
+"Der Begriff der <emphasis>Komponente</emphasis> wird in Hibernate in "
+"verschiedenen Kontexten und zu unterschiedlichen Zwecken aufgegriffen."
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "Abhängige Objekte"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type and not "
+"an entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition and not to architecture-level components. For example, "
+"you can model a person like this:"
+msgstr ""
+"Bei einer Komponente handelt es sich um ein enthaltenes Objekt, das als "
+"Wertetyp, nicht als Entity-Referenz persistiert ist. Der Begriff \"Komponente"
+"\" verweist auf den objektorientierten Aspekt der Zusammensetzung (nicht auf "
+"Komponenten der Architektur-Ebene). Sie könnten zum Beispiel folgendes "
+"Modell für eine Person erstellen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now <literal>Name</literal> can be persisted as a component of "
+"<literal>Person</literal>. <literal>Name</literal> defines getter and setter "
+"methods for its persistent properties, but it does not need to declare any "
+"interfaces or identifier properties."
+msgstr ""
+"Jetzt kann <literal>Name</literal> als Komponente von <literal>Person</"
+"literal> persistiert werden. Beachten Sie, dass <literal>Name</literal> \"Get"
+"\"- und \"Set\"-Methoden für persistente Properties definiert, aber keine "
+"Interfaces oder Bezeichner-Properties deklarieren muss."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "Unser Hibernate Mapping würde wie folgt aussehen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"Die Personentabelle würde die Spalten <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> und <literal>last</literal> besitzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Like value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name objects that were only \"the same\" by "
+"value. The null value semantics of a component are <emphasis>ad hoc</"
+"emphasis>. When reloading the containing object, Hibernate will assume that "
+"if all component columns are null, then the entire component is null. This "
+"is suitable for most purposes."
+msgstr ""
+"Wie alle Wertetypen unterstützen Komponenten keine geteilten Verweise (sog. "
+"\"shared references\"). Mit anderen Worten: Zwei Personen könnten denselben "
+"Namen besitzen, aber die beiden Personen-Objekte würden zwei unabhängige "
+"Namensobjekte besitzen, die nur hinsichtlich des Werts \"gleich\" sind. Die "
+"Nullwert-Semantik einer Komponente ist <emphasis>ad hoc</emphasis>. Wenn das "
+"enthaltene Objekt erneut geladen wird, geht Hibernate davon aus, dass die "
+"gesamte Komponente Null ist, wenn alle Spalten Null sind . Für die meisten "
+"Zwecke ist das in Ordnung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The properties of a component can be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a fine-grained object model."
+msgstr ""
+"Die Properties einer Komponente können jeden Hibernate-Typ besitzen "
+"(Collections, \"Many-to-One\"-Assoziationen, andere Komponenten, usw). "
+"Verschachtelte Komponenten sollten <emphasis>nicht</emphasis> als exotisch "
+"angesehen werden - Hibernate ist dafür vorgesehen, ein sehr feinstufiges "
+"Objektmodell zu unterstützen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"Das <literal>&lt;component&gt;</literal>-Element ermöglicht ein <literal>&lt;"
+"parent&gt;</literal>-Subelement, das eine Property der Komponentenklasse als "
+"Rückreferenz zur enthaltenden Entity mappt."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "Collections abhängiger Objekte"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections of components are supported (e.g. an array of type "
+"<literal>Name</literal>). Declare your component collection by replacing the "
+"<literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-"
+"element&gt;</literal> tag:"
+msgstr ""
+"Collections von Komponenten werden unterstützt (z.B. ein Datenelement vom "
+"Typ <literal>Name</literal>). Deklarieren Sie Ihre Collection von "
+"Komponenten, indem Sie das <literal>&lt;element&gt;</literal>-Tag durch ein "
+"<literal>&lt;composite-element&gt;</literal>-Tag ersetzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you define a <literal>Set</literal> of composite elements, it is "
+"important to implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> correctly."
+msgstr ""
+"Hinweis: Falls Sie ein <literal>Set</literal> zusammengesetzter Elemente "
+"deklarieren, ist es sehr wichtig, dass Sie <literal>equals()</literal> und "
+"<literal>hashCode()</literal> korrekt implementieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Composite elements can contain components but not collections. If your "
+"composite element contains components, use the <literal>&lt;nested-composite-"
+"element&gt;</literal> tag. This case is a collection of components which "
+"themselves have components. You may want to consider if a one-to-many "
+"association is more appropriate. Remodel the composite element as an entity, "
+"but be aware that even though the Java model is the same, the relational "
+"model and persistence semantics are still slightly different."
+msgstr ""
+"Zusammengesetzte Elemente können Komponenten, nicht jedoch Collections "
+"enthalten. Falls Ihr zusammengesetztes Element selbst Komponenten enthält, "
+"verwenden Sie das <literal>&lt;nested-composite-element&gt;</literal>-Tag. "
+"Es handelt sich dabei aber um einen recht exotischen Fall - eine Collection "
+"von Komponenten, die wiederum selbst über Komponenten verfügen. An dieser "
+"Stelle sollten Sie sich fragen, ob eine \"One-to-Many\"-Assoziation nicht "
+"sinnvoller ist. Versuchen Sie, das zusammengesetzte Element zu einer Entity "
+"zu machen - aber beachten Sie: Obwohl das Java-Modell dasselbe ist, gibt es "
+"doch gewisse Unterschiede hinsichtlich des relationalen Modells und der "
+"Persistenz-Semantik."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A composite element mapping does not support null-able properties if you are "
+"using a <literal>&lt;set&gt;</literal>. There is no separate primary key "
+"column in the composite element table. Hibernate uses each column's value to "
+"identify a record when deleting objects, which is not possible with null "
+"values. You have to either use only not-null properties in a composite-"
+"element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+"Bitte beachten Sie, dass zusammengesetztes Element-Mapping keine nullbaren "
+"Properties unterstützt, wenn Sie ein <literal>&lt;set&gt;</literal> "
+"verwenden. Hibernate muss den Wert jeder Spalte verwenden, um einen "
+"Datensatz bei der Löschung von Objekten zu identifizieren (es existiert "
+"keine separate Primärschlüsselspalte in der Tabelle mit zusammengesetzten "
+"Elementen), was mit Nullwerten nicht möglich ist. Sie müssen entweder "
+"ausschließlich Properties, die nicht Null sind, in einem zusammengesetzten "
+"Element verwenden oder <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;"
+"</literal>, <literal>&lt;bag&gt;</literal> oder <literal>&lt;idbag&gt;</"
+"literal> wählen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to "
+"map extra columns of a many-to-many association table to the composite "
+"element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal>, where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"Um einen besonderen Fall von zusammengesetztem Element handelt es sich bei "
+"einem zusammengesetzten Element mit verschachteltem <literal>&lt;many-to-"
+"one&gt;</literal>-Element. Ein solches Mapping erlaubt es Ihnen, Extra-"
+"Spalten einer \"Many-to-Many\"-Assoziationstabelle zu einer "
+"zusammengesetzten Elementklasse zu mappen. Nachfolgend sehen Sie eine \"Many-"
+"to-Many\"-Assoziation von <literal>Order</literal> zu <literal>Item</"
+"literal> wo <literal>purchaseDate</literal>, <literal>price</literal> und "
+"<literal>quantity</literal> Properties der Assoziation sind:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There cannot be a reference to the purchase on the other side for "
+"bidirectional association navigation. Components are value types and do not "
+"allow shared references. A single <literal>Purchase</literal> can be in the "
+"set of an <literal>Order</literal>, but it cannot be referenced by the "
+"<literal>Item</literal> at the same time."
+msgstr ""
+"Natürlich kann kein Verweis zum Kauf (\"Purchase\") auf der anderen Seite "
+"für eine bidirektionale Assoziationsnavigation existieren. Vergessen Sie "
+"nicht, dass es sich bei Komponenten um Wertetypen handelt und diese keine "
+"geteilten Verweise erlauben. Ein einzelner <literal>Purchase</literal> kann "
+"sich im Satz einer <literal>Order</literal> befinden, aber kann nicht zur "
+"gleichen Zeit durch den <literal>Item</literal> referenziert werden."
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "Sogar dreifache (oder vierfache, usw.) Assoziationen sind möglich:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Composite elements can appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"Zusammengesetzte Elemente können in Anfragen vorkommen und verwenden "
+"dieselbe Syntax wie Assoziationen zu anderen Entities."
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "Komponenten als Map-Indizes"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a "
+"component class as the key of a <literal>Map</literal>. Ensure that you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"Das <literal>&lt;composite-map-key&gt;</literal>-Element lässt Sie eine "
+"Komponentenklasse als Schlüssel einer <literal>Map</literal> mappen. "
+"Vergewissern Sie sich, dass Sie <literal>hashCode()</literal> und "
+"<literal>equals()</literal> in der Komponentenklasse ordnungsgemäß außer "
+"Kraft setzen."
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "Komponenten als zusammengesetzte Bezeichner"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"Sie können eine Komponente als Bezeichner einer Entity-Klasse verwenden. "
+"Ihre Komponentenklasse muss folgende Anforderungen erfüllen:"
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "Es muss <literal>java.io.Serializable</literal> implementieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> consistently with the database's notion of composite key equality."
+msgstr ""
+"Es muss <literal>equals()</literal> und <literal>hashCode()</literal> re-"
+"implementieren, konsistent mit dem Datenbankbegriff der Gleichheit der "
+"zusammengesetzten Schlüssel (sog. \"composite key equality\")."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In Hibernate3, although the second requirement is not an absolutely hard "
+"requirement of Hibernate, it is recommended."
+msgstr ""
+"Hinweis: In Hibernate3 ist die zweite Anforderung nicht absolut zwingend. "
+"Dennoch sollten Sie sich daran halten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You cannot use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"Sie können keinen <literal>IdentifierGenerator</literal> verwenden, um "
+"zusammengesetzte Schlüssel zu generieren. Statt dessen muss die Anwendung "
+"Ihre eigenen Bezeichner zuordnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use the <literal>&lt;composite-id&gt;</literal> tag, with nested "
+"<literal>&lt;key-property&gt;</literal> elements, in place of the usual "
+"<literal>&lt;id&gt;</literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"Verwenden Sie das <literal>&lt;composite-id&gt;</literal>-Tag (mit "
+"verschachtelten <literal>&lt;key-property&gt;</literal>-Elementen) anstelle "
+"der üblichen <literal>&lt;id&gt;</literal>-Deklaration. Zum Beispiel besitzt "
+"die <literal>OrderLine</literal>-Klasse einen Primärschlüssel, der vom "
+"(zusammengesetzten) Primärschlüssel von <literal>Order</literal> abhängt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any foreign keys referencing the <literal>OrderLine</literal> table are now "
+"composite. Declare this in your mappings for other classes. An association "
+"to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+"Nun sind alle Fremdschlüssel, die auf die <literal>OrderLine</literal>-"
+"Tabelle verweisen, ebenfalls zusammengesetzt. Sie müssen dies in Ihren "
+"Mappings für andere Klassen deklarieren. Eine Assoziation zu "
+"<literal>OrderLine</literal> würde wie folgt gemappt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>column</literal> element is an alternative to the "
+"<literal>column</literal> attribute everywhere. Using the <literal>column</"
+"literal> element just gives more declaration options, which are mostly "
+"useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+"(Beachten Sie, dass das <literal>&lt;column&gt;</literal>-Tag überall eine "
+"Alternative zum  <literal>column</literal>-Attribut darstellt)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"Eine <literal>many-to-many</literal>-Assoziation zu <literal>OrderLine</"
+"literal> verwendet ebenfalls den zusammengesetzten Fremdschlüssel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"Die Collection von <literal>OrderLine</literal>s in <literal>Order</literal> "
+"würde Folgendes verwenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr ""
+"(Das <literal>&lt;one-to-many&gt;</literal>-Element deklariert wie üblich "
+"keine Spalten)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"Falls <literal>OrderLine</literal> selbst eine Collection besitzt, so "
+"besitzt es auch einen zusammengesetzten Fremdschlüssel."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "Dynamische Komponenten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "Sie können sogar eine Property vom Typ <literal>Map</literal> mappen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
+"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"You can also access, and change, Hibernate's configuration-time metamodel "
+"via the <literal>Configuration</literal> object."
+msgstr ""
+"Die Semantik eines <literal>&lt;dynamic-component&gt;</literal>-Mappings ist "
+"identisch mit <literal>&lt;component&gt;</literal>. Der Vorteil dieser Art "
+"des Mappings besteht in der Möglichkeit, die tatsächlichen Properties des "
+"Beans zum Zeitpunkt des Deployments zu bestimmen, indem das Mapping-Dokument "
+"editiert wird. Eine Runtime-Manipulation des Mapping-Dokuments ist mit einem "
+"DOM-Parser ebenfalls möglich. Besser noch: Sie können mittels "
+"<literal>Configuration</literal>-Objekt auf das Konfigurationszeit-"
+"Metamodell von Hibernate zugreifen (und es verändern)."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+#~ "optional -->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Person\" table=\"person\"&gt;\n"
+#~ "    &lt;id name=\"Key\" column=\"pid\" type=\"string\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"birthday\" type=\"date\"/&gt;\n"
+#~ "    &lt;component name=\"Name\" class=\"eg.Name\"&gt; &lt;!-- class "
+#~ "attribute optional --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+#~ "        <parent name=\"namedPerson\"/> <!-- reference back to the Person "
+#~ "-->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Person\" table=\"person\"&gt;\n"
+#~ "    &lt;id name=\"Key\" column=\"pid\" type=\"string\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"birthday\" type=\"date\"/&gt;\n"
+#~ "    &lt;component name=\"Name\" class=\"eg.Name\" unique=\"true\"&gt;\n"
+#~ "        &lt;parent name=\"namedPerson\"/&gt; &lt;!-- reference back to "
+#~ "the Person --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <composite-element class=\"eg.Name\"> <!-- class attribute required --"
+#~ ">\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"someNames\" table=\"some_names\" lazy=\"true\"&gt;\n"
+#~ "    &lt;key column=\"id\"/&gt;\n"
+#~ "    &lt;composite-element class=\"eg.Name\"&gt; &lt;!-- class attribute "
+#~ "required --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/composite-element&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.Purchase\">\n"
+#~ "            <property name=\"purchaseDate\"/>\n"
+#~ "            <property name=\"price\"/>\n"
+#~ "            <property name=\"quantity\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class "
+#~ "attribute is optional -->\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.Purchase\"&gt;\n"
+#~ "            &lt;property name=\"purchaseDate\"/&gt;\n"
+#~ "            &lt;property name=\"price\"/&gt;\n"
+#~ "            &lt;property name=\"quantity\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt; &lt;!-- "
+#~ "class attribute is optional --&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.OrderLine\">\n"
+#~ "            <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.OrderLine\"&gt;\n"
+#~ "            &lt;many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/"
+#~ "&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" class=\"OrderLineId\">\n"
+#~ "        <key-property name=\"lineId\"/>\n"
+#~ "        <key-property name=\"orderId\"/>\n"
+#~ "        <key-property name=\"customerId\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\">\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" class=\"OrderLineId\"&gt;\n"
+#~ "        &lt;key-property name=\"lineId\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderId\"/&gt;\n"
+#~ "        &lt;key-property name=\"customerId\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"name\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\"&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-one&gt;\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
+#~ "<!-- the \"class\" attribute is optional, as usual -->\n"
+#~ "    <column name=\"lineId\"/>\n"
+#~ "    <column name=\"orderId\"/>\n"
+#~ "    <column name=\"customerId\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"orderLine\" class=\"OrderLine\"&gt;\n"
+#~ "&lt;!-- the \"class\" attribute is optional, as usual --&gt;\n"
+#~ "    &lt;column name=\"lineId\"/&gt;\n"
+#~ "    &lt;column name=\"orderId\"/&gt;\n"
+#~ "    &lt;column name=\"customerId\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
+#~ "    <key column name=\"warehouseId\"/>\n"
+#~ "    <many-to-many class=\"OrderLine\">\n"
+#~ "        <column name=\"lineId\"/>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-many>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"undeliveredOrderLines\"&gt;\n"
+#~ "    &lt;key column name=\"warehouseId\"/&gt;\n"
+#~ "    &lt;many-to-many class=\"OrderLine\"&gt;\n"
+#~ "        &lt;column name=\"lineId\"/&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-many&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
+#~ "    <key>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </key>\n"
+#~ "    <one-to-many class=\"OrderLine\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"orderLines\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/key&gt;\n"
+#~ "    &lt;one-to-many class=\"OrderLine\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    <list name=\"deliveryAttempts\">\n"
+#~ "        <key>   <!-- a collection inherits the composite key type -->\n"
+#~ "            <column name=\"lineId\"/>\n"
+#~ "            <column name=\"orderId\"/>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "        </key>\n"
+#~ "        <list-index column=\"attemptId\" base=\"1\"/>\n"
+#~ "        <composite-element class=\"DeliveryAttempt\">\n"
+#~ "            ...\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    &lt;list name=\"deliveryAttempts\"&gt;\n"
+#~ "        &lt;key&gt;   &lt;!-- a collection inherits the composite key "
+#~ "type --&gt;\n"
+#~ "            &lt;column name=\"lineId\"/&gt;\n"
+#~ "            &lt;column name=\"orderId\"/&gt;\n"
+#~ "            &lt;column name=\"customerId\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;list-index column=\"attemptId\" base=\"1\"/&gt;\n"
+#~ "        &lt;composite-element class=\"DeliveryAttempt\"&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
+#~ "    <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
+#~ "    <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
+#~ "    <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
+#~ "</dynamic-component>]]>"
+#~ msgstr ""
+#~ "&lt;dynamic-component name=\"userAttributes\"&gt;\n"
+#~ "    &lt;property name=\"foo\" column=\"FOO\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"bar\" column=\"BAR\" type=\"integer\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/&gt;\n"
+#~ "&lt;/dynamic-component&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,3228 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is designed to operate in many different environments and, as "
+"such, there is a broad range of configuration parameters. Fortunately, most "
+"have sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"displays the various options. Simply put the example file in your classpath "
+"and customize it to suit your needs."
+msgstr ""
+"Da Hibernate für die Benutzung in zahlreichen verschiedenen Umgebungen "
+"entwickelt wurde, existiert eine hohe Anzahl von Konfigurationsparametern. "
+"Glücklicherweise besitzen die meisten vernünftige Standardwerte, und "
+"Hibernate wird mit der Beispieldatei<literal>hibernate.properties</literal> "
+"in <literal>etc/</literal> geliefert, die die verschiedenen Möglichkeiten "
+"darstellt. Legen Sie die Beispieldatei einfach in Ihrem Klassenpfad ab, und "
+"passen Sie sie an."
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "Programmatische Konfiguration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of <classname>org.hibernate.cfg.Configuration</classname> "
+"represents an entire set of mappings of an application's Java types to an "
+"SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is "
+"used to build an immutable <interfacename>org.hibernate.SessionFactory</"
+"interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+"Eine Instanz von <literal>org.hibernate.cfg.Configuration</literal> "
+"repräsentiert einen vollständigen Satz der Mappings von Java-Typen einer "
+"Anwendung zu einer SQL-Datenbank. Die <literal>Configuration</literal> wird "
+"benutzt, um eine (unveränderbare) <literal>SessionFactory</literal> zu "
+"bauen. Die Mappings werden aus verschiedenen XML-Mapping-Dateien kompiliert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can obtain a <classname>org.hibernate.cfg.Configuration</classname> "
+"instance by instantiating it directly and specifying XML mapping documents. "
+"If the mapping files are in the classpath, use <literal>addResource()</"
+"literal>. For example:"
+msgstr ""
+"Sie erhalten eine <literal>Configuration</literal>-Instanz, indem Sie diese "
+"direkt instanziieren und XML Mapping-Dokumente spezifizieren. Falls die "
+"Mapping-Dateien sich im Klassenpfad befinden, verwenden Sie "
+"<literal>addResource()</literal>:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An alternative way is to specify the mapped class and allow Hibernate to "
+"find the mapping document for you:"
+msgstr ""
+"Eine andere (und manchmal bessere) Weise, die gemappte Klasse zu "
+"spezifizieren ist es, Hibernate das Mapping-Dokument finden zu lassen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will then search for mapping files named <filename>/org/hibernate/"
+"auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm."
+"xml</filename> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"Hibernate sucht dann im Klassenpfad nach Mapping-Dateien mit dem Namen "
+"<literal>/org/hibernate/auction/Item.hbm.xml</literal> und <literal>/org/"
+"hibernate/auction/Bid.hbm.xml</literal>. Diese Vorgehensweise eleminiert "
+"jegliche festcodierten Dateinamen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <classname>org.hibernate.cfg.Configuration</classname> also allows you to "
+"specify configuration properties. For example:"
+msgstr ""
+"Eine <literal>Configuration</literal> erlaubt es Ihnen auch, "
+"Konfigurationseigenschaften zu bestimmen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. Some "
+"alternative options include:"
+msgstr ""
+"Das ist nicht die einzige Möglichkeit Konfigurationseigenschaften an "
+"Hibernate weiterzugeben. Die verschiedenen Optionen beinhalten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Pass an instance of <classname>java.util.Properties</classname> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"Geben Sie eine Instanz von <literal>java.util.Properties</literal> an "
+"<literal>Configuration.setProperties()</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Place a file named <filename>hibernate.properties</filename> in a root "
+"directory of the classpath."
+msgstr ""
+"Legen Sie <literal>hibernate.properties</literal> in ein Stammverzeichnis "
+"des Klassenpfads."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"Stellen Sie die <literal>System</literal>-Properties mittels <literal>java -"
+"Dproperty=value</literal> ein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal> (this is discussed later)."
+msgstr ""
+"Nehmen Sie <literal>&lt;property&gt;</literal>-Elemente in "
+"<literal>hibernate.cfg.xml</literal> auf (dies wird später noch näher "
+"erläutert)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to get started quickly<filename>hibernate.properties</filename> "
+"is the easiest approach."
+msgstr ""
+"Legen Sie <literal>hibernate.properties</literal> in ein Stammverzeichnis "
+"des Klassenpfads."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <classname>org.hibernate.cfg.Configuration</classname> is intended as a "
+"startup-time object that will be discarded once a <literal>SessionFactory</"
+"literal> is created."
+msgstr ""
+"Die <literal>Configuration</literal> ist als Objekt für den Zeitpunkt des "
+"Startup gedacht und kann nach Erstellung einer <literal>SessionFactory</"
+"literal> verworfen werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "Erstellung einer SessionFactory"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When all mappings have been parsed by the <classname>org.hibernate.cfg."
+"Configuration</classname>, the application must obtain a factory for "
+"<interfacename>org.hibernate.Session</interfacename> instances. This factory "
+"is intended to be shared by all application threads:"
+msgstr ""
+"Wenn alle Mappings von der <literal>Configuration</literal> analysiert "
+"(\"geparst\") wurden, muss die Anwendung eine Factory für die "
+"<literal>Session</literal>-Instanzen erstellen. Diese Factory wird von allen "
+"Anwendungsthreads geteilt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. This is useful "
+"if you are using more than one database."
+msgstr ""
+"Mit Hibernate kann Ihre Anwendung mehr als eine <literal>SessionFactory</"
+"literal> instanziieren. Das ist insbesondere dann von Nutzen, wenn Sie mehr "
+"als eine Datenbank verwenden."
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "JDBC-Verbindungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is advisable to have the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> create and pool JDBC connections for you. If you take this "
+"approach, opening a <interfacename>org.hibernate.Session</interfacename> is "
+"as simple as:"
+msgstr ""
+"In der Regel soll die <literal>SessionFactory</literal> JDBC-Verbindungen "
+"für Sie erstellen und zusammenfassen. Wenn Sie diese Vorgehensweise wählen, "
+"so ist das Eröffnen einer <literal>Session</literal> ganz einfach:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once you start a task that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"Sobald Sie etwas ausführen, dass den Zugriff auf die Datenbank erfordert, "
+"wird eine JDBC-Verbindung aus dem Pool bereitgestellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Before you can do this, you first need to pass some JDBC connection "
+"properties to Hibernate. All Hibernate property names and semantics are "
+"defined on the class <classname>org.hibernate.cfg.Environment</classname>. "
+"The most important settings for JDBC connection configuration are outlined "
+"below."
+msgstr ""
+"Für diesen Teil der Arbeit müssen einige der Properties der JDBC-Verbindung "
+"an Hibernate weitergegeben werden. Namen und Semantik der Hibernate "
+"Properties sind in der Klasse <literal>org.hibernate.cfg.Environment</"
+"literal> definiert. Nachfolgend werden die wichtigsten Einstellungen für die "
+"Konfiguration der JDBC-Verbindungen erläutert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will obtain and pool connections using <classname>java.sql."
+"DriverManager</classname> if you set the following properties:"
+msgstr ""
+"Hibernate bezieht (und poolt) Verbindungen unter Verwendung von "
+"<literal>java.sql.DriverManager</literal>, wenn Sie die folgenden Properties "
+"einstellen:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Hibernate JDBC-Properties"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "Property-Name"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "Zweck"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "hibernate.connection.driver_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "jdbc-Treiberklasse"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "hibernate.connection.url"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr "jdbc-Treiberklasse"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "hibernate.connection.username"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "<emphasis>Datenbankbenutzer</emphasis> (optional)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "hibernate.connection.password"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "<emphasis>Passwort des Datenbankbenutzers</emphasis> (optional)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "hibernate.connection.pool_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "maximale Anzahl gepoolter Verbindungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is, however, quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis>, or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <property>hibernate.connection.pool_size</property> property "
+"with connection pool specific settings. This will turn off Hibernate's "
+"internal pool. For example, you might like to use c3p0."
+msgstr ""
+"Hibernates eigener Pooling-Algorithmus für Verbindungen ist recht "
+"rudimentär. Er soll Ihnen beim Start helfen und ist <emphasis>nicht für den "
+"Gebrauch in einem Produktionssystem</emphasis> oder gar für die "
+"Funktionsprüfung vorgesehen. Für die beste Performance und Stabilität "
+"sollten Sie den Pool einer dritten Partei verwenden. Ersetzen Sie einfach "
+"die <literal>hibernate.connection.pool_size</literal>-Property mit den "
+"spezifischen Einstellungen für den Verbindungspool. Dadurch wird Hibernates "
+"interner Pool ausgeschaltet. Sie können zum Beispiel C3P0 verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <filename>lib</filename> directory. Hibernate will use its "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for "
+"connection pooling if you set <property>hibernate.c3p0.*</property> "
+"properties. If you would like to use Proxool, refer to the packaged "
+"<filename>hibernate.properties</filename> and the Hibernate web site for "
+"more information."
+msgstr ""
+"Bei C3P0 handelt es sich um einen Open Source JDBC-Verbindungspool, der mit "
+"Hibernate im <literal>lib</literal>-Verzeichnis vertrieben wird. Hibernate "
+"verwendet seinen <literal>C3P0ConnectionProvider</literal> für das Poolen "
+"von Verbindungen, wenn Sie die <literal>hibernate.c3p0.*</literal>-"
+"Properties einstellen. Falls Sie Proxool verwenden möchten, dann finden Sie "
+"weitere Informationen im <literal>hibernate.properties</literal>-Paket sowie "
+"auf der Hibernate Website."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is an example <filename>hibernate.properties</filename> file "
+"for c3p0:"
+msgstr ""
+"Hier sehen Sie das Beispiel einer <literal>hibernate.properties</literal>-"
+"Datei für C3P0:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You "
+"will need to set at least one of the following properties:"
+msgstr ""
+"Für den Gebrauch innerhalb eines Applikationsservers sollten Sie Hibernate "
+"fast immer so konfigurieren, dass es Verbindungen von einer "
+"Applikationsserver <literal>Datasource</literal>, die in JNDI registriert "
+"ist, erhält. Sie werden mindestens eine der folgenden Properties einstellen "
+"müssen:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Properties der Hibernate Datenquelle (\"Datasource\")"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "hibernate.connection.datasource"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "<emphasis>Datenbankbenutzer</emphasis> (optional)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "hibernate.jndi.url"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "<emphasis>URL des JNDI-Providers</emphasis> (optional)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "hibernate.jndi.class"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
+"<emphasis>Klasse der JNDI-<literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr "<emphasis>Datenbankbenutzer</emphasis> (optional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr "<emphasis>Passwort des Datenbankbenutzers</emphasis> (optional)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example <filename>hibernate.properties</filename> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"Hier sehen Sie das Beispiel einer <literal>hibernate.properties</literal>-"
+"Datei für eine vom Applikationsserver bereitgestellte JNDI-Datenquelle:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"Von einer JNDI-Datenquelle erhaltene JDBC-Verbindungen nehmen automatisch an "
+"den vom Container verwalteten Transaktionen des Applikationsservers teil."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Arbitrary connection properties can be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the connection property name. "
+"For example, you can specify a <property>charSet</property> connection "
+"property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+"Beliebige Verbindungs-Properties können durch Voranstellen von "
+"\"<literal>hibernate.connnection</literal>\" vor den Property-Namen gegeben "
+"werden. Sie können zum Beispiel ein <literal>charSet</literal> durch "
+"Verwendung von <literal>hibernate.connection.charSet</literal> bestimmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, and specifying your custom "
+"implementation via the <property>hibernate.connection.provider_class</"
+"property> property."
+msgstr ""
+"Sie können Ihre eigene Plugin-Strategie für den Erhalt von JDBC-Verbindungen "
+"durch Implementierung des Interface <literal>org.hibernate.connection."
+"ConnectionProvider</literal> definieren. Mit der Einstellung von "
+"<literal>hibernate.connection.provider_class</literal> können Sie außerdem "
+"Ihre eigene anwenderdefinierte Implementierung wählen."
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "Optionale Properties der Konfiguration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are a number of other properties that control the behavior of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"Es gibt noch eine Reihe anderer Properties, die das Verhalten von Hibernate "
+"zur Runtime (Laufzeit) steuern. Alle sind optional und besitzen sinnvolle "
+"Standardwerte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Some of these properties are \"system-level\" only.</emphasis> "
+"System-level properties can be set only via <literal>java -Dproperty=value</"
+"literal> or <filename>hibernate.properties</filename>. They "
+"<emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>Warnung: Einige dieser Properties betreffen ausschließlich die "
+"\"Systemebene\".</emphasis> Properties der Systemebene können nur mittels "
+"<literal>java -Dproperty=value</literal> oder <literal>hibernate.properties</"
+"literal> eingestellt werden. Sie dürfen <emphasis>nicht</emphasis> mittels "
+"der anderen, oben beschriebenen Techniken eingestellt werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Konfigurationseigenschaften von Hibernate"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "hibernate.dialect"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> which allows Hibernate to generate SQL optimized for a particular "
+"relational database."
+msgstr ""
+"Der Klassenname eines Hibernate <literal>Dialect</literal>, der es Hibernate "
+"ermöglicht, für eine bestimmte relationale Datenbank optimiertes SQL zu "
+"generieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>full.classname.of.Dialect</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases Hibernate will actually be able to choose the correct "
+"<classname>org.hibernate.dialect.Dialect</classname> implementation based on "
+"the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "hibernate.show_sql"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"Schreiben Sie alle SQL-Anweisungen in die Konsole. Es handelt sich dabei um "
+"eine Alternative für die Einstellung der Protokollkategorie <literal>org."
+"hibernate.SQL</literal> auf <literal>debug</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "hibernate.format_sql"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "SQL in Protokoll und Konsole lesbar ausgeben."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "hibernate.default_schema"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"Definieren Sie unbenannte Tabellennamen mit dem gegebenen Schema/"
+"Tabellenraum in generiertem SQL."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr "<emphasis role=\"strong\">eg.</emphasis><literal>SCHEMA_NAME</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "hibernate.default_catalog"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"Definieren Sie unbenannte Tabellennamen mit dem vorgegebenen Katalog in der "
+"generierten SQL."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>CATALOG_NAME</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "hibernate.session_factory_name"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.SessionFactory</interfacename> will be "
+"automatically bound to this name in JNDI after it has been created."
+msgstr ""
+"Die <literal>SessionFactory</literal> wird automatisch an diesen Namen in "
+"JNDI gebunden, nachdem sie erstellt wurde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>jndi/composite/name</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "hibernate.max_fetch_depth"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"Stellen Sie eine maximale \"Tiefe\" für den Outer-Join-Fetching-Baum für "
+"einendige (\"single-ended\") Assoziationen (\"One-to-One\", \"Many-to-One"
+"\"). Eine <literal>0</literal> deaktiviert das standardmäßige Outer-Join-"
+"Fetching."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">z.B.</emphasis> empfohlene Werte zwischen "
+"<literal>0</literal> und <literal>3</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "hibernate.default_batch_fetch_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr ""
+"Stellen Sie eine Standardgröße für den Hibernate Stapelabruf (sog. \"Batch-"
+"Fetching\") von Assoziationen ein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">z.B.</emphasis> empfohlene Werte <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "hibernate.default_entity_mode"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"Wählen Sie einen Standardmodus für die Entity-Repräsentation für alle aus "
+"dieser <literal>SessionFactory</literal> geöffneten Sessions."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "hibernate.order_updates"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Forces Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"Zwingt Hibernate dazu, SQL-Updates vom primären Kernbegriff der "
+"aktualisierten Posten anzufordern. Dies hat eine Verringerung der Anzahl von "
+"Transaktionssperren in simultan laufenden Systemen zur Folge."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "hibernate.generate_statistics"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"Falls aktiviert, so sammelt Hibernate Statistiken, die bei der "
+"Feinabstimmung der Performance von Nutzen sind. "
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "hibernate.use_identifer_rollback"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"Falls aktiviert, so werden die generierten Bezeichner-Properties auf die "
+"Standardwerte zurückgesetzt, wenn Objekte gelöscht werden."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "hibernate.use_sql_comments"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"Falls eingeschaltet, generiert Hibernate Kommentare innerhalb der SQL, für "
+"eine vereinfachte Fehlersuche. Die Standardeinstellung lautet "
+"<literal>false</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "Hibernate JDBC- und Connection-Properties"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "hibernate.jdbc.fetch_size"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"Ein Wert ungleich Null bestimmt die Anzahl der JDBC-Datensätze, den so "
+"genannten \"Fetch Size\" (ruft <literal>Statement.setFetchSize()</literal> "
+"auf)."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "hibernate.jdbc.batch_size"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr ""
+"Ein Wert von ungleich Null aktiviert die Verwendung von JDBC2-"
+"Stapelaktualisierungen (sog. \"Batch Updates\") durch Hibernate."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">z.B.</emphasis> empfohlene Werte zwischen "
+"<literal>5</literal> und <literal>30</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "hibernate.jdbc.batch_versioned_data"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal>. Iit is usually "
+"safe to turn this option on. Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"Setzen Sie diese Property auf <literal>true</literal>, falls Ihr JDBC-"
+"Treiber korrekte Reihenzählungen von <literal>executeBatch()</literal> "
+"zurückschickt (es ist in der Regel sicher, diese Option zu aktivieren). "
+"Hibernate verwendet dann gestapelte DML für automatisch versionierte Daten. "
+"Die Standardeinstellung lautet hier <literal>false</literal>."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "hibernate.jdbc.factory_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Most applications will not need this configuration property."
+msgstr ""
+"Wählen Sie einen anwenderdefinierten <literal>Batcher</literal>. Die meisten "
+"Anwendungen benötigen diese Konfigurationseigenschaft nicht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of.Batcher</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "hibernate.jdbc.use_scrollable_resultset"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user-supplied JDBC connections. Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Aktiviert den Gebrauch von JDBC2 scrollbaren Ergebnissätzen (sog. "
+"\"scrollable resultsets\") durch Hibernate. Diese Property ist nur bei der "
+"Verwendung von Benutzer-gelieferten JDBC-Verbindungen notwendig, Hibernate "
+"verwendet Metadaten der Verbindung(en) anders."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "hibernate.jdbc.use_streams_for_binary"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+msgstr ""
+"Verwendet Datenströme (\"Streams\") beim Schreiben/Lesen von "
+"<literal>binary</literal> oder <literal>serializable</literal> Typen in/aus "
+"JDBC (Property der Systemebene)."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "hibernate.jdbc.use_get_generated_keys"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, it tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"Aktiviert den Gebrauch von JDBC3 <literal>PreparedStatement.getGeneratedKeys"
+"()</literal> um nach Einfügung nativ generierte Schlüssel abzurufen. "
+"Erfordert einen JDBC3+ Treiber und JRE1.4+. Setzen Sie es auf \"false\", "
+"falls Ihr Treiber Probleme mit den Hibernate Bezeichner-Generatoren hat. In "
+"der Standardeinstellung wird versucht unter Verwendung der Verbindungs-"
+"Metadaten die Treiberfähigkeiten zu bestimmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr "<emphasis role=\"strong\">eg.</emphasis><literal>true|false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "hibernate.connection.provider_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> which provides JDBC connections to "
+"Hibernate."
+msgstr ""
+"Der Klassenname eines anwenderdefinierten <literal>ConnectionProvider</"
+"literal> der Hibernate JDBC-Verbindungen bereitstellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of."
+"ConnectionProvider</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "hibernate.connection.isolation"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets the JDBC transaction isolation level. Check <interfacename>java.sql."
+"Connection</interfacename> for meaningful values, but note that most "
+"databases do not support all isolation levels and some define additional, "
+"non-standard isolations."
+msgstr ""
+"Stellen Sie die Isolationsebene für JDBC-Transaktion ein. Überprüfen Sie "
+"<literal>java.sql.Connection</literal> nach sinnvollen Werten, aber beachten "
+"Sie, dass die meisten Datenbanken nicht alle Isolationsebenen unterstützen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr "<emphasis role=\"strong\">eg.</emphasis><literal>1, 2, 4, 8</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "hibernate.connection.autocommit"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr ""
+"Aktiviert \"autocommit\" für JDBC gepoolte Verbindungen (nicht empfohlen)."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "hibernate.connection.release_mode"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Specifies when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, use <literal>after_statement</"
+"literal> to aggressively release connections after every JDBC call. For a "
+"non-JTA connection, it often makes sense to release the connection at the "
+"end of each transaction, by using <literal>after_transaction</literal>. "
+"<literal>auto</literal> will choose <literal>after_statement</literal> for "
+"the JTA and CMT transaction strategies and <literal>after_transaction</"
+"literal> for the JDBC transaction strategy."
+msgstr ""
+"Legen Sie fest, wann Hibernate JDBC-Verbindungen freigibt. In der "
+"Standardeinstellung wird eine JDBC-Verbindung gehalten bis die Session "
+"ausdrücklich geschlossen oder die Verbindung getrennt wird. Für eine "
+"Applikationsserver JTA-Datenquelle sollten Sie <literal>after_statement</"
+"literal> verwenden, um Verbindungen nach jedem JDBC-Aufruf aktiv "
+"freizugeben. Für eine nicht-JTA-Verbindung ist es oft sinnvoll, die "
+"Verbindung am Ende jeder Transaktion mittels <literal>after_transaction</"
+"literal> freizugeben. <literal>auto</literal> wählt "
+"<literal>after_statement</literal> für die JTA- und CMT-"
+"Transaktionsstrategien und <literal>after_transaction</literal> für die JDBC-"
+"Transaktionsstrategie."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>auto</literal> (default) | "
+"<literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This setting only affects <literal>Session</literal>s returned from "
+"<literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\" />"
+msgstr ""
+"Bitte beachten Sie, dass diese Einstellung nur <literal>Session</literal>s "
+"betrifft, die von der <literal>SessionFactory.openSession</literal> "
+"zurückgeführt werden. Für durch <literal>SessionFactory.getCurrentSession</"
+"literal> erhaltene <literal>Session</literal>s steuert die für den Gebrauch "
+"konfigurierte <literal>CurrentSessionContext</literal>-Implementierung den "
+"Freigabemodus dieser <literal>Session</literal>s. Siehe <xref linkend="
+"\"architecture-current-session\"/>."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+msgstr "hibernate.connection.&lt;propertyName&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
+"Geben Sie die JDBC-Property <literal>propertyName</literal> an den "
+"<literal>DriverManager.getConnection()</literal>."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr ""
+"wie System-Properties mit <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
+"Geben Sie die Property <literal>propertyName</literal> an die JNDI "
+"<literal>InitialContextFactory</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Hibernate Cache-Properties"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "hibernate.cache.provider_class"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr ""
+"Der Klassenname eines anwenderdefinierten <literal>CacheProvider</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of.CacheProvider</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "hibernate.cache.use_minimal_puts"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Optimizes second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"Optimieren Sie den Betrieb des Cachespeichers auf der zweiten Ebene, um "
+"\"Writes\" auf Kosten häufigerer \"Reads\" zu minimieren. Diese Einstellung "
+"ist vor allem für geclusterte Caches sinnvoll und ist bei Hibernate3 "
+"standardmäßig für geclusterte Cache-Implementierungen aktiviert."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "hibernate.cache.use_query_cache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+"Aktivieren Sie das Anfragen-Cache, Einzelanfragen müssen nach wie vor als "
+"speicherbar eingestellt sein."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "hibernate.cache.use_second_level_cache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Can be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal>&lt;cache&gt;</literal> "
+"mapping."
+msgstr ""
+"Kann verwendet werden, um ein Cache der zweiten Ebene vollständig zu "
+"deaktivieren, das für Klassen mit einem <literal>&lt;cache&gt;</literal>-"
+"Mapping standardmäßig aktiviert ist."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "hibernate.cache.query_cache_factory"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"Der Klassenname eines anwenderdefinierten <literal>QueryCache</literal>-"
+"Interface, Standard ist das eingebaute <literal>StandardQueryCache</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of.QueryCache</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "hibernate.cache.region_prefix"
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr "Ein für Cache-Bereiche der zweiten Ebene zu verwendender Präfix."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr "<emphasis role=\"strong\">eg.</emphasis><literal>prefix</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "hibernate.cache.use_structured_entries"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"Bringt Hibernate dazu, Daten im Cachespeicher der zweiten Ebene in einer für "
+"den Benutzer freundlicheren Art zu speichern."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Hibernate Transaktions-Properties"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "hibernate.transaction.factory_class"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"Der Klassenname einer <literal>TransactionFactory</literal>, der mit der "
+"Hibernate <literal>Transaction</literal> API "
+"(Anwenderprogrammierschnittstelle) zu verwenden ist (standardmäßig "
+"<literal>JDBCTransactionFactory</literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of."
+"TransactionFactory</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "jta.UserTransaction"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"Ein von der <literal>JTATransactionFactory</literal> zum Erhalt der JTA "
+"<literal>UserTransaction</literal> vom Applikationsserver verwendeter JNDI-"
+"Name."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "hibernate.transaction.manager_lookup_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal>. It is "
+"required when JVM-level caching is enabled or when using hilo generator in a "
+"JTA environment."
+msgstr ""
+"Der Klassenname eines <literal>TransactionManagerLookup</literal> - "
+"erforderlich, wenn das Caching auf JVM-Ebene aktiviert ist oder wenn in "
+"einer JTA-Umgebung ein Hilo-Generator verwendet wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>classname.of."
+"TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "hibernate.transaction.flush_before_completion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Falls aktiviert, wird die Session automatisch während der Vorabschlussphase "
+"der Transaktion geräumt. Eingebautes, automatisches Session-"
+"Kontextmanagement wird bevorzugt, siehe <xref linkend=\"architecture-current-"
+"session\"/>."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "hibernate.transaction.auto_close_session"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Falls aktiviert, wird die Session während der Nachabschlussphase automatisch "
+"geschlossen. Eingebautes, automatisches Session-Kontextmanagement wird "
+"bevorzugt, siehe <xref linkend=\"architecture-current-session\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "Verschiedene Properties"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "hibernate.current_session_context_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Supply a custom strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\" /> for more information about the built-in strategies."
+msgstr ""
+"Geben Sie eine (anwenderdefinierte) Strategie für den Gültigkeitsbereich der "
+"\"aktuellen\" <literal>Session</literal> ein. Weitere Informationen zu "
+"eingebauten Strategien finden Sie unter <xref linkend=\"architecture-current-"
+"session\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "hibernate.query.factory_class"
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "Wählt die Implemetierung des HQL-Parsers (Analysealgorithmus)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "hibernate.query.substitutions"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Is used to map from tokens in Hibernate queries to SQL tokens (tokens might "
+"be function or literal names, for example)."
+msgstr ""
+"Mapping von \"Tokens\" in Hibernate-Anfragen zu SQL-Tokens (Tokens können z."
+"B. Funktions- oder Literalnamen sein)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "hibernate.hbm2ddl.auto"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Automatically validates or exports schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"Automatische Validierung oder Export der Schema-DDL zur Datenbank, wenn die "
+"<literal>SessionFactory</literal> erstellt wird. Mit <literal>create-drop</"
+"literal> wird das Datenbankschema eingestellt, wenn die "
+"<literal>SessionFactory</literal> explizit geschlossen wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "hibernate.cglib.use_reflection_optimizer"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables the use of CGLIB instead of runtime reflection (System-level "
+"property). Reflection can sometimes be useful when troubleshooting. "
+"Hibernate always requires CGLIB even if you turn off the optimizer. You "
+"cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Aktiviert die Benutzung von CGLIB anstelle von \"Runtime-Reflection"
+"\" (Property der Systemebene). Reflection kann bei der Fehlersuche von "
+"Nutzen sein. Bitte beachten Sie, dass Hibernate immer CGLIB benötigt, selbst "
+"wenn der Optimierer ausgeschaltet ist. Diese Property kann nicht in "
+"<literal>hibernate.cfg.xml</literal> eingestellt werden."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "SQL-Dialekte"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Always set the <literal>hibernate.dialect</literal> property to the correct "
+"<literal>org.hibernate.dialect.Dialect</literal> subclass for your database. "
+"If you specify a dialect, Hibernate will use sensible defaults for some of "
+"the other properties listed above. This means that you will not have to "
+"specify them manually."
+msgstr ""
+"Die <literal>hibernate.dialect</literal>-Property sollte stets auf die "
+"richtige <literal>org.hibernate.dialect.Dialect</literal>-Subklasse für Ihre "
+"Datenbank eingestellt sein. Falls Sie einen Dialekt festlegen, so verwendet "
+"Hibernate vernünftige Standardeinstellungen für einige der anderen oben "
+"aufgeführten Properties, so dass Ihnen deren manuelle Einstellung erspart "
+"bleibt."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Hibernate SQL-Dialekte (<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialekt"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2400Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2390Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "org.hibernate.dialect.PostgreSQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "MySQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MySQL mit InnoDB"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLInnoDBDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "MySQL mit MyISAM"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLMyISAMDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle (alle Versionen)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "org.hibernate.dialect.OracleDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "org.hibernate.dialect.OracleDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "org.hibernate.dialect.OracleDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "org.hibernate.dialect.SybaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Anywhere"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "org.hibernate.dialect.SybaseAnywhereDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Microsoft SQL-Server"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "org.hibernate.dialect.SQLServerDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "org.hibernate.dialect.SAPDBDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "org.hibernate.dialect.InformixDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "org.hibernate.dialect.HSQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "org.hibernate.dialect.IngresDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progress"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "org.hibernate.dialect.ProgressDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "org.hibernate.dialect.MckoiDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "org.hibernate.dialect.InterbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Pointbase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "org.hibernate.dialect.PointbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "FrontBase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "org.hibernate.dialect.FrontbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "org.hibernate.dialect.FirebirdDialect"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "\"Outer-Join-Fetching\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database. This is, "
+"however, at the cost of possibly more work performed by the database itself. "
+"Outer join fetching allows a whole graph of objects connected by many-to-"
+"one, one-to-many, many-to-many and one-to-one associations to be retrieved "
+"in a single SQL <literal>SELECT</literal>."
+msgstr ""
+"Falls Ihre Datenbank \"Outer-Joins\" (äußere Verbünde) nach Art von ANSI, "
+"Oracle oder Sybase unterstützt, so wird so genanntes <emphasis>Outer Join "
+"Fetching</emphasis> oftmals die Performance verbessern, indem es die Anzahl "
+"der Hin- und Rücksendungen zu und von der Datenbank reduziert (wobei dann "
+"möglicherweise von der Datenbank selbst mehr Arbeit übernommen wird). "
+"\"Outer-Join-Fetching\" erlaubt es, einen kompletten Graph von Objekten "
+"mittels \"Many-to-One\"-, \"One-to-Many\"-, \"Many-to-Many\"- und \"One-to-"
+"One\"-Assoziationen in einer einzelnen SQL <literal>SELECT</literal> "
+"aufzurufen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Outer join fetching can be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations that have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"\"Outer-Join-Fetching\" kann <emphasis>allgemeingültig</emphasis> "
+"deaktiviert werden, wenn man die Property <literal>hibernate."
+"max_fetch_depth</literal> auf <literal>0</literal> setzt. Eine Einstellung "
+"von <literal>1</literal> oder mehr aktiviert Outer-Join-Fetching für mit "
+"<literal>fetch=\"join\"</literal> gemappte \"One-to-One\"- und \"Many-to-One"
+"\"-Assoziationen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+"Weitere Informationen finden Sie unter <xref linkend=\"performance-fetching"
+"\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "Binäre Datenströme "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that can be passed "
+"to and/or from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle begrenzt die Größe von <literal>byte</literal>-Arrays, die zu/von "
+"seinem JDBC-Treiber geleitet werden können. Falls Sie große Instanzen des "
+"<literal>binary</literal> oder <literal>serializable</literal>-Typs "
+"verwenden wollen, sollten Sie <literal>hibernate.jdbc."
+"use_streams_for_binary</literal> aktivieren. <emphasis>Diese Einstellung "
+"gilt ausschließlich für die Systemebene.</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "Zweite Ebene und Anfragen-Cache"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+"Die Properties mit dem Präfix <literal>hibernate.cache</literal> erlauben "
+"die Verwendung eines prozess- oder clusterbegrenzten Cache-Systems der "
+"zweiten Ebene. Weitere Informationen dazu finden Sie unter <xref linkend="
+"\"performance-cache\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "\"Query Language Substitution\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"Sie können neue Hibernate Anfrage-\"Tokens\" mittels <literal>hibernate."
+"query.substitutions</literal> definieren. Zum Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This would cause the tokens <literal>true</literal> and <literal>false</"
+"literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+"würde eine Übersetzung der Tokens <literal>true</literal> und "
+"<literal>false</literal> in ganzzahlige Literale in der generierten SQL mit "
+"sich bringen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr ""
+"ermöglicht Ihnen die Umbenennung der SQL <literal>LOWER</literal>-Funktion."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Die Hibernate Statistik"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"exposes a number of metrics that are useful when tuning a running system via "
+"<literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"Ist <literal>hibernate.generate_statistics</literal> aktiviert, so stellt "
+"Hibernate mittels <literal>SessionFactory.getStatistics()</literal> eine "
+"Reihe von Metriken aus, die bei der Abstimmung eines laufenden Systems "
+"hilfreich sind. Hibernate kann sogar so konfiguriert werden, dass es via JMX "
+"diese Statistik darstellt. Weitere Informationen dazu finden Sie im Javadoc "
+"der Interfaces <literal>org.hibernate.stats</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "Protokollierung"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J "
+"can direct your logging output to several logging frameworks (NOP, Simple, "
+"log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen "
+"binding. In order to setup logging you will need <filename>slf4j-api.jar</"
+"filename> in your classpath together with the jar file for your preferred "
+"binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See "
+"the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</"
+"ulink> for more detail. To use Log4j you will also need to place a "
+"<filename>log4j.properties</filename> file in your classpath. An example "
+"properties file is distributed with Hibernate in the <literal>src/</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"Wir empfehlen Ihnen dringend, sich mit den Protokollnachrichten von "
+"Hibernate vertraut zu machen. Es wurde viel Arbeit investiert, um das "
+"Protokoll von Hibernate möglichst detailliert zu gestalten und gleichzeitig "
+"dessen Lesbarkeit zu erhalten. Es ist eine bedeutende Hilfe bei der "
+"Fehlerbehebung. Die wichtigsten Protokollkategorien lauten:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Die Protokollkategorien von Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "Kategorie"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "Funktion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "org.hibernate.SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "Protokollierung aller SQL DML-Anweisungen bei deren Ausführung"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "org.hibernate.type"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "Protokollierung aller JDBC-Parameter"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "org.hibernate.tool.hbm2ddl"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "Protokollierung aller SQL DDL-Anweisungen bei deren Ausführung"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "org.hibernate.pretty"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"Protokollierung des Status aller Entities (max. 20 Entities) die zum "
+"Räumungzeitpunkt mit der Session assoziiert werden."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "org.hibernate.cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "Protokollierung aller Cache-Vorgänge der zweiten Ebene"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "org.hibernate.transaction"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "Protokollierung von transaktionsbezogenen Vorgänge"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "org.hibernate.jdbc"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "Protokollierung sämtlicher JDBC-Ressourcen-Erfassungen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "org.hibernate.hql.ast.AST"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "Protokollierung von HQL und SQL ASTs während Abfragen-Parsing"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "org.hibernate.secure"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "Protokollierung aller JAAS-Authentifizierungsanfragen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "JNDI-gebundene SessionFactory"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Log everything. This is a lot of information but it is useful for "
+"troubleshooting"
+msgstr ""
+"Vollständige Protokollierung (sehr viele Informationen, aber sehr hilfreich "
+"bei der Fehlerbehebung)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Bei der Entwicklung von Anwendungen mit Hibernate sollten Sie fast "
+"ausschließlich mit der aktivierten <literal>debug</literal>-Einstellung für "
+"die Kategorie <literal>org.hibernate.SQL</literal> arbeiten oder alternativ "
+"mit der aktivierten Property <literal>hibernate.show_sql</literal>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"Das Interface <literal>org.hibernate.cfg.NamingStrategy</literal> ermöglicht "
+"es Ihnen einen Namensgebungsstandard (sog. \"naming standard\") für "
+"Datenbankobjekte und Schema-Elemente zu bestimmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"Sie können Regeln für die automatische Generierung von Datenbank-Bezeichnern "
+"aus Java-Bezeichnern oder für die Bearbeitung von gegebenen \"logischen\" "
+"Spalten- und Tabellennamen der Mapping-Datei in \"physische\" Tabellen- und "
+"Spaltennamen entwerfen. Dieses Feature kann bei der Reduktion der Verbosität "
+"des Mapping-Dokuments helfen, indem es die unnötige, sich wiederholende "
+"Ausgabe von Daten eleminiert (zum Beispiel <literal>TBL_</literal> Präfixe). "
+"Die von Hibernate verwendete Standardstrategie ist recht minimal."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"Mit dem Aufruf <literal>Configuration.setNamingStrategy()</literal> können "
+"Sie eine andere Strategie festlegen, ehe Sie Mappings hinzufügen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"Bei <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> handelt es "
+"sich um eine eingebaute Strategie, die beim Startpunkt einiger Anwendungen "
+"von Nutzen sein kann."
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "XML-Konfigurationsdatei"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"Eine andere Konfigurationsmöglichkeit ist die Spezifizierung einer "
+"vollständigen Konfigurationsdatei mit dem Namen <literal>hibernate.cfg.xml</"
+"literal>. Diese Datei kann als Ersatz für die <literal>hibernate.properties</"
+"literal>-Datei dienen oder - falls beide vorhanden sind - Properties außer "
+"Kraft setzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root of your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"Die XML-Konfigurationsdatei ist in der Standardeinstellung in der Regel im "
+"Stammverzeichnis Ihres <literal>CLASSPATH</literal>. Nachfolgend sehen Sie "
+"ein Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The advantage of this approach is the externalization of the mapping file "
+"names to configuration. The <literal>hibernate.cfg.xml</literal> is also "
+"more convenient once you have to tune the Hibernate cache. It is your choice "
+"to use either <literal>hibernate.properties</literal> or <literal>hibernate."
+"cfg.xml</literal>. Both are equivalent, except for the above mentioned "
+"benefits of using the XML syntax."
+msgstr ""
+"Wie Sie sehen, liegt der Vorteil dieser Herangehensweise in der "
+"Externalisierung der Mapping-Dateinamen zu Konfiguration. Außerdem ist "
+"<literal>hibernate.cfg.xml</literal> praktisch für die Abstimmung des "
+"Hibernate Cachespeichers. Bitte beachten Sie, dass Sie die Auswahl zwischen "
+"der Verwendung von <literal>hibernate.properties</literal> oder "
+"<literal>hibernate.cfg.xml</literal> haben. Diese sind abgesehen vom "
+"bereitserwähnten Vorteil durch die Benutzung der XML-Syntax gleichwertig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr ""
+"Mit der XML-Konfiguration wird der Start von Hibernate dann ganz einfach mit"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "Die Wahl einer anderen XML-Konfigurationsdatei erfolgt mittels"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "Integration des J2EE-Applikationsservers"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr ""
+"Hibernate besitzt die folgenden Intergrationspunkte für die J2EE "
+"Infrastruktur:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), especially distributed transaction handling across several "
+"datasources. You can also demarcate transaction boundaries programmatically "
+"(BMT), or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>Containerverwaltete Datenquellen</emphasis>: Hibernate kann vom "
+"Container verwaltete und von JNDI bereitgestellte JDBC-Verbindungen "
+"verwenden. In der Regel besorgen ein JTA-kompatibler "
+"<literal>TransactionManager</literal> und ein <literal>ResourceManager</"
+"literal> das Transaktionsmanagement (CMT), insbesondere die verteilte "
+"Transaktionsbearbeitung über mehrere Datenquellen hinweg. Natürlich können "
+"Sie auch befehlsorientiert die Transaktionsbereiche abgrenzen (BMT) oder das "
+"optionale Hibernate <literal>Transaction</literal>-API hierfür verwenden, um "
+"Ihren Code übertragbar zu halten."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>Automatisches JNDI-Binding</emphasis>: Hibernate kann seine "
+"<literal>SessionFactory</literal> nach dem Startup an JNDI binden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</"
+"literal> can be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate manage flushing and closing the "
+"<literal>Session</literal> when your JTA transaction completes. Transaction "
+"demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>JTA-Session-Binding:</emphasis> Die Hibernate <literal>Session</"
+"literal> kann automatisch an den Gültigkeitsbereich von JTA-Transaktionen "
+"gebunden werden. Suchen Sie einfach die <literal>SessionFactory</literal> "
+"aus JNDI heraus, und holen Sie die aktuelle <literal>Session</literal>. "
+"Hibernate übernimmt die Räumung und Schließung der <literal>Session</"
+"literal>, wenn Ihre JTA-Transaktion vollständig ist. Die "
+"Transaktionsabgrenzung ist entweder deklarativ (CMT) oder befehlsorientiert "
+"(BMT/UserTransaction)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> if you have a JMX capable application "
+"server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal> and also "
+"take care of service dependencies (datasource has to be available before "
+"Hibernate starts, etc)."
+msgstr ""
+"<emphasis>JMX-Deployment:</emphasis> Falls Sie einen JMX-fähigen "
+"Applikationsserver besitzen (z.B. JBoss AS), können Sie Hibernate als "
+"gemanagtes MBean ausführen. Das erspart Ihnen den einzeiligen Startup-Code, "
+"um Ihre <literal>SessionFactory</literal> aus einer <literal>Configuration</"
+"literal> zu bauen. Der Container startet Ihren <literal>HibernateService</"
+"literal> und kümmert sich im Idealfall auch um abhängige Dienste "
+"(Datenquelle muss vor dem Hibernate Start verfügbar sein usw.). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"Je nach Ihrer Umgebung müssen Sie möglicherweise die Konfigurationsoption "
+"<literal>hibernate.connection.aggressive_release</literal> auf \"true\" "
+"setzen, falls Ihr Server \"Connection Containment\"-Ausnahmen (d.h. "
+"Verbindungseinschränkungen) anzeigt."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "Konfiguration der Transaktionsstrategie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly through a connection pool, you can begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"Das Hibernate <literal>Session</literal> API ist unabhängig vom "
+"Transaktionsabgrenzungssystem Ihrer Architektur. Wenn Hibernate durch den "
+"Verbindungspool JDBC direkt verwendet, können Sie Transaktionen mit Aufruf "
+"des JDBC-API starten und beenden. Falls Sie einen J2EE-Applikationsserver "
+"verwenden, ist es möglicherweise sinnvoll, von Beans gemanagte Transaktionen "
+"zu verwenden und das JTA-API und <literal>UserTransaction</literal> bei "
+"Bedarf aufzurufen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"Um Ihren Code zwischen diesen beiden (und anderen) Umgebungen übertragbar zu "
+"halten, empfehlen wir das optionale Hibernate <literal>Transaction</literal>-"
+"API, welches das zu Grunde liegende System wrappt und verbirgt. Sie müssen "
+"eine Factory-Klasse für <literal>Transaction</literal>-Instanzen bestimmen, "
+"indem Sie die Hibernate Konfigurationseigenschaft <literal>hibernate."
+"transaction.factory_class</literal> einstellen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "Es existieren drei Standard-Auswahlmöglichkeiten (eingebaut):"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "org.hibernate.transaction.JDBCTransactionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "delegiert an die Datenbank (JDBC) Transaktionen (default)"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "org.hibernate.transaction.JTATransactionFactory"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"delegates to container-managed transactions if an existing transaction is "
+"underway in this context (for example, EJB session bean method). Otherwise, "
+"a new transaction is started and bean-managed transactions are used."
+msgstr ""
+"delegiert an die containerverwaltete Transaktion, falls eine bestehende "
+"Transaktion in diesem Kontext läuft (z.B. EJB Session-Bean-Methode). "
+"Andernfalls wird eine neue Transaktion gestartet und von einem Bean "
+"gemanagte Transaktionen werden verwendet."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "org.hibernate.transaction.CMTTransactionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "delegiert an containerverwaltete JTA-Transaktionen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"Sie können auch Ihre eigenen Transaktionsstrategien definieren (z.B. für "
+"einen CORBA-Transaktionsdienst)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Some features in Hibernate (i.e., the second level cache, Contextual "
+"Sessions with JTA, etc.) require access to the JTA "
+"<literal>TransactionManager</literal> in a managed environment. In an "
+"application server, since J2EE does not standardize a single mechanism, you "
+"have to specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>:"
+msgstr ""
+"Einige Features in Hibernate (etwa das Cache der zweiten Ebene, "
+"kontextbezogene Sessions mit JTA usw.) erfordern Zugriff auf den JTA "
+"<literal>TransactionManager</literal> in einer gemanagten Umgebung. In einem "
+"Applikationsserver müssen Sie festlegen, wie Hibernate einen Verweis an den "
+"<literal>TransactionManager</literal> erhält, da J2EE keinen einzelnen "
+"Mechanismus standardisiert:"
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "JTA-TransactionManagers"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "Transaction-Factory"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "Applikationsserver"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JBossTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.WeblogicTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+msgstr "org.hibernate.transaction.WebSphereTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+msgstr "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.OrionTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.ResinTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JOTMTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JOnASTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JRun4TransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.BESTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "JNDI-gebundene SessionFactory"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup function of the factory and create new <literal>Session</literal>s. "
+"This is not, however, related to a JNDI bound <literal>Datasource</literal>; "
+"both simply use the same registry."
+msgstr ""
+"Eine JNDI-gebundene Hibernate <literal>SessionFactory</literal> kann die "
+"Suche nach der Factory und die Erstellung neuer <literal>Session</literal>s "
+"vereinfachen. Bitte beachten Sie, dass dies nichts mit einer JNDI-gebundenen "
+"<literal>Datasource</literal> zu tun hat, die beiden verwenden lediglich "
+"diesselbe Registry!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. This is especially useful in environments with a "
+"read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+"Falls Sie möchten, dass die <literal>SessionFactory</literal> an einen JNDI-"
+"Namensraum gebunden wird, legen Sie unter Verwendung der Property "
+"<literal>hibernate.session_factory_name</literal> einen Namen fest (z.B. "
+"<literal>java:hibernate/SessionFactory</literal>). Falls diese Property "
+"weggelassen wird, so wird die <literal>SessionFactory</literal> nicht an "
+"JNDI gebunden. (Das ist insbesondere in Umgebungen mit einer "
+"schreibgeschützten \"read-only\" JNDI-Standardimplementierung - wie etwa "
+"Tomcat - hilfreich)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"Beim Binden der <literal>SessionFactory</literal> an JNDI, wird Hibernate "
+"die Werte von <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi."
+"class</literal> verwenden, um einen Anfangskontext zu initiieren. Werden "
+"diese nicht festgelegt, so wird der Standard <literal>InitialContext</"
+"literal> verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will have this call in some startup code, or utility class in your "
+"application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (this is discussed later in greater "
+"detail)."
+msgstr ""
+"Hibernate wird die <literal>SessionFactory</literal> in JNDI platzieren, "
+"nachdem Sie <literal>cfg.buildSessionFactory()</literal> aufrufen. Das "
+"bedeutet, dass Sie diesen Aufruf zumindest in einem Startup-Code (oder einer "
+"Dienstprogrammklasse) Ihrer Anwendung haben, außer Sie verwenden JMX-"
+"Deployment mit <literal>HibernateService</literal> (wird später erläutert)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class, you can obtain the <literal>SessionFactory</literal> using a JNDI "
+"lookup."
+msgstr ""
+"Falls Sie eine JNDI <literal>SessionFactory</literal> verwenden, kann ein "
+"EJB oder eine andere Klasse mittels eines JNDI-Suchlaufs die "
+"<literal>SessionFactory</literal> erhalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you bind the <literal>SessionFactory</literal> to "
+"JNDI in a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate&mdash;see chapter 1."
+msgstr ""
+"Wir empfehlen, dass Sie die <literal>SessionFactory</literal> in einer "
+"gemanagten Umgebung an JNDI binden und andernfalls einen <literal>static</"
+"literal> Singleton verwenden. Um Ihren Applikationscode vor diesen Details "
+"abzuschirmen, empfehlen wir außerdem, dass Sie den tatsächlichen Code des "
+"Suchlaufs (\"Lookup-Code\") für eine <literal>SessionFactory</literal> in "
+"einer Helferklasse wie etwa <literal>HibernateUtil.getSessionFactory()</"
+"literal> verbergen. Bitte beachten Sie auch, dass eine solche Klasse "
+"außerdem eine praktische Weise ist, Hibernate - zu starten. Siehe dazu "
+"Kapitel 1."
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "Aktuelles Management des Sessionkontexts mit JTA"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The easiest way to handle <literal>Sessions</literal> and transactions is "
+"Hibernate's automatic \"current\" <literal>Session</literal> management. For "
+"a discussion of contextual sessions see <xref linkend=\"architecture-current-"
+"session\" />. Using the <literal>\"jta\"</literal> session context, if there "
+"is no Hibernate <literal>Session</literal> associated with the current JTA "
+"transaction, one will be started and associated with that JTA transaction "
+"the first time you call <literal>sessionFactory.getCurrentSession()</"
+"literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> "
+"context are set to automatically flush before the transaction completes, "
+"close after the transaction completes, and aggressively release JDBC "
+"connections after each statement. This allows the <literal>Session</"
+"literal>s to be managed by the life cycle of the JTA transaction to which it "
+"is associated, keeping user code clean of such management concerns. Your "
+"code can either use JTA programmatically through <literal>UserTransaction</"
+"literal>, or (recommended for portable code) use the Hibernate "
+"<literal>Transaction</literal> API to set transaction boundaries. If you run "
+"in an EJB container, declarative transaction demarcation with CMT is "
+"preferred."
+msgstr ""
+"Die einfachste Art <literal>Session</literal>s und Transaktionen zu "
+"bearbeiten ist mit Hibernates automatischem Management der \"aktuellen\" "
+"<literal>Session</literal>. Siehe dazu auch die Erläuterungen unter <xref "
+"linkend=\"architecture-current-session\"/>. Unter Verwendung des <literal>"
+"\"jta\"</literal> Sessionkontexts wird, falls keine Hibernate "
+"<literal>Session</literal> mit der aktuellen JTA-Transaktion assoziiert "
+"wird, beim erstmaligen Aufruf von <literal>sessionFactory.getCurrentSession()"
+"</literal>, eine gestartet. Die mittels <literal>getCurrentSession()</"
+"literal> im <literal>\"jta\"</literal>-Kontext abgerufenen <literal>Session</"
+"literal>s werden automatisch geräumt ehe die Transaktion beendet wird, "
+"geschlossen nachdem die Transaktion beendet ist und aktive JDBC-Verbindungen "
+"nach jeder Anweisung freigegeben. Das ermöglicht es den <literal>Session</"
+"literal>s durch den Lebenszyklus der mit ihr assoziierten JTA-Transaktion "
+"verwaltet zu werden, so dass der Benutzercode nicht mit Management-Inhalten "
+"belastet wird. Ihr Code kann JTA entweder befehlsorientiert durch "
+"<literal>UserTransaction</literal> oder (für übertragbaren Code empfohlen) "
+"das Hibernate <literal>Transaction</literal>-API verwenden, um die "
+"Transaktionsbereiche zu setzen. Falls Sie einen EJB-Container betreiben, so "
+"ist die deklarative Transaktionsabgrenzung mit CMT zu bevorzugen."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "JMX-Deployment"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block, like "
+"the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as "
+"a <emphasis>managed service</emphasis>."
+msgstr ""
+"Die Zeile <literal>cfg.buildSessionFactory()</literal> muss nach wie vor "
+"irgendwo ausgeführt werden, um die <literal>SessionFactory</literal> in JNDI "
+"zu bringen. Dies kann entweder in einem <literal>static</literal> "
+"Initialisierungsprogrammsblock (wie denjenigem in <literal>HibernateUtil</"
+"literal>) oder durch Deployment von Hibernate als <emphasis>managed service</"
+"emphasis> erfolgen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor-specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"Hibernate wird mit einem <literal>org.hibernate.jmx.HibernateService</"
+"literal> für das Deployment in einem JMX-fähigen Applikationsserver wie etwa "
+"JBoss AS geliefert. Deployment und Konfiguration sind dabei "
+"anbieterspezifisch. Nachfolgend sehen Sie ein Beispiel für <literal>jboss-"
+"service.xml</literal> for JBoss 4.0.x:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) can be "
+"kept in their own JAR file, but you can include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"Diese Datei wird in einem Verzeichnis namens <literal>META-INF</literal> "
+"ausgeführt und in einer JAR-Datei mit der Erweiterung <literal>.sar</"
+"literal> (Dienstarchiv). Sie müssen außerdem Hibernate, dessen erforderliche "
+"Bibliotheken Dritter Parteien, Ihre kompilierten persistenten Klassen sowie "
+"Ihre Mapping-Dateien im selben Archiv verpacken. Ihre Enterprise-Beans (in "
+"der Regel Session-Beans) können sich in deren eigener JAR-Datei befinden, "
+"jedoch muss diese EJB JAR-Datei im Hauptdienstarchiv sein, um eine einzelne "
+"\"(hot-)deploybare\" Einheit zu erhalten. Weitere Informationen zum JMX-"
+"Dienst und EJB-Deployment finden Sie in der JBoss AS Dokumentation."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");"
+
+#, fuzzy
+#~ msgid "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+#~ msgstr "SessionFactory sessions = cfg.buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessions.openSession(); // open a new Session]]"
+#~ ">"
+#~ msgstr "Session session = sessions.openSession(); // open a new Session"
+
+#~ msgid "database user"
+#~ msgstr "Datenbankbenutzer"
+
+#~ msgid "database user password"
+#~ msgstr "Datenbankbenutzer-Passwort"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect"
+
+#~ msgid "datasource JNDI name"
+#~ msgstr "JNDI-Name der Datenquelle"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = \\\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = \\\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = &#92;\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = &#92;\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect"
+
+#~ msgid "<entry>DB2</entry>"
+#~ msgstr "<entry>DB2</entry>"
+
+#~ msgid "hibernate.query.substitutions true=1, false=0"
+#~ msgstr "hibernate.query.substitutions true=1, false=0"
+
+#~ msgid "hibernate.query.substitutions toLowercase=LOWER"
+#~ msgstr "hibernate.query.substitutions toLowercase=LOWER"
+
+#~ msgid "org.hibernate"
+#~ msgstr "org.hibernate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <!-- a SessionFactory instance listed as /jndi/name -->\n"
+#~ "    <session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\">\n"
+#~ "\n"
+#~ "        <!-- properties -->\n"
+#~ "        <property name=\"connection.datasource\">java:/comp/env/jdbc/"
+#~ "MyDB</property>\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+#~ "property>\n"
+#~ "        <property name=\"show_sql\">false</property>\n"
+#~ "        <property name=\"transaction.factory_class\">\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        </property>\n"
+#~ "        <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- mapping files -->\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+#~ "\n"
+#~ "        <!-- cache settings -->\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/>\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only"
+#~ "\"/>\n"
+#~ "        <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+#~ "usage=\"read-write\"/>\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version='1.0' encoding='utf-8'?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- a SessionFactory instance listed as /jndi/name --&gt;\n"
+#~ "    &lt;session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\"&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- properties --&gt;\n"
+#~ "        &lt;property name=\"connection.datasource\"&gt;java:/comp/env/"
+#~ "jdbc/MyDB&lt;/property&gt;\n"
+#~ "        &lt;property name=\"dialect\"&gt;org.hibernate.dialect."
+#~ "MySQLDialect&lt;/property&gt;\n"
+#~ "        &lt;property name=\"show_sql\"&gt;false&lt;/property&gt;\n"
+#~ "        &lt;property name=\"transaction.factory_class\"&gt;\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        &lt;/property&gt;\n"
+#~ "        &lt;property name=\"jta.UserTransaction\"&gt;java:comp/"
+#~ "UserTransaction&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- mapping files --&gt;\n"
+#~ "        &lt;mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/&gt;\n"
+#~ "        &lt;mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- cache settings --&gt;\n"
+#~ "        &lt;class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/&gt;\n"
+#~ "        &lt;class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-"
+#~ "only\"/&gt;\n"
+#~ "        &lt;collection-cache collection=\"org.hibernate.auction.Item.bids"
+#~ "\" usage=\"read-write\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration().configure()."
+#~ "buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration().configure().buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<server>\n"
+#~ "\n"
+#~ "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+#~ "\n"
+#~ "    <!-- Required services -->\n"
+#~ "    <depends>jboss.jca:service=RARDeployer</depends>\n"
+#~ "    <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+#~ "\n"
+#~ "    <!-- Bind the Hibernate service to JNDI -->\n"
+#~ "    <attribute name=\"JndiName\">java:/hibernate/SessionFactory</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Datasource settings -->\n"
+#~ "    <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+#~ "    <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Transaction integration -->\n"
+#~ "    <attribute name=\"TransactionStrategy\">\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+#~ "    <attribute name=\"TransactionManagerLookupStrategy\">\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup</"
+#~ "attribute>\n"
+#~ "    <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Fetching options -->\n"
+#~ "    <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+#~ "\n"
+#~ "    <!-- Second-level caching -->\n"
+#~ "    <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+#~ "EhCacheProvider</attribute>\n"
+#~ "    <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Logging -->\n"
+#~ "    <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Mapping files -->\n"
+#~ "    <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml</attribute>\n"
+#~ "\n"
+#~ "</mbean>\n"
+#~ "\n"
+#~ "</server>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;server&gt;\n"
+#~ "\n"
+#~ "&lt;mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Required services --&gt;\n"
+#~ "    &lt;depends&gt;jboss.jca:service=RARDeployer&lt;/depends&gt;\n"
+#~ "    &lt;depends&gt;jboss.jca:service=LocalTxCM,name=HsqlDS&lt;/"
+#~ "depends&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Bind the Hibernate service to JNDI --&gt;\n"
+#~ "    &lt;attribute name=\"JndiName\"&gt;java:/hibernate/SessionFactory&lt;/"
+#~ "attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Datasource settings --&gt;\n"
+#~ "    &lt;attribute name=\"Datasource\"&gt;java:HsqlDS&lt;/attribute&gt;\n"
+#~ "    &lt;attribute name=\"Dialect\"&gt;org.hibernate.dialect."
+#~ "HSQLDialect&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Transaction integration --&gt;\n"
+#~ "    &lt;attribute name=\"TransactionStrategy\"&gt;\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"TransactionManagerLookupStrategy\"&gt;\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"FlushBeforeCompletionEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"AutoCloseSessionEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Fetching options --&gt;\n"
+#~ "    &lt;attribute name=\"MaximumFetchDepth\"&gt;5&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Second-level caching --&gt;\n"
+#~ "    &lt;attribute name=\"SecondLevelCacheEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"CacheProviderClass\"&gt;org.hibernate.cache."
+#~ "EhCacheProvider&lt;/attribute&gt;\n"
+#~ "    &lt;attribute name=\"QueryCacheEnabled\"&gt;true&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Logging --&gt;\n"
+#~ "    &lt;attribute name=\"ShowSqlEnabled\"&gt;true&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Mapping files --&gt;\n"
+#~ "    &lt;attribute name=\"MapResources\"&gt;auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "&lt;/mbean&gt;\n"
+#~ "\n"
+#~ "&lt;/server&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,843 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "Interzeptoren und Ereignisse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"Es ist oftmals von Nutzen, wenn die Anwendung auf bestimmte, innerhalb "
+"Hibernates ablaufende Ereignisse (\"Events\") reagiert. Es ermöglicht die "
+"Implementierung bestimmter Arten auswählbarer Funktionalitäten sowie eine "
+"Erweiterung der Funktionalität von Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "Interzeptoren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"Das <literal>Interceptor</literal>-Interface bietet die Möglichkeit von "
+"Callbacks der Session an die Anwendung, wodurch letztere die Properties "
+"eines persistenten Objekts vorweg prüfen und/oder verändern kann, ehe dieses "
+"gespeichert, aktualisiert, gelöscht oder geladen wird. Eine mögliche "
+"Anwendung hierfür ist etwa das Auditing von Informationen. Zum Beispiel "
+"setzt der folgende <literal>Interceptor</literal> automatisch "
+"<literal>createTimestamp</literal>, wenn ein <literal>Auditable</literal> "
+"erstellt wird und aktualisiert die <literal>lastUpdateTimestamp</literal>-"
+"Property, wenn ein <literal>Auditable</literal> aktualisiert wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"Sie können <literal>Interceptor</literal> entweder direkt implementieren "
+"oder (besser) <literal>EmptyInterceptor</literal> erweitern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"Es existieren zwei Arten von Interzeptoren: Für die <literal>Session</"
+"literal> zuständige und für die <literal>SessionFactory</literal> zuständige."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"Ein für die <literal>Session</literal> zuständiger Interzeptor wird beim "
+"Öffnen einer Session unter Verwendung einer der überlasteten SessionFactory."
+"openSession()-Methoden spezifiziert, die einen <literal>Interceptor</"
+"literal> akzeptieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"Ein für die <literal>SessionFactory</literal> zuständiger Interzeptor wird "
+"mit dem <literal>Configuration</literal>-Objekt vor dem Bau der "
+"<literal>SessionFactory</literal> erfasst. In diesem Fall wird der "
+"gelieferte Interzeptor bei allen von dieser <literal>SessionFactory</"
+"literal> geöffneten Sessions angewendet, außer bei einer Session wird "
+"explizit der zu verwendende Interzeptor genannt. Für die "
+"<literal>SessionFactory</literal> zuständige Interzeptoren müssen "
+"threadsicher sein und dürfen keinen Session-spezifischen Status speichern, "
+"da mehrere Sessions diesen Interzeptor (möglicherweise) gleichzeitig "
+"verwenden."
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "Ereignissystem"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"Falls Sie auf bestimmte Ereignisse in Ihrer Persistenzschicht reagieren "
+"müssen, können Sie die Hibernate3 <emphasis>Ereignis</emphasis>-Architektur "
+"verwenden. Das Ereignissystem kann zusätzlich oder aber als Ersatz für "
+"Interzeptoren verwendet werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"Im Wesentlichen korrelieren alle Methoden des <literal>Session</literal>-"
+"Interface mit einem Ereignis. Es gibt ein <literal>LoadEvent</literal>, ein "
+"<literal>FlushEvent</literal>, usw. (in der XML-Konfigurationsdatei DTD oder "
+"dem <literal>org.hibernate.event</literal>-Paket finden Sie die vollständige "
+"Liste aller definierten Ereignistypen). Wenn eine Anfrage einer dieser "
+"Methoden erfolgt, so generiert die Hibernate <literal>Session</literal> ein "
+"zugehöriges Ereignis und gibt es an die für diesen Typ konfigurierten "
+"\"Event-Listener\" weiter. Diese Listener implementieren dieselbe "
+"Bearbeitung, die diese Methoden stets hervorbringen. Es steht Ihnen jedoch "
+"frei, ein angepasstes Listener-Interface zu implementieren (d.h. "
+"<literal>LoadEvent</literal> wird durch die erfasste Implementierung des "
+"<literal>LoadEventListener</literal>-Interface bearbeitet), in welchem Fall "
+"die Implementierung für die Bearbeitung sämtlicher durch die "
+"<literal>Session</literal> erfolgender <literal>load()</literal>-Anfragen "
+"verantwortlich wäre."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"Die Listener sollten effektiv als Singletons angesehen werden, was bedeutet, "
+"dass sie zwischen Anfragen geteilt werden und daher keinen Status als "
+"Instanzvariable speichern sollten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"Ein angepasster Listener sollte das passende Interface für das Ereignis, das "
+"bearbeitet werden und/oder einer der Bedienungsgrundklassen erweitern soll, "
+"implementieren (oder sogar die ausgezeichneten standardmäßigen Ereignis-"
+"Listener, die von Hibernate verwendet und für diesen Zweck als nicht-final "
+"deklariert sind). Angepasste Listener können entweder programmatisch durch "
+"das <literal>Configuration</literal>-Objekt oder in der Hibernate "
+"Konfigurations-XML (deklarative Konfiguration durch die Properties-Datei "
+"wird nicht unterstützt) erfasst werden. Nachfolgend sehen Sie ein Beispiel "
+"für einen angepassten \"Load-Event-Listener\":"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"Sie benötigen außerdem einen Konfigurationseintrag, der Hibernate mitteilt, "
+"dass der Listener zusätzlich zum Standard-Listener verwendet werden soll:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "Statt dessen können Sie dies programmatisch erfassen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"Deklarativ erfasste Listener können keine Instanzen teilen. Falls derselbe "
+"Klassenname in mehreren <literal>&lt;listener/&gt;</literal>-Elementen "
+"verwendet wird, so wird jeder Verweis in einer separaten Instanz dieser "
+"Klasse resultieren. Falls Sie die Möglichkeit des Teilens von Listener-"
+"Instanzen zwischen Listener-Typen benötigen, müssen Sie die programmatische "
+"Erfassung nutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"Warum jedoch ein Interface implementieren und während der Konfiguration den "
+"spezifischen Typ definieren? Nun, eine Listener-Implementierung könnte "
+"mehrere Event-Listener Interfaces implementieren. Definiert man den Typ "
+"zusätzlich während der Erfassung, ist es einfacher angepasste Listener "
+"während der Konfiguration an- und auszuschalten."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Deklarative Sicherheit in Hibernate "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"Für gewöhnlich wird die deklarative Sicherheit in Hibernate Anwendungen "
+"durch eine Fassadenschicht geregelt. Jetzt ermöglicht Hibernate3 die "
+"Genehmigung bestimmter Vorgänge via JACC sowie die Authorisierung via JAAS. "
+"Es handelt sich dabei um eine optionale Funktionalität, die auf der Ereignis-"
+"Architektur (sog. \"Event-Architecture\") aufgebaut ist."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"Zunächst einmal müssen die betreffenden Event-Listener konfiguriert werden, "
+"damit die Verwendung der JAAS Authorisierung aktiviert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"Beachten Sie, dass <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</"
+"literal> lediglich ein Kürzel für <literal>&lt;event type=\"...\"&gt;&lt;"
+"listener class=\"...\"/&gt;&lt;/event&gt;</literal> ist, wenn genau ein "
+"Listener für einen bestimmten Ereignistyp existiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"Anschließend, und immer noch in <literal>hibernate.cfg.xml</literal>, binden "
+"Sie die Genehmigungen (sog. \"permissions\") an die Rollen:"
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr "Die Rollennamen sind die von Ihrem JACC-Anbieter verstandenen Rollen."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i &lt; propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i&lt;propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates,\n"
+#~ "                \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#~ msgstr "Session session = sf.openSession( new AuditInterceptor() );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#~ msgstr "new Configuration().setInterceptor( new AuditInterceptor() );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "    &lt;session-factory&gt;\n"
+#~ "        ...\n"
+#~ "        &lt;event type=\"load\"&gt;\n"
+#~ "            &lt;listener class=\"com.eg.MyLoadListener\"/&gt;\n"
+#~ "            &lt;listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/&gt;\n"
+#~ "        &lt;/event&gt;\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+#~ msgstr ""
+#~ "&lt;listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+#~ msgstr ""
+#~ "&lt;grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read"
+#~ "\"/&gt;\n"
+#~ "&lt;grant role=\"su\" entity-name=\"User\" actions=\"*\"/&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1556 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "Beispiel: Verschiedene Mappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr "Diese Kapitel erläutern komplexere Assoziations-Mappings."
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "Arbeitgeber/Arbeitnehmer"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"Das folgende Modell der Beziehung zwischen <literal>Employer</literal> "
+"(Arbeitgeber) und <literal>Employee</literal> (Arbeitnehmer) verwendet eine "
+"tatsächliche Entity-Klasse (<literal>Employment</literal>) zur "
+"Repräsentation der Assoziation. Das geschieht, weil für die beiden selben "
+"beteiligten Parteien mehr als ein Beschäftigungszeitraum existieren kann. "
+"Komponenten werden als Modell für Geldwerte und Arbeitnehmernamen benutzt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "Nachfolgend sehen Sie ein mögliches Mapping-Dokument:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"Und hier sehen Sie das durch <literal>SchemaExport</literal> generierte "
+"Tabellenschema."
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "Autor/Werk"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"Betrachten Sie das folgende Modell der Beziehungen zwischen <literal>Work</"
+"literal>, <literal>Author</literal> und <literal>Person</literal>. Wir "
+"repräsentieren die Beziehung zwischen <literal>Work</literal> und "
+"<literal>Author</literal> als eine \"Many-to-Many\"-Assoziation. Wir "
+"entscheiden uns dafür, die Beziehung zwischen <literal>Author</literal> und "
+"<literal>Person</literal> als \"One-to-One\"-Assoziation zu wählen. Eine "
+"weitere Möglichkeit wäre die Erweiterung von <literal>Person</literal> durch "
+"<literal>Author</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr ""
+"Das folgende Mapping-Dokument repräsentiert diese Beziehungen auf korrekte "
+"Weise:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"Dieses Mapping enthält vier Tabellen. <literal>works</literal>, "
+"<literal>authors</literal> und <literal>persons</literal> enthalten Daten zu "
+"Werk, Autor und Person. Bei <literal>author_work</literal> handelt es sich "
+"um eine Assoziationstabelle, die Autoren mit Werken verbindet. Nachfolgend "
+"sehen Sie das durch <literal>SchemaExport</literal> generierte "
+"Tabellenschema."
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "Kunde/Bestellung/Produkt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"Betrachten wir nun ein Modell der Beziehungen zwischen <literal>Customer</"
+"literal>, <literal>Order</literal> und <literal>LineItem</literal> sowie "
+"<literal>Product</literal>. Zwischen <literal>Customer</literal> und "
+"<literal>Order</literal> existiert eine \"One-to-Many\"-Assoziation, wie "
+"aber sollen <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal> repräsentiert werden? Wir entscheiden uns hier "
+"für das Mappen von <literal>LineItem</literal> als eine Assoziationsklasse, "
+"die die \"Many-to-Many\"-Assoziation zwischen <literal>Order</literal> und "
+"<literal>Product</literal> repräsentiert. In Hibernate wird dies als "
+"\"Composite Element\" (d.h. als \"zusammengesetztes Element\") bezeichnet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "Das Mapping-Dokument:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> und <literal>products</literal> enthalten "
+"Kunde, Bestellung, Bestellungsbelegzeile und Produktdaten. "
+"<literal>line_items</literal> fungiert auch als Assoziationstabelle, die "
+"Bestellungen mit Produkten verbindet."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "Verschiedene Beispiele von Mappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"Diese Beispiele wurden der Hibernate Testfolge entnommen. Sie finden dort "
+"auch viele weitere nützliche Beispiele. Schauen Sie einfach in den "
+"<literal>test</literal>-Ordner der Hibernate Distribution."
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "Typisierte \"One-to-One\"-Assoziation"
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "Beispiel für einen zusammengesetzten Schlüssel"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr ""
+"\"Many-to-Many\" mit geteiltem Attribut des zusammengesetzten Schlüssels"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "Inhaltsbasierte Diskriminierung"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "Assoziationen bei wechselnden Schlüsseln"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "        \n"
+#~ "    &lt;class name=\"Employer\" table=\"employers\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employer_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Employment\" table=\"employment_periods\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employment_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"startDate\" column=\"start_date\"/&gt;\n"
+#~ "        &lt;property name=\"endDate\" column=\"end_date\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;component name=\"hourlyRate\" class=\"MonetaryAmount\"&gt;\n"
+#~ "            &lt;property name=\"amount\"&gt;\n"
+#~ "                &lt;column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)"
+#~ "\"/&gt;\n"
+#~ "            &lt;/property&gt;\n"
+#~ "            &lt;property name=\"currency\" length=\"12\"/&gt;\n"
+#~ "        &lt;/component&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Employee\" table=\"employees\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employee_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"taxfileNumber\"/&gt;\n"
+#~ "        &lt;component name=\"name\" class=\"Name\"&gt;\n"
+#~ "            &lt;property name=\"firstName\"/&gt;\n"
+#~ "            &lt;property name=\"initial\"/&gt;\n"
+#~ "            &lt;property name=\"lastName\"/&gt;\n"
+#~ "        &lt;/component&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+#~ msgstr ""
+#~ "create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Work\" table=\"works\" discriminator-value=\"W"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;discriminator column=\"type\" type=\"character\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"title\"/&gt;\n"
+#~ "        &lt;set name=\"authors\" table=\"author_work\"&gt;\n"
+#~ "            &lt;key column name=\"work_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Author\" column name=\"author_id\"/"
+#~ "&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "\n"
+#~ "        &lt;subclass name=\"Book\" discriminator-value=\"B\"&gt;\n"
+#~ "            &lt;property name=\"text\"/&gt;\n"
+#~ "        &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "        &lt;subclass name=\"Song\" discriminator-value=\"S\"&gt;\n"
+#~ "            &lt;property name=\"tempo\"/&gt;\n"
+#~ "            &lt;property name=\"genre\"/&gt;\n"
+#~ "        &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Author\" table=\"authors\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;!-- The Author must have the same identifier as the "
+#~ "Person --&gt;\n"
+#~ "            &lt;generator class=\"assigned\"/&gt; \n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"alias\"/&gt;\n"
+#~ "        &lt;one-to-one name=\"person\" constrained=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;set name=\"works\" table=\"author_work\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "            &lt;key column=\"author_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Work\" column=\"work_id\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Person\" table=\"persons\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+#~ msgstr ""
+#~ "create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Customer\" table=\"customers\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;set name=\"orders\" inverse=\"true\"&gt;\n"
+#~ "            &lt;key column=\"customer_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Order\" table=\"orders\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"date\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"customer\" column=\"customer_id\"/&gt;\n"
+#~ "        &lt;list name=\"lineItems\" table=\"line_items\"&gt;\n"
+#~ "            &lt;key column=\"order_id\"/&gt;\n"
+#~ "            &lt;list-index column=\"line_number\"/&gt;\n"
+#~ "            &lt;composite-element class=\"LineItem\"&gt;\n"
+#~ "                &lt;property name=\"quantity\"/&gt;\n"
+#~ "                &lt;many-to-one name=\"product\" column=\"product_id\"/"
+#~ "&gt;\n"
+#~ "            &lt;/composite-element&gt;\n"
+#~ "        &lt;/list&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Product\" table=\"products\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"serialNumber\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+#~ msgstr ""
+#~ "create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references orders"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"name\"/&gt;\n"
+#~ "    &lt;one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "        &lt;formula&gt;name&lt;/formula&gt;\n"
+#~ "        &lt;formula&gt;'HOME'&lt;/formula&gt;\n"
+#~ "    &lt;/one-to-one&gt;\n"
+#~ "    &lt;one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "        &lt;formula&gt;name&lt;/formula&gt;\n"
+#~ "        &lt;formula&gt;'MAILING'&lt;/formula&gt;\n"
+#~ "    &lt;/one-to-one&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/&gt;\n"
+#~ "        &lt;key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;property name=\"street\" type=\"text\"/&gt;\n"
+#~ "    &lt;property name=\"state\"/&gt;\n"
+#~ "    &lt;property name=\"zip\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"customerId\"\n"
+#~ "        length=\"10\"&gt;\n"
+#~ "        &lt;generator class=\"assigned\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\" length=\"100\"/&gt;\n"
+#~ "    &lt;property name=\"address\" not-null=\"true\" length=\"200\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\"&gt;\n"
+#~ "        &lt;key column=\"customerId\"/&gt;\n"
+#~ "        &lt;index column=\"orderNumber\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "    &lt;/list&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\"&gt;\n"
+#~ "    &lt;synchronize table=\"LineItem\"/&gt;\n"
+#~ "    &lt;synchronize table=\"Product\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" \n"
+#~ "            class=\"Order&#36;Id\"&gt;\n"
+#~ "        &lt;key-property name=\"customerId\" length=\"10\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderNumber\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"total\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        \n"
+#~ "    &lt;bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"customerId\"/&gt;\n"
+#~ "            &lt;column name=\"orderNumber\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;one-to-many class=\"LineItem\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;class name=\"LineItem\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" \n"
+#~ "            class=\"LineItem&#36;Id\"&gt;\n"
+#~ "        &lt;key-property name=\"customerId\" length=\"10\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"productId\" length=\"10\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"quantity\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "        &lt;column name=\"orderNumber\"/&gt;\n"
+#~ "    &lt;/many-to-one&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/&gt;\n"
+#~ "        \n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Product\"&gt;\n"
+#~ "    &lt;synchronize table=\"LineItem\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"productId\"\n"
+#~ "        length=\"10\"&gt;\n"
+#~ "        &lt;generator class=\"assigned\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/&gt;\n"
+#~ "    &lt;property name=\"price\" length=\"3\"/&gt;\n"
+#~ "    &lt;property name=\"numberAvailable\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"numberOrdered\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"User\" table=\"`User`\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"name\"/&gt;\n"
+#~ "        &lt;key-property name=\"org\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;set name=\"groups\" table=\"UserGroup\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"userName\"/&gt;\n"
+#~ "            &lt;column name=\"org\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;many-to-many class=\"Group\"&gt;\n"
+#~ "            &lt;column name=\"groupName\"/&gt;\n"
+#~ "            &lt;formula&gt;org&lt;/formula&gt;\n"
+#~ "        &lt;/many-to-many&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;class name=\"Group\" table=\"`Group`\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"name\"/&gt;\n"
+#~ "        &lt;key-property name=\"org\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;property name=\"description\"/&gt;\n"
+#~ "    &lt;set name=\"users\" table=\"UserGroup\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"groupName\"/&gt;\n"
+#~ "            &lt;column name=\"org\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;many-to-many class=\"User\"&gt;\n"
+#~ "            &lt;column name=\"userName\"/&gt;\n"
+#~ "            &lt;formula&gt;org&lt;/formula&gt;\n"
+#~ "        &lt;/many-to-many&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    &lt;discriminator \n"
+#~ "        type=\"character\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/discriminator&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/&gt;\n"
+#~ "        \n"
+#~ "    &lt;property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;component name=\"address\"&gt;\n"
+#~ "        &lt;property name=\"address\"/&gt;\n"
+#~ "        &lt;property name=\"zip\"/&gt;\n"
+#~ "        &lt;property name=\"country\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "    \n"
+#~ "    &lt;subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\"&gt;\n"
+#~ "            &lt;property name=\"title\"\n"
+#~ "                length=\"20\"/&gt;\n"
+#~ "            &lt;property name=\"salary\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"manager\"/&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    \n"
+#~ "    &lt;subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\"&gt;\n"
+#~ "            &lt;property name=\"comments\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"salesperson\"/&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"name\" length=\"100\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;set name=\"accounts\" \n"
+#~ "        inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Account\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"userId\" length=\"8\"/&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"address\" length=\"300\"/&gt;\n"
+#~ "    &lt;property name=\"zip\" length=\"5\"/&gt;\n"
+#~ "    &lt;property name=\"country\" length=\"25\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/"
+#~ "&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Account\"&gt;\n"
+#~ "    &lt;id name=\"accountId\" length=\"32\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"type\" not-null=\"true\"/&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,895 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "Beispiel: \"Parent/Child\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the first things that new users want to do with Hibernate is to model "
+"a parent/child type relationship. There are two different approaches to "
+"this. The most convenient approach, especially for new users, is to model "
+"both <literal>Parent</literal> and <literal>Child</literal> as entity "
+"classes with a <literal>&lt;one-to-many&gt;</literal> association from "
+"<literal>Parent</literal> to <literal>Child</literal>. The alternative "
+"approach is to declare the <literal>Child</literal> as a <literal>&lt;"
+"composite-element&gt;</literal>. The default semantics of a one-to-many "
+"association in Hibernate are much less close to the usual semantics of a "
+"parent/child relationship than those of a composite element mapping. We will "
+"explain how to use a <emphasis>bidirectional one-to-many association with "
+"cascades</emphasis> to model a parent/child relationship efficiently and "
+"elegantly."
+msgstr ""
+"Eine der ersten Sachen, die neue Benutzer mit Hibernate versuchen, ist es "
+"eine Beziehung nach \"Parent\"/\"Child\"-Typ zu bilden. Es gibt dabei zwei "
+"verschiedene Herangehensweisen. Aus verschiedenen Gründen empfiehlt es sich "
+"gerade für neue Benutzer sowohl <literal>Parent</literal> als auch "
+"<literal>Child</literal> als Entity-Klassen mit einer <literal>&lt;one-to-"
+"many&gt;</literal>-Assoziation von <literal>Parent</literal> zu "
+"<literal>Child</literal> zu modellieren. (Alternativ kann das "
+"<literal>Child</literal> als ein <literal>&lt;composite-element&gt;</"
+"literal> deklariert werden). Nun zeigt sich, dass die Standard-Semantik "
+"einer \"One-to-Many\"-Assoziation (in Hibernate) der üblichen Semantik einer "
+"\"Parent\" / \"Child\"-Beziehung weniger ähnlich als die eines "
+"zusammengesetzten Element-Mappings ist. Wir werden erläutern, wie eine "
+"<emphasis>bidirektionale \"One-to-Many\"-Assoziation mit Weitergabe</"
+"emphasis> zu einer \"Parent\" / \"Child\"-Beziehung effizient und elegant "
+"modelliert wird. Es ist überhaupt nicht schwierig!"
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "Eine Anmerkung zu Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity and not of the contained entities. Be aware that this is a critical "
+"distinction that has the following consequences:"
+msgstr ""
+"Hibernate Collections werden als logischer Teil der sie besitzenden Entity "
+"angesehen - niemals der enthaltenen Entities. Dies ist eine kritische "
+"Unterscheidung! Es hat die folgenden Konsequenzen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When you remove/add an object from/to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"Wird ein Objekt aus einer Collection entfernt oder zu einer Collection "
+"hinzugefügt, so erhöht sich die Versionsnummer des Collection-Besitzers."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (e.g. a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"Falls es sich bei einem aus einer Collection entfernten Objekt um eine "
+"Instanz mit Wertetyp handelt (z.B. ein zusammengesetzes Element), so ist "
+"dieses Objekt nicht länger persistent und der Status wird vollständig aus "
+"der Datenbank entfernt. Ebenso wird eine Wertetyp-Instanz automatisch "
+"persistiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Conversely, if an entity is removed from a collection (a one-to-many or many-"
+"to-many association), it will not be deleted by default. This behavior is "
+"completely consistent; a change to the internal state of another entity "
+"should not cause the associated entity to vanish. Likewise, adding an entity "
+"to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+"Wird eine Entity hingegen aus einer Collection entfernt (eine \"One-to-Many"
+"\" oder \"Many-to-Many\"-Assoziation), so wird es in der Standardeinstellung "
+"nicht gelöscht. Dieses Verhalten ist völlig konsistent  - eine Änderung am "
+"internen Status einer anderen Entity sollte nicht dazu führen, dass die "
+"zugehörige Entity verschwindet! Ebenso führt das Hinzufügen einer Entity "
+"nicht standardmäßig zu deren Persistierung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Adding an entity to a collection, by default, merely creates a link between "
+"the two entities. Removing the entity will remove the link. This is "
+"appropriate for all sorts of cases. However, it is not appropriate in the "
+"case of a parent/child relationship. In this case, the life of the child is "
+"bound to the life cycle of the parent."
+msgstr ""
+"Statt dessen wird in der Standardeinstellung durch das Hinzufügen einer "
+"Entity zu einer Collection eine Verbindung zwischen den zwei Entities "
+"hergestellt, bei deren Entfernung hingegen die Verbindung gelöst. Das passt "
+"für alle Arten von Fällen sehr gut. Lediglich im Falle einer \"Parent\"/"
+"\"Child\"- Beziehung ist es überhaupt nicht passend, da der Lebenszyklus des "
+"\"Child\" an den des \"Parent\" gebunden ist."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "Bidirektionales \"One-to-Many\""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"Gehen wir einmal davon aus, wir wollten mit einer einfachen <literal>&lt;one-"
+"to-many&gt;</literal>-Assoziation von <literal>Parent</literal> zu "
+"<literal>Child</literal> beginnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "Würden wir den folgenden Code ausführen"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "so würde Hibernate zwei SQL-Anweisungen herausgeben:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+"ein <literal>INSERT</literal>, um den Datensatz für <literal>c</literal> zu "
+"erstellen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"ein <literal>UPDATE</literal>, um die Verbindung von <literal>p</literal> "
+"zu<literal>c</literal> zu erstellen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. You can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"Das ist nicht nur ineffizient, sondern verletzt auch jedwede <literal>NOT "
+"NULL</literal>-Bedingung an der <literal>parent_id</literal>-Spalte. Die "
+"Verletzung der \"Nullability\"-Bedingung lässt sich durch das Setzen von "
+"<literal>not-null=\"true\"</literal> im Collection-Mapping lösen:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "Dieses ist jedoch nicht die empfohlene Lösung:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The underlying cause of this behavior is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. The "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"Die zu Grunde liegende Ursache für dieses Verhalten besteht darin, dass das "
+"Link (der Fremdschlüssel <literal>parent_id</literal>) von <literal>p</"
+"literal> zu <literal>c</literal> nicht als Teil des Status des "
+"<literal>Child</literal>-Objekts angesehen wird und daher nicht im "
+"<literal>INSERT</literal> erstellt werden kann. Die Lösung besteht also "
+"darin, das Link zu einem Teil des <literal>Child</literal>-Mappings zu "
+"machen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class."
+msgstr ""
+"(Wir werden außerdem die <literal>parent</literal>-Property zur "
+"<literal>Child</literal>-Klasse hinzufügen müssen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute to do this:"
+msgstr ""
+"Da nun die <literal>Child</literal>-Entity den Status der Verbindung managt, "
+"muss die Collection die Verbindung nicht mehr aktualisieren. Um der "
+"Collection dies mitzuteilen verwenden wir das <literal>inverse</literal>-"
+"Attribut."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+"Der folgende Code würde verwendet, um ein neues <literal>Child</literal> "
+"hinzuzufügen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr "Und jetzt würde nur ein SQL <literal>INSERT</literal> herausgegeben!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You could also create an <literal>addChild()</literal> method of "
+"<literal>Parent</literal>."
+msgstr ""
+"Um das Ganze etwas kompakter zu gestalten würden wir eine <literal>addChild()"
+"</literal>-Method von <literal>Parent</literal> erstellen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr ""
+"Nun sieht der Code für das Hinzufügen eines <literal>Child</literal> wie "
+"folgt aus"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Cascading life cycle"
+msgstr "Lebenszyklus der Weitergabe (\"Cascading\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can address the frustrations of the explicit call to <literal>save()</"
+"literal> by using cascades."
+msgstr ""
+"Der explizite Aufruf <literal>save()</literal> ist nach wie vor nicht ideal. "
+"Wir gehen dieses Problem mittels Kaskade (sog. \"Cascades\") an."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "Dies vereinfacht den vorherigen Code zu"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similarly, we do not need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"Auch müssen wir es bei den untergeordneten Objekten (\"children\") nicht "
+"wiederholen, wenn wir einen <literal>Parent</literal> speichern oder "
+"löschen. Nachfolgendes entfernt <literal>p</literal> und sämtliche von "
+"dessen untergeordneten Objekten aus der Datenbank."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "However, the following code:"
+msgstr "Dieser Code jedoch"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database. In this case, it "
+"will only remove the link to <literal>p</literal> and cause a <literal>NOT "
+"NULL</literal> constraint violation. You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"entfernt <literal>c</literal> nicht aus der Datenbank; lediglich die "
+"Verbindung zu <literal>p</literal> wird gelöst (und eine Verletzung der "
+"<literal>NOT NULL</literal>-Bedingung erfolgt in diesem Fall). Sie müssen "
+"für das <literal>Child</literal> explizit <literal>delete()</literal> "
+"festlegen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In our case, a <literal>Child</literal> cannot exist without its parent. So "
+"if we remove a <literal>Child</literal> from the collection, we do want it "
+"to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan"
+"\"</literal>."
+msgstr ""
+"In unserem Fall kann jedoch ein <literal>Child</literal> ohne den "
+"übergeordneten \"Parent\" eigentlich nicht existieren. Wenn wir also ein "
+"<literal>Child</literal> aus der Collection entfernen, so wollen wir dieses "
+"tatsächlich löschen. Dafür müssen wir  <literal>cascade=\"all-delete-orphan"
+"\"</literal> verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though the collection mapping specifies <literal>inverse=\"true\"</"
+"literal>, cascades are still processed by iterating the collection elements. "
+"If you need an object be saved, deleted or updated by cascade, you must add "
+"it to the collection. It is not enough to simply call <literal>setParent()</"
+"literal>."
+msgstr ""
+"Hinweis: Selbst wenn das Collection-Mapping <literal>inverse=\"true\"</"
+"literal> spezifiziert, werden Weitergaben nach wie vor durch Wiederholung "
+"der Collection-Elemente bearbeitet. Falls Sie also ein Objekt durch "
+"Weitergabe speichern, löschen oder aktualisieren möchten, müssen Sie es der "
+"Collection hinzufügen. Ein einfacher Aufruf von <literal>setParent()</"
+"literal> reicht in diesem Fall nicht aus."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "Kaskaden und ungespeicherter Wert"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wanted to persist these "
+"changes in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of children and, since "
+"the cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. We "
+"will also assume that both <literal>Parent</literal> and <literal>Child</"
+"literal> have generated identifier properties of type <literal>Long</"
+"literal>. Hibernate will use the identifier and version/timestamp property "
+"value to determine which of the children are new. (See <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer "
+"necessary to specify an <literal>unsaved-value</literal> explicitly.</"
+"emphasis>"
+msgstr ""
+"Gehen wir einmal davon aus, wir hätten einen <literal>Parent</literal> in "
+"einer <literal>Session</literal> hochgeladen, einige Änderungen in einer UI-"
+"Aktion vorgenommen und wollten diese Änderungen in einer neuen Session durch "
+"Aufruf von <literal>update()</literal> persistieren. Der <literal>Parent</"
+"literal> wird eine Collection von untergeordneten Objekten (den \"children"
+"\") enthalten, und da die Kaskade aktiviert ist, muss Hibernate wissen, "
+"welche \"Children\" neu instanziiert sind und welche bestehende Reihen in "
+"der Datenbank repräsentieren. Nehmen wir an, dass sowohl <literal>Parent</"
+"literal> als auch <literal>Child</literal> generierte Bezeichner-Properties "
+"des Typs <literal>Long</literal> besitzen. Hibernate wird den Bezeichner und "
+"den Property-Wert von Version/Zeitstempel verwenden, um zu bestimmen, welche "
+"der \"Children\" neu sind. (Siehe <xref linkend=\"objectstate-saveorupdate\"/"
+">). <emphasis>In Hibernate3 ist es nicht mehr notwendig, explizit einen "
+"<literal>unsaved-value</literal> festzulegen.</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>:"
+msgstr ""
+"Der folgende Code aktualisiert <literal>parent</literal> und <literal>child</"
+"literal> und fügt <literal>newChild</literal> hinzu."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This may be suitable for the case of a generated identifier, but what about "
+"assigned identifiers and composite identifiers? This is more difficult, "
+"since Hibernate cannot use the identifier property to distinguish between a "
+"newly instantiated object, with an identifier assigned by the user, and an "
+"object loaded in a previous session. In this case, Hibernate will either use "
+"the timestamp or version property, or will actually query the second-level "
+"cache or, worst case, the database, to see if the row exists."
+msgstr ""
+"Nun, all das funktioniert hervorragend im Falle eines generierten "
+"Bezeichners, aber was ist mit zugeordneten Bezeichnern und zusammengesetzten "
+"Bezeichnern? Das ist schwieriger, da Hibernate hier nicht die Bezeichner-"
+"Property zur Unterscheidung zwischen einem neu instantiierten Objekt (mit "
+"einem durch den Benutzer zugeordneten Bezeichner) und einem in einer "
+"früheren Session geladenen Objekt verwenden kann. In diesem Fall verwendet "
+"Hibernate entweder den Zeitstempel oder die Versions-Property oder fragt "
+"beim Speicher der zweiten Ebene an. Schlimmstenfalls prüft es in der "
+"Datenbank, ob die Reihe existiert."
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "Zusammenfassung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The sections we have just covered can be a bit confusing. However, in "
+"practice, it all works out nicely. Most Hibernate applications use the "
+"parent/child pattern in many places."
+msgstr ""
+"Das sind eine Menge an Informationen, die zu Beginn vielleicht etwas "
+"verwirrend erscheinen. In der Praxis jedoch funktioniert das alles sehr gut. "
+"Die meisten Hibernate-Anwendungen verwenden die \"Parent/Child\"-Vorlage bei "
+"vielen Gelegenheiten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
+"which have exactly the semantics of a parent/child relationship. "
+"Unfortunately, there are two big limitations with composite element classes: "
+"composite elements cannot own collections and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"Im ersten Abschnitt haben wir eine Alternative erwähnt. Keines der gennaten "
+"Probleme existiert im Fall von <literal>&lt;composite-element&gt;</literal>-"
+"Mappings, die dieselbe Semantik wie eine \"Parent/Child\"-Beziehung "
+"besitzen. Leider bestehen zwei große Einschränkungen bei zusammengesetzten "
+"Elementklassen: Zusammengesetzte Elemente können keine Collections besitzen "
+"und sie sollten nicht das untergeordnete Objekt (\"Child\") irgendeiner "
+"Entity außer dem eindeutigen, übergeordneten Objekt (\"Parent\") sein."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\" cascade=\"all\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-"
+#~ "orphan\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
+#~ "\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1135 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "Beispiel: Web-Log Anwendung"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Persistente Klassen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"Die persistenten Klassen repräsentieren einen Web-Log und einen in einem Web-"
+"Log untergebrachten Posten. Sie sollen als Standard \"Parent/Child\"-"
+"Beziehung modelliert werden, jedoch verwenden wir eine geordnete \"Bag\" "
+"anstelle eines \"Sets\"."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Hibernate-Mappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "Die XML-Mappings sollten nun ziemlich überschaubar sein."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Hibernate-Code"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr ""
+"Die folgende Klasse zeigt einige Dinge auf, die unter Verwendung von "
+"Hibernate mit diesen Klassen durchgeführt werden können."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "    &lt;class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\"&gt;\n"
+#~ "\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "\n"
+#~ "            &lt;key column=\"BLOG_ID\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"BlogItem\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/bag&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "    &lt;class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\"&gt;\n"
+#~ "\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime &gt; :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,608 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "Das Filtern von Daten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3 bietet eine innovative, neue Möglichkeit des Umgangs mit Daten "
+"mittels \"Sichtbarkeits\"regeln. Bei einem <emphasis>Hibernate Filter</"
+"emphasis> handelt es sich um einen allgemeingültig benannten, "
+"parametrisierten Filter, der für eine bestimmte Hibernate Session aktiviert "
+"oder deaktiviert werden kann."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Hibernate Filter"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"Hibernate3 bietet die zusätzliche Möglichkeit, Filterkriterien im Vorfeld zu "
+"definieren und diese Filter sowohl einer Klasse als auch einer Collection-"
+"Ebene zuzufügen. Ein Filterkriterium ist die Möglichkeit eine "
+"Einschränkungsklausel zu definieren, die dem bestehenden \"where\"-Attribut "
+"an der Klasse sowie an verschiedenen Collection-Elementen sehr ähnlich ist. "
+"Der Unterschied besteht darin, dass diese Filterbedingungen parametrisiert "
+"werden können. Die Anwendung kann zur Runtime die Entscheidung darüber "
+"treffen, ob die vorgegebenen Filter aktiviert werden und wie deren Parameter "
+"lauten sollen. Filter können wie Datenbankansichten verwendet , jedoch "
+"innerhalb der Anwendung parametrisiert werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"Um Filter zu benutzen müssen diese zunächst definiert und anschließend den "
+"betreffenden Mapping-Elementen zugefügt werden. Um einen Filter zu "
+"definieren, verwenden Sie das <literal>&lt;filter-def/&gt;</literal>-Element "
+"innerhalb eines <literal>&lt;hibernate-mapping/&gt;</literal>-Elements:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "Anschließend kann dieser Filter einer Klasse zugefügt werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or, to a collection:"
+msgstr "oder einer Collection:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "oder gar beiden (oder mehreren von beiden) gleichzeitig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"Die Methoden an <literal>Session</literal> sind: <literal>enableFilter"
+"(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal> und <literal>disableFilter(String filterName)</literal>. "
+"Standardmäßig werden Filter <emphasis>nicht</emphasis> für eine vorgegebene "
+"Session verwendet, sondern müssen mittels der <literal>Session.enabledFilter"
+"()</literal>-Methode, die eine Instanz des <literal>Filter</literal>-"
+"Interface wiedergibt, explizit aktiviert werden. Die Verwendung des oben "
+"definierten, einfachen Filters würde wie folgt aussehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"Bitte beachten Sie, dass Methoden am org.hibernate.Filter-Interface "
+"Methodenverkettung - wie in den meisten Teilen von Hibernate üblich - "
+"erlauben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr ""
+"Nachfolgend sehen Sie ein vollständiges Beispiel unter Verwendung temporaler "
+"Daten mit effektivem Datumsformat für den Datensatz:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"Anschließend aktivieren Sie einfach den Filter an der Session vor dem Abruf "
+"der Angestelltendaten um sicherzustellen, dass Sie stets die aktuell "
+"wirksamen Datensätze erhalten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"In der vorherigen HQL antwortet die Anfrage wegen des aktivierten Filters "
+"nur mit aktuell aktiven Angestellten, deren Gehalt höher als eine Million "
+"Dollar ist, obwohl lediglich eine Gehaltsbedingung formuliert wurde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"Hinweis: Falls Sie vorhaben, Filter mit \"outer-Joining\" zu verwenden "
+"(entweder durch HQL oder Load-Abruf) achten Sie auf die Richtung des "
+"Bedingungsausdrucks. Am sichersten ist es, das Ganze für \"left-outer-Joining"
+"\" einzurichten. Generell sollte der Parameter zuerst gesetzt werden und "
+"anschließend der (die) Spaltenname(n) nach dem Operator."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"Nachdem ein Filter definiert wurde, kann er mehreren Entities und/oder "
+"Collections mit jeweils eigener Bedingung hinzugefügt werden. Das kann eine "
+"langweilige Aufgabe sein, wenn die Bedingungen stets dieselben sind. Daher "
+"erlaubt <literal>&lt;filter-def/&gt;</literal> die Definition einer "
+"Standardbedingung als Attribut oder als CDATA:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"Diese Standardbedingung wird dann verwendet, wenn der Filter zu etwas "
+"hinzugefügt wird, ohne dass eine Bedingung spezifiziert wird. Bitte beachten "
+"Sie, dass dies bedeutet, dass Sie eine spezielle Bedingung als Teil des "
+"Filteranhangs festlegen können, die die Standardbedingung in diesem "
+"bestimmten Fall außer Kraft setzt."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"myFilter\"&gt;\n"
+#~ "    &lt;filter-param name=\"myFilterParam\" type=\"string\"/&gt;\n"
+#~ "&lt;/filter-def&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"myClass\" ...&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set ...&gt;\n"
+#~ "    &lt;filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+#~ msgstr ""
+#~ "session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-"
+#~ "value\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"effectiveDate\"&gt;\n"
+#~ "    &lt;filter-param name=\"asOfDate\" type=\"date\"/&gt;\n"
+#~ "&lt;/filter-def&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Employee\" ...&gt;\n"
+#~ "...\n"
+#~ "    &lt;many-to-one name=\"department\" column=\"dept_id\" class="
+#~ "\"Department\"/&gt;\n"
+#~ "    &lt;property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/&gt;\n"
+#~ "    &lt;property name=\"effectiveEndDate\" type=\"date\" column="
+#~ "\"eff_end_dt\"/&gt;\n"
+#~ "...\n"
+#~ "    &lt;!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    --&gt;\n"
+#~ "    &lt;filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ "&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Department\" ...&gt;\n"
+#~ "...\n"
+#~ "    &lt;set name=\"employees\" lazy=\"true\"&gt;\n"
+#~ "        &lt;key column=\"dept_id\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Employee\"/&gt;\n"
+#~ "        &lt;filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "Session session = ...;\n"
+#~ "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary "
+#~ "&gt; :targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"myFilter\" condition=\"abc &gt; xyz\"&gt;...&lt;/"
+#~ "filter-def&gt;\n"
+#~ "&lt;filter-def name=\"myOtherFilter\"&gt;abc=xyz&lt;/filter-def&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1215 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Inheritance mapping"
+msgstr "Vererbungsmapping"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "The three strategies"
+msgstr "Die drei Strategien"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr ""
+"Hibernate unterstützt drei grundlegende Mapping-Strategien der Vererbung:"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "\"Tabelle-pro-Klasse\"-Hierarchie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "table per subclass"
+msgstr "\"Tabelle-pro-Subklasse\""
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "\"Tabelle-pro-konkrete-Klasse\""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr ""
+"Desweiteren unterstützt Hibernate eine vierte, etwas andere Art der "
+"Polymorphie:"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "implizite Polymorphie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy. You can then make use of implicit "
+"polymorphism to achieve polymorphism across the whole hierarchy. However, "
+"Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, "
+"<literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-"
+"subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</"
+"literal> element. It is possible to mix together the table per hierarchy and "
+"table per subclass strategies under the the same <literal>&lt;class&gt;</"
+"literal> element, by combining the <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+"Es ist möglich, unterschiedliche Mapping-Strategien für verschiedene Zweige "
+"derselben Vererbungshierarchie zu verwenden und diese anschließend implizite "
+"Polymorphie verwenden zu lassen, um über die gesamte Hierarchie hinweg "
+"Polymorphie zu erreichen. Es ist bei Hibernate jedoch nicht möglich "
+"<literal>&lt;subclass&gt;</literal> und <literal>&lt;joined-subclass&gt;</"
+"literal> und <literal>&lt;union-subclass&gt;</literal> Mappings unter "
+"demselben Stamm <literal>&lt;class&gt;</literal>-Element zu mischen. Es ist "
+"aber möglich die Tabelle-pro-Hierarchie (sog. \"table per hierarchy\") und "
+"Tabelle-pro-Subklasse (sog. \"table per subclass\") Strategien unter "
+"demselben <literal>&lt;class&gt;</literal>-Element durch Kombination der "
+"<literal>&lt;subclass&gt;</literal> und <literal>&lt;join&gt;</literal>-"
+"Elemente zu mischen (siehe unten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierarchy by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Previously this "
+"feature made the ordering of the mapping documents important. Since "
+"Hibernate3, the ordering of mapping files is irrelevant when using the "
+"extends keyword. The ordering inside a single mapping file still needs to be "
+"defined as superclasses before subclasses."
+msgstr ""
+"Es ist möglich, <literal>subclass</literal>, <literal>union-subclass</"
+"literal> und <literal>joined-subclass</literal> Mappings in verschiedenen "
+"Mapping-Dokumenten direkt unterhalb des <literal>hibernate-mapping</literal> "
+"zu definieren. Dadurch kann eine Klassenhierarchie ganz einfach durch "
+"Hinzufügen einer neuen Mapping-Datei erweitert werden. Sie müssen ein "
+"<literal>extends</literal>-Attribut im Subklassen-Mapping bestimmen, das "
+"eine zuvor gemappte Superklasse benennt. Hinweis: In der Vergangenheit "
+"machte dieses Feature die Anordnung der Mapping-Dokumente wichtig. Seit "
+"Hibernate3 ist die Anordnung der Mapping-Dateien nicht mehr relevant, wenn "
+"der \"extends\"-Schlüsselbegriff verwendet wird. Die Anordnung innerhalb "
+"einer einzelnen Mapping-Datei muss nach wie vor als Superklasse vor "
+"Subklasse definiert werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "\"Tabelle-pro-Klasse\"-Hierarchie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal> with the "
+"implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, and <literal>ChequePayment</literal>. The table per hierarchy "
+"mapping would display in the following way:"
+msgstr ""
+"Nehmen wir an, wir hätten ein Interface <literal>Payment</literal> mit den "
+"\"Implementoren\" <literal>CreditCardPayment</literal>, "
+"<literal>CashPayment</literal>, <literal>ChequePayment</literal>. Die "
+"\"Tabelle-pro-Klasse\"-Hierarchie würde wie folgt aussehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Exactly one table is required. There is a limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"Es wird genau eine Tabelle benötigt. Es gilt jedoch eine große Einschränkung "
+"bei dieser Mapping-Strategie: Durch Subklassen deklarierte Spalten wie "
+"<literal>CCTYPE</literal>, dürfen keine <literal>NOT NULL</literal>-"
+"Bedingungen besitzen."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "\"Tabelle-pro-Subklasse\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr "Das Mapping einer \"Tabelle-pro-Subklasse\" würde wie folgt aussehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table so the relational model is actually a "
+"one-to-one association."
+msgstr ""
+"Vier Tabellen werden benötigt. Die drei Subklassentabellen besitzen "
+"Assoziationen des Primärschlüssels zur Superklassentabelle (das relationale "
+"Modell ist also genau genommen eine \"One-to-One\"-Assoziation)."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "\"Tabelle-pro-Subklasse\", unter Verwendung eines Diskriminators"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's implementation of table per subclass does not require a "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass that requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement, but arguably more correct from a relational point of "
+"view. If you want to use a discriminator column with the table per subclass "
+"strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+"Bitte beachten Sie, dass Hibernates Implementierung von \"Tabelle-pro-"
+"Subklasse\" keine Diskriminatorspalte erfordert. Andere objekt/relationale "
+"Mapper verwenden eine andere Implementierung von \"Tabelle-pro-Subklasse\", "
+"die eine Art Diskriminatorspalte in der Superklassentabelle benötigt. Die "
+"von Hibernate benutzte Variante ist zwar hinsichtlich ihrer Implementierung "
+"komplexer, aber von einem relationalen Gesichtspunkt aus betrachtet "
+"korrekter. Falls Sie eine Diskriminatorspalte mit der \"Tabelle-pro-Subklasse"
+"\"-Strategie verwenden möchten, können Sie den Gebrauch von <literal>&lt;"
+"subclass&gt;</literal> und <literal>&lt;join&gt;</literal> wie folgt "
+"kombinieren:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"Durch die optionale <literal>fetch=\"select\"</literal>-Deklaration ruft "
+"Hibernate die <literal>ChequePayment</literal>-Subklassendaten unter "
+"Verwendung eines äußeren Verbunds (sog. \"outer Join\") bei Anfragen an die "
+"Superklasse nicht auf."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr ""
+"Das Mischen der \"Tabelle-pro-Klasse\"-Hierarchie mit \"Tabelle-pro-Subklasse"
+"\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even mix the table per hierarchy and table per subclass strategies "
+"using the following approach:"
+msgstr ""
+"Sie können sogar die \"Tabelle-pro-Klasse\"-Hierarchie mit \"Tabelle-pro-"
+"Subklasse\" mischen, indem Sie wie folgt vorgehen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;"
+"</literal>."
+msgstr ""
+"Bei allen diesen Mapping-Strategien wird eine polymorphe Assoziation zur "
+"Stamm-<literal>Payment</literal>-Klasse mittels <literal>&lt;many-to-one&gt;"
+"</literal> gemappt."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "\"Tabelle-pro-konkrete-Klasse\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are two ways we can map the table per concrete class strategy. First, "
+"you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+"Das Mappen der \"Tabelle-pro-konkrete-Klasse\"-Strategie kann auf zwei Arten "
+"erfolgen. Bei der ersten wird <literal>&lt;union-subclass&gt;</literal> "
+"verwendet."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"Drei Tabellen sind für die Subklassen involviert. Jede Tabelle definiert "
+"Spalten für alle Properties der Klasse, einschließlich vererbter Properties."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. The "
+"identity generator strategy is not allowed in union subclass inheritance. "
+"The primary key seed has to be shared across all unioned subclasses of a "
+"hierarchy."
+msgstr ""
+"Die Einschränkung bei dieser Vorgehensweise liegt darin, dass bei einer an "
+"die Superklasse gemappten Property der Spaltenname für alle "
+"Subklassentabellen gleich sein muss. (In zukünftigen Versionen von Hibernate "
+"wird dies möglicherweise anders sein). Die Identitätsgeneratorstrategie ist "
+"bei der Vererbung von Union-Subklassen nicht erlaubt, der Startparameter des "
+"Primärschlüssels (sog. \"primary key seed\") muss auf sämtlichen vereinten "
+"Subklassen einer Hierarchie geteilt werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. If it is not abstract, an additional table (it defaults to "
+"<literal>PAYMENT</literal> in the example above), is needed to hold "
+"instances of the superclass."
+msgstr ""
+"Falls Ihre Superklasse abstrakt ist, mappen Sie sie mit <literal>abstract="
+"\"true\"</literal>. Falls sie nicht abstrakt ist, wird natürlich eine "
+"zusätzliche Tabelle (Standard ist <literal>PAYMENT</literal> im vorherigen "
+"Beispiel) benötigt, um Instanzen der Superklasse zu enthalten."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr ""
+"\"Tabelle-pro-konkrete-Klasse\" unter Verwendung impliziter Polymorphie"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "Alternativ kann implizite Polymorphie angewendet werden:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice that the <literal>Payment</literal> interface is not mentioned "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> "
+"declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"Der Nachteil bei dieser Vorgehensweise liegt darin, dass Hibernate keine SQL "
+"<literal>UNION</literal>s bei der Ausführung polymorpher Anfragen generiert."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+"Bei dieser Mapping-Strategie wird in der Regel eine polymorphe Assoziation "
+"zu <literal>Payment</literal> mittels <literal>&lt;any&gt;</literal> gemappt."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "Das Mischen impliziter Polymorphie mit anderen Vererbungsmappings"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Since the subclasses are each mapped in their own <literal>&lt;class&gt;</"
+"literal> element, and since <literal>Payment</literal> is just an "
+"interface), each of the subclasses could easily be part of another "
+"inheritance hierarchy. You can still use polymorphic queries against the "
+"<literal>Payment</literal> interface."
+msgstr ""
+"Ein weiterer Aspekt ist bei diesem Mapping bemerkenswert. Da die Subklassen "
+"jeweils in ihrem eigenen <literal>&lt;class&gt;</literal>-Element gemappt "
+"sind (und da es sich bei <literal>Payment</literal> lediglich um ein "
+"Interface handelt), könnte jede der Subklassen ganz einfach Teil einer "
+"anderen Vererbungshierarchie sein! (Und es können nach wie vor polymorphe "
+"Anfragen am <literal>Payment</literal>-Interface erfolgen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once again, <literal>Payment</literal> is not mentioned explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface, for "
+"example <literal>from Payment</literal>, Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal>, but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"Erneut erwähnen wir <literal>Payment</literal> nicht explizit. Wird eine "
+"Anfrage am <literal>Payment</literal>-Interface ausgeführt - z.B. "
+"<literal>from Payment</literal> - so reagiert Hibernate automatisch mit "
+"Instanzen von <literal>CreditCardPayment</literal> (und dessen Subklassen, "
+"da diese ebenfalls <literal>Payment</literal> implementieren), "
+"<literal>CashPayment</literal> und <literal>ChequePayment</literal>, nicht "
+"aber mit Instanzen von <literal>NonelectronicTransaction</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "Einschränkungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are limitations to the \"implicit polymorphism\" approach to the table "
+"per concrete-class mapping strategy. There are somewhat less restrictive "
+"limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+"Es existieren bestimmte Einschränkungen bei der Vorgehensweise mittels "
+"\"impliziter Polymorphie\" bei der \"Tabelle-pro-konkrete-Klasse\" Mapping-"
+"Strategie. Die Einschränkungen bei <literal>&lt;union-subclass&gt;</literal>-"
+"Mappings sind wesentlich weniger restriktiv."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"Die folgende Tabelle zeigt die Einschränkungen der \"Tabelle-pro-konkrete-"
+"Klasse\"-Mappings und der impliziten Polymorphie in Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "Features von Vererbungsmappings"
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "Vererbungsstrategie"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "Polymorphes \"Many-to-Many\""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "Polymorphes \"One-to-One\""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "Polymorphes \"One-to-Many\""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "Polymorphes \"Many-to-Many\""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr "Polymorphes <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Polymorphe Anfragen"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "Polymorphe Verknüpfungen "
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Outer join fetching"
+msgstr "\"Outer-Join-Fetching\""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "table per class-hierarchy"
+msgstr "\"Tabelle-pro-Klasse\"-Hierarchie"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "&lt;Many-to-One&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "&lt;One-to-One&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "&lt;One-to-Many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "&lt;Many-to-Many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "s.get(Payment.class, id)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr "Polymorphes <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr "von Order o join o.payment p"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "Tabelle-pro-konkrete-Klasse (Union-Subklasse)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> (nur für <literal>inverse=\"true\"</"
+"literal>)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "Tabelle pro konkrete Klasse (implizite Polymorphie)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr "Polymorphes <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "&lt;many-to-any&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+msgstr ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+
+#, fuzzy
+#~ msgid "table per class-heirarchy"
+#~ msgstr "\"Tabelle-pro-Klasse\"-Hierarchie"
+
+#, fuzzy
+#~ msgid "Polymorphic many-to-one: <code>&lt;any&gt;</code>"
+#~ msgstr "Polymorphes \"Many-to-One\""
+
+#~ msgid "<para>table per subclass</para>"
+#~ msgstr "<para>\"Tabelle-pro-Subklasse\"</para>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ " <hibernate-mapping>\n"
+#~ "     <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value="
+#~ "\"D\">\n"
+#~ "          <property name=\"name\" type=\"string\"/>\n"
+#~ "     </subclass>\n"
+#~ " </hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "     &lt;subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-"
+#~ "value=\"D\"&gt;\n"
+#~ "          &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "     &lt;/subclass&gt;\n"
+#~ " &lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        <join table=\"CASH_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        &lt;join table=\"CASH_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CHEQUE_PAYMENT\" fetch=\"select\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class="
+#~ "\"Payment\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
+#~ "    <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
+#~ "    <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
+#~ "    <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
+#~ "    <column name=\"PAYMENT_CLASS\"/>\n"
+#~ "    <column name=\"PAYMENT_ID\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"payment\" meta-type=\"string\" id-type=\"long\"&gt;\n"
+#~ "    &lt;meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CASH\" class=\"CashPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CHEQUE\" class=\"ChequePayment\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_CLASS\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_ID\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
+#~ "    <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"CREDIT_CARD\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/"
+#~ "&gt;\n"
+#~ "    &lt;subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN"
+#~ "\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"TXN_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid "<term>table per subclass</term>"
+#~ msgstr "<entry>Tabelle-pro-Subklasse</entry>"
+
+#~ msgid "from Payment p"
+#~ msgstr "von Payment p"
+
+#~ msgid "supported"
+#~ msgstr "unterstützt"
+
+#~ msgid "&lt;any&gt;"
+#~ msgstr "&lt;any&gt;"
+
+#~ msgid "not supported"
+#~ msgstr "nicht unterstützt"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2976 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "Verbesserung der Performance"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "Abrufstrategien"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"Eine <emphasis>Abrufstrategie</emphasis> (sog. \"Fetching Strategy\") ist "
+"die Abrufstrategie, die Hibernate beim Abruf assoziierter Objekte verwendet, "
+"wenn die Anwendung die Assoziation navigieren muss. Abrufstrategien können "
+"in den O/R Mapping-Metadaten deklariert werden oder durch eine bestimmte HQL "
+"oder <literal>Criteria</literal>-Anfrage außer Kraft gesetzt werden."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3 definiert die folgenden Abrufstrategien:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>\"Join Fetching\"</emphasis> - Hibernate ruft unter Verwendung von "
+"<literal>OUTER JOIN</literal> die zugehörige Instanz oder Collection im "
+"selben <literal>SELECT</literal> auf."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>\"Select Fetching\"</emphasis> - ein zweites <literal>SELECT</"
+"literal> wird für den Abruf der assoziierten Entity oder Collection "
+"verwendet. Falls Sie nicht explizit das \"lazy Fetching\" (d.h. das "
+"Nachladen assoziierter Objekte bei Bedarf) durch Spezifizierung von "
+"<literal>lazy=\"false\"</literal> deaktivieren, wird dieses zweite \"Select"
+"\" nur ausgeführt, wenn Sie tatsächlich auf die Assoziation zugreifen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>\"Subselect Fetching\"</emphasis> - ein zweites <literal>SELECT</"
+"literal> wird verwendet, um die assoziierten Collections für alle in einer "
+"vorausgegangenen Anfrage oder Abruf erhaltenen Entities abzurufen. Falls Sie "
+"\"lazy Fetching\" nicht durch <literal>lazy=\"false\"</literal> explizit "
+"deaktivieren, wird dieses zweite \"Select\" nur ausgeführt, wenn Sie "
+"tatsächlich auf die Assoziation zugreifen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>Stapelabruf</emphasis> (sog. \"Batch Fetching\") - eine "
+"Optimierungsstrategie für die Abrufauswahl - Hibernate ruft einen Stapel von "
+"Entity-Instanzen oder Collections in einem einzelnen <literal>SELECT</"
+"literal> ab, indem es eine Liste von Primärschlüsseln oder Fremdschlüsseln "
+"bestimmt."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "Hibernate unterscheidet außerdem zwischen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>\"Immediate Fetching\"</emphasis> (d.h. sofortiger Abruf) - eine "
+"Assoziation, Collection oder Attribut werden beim Laden des Eigentümers "
+"sofort abgerufen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>\"Lazy Collection Fetching\"</emphasis> - eine Collection wird "
+"abgerufen, wenn die Anwendung einen Vorgang an dieser Collection aufruft. "
+"(Das ist die Standardeinstellung für Collections)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>\"Extra-lazy Collection Fetching\"</emphasis> - auf einzelne "
+"Elemente der Collection wird je nach Bedarf in der Datenbank zugegriffen. "
+"Hibernate versucht, nicht die gesamte Collection in den Speicher aufzurufen, "
+"außer es ist unbedingt nötig (besonders geeignet für sehr große Collections)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>\"Proxy Fetching\"</emphasis> (d.h. Proxy-Abruf) - eine einwertige "
+"Assoziation wird abgerufen, wenn eine andere Methode als Bezeichner-\"Getter"
+"\" am zugehörigen Objekt aufgerufen wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>\"No-Proxy-Fetching\"</emphasis> - eine einwertige Assoziation "
+"wird abgerufen, wenn auf die Instanzvariable zugegriffen wird. Im Vergleich "
+"zu Proxy-Fetching, ist diese Herangehensweise weniger \"lazy\" (die "
+"Assoziation wird sogar abgerufen wenn nur auf den Bezeichner zugegriffen "
+"wird), jedoch transparenter, da für die Anwendung kein Proxy sichtbar ist. "
+"Diese Vorgehensweise erfordert Buildtime Bytecode Instrumentierung und wird "
+"selten benötigt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>\"Lazy Attribute Fetching</emphasis> - ein Attribut oder eine "
+"einwertige Assoziation werden abgerufen, wenn auf die Instanzvariable "
+"zugegriffen wird. Diese Vorgehensweise erfordert Buildtime Bytecode "
+"Instrumentierung und wird selten benötigt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"Es gibt hier zwei orthogonale Begriffe: <emphasis>Wann</emphasis> die "
+"Assoziation abgerufen wird und <emphasis>wie</emphasis> sie abgerufen wird "
+"(welche SQL verwendet wird). Verwechseln Sie diese nicht! Wir verwenden "
+"<literal>fetch</literal>, um die Performance abzustimmen. Wir können "
+"<literal>lazy</literal> verwenden, um ein Interface (sog. \"contract\") "
+"darüber zu definieren, welche Daten in sämtlichen abgesetzten Instanzen "
+"einer bestimmten Klasse stets verfügbar sind."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "Der Umgang mit \"lazy\"-Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"In der Standardeinstellung verwendet Hibernate3 \"lazy\" Auswahlabruf für "
+"Collections und \"lazy\" Proxy-Abruf für einwertige Assoziationen. Diese "
+"Standardeinstellung ist für nahezu alle Assoziationen in den meisten "
+"Anwendungen sinnvoll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"<emphasis>Hinweis:</emphasis> Wenn Sie <literal>hibernate."
+"default_batch_fetch_size</literal> setzen, so verwendet Hibernate die "
+"Stapelabrufoptimierung für \"lazy\" Fetching (diese Optimierung kann auch "
+"auf feinkörnigerer Ebene aktiviert werden)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"Jedoch stellt sich beim \"lazy\" Fetching ein Problem, dessen Sie sich "
+"bewusst sein sollten: Der Zugriff auf eine \"lazy\" Assoziation außerhalb "
+"des Kontexts einer geöffneten Hibernate Session führt zu einer "
+"Ausnahmemeldung. Zum Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"Da die \"Permissions\"-Collection nicht initialisiert war als die "
+"<literal>Session</literal> geschlossen wurde, wird die Collection den Status "
+"nicht laden können. <emphasis>Hibernate unterstützt keine \"lazy\" "
+"Initialisierung für abgesetzte Objekte</emphasis>. Die Lösung besteht darin, "
+"den Code, der die Collection liest, erst unmittelbar ehe die Transaktion "
+"festgeschrieben wird, zu bewegen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"Alternativ könnten Sie eine nicht-\"lazy\" Collection oder Assoziation "
+"verwenden, indem Sie <literal>lazy=\"false\"</literal> für das "
+"Assoziationsmapping festlegen. Es ist jedoch vorgesehen, dass \"lazy\" "
+"Initialisierung für fast alle Collections und Assoziationen verwendet wird. "
+"Wenn Sie in Ihrem Objektmodell zu viele nicht-\"lazy\" Assoziationen "
+"definieren, wird Hibernate am Ende für jede Transaktion die gesamte "
+"Datenbank in den Speicher abrufen müssen!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"Andererseits wollen wir oft \"Join\"-Fetching (das von Natur aus nicht \"lazy"
+"\" ist) anstelle des Auswahlabrufs (sog. \"Select-Fetching\") in einer "
+"bestimmten Transaktion verwenden. Wir wollen nun einen Blick darauf werfen, "
+"wie eine Abrufstrategie individuell angepasst werden kann. In Hibernate3 ist "
+"der Mechanismus zur Auswahl einer Abrufstrategie für einwertige "
+"Assoziationen und Collections identisch."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "Abstimmung von Abrufstrategien"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"Der Auswahlabruf - \"Select Fetching\" (Standard) ist extrem anfällig für N"
+"+1 Auswahlprobleme, weswegen sich die Aktivierung von \"Join-Fetching\" im "
+"Mapping-Dokument empfiehlt:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"Die im Mapping-Dokument definierte <literal>fetch</literal>-Strategie hat "
+"Auswirkungen auf:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr "Abruf mittels <literal>get()</literal> oder <literal>load()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr "einem impliziten Abruf, der beim Navigieren der Assoziation erfolgt"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "<literal>Criteria</literal>-Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "HQL-Anfragen, wenn <literal>subselect</literal>-Abruf verwendet wird"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"Unabhängig davon, welche Abrufstrategie Sie verwenden wird das definierte "
+"nicht-\"lazy\" Diagramm garantiert im Speicher geladen. Bitte beachten Sie, "
+"dass dies zur Verwendung von mehreren unmittelbaren \"Selects\" bei der "
+"Ausführung einer bestimmten HQL-Anfrage führen kann."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"Normalerweise wird das Mapping-Dokument nicht für die Anpassung des Abrufs "
+"verwendet. Stattdessen behalten wir das Standardverhalten und setzen es "
+"mittels <literal>left join fetch</literal> in HQL für eine bestimmte "
+"Transaktion außer Kraft. Dadurch setzt Hibernate bei der Assoziation im "
+"ersten \"Select\" unter Verwendung eines \"outer Join\" \"eager Fetching\" "
+"ein. Im <literal>Criteria</literal>-Anfragen API, würden Sie "
+"<literal>setFetchMode(FetchMode.JOIN)</literal> benutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"Falls Sie die verwendete Abrufstrategie irgendwann ändern möchten, so können "
+"Sie dies durch <literal>get()</literal> oder <literal>load()</literal> tun, "
+"verwenden Sie einfach eine <literal>Criteria</literal>-Anfrage, zum Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"(Das ist Hibernates Äquivalent zu dem, was einige ORM-Lösungen als Abrufplan "
+"oder \"Fetch Plan\" bezeichnen)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"Eine ganz andere Art Probleme mit N+1 \"Selects\" zu vermeiden, ist die "
+"Verwendung des Cachespeichers der zweiten Ebene."
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "Einendige Assoziationsproxies"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"\"Lazy-Fetching\" für Collections wird unter Verwendung von Hibernates "
+"eigener Implementierung von persistenten Klassen implementiert. Für \"lazy-"
+"Fetching\" in einendigen Assoziationen wird jedoch ein anderer Mechanismus "
+"benötigt. Die Ziel-Entity der Assoziation muss geproxied werden. Hibernate "
+"implementiert \"lazy\" Initialisierungsproxies für persistente Objekte unter "
+"Verwendung von Runtime Bytecode-Steigerung (durch die hervorragende CGLIB-"
+"Bibliothek)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"Im Standard generiert Hibernate3 Proxies (beim Startup) für alle "
+"persistenten Klassen und verwendet diese, um das \"lazy-Fetching\" von "
+"<literal>many-to-one</literal> und <literal>one-to-one</literal>-"
+"Assoziationen zu aktivieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"Die Mapping-Datei kann mit dem <literal>proxy</literal>-Attribut ein als "
+"Proxy-Interface zu verwendendes Interface deklarieren. In der "
+"Standardeinstellung verwendet Hibernate eine Subklasse der Klasse. "
+"<emphasis>Beachten Sie, das die geproxiete Klasse einen Standard-Konstruktor "
+"mit mindestens Paket-Sichtbarkeit implementieren muss. Wir empfehlen diesen "
+"Konstruktor für alle persistenten Klassen!</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr ""
+"Es gibt einige Fallstricke, derer man sich bewusst sein sollte, wenn man "
+"diese Vorgehensweise zum Beispiel auf polymorphe Klassen ausweitet."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"Zunächst einmal werden Instanzen von <literal>Cat</literal> hinsichtlich "
+"ihres Datentyps niemals in <literal>DomesticCat</literal> konvertierbar "
+"sein, selbst wenn die zu Grunde liegende Instanz eine Instanz von "
+"<literal>DomesticCat</literal> ist:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "Zweitens ist es möglich, Proxy <literal>==</literal> zu brechen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"Allerdings ist die Situation nicht so schlimm wie sie aussieht. Obwohl wir "
+"jetzt zwei Verweise auf verschiedene Proxy-Objekte besitzen, so bleibt die "
+"zu Grunde liegende Instanz nach wie vor dasselbe Objekt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"Drittens können Sie kein CGLIB-Proxy für eine <literal>final</literal>-"
+"Klasse oder eine Klasse mit einer <literal>final</literal>-Methode verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"Wenn Ihr persistentes Objekt bei der Instantiierung Ressourcen erhält (z.B. "
+"Initialisierungsprogramme oder den Standard-Konstruktor), so erhält auch das "
+"Proxy diese Ressourcen. Die Proxy-Klasse ist eine Subklasse der persistenten "
+"Klasse."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"Diese Probleme wurzeln in fundamentalen Einschränkungen des "
+"Einzelvererbungsmodells in Java. Falls Sie diese Probleme umgehen möchten, "
+"muss jede Ihrer persistenten Klassen ein Interface implementieren, das seine "
+"Business-Methoden deklariert. Diese Interfaces sollten Sie z.B. in der "
+"Mapping-Datei spezifizieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"Zunächst einmal werden Instanzen von <literal>Cat</literal> hinsichtlich "
+"ihres Datentyps niemals in <literal>DomesticCat</literal> konvertierbar "
+"sein, selbst wenn die zu Grunde liegende Instanz eine Instanz von "
+"<literal>DomesticCat</literal> ist:"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>full join</literal> (in der Regel nicht sehr nützlich)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"Beziehungen werden ebenfalls \"lazy\" initialisiert. Das bedeutet, dass Sie "
+"sämtliche Properties als Typ <literal>Cat</literal>, nicht <literal>CatImpl</"
+"literal> deklarieren müssen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+"Bestimmte Vorgänge benötigen <emphasis>keine</emphasis> Proxy-Initialisierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>, falls die persistente Klasse <literal>equals()</"
+"literal> nicht außer Kraft setzt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>, falls die persistente Klasse <literal>hashCode"
+"()</literal> nicht außer Kraft setzt"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "Die \"Getter\"-Methode des Bezeichners"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate erkennt persistente Klassen, die <literal>equals()</literal> oder "
+"<literal>hashCode()</literal> außer Kraft setzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"Durch Auswahl von <literal>lazy=\"no-proxy\"</literal> anstelle des "
+"standardmäßigen <literal>lazy=\"proxy\"</literal>, lassen sich mit der Typ-"
+"Umwandlung zusammenhängende Probleme vermeiden. Es wird jedoch \"Buildtime "
+"Bytecode\"-Instrumentierung benötigt und sämtliche Vorgänge führen zu einer "
+"unmittelbaren Proxy-Initialisierung."
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "Initialisierung von Collections und Proxies"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"Eine <literal>LazyInitializationException</literal>-Ausnahme wird durch "
+"Hibernate gemeldet, wenn auf eine nicht initialisierte Collection oder Proxy "
+"außerhalb des Gültigkeitsbereichs der <literal>Session</literal> zugegriffen "
+"wird, d.h. wenn die Entity, die die Collection besitzt oder einen Verweis "
+"auf das Proxy hat, sich in abgesetztem Status befindet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"In manchen Fällen muss sichergestellt werden, dass ein Proxy oder eine "
+"Collection initialisiert ist, ehe die <literal>Session</literal> geschlossen "
+"wird. Natürlich kann die Initialisierung durch Aufruf von <literal>cat.getSex"
+"()</literal> oder <literal>cat.getKittens().size()</literal> immer auch "
+"erzwungen werden. Allerdings ist das recht verwirrend für Leser des Codes "
+"und nicht praktisch für generischen Code."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"Die statischen Methoden <literal>Hibernate.initialize()</literal> und "
+"<literal>Hibernate.isInitialized()</literal> liefern der Anwendung eine "
+"praktische Art mit nach \"lazy\" Art initialisierten Collections oder "
+"Proxies umzugehen. <literal>Hibernate.initialize(cat)</literal> erzwingt die "
+"Initialisierung einesProxy, <literal>cat</literal> solange dessen "
+"<literal>Session</literal> noch geöffnet ist. <literal>Hibernate.initialize"
+"( cat.getKittens() )</literal> hat eine ähnliche Wirkung auf die Collection "
+"von \"kittens\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"Eine weitere Möglichkeit ist es, die <literal>Session</literal> geöffnet zu "
+"halten, bis alle benötigten Collections und Proxies geladen sind. In einigen "
+"Anwendungsarchitekturen - insbesondere wenn der Code unter Verwendung von "
+"Hibernate auf Daten zugreift und der diese benutzende Code sich in "
+"unterschiedlichen Anwendungsschichten oder verschiedenen physikalischen "
+"Prozessen befindet, kann es problematisch sein sicherzustellen, dass die "
+"<literal>Session</literal> bei der Initialisierung der Collection geöffnet "
+"ist. Es gibt zwei einfache Wege, damit umzugehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"In einer Web-basierten Anwendung kann die <literal>Session</literal> nur am "
+"Ende der Benutzeranfrage und nachdem das Rendering der Ansicht (das "
+"<emphasis>Offene Session in Ansicht</emphasis>-Modell) abgeschlossen ist, "
+"mittels eines Servlet-Filters geschlossen werden. Natürlich stellt dies "
+"große Anforderungen auf den ordnungsgemäßen Umgang mit Ausnahmen Ihrer "
+"Anwendungsinfrastruktur. Es ist von maßgeblicher Bedeutung, dass die "
+"<literal>Session</literal> geschlossen und die Transaktion beendet ist, ehe "
+"zum Benutzer zurückgekehrt wird, selbst wenn während des Renderings der "
+"Ansicht eine Ausnahme gemeldet wird. Beispiele für dieses \"Offene Session "
+"in Ansicht\"-Modell finden Sie im Hibernate Wiki."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"In einer Anwendung mit separatem Business-\"Tier\" muss die Business-Logik "
+"alle Collections auf deren Verwendung durch den Web-\"Tier\" vor der "
+"Rückkehr \"vorbereiten\". Das bedeutet, dass der Business-Tier sämtliche "
+"Daten laden und alle bereits initialisierten Daten an den Präsentations-/Web-"
+"Tier, der in einem bestimmten Fall benötigt wird, wiedergeben muss. In der "
+"Regel erfolgt durch die Anwendung der Aufruf <literal>Hibernate.initialize()"
+"</literal> für jede Collection, die im Web-Tier benötigt werden wird (dieser "
+"Aufruf muss erfolgen, ehe die Session geschlossen wird) oder die Collection "
+"wird nach \"eager\"-Art mittels einer Hibernate Anfrage mit einer "
+"<literal>FETCH</literal>-Klausel oder <literal>FetchMode.JOIN</literal> in "
+"<literal>Criteria</literal> abgerufen. Dies ist in der Regel einfacher, wenn "
+"Sie das <emphasis>Command</emphasis>-Modell anstelle einer <emphasis>Session "
+"Fassade</emphasis> einsetzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"Sie können auch zuvor geladene Objekte mittels <literal>merge()</literal> or "
+"<literal>lock()</literal> an eine neue <literal>Session</literal> anhängen, "
+"ehe Sie auf nicht initialisierte Collections (oder andere Proxies) "
+"zugreifen. Hibernate tut dies nicht von selbst und <emphasis>sollte</"
+"emphasis> es auch nicht automatisch tun, da es dadurch zu Ad-hoc-"
+"Transaktionssemantik käme!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"Manchmal möchten Sie eine große Collection nicht initialisieren, aber "
+"benötigen dennoch Informationen (etwa deren Größe) oder einen Untersatz der "
+"Daten."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"Sie können einen Collection-Filter verwenden, um die Größe der Collection zu "
+"ermitteln ohne diese zu initialisieren:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"Die <literal>createFilter()</literal>-Methode wird außerdem benutzt, um "
+"effizient Untersätze einer Collection abzurufen, ohne die gesamte Collection "
+"zu initialisieren:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "Die Verwendung von Stapelabruf (\"Batch-Fetching\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"Hibernate kann den Stapelabruf effizient nutzen, d.h. Hibernate kann mehrere "
+"nicht initialisierte Proxies laden, wenn auf einen Proxy zugegriffen wird "
+"(oder Collections). Beim Stapelabruf handelt es sich um eine Optimierung der "
+"\"lazy\" Auswahlabruf-Strategie (\"Select-Fetching\"). Es gibt zwei Arten, "
+"auf die sich der Stapelabruf abstimmen lässt: Auf der Klassen- sowie auf der "
+"Collection-Ebene."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"Der Stapelabruf für Klassen/Entities ist leichter zu verstehen. Stellen Sie "
+"sich vor, Sie hätten zur Runtime folgende Situation: Sie haben 25 "
+"<literal>Cat</literal>-Instanzen in einer <literal>Session</literal> "
+"geladen, jede <literal>Cat</literal> besitzt eine Referenz zu ihrem "
+"<literal>owner</literal>, einer <literal>Person</literal>. Die "
+"<literal>Person</literal>-Klasse ist mit einem Proxy <literal>lazy=\"true\"</"
+"literal> gemappt. Falls Sie nun über alle \"Cats\" hinweg iterieren und für "
+"jede <literal>getOwner()</literal> aufrufen, so wird Hibernate in der "
+"Standardeinstellung 25 <literal>SELECT</literal>-Anweisungen ausführen, um "
+"die geproxieten Besitzer zu erhalten. Sie können dieses Verhalten durch "
+"Bestimmung eines <literal>batch-size</literal> im Mapping von "
+"<literal>Person</literal> festlegen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+"Hibernate führt nun nur drei Anfragen aus, das Muster lautet 10, 10, 5."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"Sie können auch den Stapelabruf für Collections aktivieren. Wenn zum "
+"Beispiel jede <literal>Person</literal> eine \"lazy\" Collection von "
+"<literal>Cat</literal>s besitzt und zum aktuellen Zeitpunkt 10 Personen in "
+"der <literal>Sesssion</literal> geladen sind, so wird die Iterierung über "
+"alle Personen 10 <literal>SELECT</literal>s generieren, eines für jeden "
+"Aufruf von <literal>getCats()</literal>. Falls Sie den Stapelabruf für die "
+"<literal>cats</literal>-Collection im Mapping von <literal>Person</literal> "
+"aktivieren, kann Hibernate Collections vorab abrufen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"Bei einem <literal>batch-size</literal> von 8, lädt Hibernate 3, 3, 3, 1 "
+"Collections in vier <literal>SELECT</literal>s. Auch hier hängt der Wert des "
+"Attributs von der zu erwartenden Anzahl nicht initialisierter Collections in "
+"einer bestimmten <literal>Session</literal> ab."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"Der Stapelabruf von Collections ist besonders hilfreich, wenn Sie einen "
+"verschachtelten Baum von Posten besitzen, d.h. das typische \"Bill-of-"
+"Materials\"-Modell. (Obwohl ein <emphasis>verschachtelter Satz</emphasis> "
+"oder ein <emphasis>realisierter Pfad</emphasis> eine möglicherweise bessere "
+"Option für \"read-mostly\"-Bäume ist)."
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "Die Verwendung von \"Subselect-Fetching\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"Falls eine \"lazy\" Collection oder ein einwertiges Proxy abgerufen werden "
+"muss, so lädt Hibernate alle und führt die ursprüngliche Anfrage in einer "
+"Unterauswahl (\"Subselect\") erneut aus. Das funktioniert auf diesselbe "
+"Weise wie Stapelabruf, ohne das stückweise Laden."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Fetch profiles"
+msgstr "Abrufstrategien"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "Die Verwendung von \"Lazy-Property-Fetching\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"Hibernate3 unterstützt das \"lazy\" Fetching einzelner Properties. Diese "
+"Optimierungstechnik ist auch unter dem Namen <emphasis>Abrufgruppen</"
+"emphasis> (sog. Fetch Groups\") bekannt. Bitte beachten Sie, dass es sich "
+"hierbei meist um ein Marketing-Feature handelt, da in der Praxis die "
+"Optimierung des Lesens von Reihen wesentlich wichtiger ist als die "
+"Optimierung des Lesens von Spalten. Jedoch kann es in manchen Fällen "
+"nützlich sein, einige Properties einer Klasse zu laden, wenn Stammtabellen "
+"hunderte von Spalten besitzen und das Datenmodell nicht verbessert werden "
+"kann."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"Um das \"lazy\" Laden von Properties zu aktivieren, setzen Sie das "
+"<literal>lazy</literal>-Attribut auf Ihr bestimmtes Property-Mapping:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"Das \"lazy\" Property Laden erfordert Buildtime-Bytecode Instrumentierung! "
+"Falls Ihre persistenten Klassen nicht erweitert sind, so übergeht Hibernate "
+"stillschweigend die \"lazy\" Property-Einstellungen und verwendet erneut "
+"unmittelbaren Abruf (sog. \"immediate Fetching\")."
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr "Für die Bytecode-Instrumentierung verwenden Sie folgende Ant-Funktion:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"Eine andere (möglicherweise bessere) Art der Vermeidung unnötigen Lesens von "
+"Spalten besteht zumindest bei \"read-only\" (schreibgeschützten) "
+"Transaktionen in der Verwendung der Projektionsfeatures von HQL- oder "
+"Kriterienanfragen. Dadurch wird Buildtime Bytecode-Verarbeitung vermieden, "
+"und dies ist daher die bevorzugte Lösung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"Mittels <literal>fetch all properties</literal> in HQL können Sie das "
+"übliche \"eager Fetching\" von Properties erzwingen."
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "Das Cache der zweiten Ebene"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Bei einer Hibernate <literal>Session</literal> handelt es sich um ein Cache "
+"persistenter Daten auf Transaktionsebene. Es ist möglich, auf Klasse-nach-"
+"Klasse und Collection-nach-Collection-Basis ein Cache auf Cluster- oder JVM-"
+"Ebene zu konfigurieren (<literal>SessionFactory</literal>-Ebene). Sie können "
+"sogar in ein geclustertes Cache einbinden. Lassen Sie jedoch Vorsicht "
+"walten. Caches sind nie über Änderungen durch eine andere Anwendung im "
+"persistenten Speicher informiert (obwohl sie so konfiguriert werden können, "
+"dass gecachte Daten in regelmäßigen Abständen gelöscht werden)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"Sie haben die Möglichkeit Hibernate mitzuteilen, welche Caching-"
+"Implementierung es verwenden soll, indem Sie den Namen der Klasse bestimmen, "
+"die <literal>org.hibernate.cache.CacheProvider</literal> unter Verwendung "
+"der Property <literal>hibernate.cache.provider_class</literal> "
+"implementiert. Hibernate kommt gebündelt mit einer Reihe eingebauter "
+"Integrationen mit Open Source Cache-Providern (unten aufgeführt); Sie können "
+"zusätzlich Ihren eigenen implementieren und diesen wie oben beschrieben "
+"einbinden. Bitte beachten Sie, dass Versionen, die älter sind als 3.2 "
+"standardmäßig EhCache als Standard-Cache-Provider verwenden, dies ist seit "
+"3.2 jedoch nicht mehr der Fall."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "Cache-Provider"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "Cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "Provider-Klasse"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "Typ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "Cluster-sicher"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "Anfragen-Cache unterstützt"
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr "Hash-Tabelle (nicht für den Produktionsgebrauch vorgesehen)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "org.hibernate.cache.HashtableCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "Speicher"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "org.hibernate.cache.EhCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "Speicher, Disk"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "org.hibernate.cache.OSCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "org.hibernate.cache.SwarmCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "geclustert (ip multicast)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "ja (geclusterte Außerkraftsetzung)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr "JBoss TreeCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "org.hibernate.cache.TreeCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "geclustert (ip multicast), transaktional"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "ja (Replikation)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "ja (clock sync req.)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "JBoss Cache 2"
+msgstr "JBoss TreeCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "org.hibernate.transaction.JDBCTransactionFactory"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "ja (geclusterte Außerkraftsetzung)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "Cache-Mappings"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"Das <literal>&lt;cache&gt;</literal>-Element des Mappings einer Klasse oder "
+"Collection besitzt folgende Form:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal> (erforderlich) bestimmt die Caching-Strategie: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> oder <literal>read-only</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (optional, im Standard der Rollenname von Klasse "
+"oder Collection) bestimmt den Namen des Cache-Bereichs der zweiten Ebene"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (optional, standardmäßig <literal>all</literal>) "
+"<literal>non-lazy</literal> bestimmt, dass Properties der mit <literal>lazy="
+"\"true\"</literal> gemappten Entity nicht gecacht werden können, wenn auf "
+"Attributebene \"lazy Fetching\" aktiviert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"Alternativ (vorzugsweise?) können Sie <literal>&lt;class-cache&gt;</literal> "
+"und <literal>&lt;collection-cache&gt;</literal>-Elemente in "
+"<literal>hibernate.cfg.xml</literal> bestimmen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"Das <literal>usage</literal>-Attribut bestimmt eine <emphasis>Cache-"
+"Nebenläufigkeitsstrategie</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "Strategie: \"read only\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"Falls Ihre Anwendungen Instanzen einer persistenten Klasse lesen, aber nie "
+"modifizieren muss, kann ein <literal>read-only</literal>-Cache verwendet "
+"werden. Das ist die einfachste und leistungsfähigste Strategie. Sie ist "
+"sogar bei der Anwendung in einem Cluster völlig sicher."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "Strategie: \"read/write\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"Falls die Anwendung Daten aktualisieren muss, so ist ein <literal>read-"
+"write</literal>-Cache eine geeignete Wahl. Diese Cache-Strategie sollte "
+"jedoch nie dann benutzt werden, wenn eine serialisierbare "
+"Transaktionsisolationsebene benötigt wird. Falls das Cache in einer JTA-"
+"Umgebung verwendet wird, müssen Sie die Property <literal>hibernate."
+"transaction.manager_lookup_class</literal> bestimmen und eine Strategie für "
+"die Abfrage des JTA <literal>TransactionManager</literal> benennen. In "
+"anderen Umgebungen sollten Sie sicherstellen, dass die Transaktion beendet "
+"ist, wenn <literal>Session.close()</literal> oder <literal>Session.disconnect"
+"()</literal> aufgerufen wird. Falls Sie diese Strategie in einem Cluster "
+"benutzen möchten, sollten Sie sicherstellen, dass die zu Grunde liegende "
+"Cache-Implementierung \"Locking\" (Sperren) unterstützt. Die eingebauten "
+"Cache-Provider tun dies <emphasis>nicht</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "Strategie: \"nonstrict read/write\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"Falls die Anwendung nur von Zeit zu Zeit Daten aktualisieren muss (d.h. wenn "
+"es sehr unwahrscheinlich ist, dass zwei Transaktionen denselben Posten "
+"gleichzeitig zu aktualisieren versuchen würden) und keine strenge "
+"Transaktionsisolation erforderlich ist, so kann ein <literal>nonstrict-read-"
+"write</literal>-Cache eine passende Wahl sein. Wird das Cache in einer JTA-"
+"Umgebung verwendet, so müssen Sie die <literal>hibernate.transaction."
+"manager_lookup_class</literal> festlegen. In anderen Umgebungen sollten Sie "
+"sicherstellen, dass die Transaktion abgeschlossen ist, wenn <literal>Session."
+"close()</literal> oder <literal>Session.disconnect()</literal> aufgerufen "
+"wird."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "Strategie: transaktional"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"Die <literal>transactional</literal> Cache-Strategie liefert Support für "
+"vollständig transaktionale Cache-Provider wie etwa JBoss TreeCache. Ein "
+"solches Cache kann nur in einer JTA-Umgebung verwendet werden, und Sie "
+"müssen <literal>hibernate.transaction.manager_lookup_class</literal> "
+"bestimmen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "Cache-Nebenläufigkeitsstrategie-Support"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"Keiner der Cache-Provider unterstützt alle Cache-Nebenläufigkeitsstrategien. "
+"Die folgende Tabelle zeigt, welche Provider mit welchen "
+"Nebenläufigkeitsstrategien kompatibel sind."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"Keiner der Cache-Provider unterstützt alle Cache-Nebenläufigkeitsstrategien. "
+"Die folgende Tabelle zeigt, welche Provider mit welchen "
+"Nebenläufigkeitsstrategien kompatibel sind."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr "Cache-Nebenläufigkeitsstrategie-Support"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "read-only"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "nonstrict-read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transactional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "Management der Caches"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"Jedesmal wenn ein Objekt an <literal>save()</literal>, <literal>update()</"
+"literal> oder <literal>saveOrUpdate()</literal> weitergegeben wird und Sie "
+"ein Objekt unter Verwendung von <literal>load()</literal>, <literal>get()</"
+"literal>, <literal>list()</literal>, <literal>iterate()</literal> oder "
+"<literal>scroll()</literal> abrufen, wird das Objekt dem internen Cache der "
+"<literal>Session</literal> hinzugefügt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"Wenn anschließend <literal>flush()</literal> aufgerufen wird, wird der "
+"Status des Objekts mit der Datenbank synchronisiert. Falls Sie nicht "
+"möchten, dass diese Synchronisierung stattfindet oder falls Sie eine riesige "
+"Anzahl von Objekten bearbeiten und effizient mit dem Speicher haushalten "
+"müssen, so können mittels der <literal>evict()</literal>-Methode das Objekt "
+"und dessen Collections aus dem Cache der ersten Ebene entfernt werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"Die <literal>Session</literal> bietet außerdem eine <literal>contains()</"
+"literal>-Methode um zu bestimmen, ob eine Instanz zu dem Session-Cache "
+"gehört."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"Um sämtliche Objekte vollständig aus dem Session-Cache zu entfernen, "
+"verwenden Sie <literal>Session.clear()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"Für das Cache der zweiten Ebene gibt es in der <literal>SessionFactory</"
+"literal> definierte Methoden, um den gecachten Status einer Instanz, "
+"gesamten Klasse, Collection-Instanz oder der gesamten Collection-Rolle zu "
+"räumen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"Mit <literal>CacheMode</literal> wird gesteuert, wie eine bestimmte Session "
+"mit dem Cache der zweiten Ebene interagiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - liest Posten aus dem und schreibt "
+"Posten in das Cache der zweiten Ebene"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal> - liest Posten aus dem Cache der zweiten "
+"Ebene, schreibt jedoch nichts in das Cache der zweiten Ebene außer bei "
+"Aktualisierung der Daten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal> - schreibt Posten in das Cache der zweiten "
+"Ebene, aber liest nicht aus dem Cache der zweiten Ebene"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal> - schreibt Posten in das Cache der "
+"zweiten Ebene, aber liest nicht aus dem Cache der zweiten Ebene, umgeht die "
+"Wirkung von <literal>hibernate.cache.use_minimal_puts</literal> und erzwingt "
+"ein erneutes Laden des Cache der zweiten Ebene für alle aus der Datenbank "
+"gelesenen Objekte."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"Um die Inhalte eines Cache der zweiten Ebene oder eines Cache-Bereichs zu "
+"durchsuchen, verwenden Sie die <literal>Statistics</literal>-API:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"Sie werden die Statistik aktivieren müssen und können optional Hibernate "
+"zwingen, Cache-Eingaben in einem lesbaren Format zu halten:"
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "Das Anfragen-Cache"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"Ergebnissätze von Anfragen können ebenfalls gecacht werden. Das ist jedoch "
+"nur für Anfragen, die oft und mit denselben Parametern laufen, sinnvoll. Um "
+"das Anfragen-Cache zu benutzen, müssen Sie es zuerst aktivieren:"
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"Bei den meisten Anfragen ist Caching von keinem großen Nutzen, daher werden "
+"Anfragen in der Standardeinstellung nicht gecacht. Um Caching zu aktivieren "
+"rufen Sie <literal>Query.setCacheable(true)</literal> auf. Dieser Aufruf "
+"ermöglicht es der Anfrage nach bestehenden Cache-Ergebnissen zu suchen oder "
+"ihre Ergebnisse dem Cache hinzuzufügen, wenn sie ausgeführt wird."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Query cache regions"
+msgstr "Anfragen-Cache unterstützt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"Falls Sie eine feinstufige Steuerung der Fälligkeitsrichtlinien benötigen, "
+"können Sie einen benannten Cache-Bereich für eine bestimmte Anfrage "
+"festlegen, indem Sie <literal>Query.setCacheRegion()</literal> aufrufen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"Falls die Anfrage ein erneutes Laden des Cache-Bereichs der Anfrage "
+"erzwingen soll, so rufen Sie <literal>Query.setCacheMode(CacheMode.REFRESH)</"
+"literal> auf. Das ist besonders in Fällen von Nutzen, wenn die zu Grunde "
+"liegenden Daten mittels eines separaten Vorgangs (d.h. nicht durch Hibernate "
+"modifiziert) aktualisiert wurden. Dadurch ist es der Anwendung möglich, "
+"selektiv bestimmte Ergenissätze der Anfrage neu zu laden. Das ist eine "
+"effizientere Alternative als die Räumung eines Cache-Bereichs der Anfrage "
+"durch <literal>SessionFactory.evictQueries()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "Die Perfomance der Collection verstehen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "Taxonomie"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "Hibernate unterscheidet drei Grundtypen von Collections:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "Collections von Werten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "one-to-many associations"
+msgstr "\"One-to-Many\"-Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "many-to-many associations"
+msgstr "\"Many-to-Many\"-Assoziationen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"Diese Klassifizierung unterscheidet die verschiedenen Tabellen- und "
+"Fremdschlüsselbeziehungen, aber sagt so gut wie nichts über das relationale "
+"Modell aus. Um die relationale Struktur und Performance-Eigenschaften "
+"vollständig zu verstehen, müssen wir die Struktur des von Hibernate zur "
+"Aktualisierung und Löschung von Reihen der Collection verwendeten "
+"Primärschlüssels berücksichtigen. Das legt die folgende Klassifizierung nahe:"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "indizierte Collections"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "Sets"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "Bags"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"Alle indizierten Collections (Maps, Listen, Arrays) besitzen einen "
+"Primärschlüssel, der aus den <literal>&lt;key&gt;</literal> und <literal>&lt;"
+"index&gt;</literal>-Spalten besteht. In diesem Fall sind Aktualisierungen "
+"der Collection sehr effizient - der Primärschlüssel kann effizient indiziert "
+"werden und eine bestimmte Reihe kann effizient lokalisiert werden, wenn "
+"Hibernate diese zu aktualisieren oder löschen versucht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"Sets besitzen einen Primärschlüssel, der aus <literal>&lt;key&gt;</literal> "
+"und Elementspalten besteht. Das kann für einige Typen von Collection-Element "
+"weniger effizient sein, insbesondere im Fall von zusammengesetzten Elementen "
+"oder großem Text oder Binärfeldern ist es möglich, dass die Datenbank einen "
+"komplexen Primärschlüssel nicht so effizient indizieren kann. Andererseits "
+"kann für \"One-to-Many\" und \"Many-to-Many\"-Assoziationen - insbesondere "
+"bei synthetischem Bezeichner - dieselbe Effizienz existieren."
+"(Nebenbemerkung: Falls <literal>SchemaExport</literal> tatsächlich den "
+"Primärschlüssel eines <literal>&lt;set&gt;</literal> für Sie erstellen soll, "
+"so müssen Sie alle Spalten als <literal>not-null=\"true\"</literal> "
+"deklarieren)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal>-Mappings definieren einen "
+"Surrogatschlüssel, so dass sie sich immer sehr effizient aktualisieren "
+"lassen. Genau genommen, ist das der beste Fall."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"Mit den Bags verhält es sich am schwierigsten. Da eine Bag doppelte "
+"Elementwerte gestattet und keine Indexspalte besitzt, kann kein "
+"Primärschlüssel definiert werden. Hibernate hat keine Möglichkeit, doppelte "
+"Reihen zu unterscheiden. Hibernate löst dieses Problem, indem es die "
+"Collection bei jeder Änderung vollständig entfernt (in einem einzelnen "
+"<literal>DELETE</literal>) und erneut herstellt. Das kann jedoch sehr "
+"ineffizient sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"Bitte beachten Sie, dass für eine \"One-to-Many\"-Assoziation der "
+"\"Primärschlüssel\" möglicherweise nicht der physische Primärschlüssel der "
+"Datenbanktabelle ist - aber selbst in diesem Fall ist die vorherige "
+"Klassifizierung noch sinnvoll. (Sie spiegelt nach wie vor wider, wie "
+"Hibernate einzelne Reihen der Collection \"lokalisiert\")."
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr ""
+"Listen, Maps, \"idbags\" und Sets sind die am effizientesten zu "
+"aktualisierenden Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"Die vorangegangene Erläuterung zeigt deutlich, dass indizierte Collections "
+"und (in der Regel) Sets hinsichtlich des Hinzufügens, Entfernens und "
+"Aktualisierens von Reihen die effizientesten Vorgänge erlauben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"Es gibt wohl einen weiteren Vorteil, den indizierte Collections vor Sets für "
+"\"Many-to-Many\"-Assoziationen oder Collections von Werten besitzen. "
+"Aufgrund der Struktur eines <literal>Set</literal>, führt Hibernate nie ein "
+"<literal>UPDATE</literal> einer Reihe durch, wenn ein Element \"verändert\" "
+"ist. Änderungen an einem <literal>Set</literal> laufen immer mittels "
+"<literal>INSERT</literal> und <literal>DELETE</literal> (einzelner Reihen) "
+"ab. Auch hier gilt diese Überlegung nicht für \"One-to-Many\"-Assoziationen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"Nachdem wir gesehen haben, dass Arrays nicht \"lazy\" sein können würden wir "
+"schließen, dass Listen, Maps und \"idbags\" die performantesten (nicht-"
+"inversen) Collection-Typen gefolgt von Sets sind. Sets sind erwartungsgemäß "
+"die gängigsten Arten von Collections in Hibernate Anwendungen. Der Grund "
+"hierfür liegt in der Tatsache, dass die \"Set\"-Semantik im relationalen "
+"Modell die natürlichste ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"In guten Hibernate Domain-Modellen sehen wir jedoch, dass es sich bei den "
+"meisten Collections um \"One-to-Many\"-Assoziationen mit <literal>inverse="
+"\"true\"</literal> handelt. Für diese Assoziationen wird die Aktualisierung "
+"vom \"Many-to-One\"-Ende der Assoziation bearbeitet, so dass Überlegungen "
+"hinsichtlich der Performance der Collection-Aktualisierung nicht gelten."
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "Bags und Listen sind die effizientesten invertierten Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"Ehe Sie jetzt \"Bags\" für immer verwerfen sollten wir erwähnen, dass ein "
+"spezieller Fall existiert, in dem \"Bags\" (und ebenso Listen) wesentlich "
+"performanter als Sets sind. Für eine Collection mit <literal>inverse=\"true"
+"\"</literal> (z.B. das standardmäßige bidirektionale Idiom einer \"One-to-"
+"Many\"-Beziehung) können wir einer \"Bag\" oder Liste Elemente hinzufügen, "
+"ohne die Elemente der \"Bag\" initialisieren (abrufen) zu müssen! Das kommt "
+"daher, dass <literal>Collection.add()</literal> oder <literal>Collection."
+"addAll()</literal> stets mit \"true\" für eine \"Bag\" oder <literal>List</"
+"literal> reagieren müssen (anders als bei einem <literal>Set</literal>). "
+"Dadurch kann der folgende Code wesentlich schneller werden."
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "\"One-Shot-Löschung\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"In manchen Fällen kann das einzelne Löschen von Elementen einer Collection "
+"sehr ineffizient sein. Hibernate weiß, was im Fall einer neu-geleerten "
+"Collection zu tun ist (falls Sie etwa <literal>list.clear()</literal> "
+"aufgerufen haben). Hibernate gibt dann ein einzelnes <literal>DELETE</"
+"literal> heraus, und wir sind fertig!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"Nehmen wir an, wir fügen ein einzelnes Element einer Collection von 20 hinzu "
+"und wollten dann zwei Elemente entfernen. Hibernate gibt in diesem Fall eine "
+"<literal>INSERT</literal>-Anweisung und zwei <literal>DELETE</literal>-"
+"Anweisungen heraus (außer es handelt sich bei der Collection um eine \"Bag"
+"\"). Das ist auf jeden Fall wünschenswert."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"Nehmen wir jedoch an wir entfernen 18 Elemente, ließen also zwei übrig und "
+"fügten dann drei weitere hinzu. In diesem Fall gibt es zwei mögliche "
+"Vorgehensweisen:"
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr ""
+"die 18 Reihen eine nach der anderen löschen und anschließend drei Reihen "
+"einfügen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr ""
+"die gesamte Collection entfernen (in einem SQL <literal>DELETE</literal>) "
+"und die fünf aktuellen Elemente (einzeln) einfügen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"Hibernate weiß nicht, dass die zweite Option in diesem Fall die "
+"wahrscheinlich schnellere ist. (Und es ist auch zweifelhaft, ob es gut wäre "
+"wenn Hibernate dies wüsste, da ein solches Verhalten Datenbank-Trigger "
+"verwirren könnte usw.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"Glücklicherweise können Sie dieses Verhalten jederzeit durchsetzen (d.h. die "
+"zweite Option), indem Sie etwa die ursprüngliche Collection verwerfen und "
+"dann eine neu instantiierte Collection mit allen aktuellen Elementen "
+"wiedergeben. Das kann sich von Zeit zu Zeit als sehr hilfreich und "
+"leistungsfähig erweisen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"Natürlich gilt das \"One-Shot-Delete\" nicht für als <literal>inverse=\"true"
+"\"</literal> gemappte Collections."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "Leistungsüberwachung"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"Optimierungen machen ohne Überwachung und Zugriff auf Performanzzahlen wenig "
+"Sinn. Hibernate liefert eine ganze Bandbreite von Zahlen zu seinen internen "
+"Vorgängen. Statistiken sind in Hibernate über die <literal>SessionFactory</"
+"literal> verfügbar."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "Die Überwachung einer SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"Sie können auf zwei Arten auf <literal>SessionFactory</literal>-Metriken "
+"zugreifen. Die erste Möglichkeit ist es, <literal>sessionFactory."
+"getStatistics()</literal> aufzurufen und die <literal>Statistics</literal> "
+"selbst zu lesen und anzuzeigen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"Hibernate kann außerdem JMX verwenden, um Metriken zu publizieren wenn Sie "
+"das <literal>StatisticsService</literal>-MBean aktivieren. Sie können ein "
+"einzelnes MBean für alle Ihre <literal>SessionFactory</literal>s oder aber "
+"eines pro Factory aktivieren. Sehen Sie sich den folgenden Code für "
+"minimalistische Konfigurationsbeispiele an:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"Sie können die Überwachung für eine <literal>SessionFactory</literal> (de)"
+"aktivieren"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"zum Konfigurationszeitpunkt setzen Sie <literal>hibernate."
+"generate_statistics</literal> auf <literal>false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"zur Runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</"
+"literal> oder <literal>hibernateStatsBean.setStatisticsEnabled(true)</"
+"literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"Statistiken können programmatisch mit der <literal>clear()</literal>-Methode "
+"zurückgesetzt werden. Eine Zusammenfassung kann unter Verwendung der "
+"<literal>logSummary()</literal>-Methode auch an einen Logger (Info-Level) "
+"geschickt werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "Metriken"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"Hibernate liefert eine Reihe von Metriken, die von ganz basalen bis sehr "
+"speziellen und ganz bestimmte Szenarios betreffenden reichen. Alle "
+"verfügbaren Zähler sind im <literal>Statistics</literal>-Interface API, in "
+"drei Kategorien beschrieben:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"Mit dem allgemeinen <literal>Session</literal>-Gebrauch zusammenhängende "
+"Metriken wie etwa die Anzahl geöffneter Sessions, abgerufener JDBC-"
+"Verbindungen usw."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr ""
+"Mit Entities, Collections, Anfragen und Caches insgesamt zusammenhängende "
+"Metriken (auch als allgemeingültige Metriken bekannt, sog. \"global metrics"
+"\")"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr ""
+"Detaillierte Metriken, die sich auf eine bestimmte Entity, Collection, "
+"Anfrage oder Cache-Region beziehen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"Sie können zum Beispiel Cache-Treffer und Nicht-Treffer, das Verhältnis von "
+"Entities, Collections und Anfragen und die durchschnittliche Dauer bis zur "
+"Rückmeldung prüfen. Bitte berücksichtigen Sie, dass es sich bei der Anzahl "
+"von Millisekunden in Java um eine Näherungswert handelt. Hibernate ist an "
+"die Genauigkeit der JVM gebunden und auf manchen Plattformen kann das nur "
+"auf 10 Sekunden genau sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"Einfache \"Getters\" werden für den Zugriff auf allgemeine Metriken (d.h. "
+"nicht an eine bestimmte Entity, Collection, Cache-Bereich usw.) verwendet. "
+"Sie können auf die Metriken einer bestimmten Entity, Collection oder Cache-"
+"Bereichs über dessen Namen und über dessen HQL- oder SQL-Repräsentation für "
+"Anfragen zugreifen. Weitere Informationen finden Sie im <literal>Statistics</"
+"literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal> und <literal>QueryStatistics</"
+"literal> API-Javadoc. Der folgende Code zeigt ein einfaches Beispiel:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"Um an sämtlichen Entities, Collections, Anfragen und Cache-Bereichen zu "
+"arbeiten, können Sie die Namensliste der Entities, Collections, Anfragen und "
+"Cache-Bereiche abrufen, indem Sie die folgenden Methoden verwenden: "
+"<literal>getQueries()</literal>, <literal>getEntityNames()</literal>, "
+"<literal>getCollectionRoleNames()</literal> und "
+"<literal>getSecondLevelCacheRegionNames()</literal>."
+
+#, fuzzy
+#~ msgid ""
+#~ "This setting creates two new cache regions: one holding cached query "
+#~ "result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), "
+#~ "the other holding timestamps of the most recent updates to queryable "
+#~ "tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). "
+#~ "Note that the query cache does not cache the state of the actual entities "
+#~ "in the result set; it caches only identifier values and results of value "
+#~ "type. The query cache should always be used in conjunction with the "
+#~ "second-level cache."
+#~ msgstr ""
+#~ "Durch diese Einstellung werden zwei neue Cache-Bereiche erstellt - einer, "
+#~ "der die gecachten Ergebnissätze der Anfrage enthält (<literal>org."
+#~ "hibernate.cache.StandardQueryCache</literal>), und ein zweiter, der die "
+#~ "Zeitstempel der letzten Aktualisierungen der anfragbaren Tabellen enthält "
+#~ "(<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). Bitte "
+#~ "beachten Sie, dass das Anfragen-Cache nicht den Status der tatsächlichen "
+#~ "Entities im Ergebnissatz cacht, sondern lediglich Bezeichnerwerte und "
+#~ "Ergebnisse vom Wertetyp. Das Anfragen-Cache sollte daher stets in "
+#~ "Verbindung mit dem Cache der zweiten Ebene verwendet werden."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // "
+#~ "Error!]]>"
+#~ msgstr ""
+#~ "s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // Error!"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"permissions\" \n"
+#~ "            fetch=\"join\">\n"
+#~ "    <key column=\"userId\"/>\n"
+#~ "    <one-to-many class=\"Permission\"/>\n"
+#~ "</set]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"permissions\" \n"
+#~ "            fetch=\"join\"&gt;\n"
+#~ "    &lt;key column=\"userId\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Permission\"/&gt;\n"
+#~ "&lt;/set"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
+#~ msgstr "&lt;many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();]]>"
+#~ msgstr ""
+#~ "User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Cat\" proxy=\"Cat\"&gt;\n"
+#~ "    ......\n"
+#~ "    &lt;subclass name=\"DomesticCat\"&gt;\n"
+#~ "        .....\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a "
+#~ "proxy (does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a proxy "
+#~ "(does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);            // "
+#~ "instantiate a Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(Cat.class, id);            // instantiate a "
+#~ "Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0]]>"
+#~ msgstr ""
+#~ "cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CatImpl\" proxy=\"Cat\"&gt;\n"
+#~ "    ......\n"
+#~ "    &lt;subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\"&gt;\n"
+#~ "        .....\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+#~ "name='fritz'\").iterate();\n"
+#~ "Cat fritz = (Cat) iter.next();]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.iterate(\"from CatImpl as cat where cat."
+#~ "name='fritz'\");\n"
+#~ "Cat fritz = (Cat) iter.next();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" )."
+#~ "list().get(0) ).intValue()]]>"
+#~ msgstr ""
+#~ "( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get"
+#~ "(0) ).intValue()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+#~ "setMaxResults(10).list();]]>"
+#~ msgstr ""
+#~ "s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10)."
+#~ "list();"
+
+#, fuzzy
+#~ msgid "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+#~ msgstr "&lt;class name=\"Person\" batch-size=\"10\"&gt;...&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <set name=\"cats\" batch-size=\"3\">\n"
+#~ "        ...\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;set name=\"cats\" batch-size=\"3\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Document\">\n"
+#~ "       <id name=\"id\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+#~ "    <property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/>\n"
+#~ "    <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true"
+#~ "\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Document\"&gt;\n"
+#~ "       &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\" length=\"50\"/&gt;\n"
+#~ "    &lt;property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/&gt;\n"
+#~ "    &lt;property name=\"text\" not-null=\"true\" length=\"2000\" lazy="
+#~ "\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+#~ "    <taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\">\n"
+#~ "        <classpath path=\"${jar.path}\"/>\n"
+#~ "        <classpath path=\"${classes.dir}\"/>\n"
+#~ "        <classpath refid=\"lib.class.path\"/>\n"
+#~ "    </taskdef>\n"
+#~ "\n"
+#~ "    <instrument verbose=\"true\">\n"
+#~ "        <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+#~ "            <include name=\"*.class\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </instrument>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"instrument\" depends=\"compile\"&gt;\n"
+#~ "    &lt;taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\"&gt;\n"
+#~ "        &lt;classpath path=\"&#36;{jar.path}\"/&gt;\n"
+#~ "        &lt;classpath path=\"&#36;{classes.dir}\"/&gt;\n"
+#~ "        &lt;classpath refid=\"lib.class.path\"/&gt;\n"
+#~ "    &lt;/taskdef&gt;\n"
+#~ "\n"
+#~ "    &lt;instrument verbose=\"true\"&gt;\n"
+#~ "        &lt;fileset dir=\"&#36;{testclasses.dir}/org/hibernate/auction/"
+#~ "model\"&gt;\n"
+#~ "            &lt;include name=\"*.class\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/instrument&gt;\n"
+#~ "&lt;/target&gt;"
+
+#~ msgid "<entry>yes</entry>"
+#~ msgstr "<entry>Ja</entry>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+#~ "    <cache usage=\"read-only\"/>\n"
+#~ "    ....\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Immutable\" mutable=\"false\"&gt;\n"
+#~ "    &lt;cache usage=\"read-only\"/&gt;\n"
+#~ "    ....\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Cat\" .... >\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"kittens\" ... >\n"
+#~ "        <cache usage=\"read-write\"/>\n"
+#~ "        ....\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Cat\" .... &gt;\n"
+#~ "    &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"kittens\" ... &gt;\n"
+#~ "        &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "        ....\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\")."
+#~ "scroll(); //a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll(); //"
+#~ "a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular "
+#~ "Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections]]>"
+#~ msgstr ""
+#~ "sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();]]>"
+#~ msgstr ""
+#~ "Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true]]>"
+#~ msgstr ""
+#~ "hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.cache.use_query_cache true]]>"
+#~ msgstr "hibernate.cache.use_query_cache true"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog."
+#~ "blogger = :blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :"
+#~ "blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+#~ msgstr ""
+#~ "// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+#~ msgstr ""
+#~ "// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics"
+#~ "();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );]]>"
+#~ msgstr ""
+#~ "Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1368 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Persistente Klassen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state. For example, an instance can instead be transient "
+"or detached."
+msgstr ""
+"Unter persistenten Klassen versteht man diejenigen Klassen in einer "
+"Anwendung, die die Entities des Unternehmensproblems (z.B. Kunde und "
+"Bestellung in einer E-Commerce Applikation) implementieren. Nicht alle "
+"Instanzen einer persistenten Klasse werden als im persistenten Status "
+"befindlich angesehen - eine Instanz kann statt dessen auch kurzlebig "
+"(\"transient\") oder abgesetzt (\"detached\") sein."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You can express a domain model "
+"in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+"Hibernate funktioniert am besten, wenn diese Klassen einigen einfachen "
+"Regeln folgen, die auch als \"Plain Old Java Object\" (POJO) "
+"Programmiermodell bekannt sind. Keine dieser Regeln sind jedoch feste "
+"Anforderungen. Tatsächlich setzt Hibernate3 sehr wenig hinsichtlich des "
+"Charakters Ihrer persistenten Objekte voraus. Sie können ein Domain-Modell "
+"auf andere Weise ausdrücken: Zum Beispiel unter Verwendung von <literal>Map</"
+"literal>-Instanzen-Trees."
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "Ein einfaches POJO-Beispiel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Most Java applications require a persistent class representing felines. For "
+"example:"
+msgstr ""
+"Die meisten Java-Anwendungen erfordern eine persistente Klasse, die Katzen "
+"(\"felines\") repräsentiert."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The four main rules of persistent classes are explored in more detail in the "
+"following sections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "Implementierung eines \"No-Argument\"-Konstruktors"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which can be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. It "
+"is recommended that you have a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal> besitzt einen \"No-Argument\"-Konstruktor. Alle "
+"persistenten Klassen müssen über einen Standard-Konstruktor verfügen (der "
+"nicht-öffentlich sein darf) damit Hibernate sie unter Verwendung von "
+"<literal>Constructor.newInstance()</literal> instantiieren kann. Wir "
+"empfehlen dringend den Einsatz eines Standard-Konstruktors, der zumindest "
+"<emphasis>Paket</emphasis>-Sichtbarkeit für die Proxy-Generierung zur "
+"Runtime in Hibernate besitzt."
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "Bereitstellung einer Bezeichner-Property (optional)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. If your legacy database table has "
+"composite keys, you can use a user-defined class with properties of these "
+"types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+"<literal>Cat</literal> besitzt eine Property mit Namen <literal>id</"
+"literal>. Diese Property mappt zur Spalte des Primärschlüssels der "
+"Datenbanktabelle. Die Property könnte auch einen beliebigen Namen tragen und "
+"könnte irgendeinen primitiven Typ besitzen, etwa einen primitiven \"Wrapper"
+"\"-Typ, <literal>java.lang.String</literal> oder <literal>java.util.Date</"
+"literal>. (Falls Ihre Legacy-Datenbanktabelle zusammengesetzte Schlüssel "
+"besitzt, können Sie sogar eine benutzerdefinierte Klasse mit Properties "
+"dieser Typen verwenden - wir gehen in einem späteren Abschnitt auf "
+"zusammengesetzte Bezeichner ein)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"Die Bezeichner-Property ist völlig optional. Sie können sie ausgeschaltet "
+"lassen und Hibernate verfolgt die Objektbezeichner intern. Allerdings "
+"empfehlen wir diese Einstellung nicht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes that declare an "
+"identifier property:"
+msgstr ""
+"Tatsächlich sind einige Funktionalitäten nur für Klassen mit deklarierter "
+"Bezeichner-Property verfügbar:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+"Transitives Reattachment für abgesetzte Objekte (in Reihe erfolgende "
+"Aktualisierung oder in Reihe erfolgendes Zusammenfügen (auch: \"Cascade "
+"Update\" bzw. \"Cascade Merge\") - siehe"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "Session.saveOrUpdate()"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "Session.merge()"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We recommend that you declare consistently-named identifier properties on "
+"persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+"Wir empfehlen die Deklarierung konsistent benannter Bezeichner-Properties "
+"bei den persistenten Klassen. Ein nullbarer (\"nullable\" - d.h. nicht-"
+"primitiver) Typ ist ebenfalls zu bevorzugen."
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "Bevorzugung nicht-finaler Klassen (optional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Ein zentrales Feature von Hibernate, <emphasis>Proxies</emphasis>, hängt "
+"davon ab, ob die persistente Klasse entweder nicht-final oder der alle "
+"Methoden als öffentlich erklärenden Implemetierung eines Interface."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate. You will not, however, be able to use proxies for "
+"lazy association fetching which will ultimately limit your options for "
+"performance tuning."
+msgstr ""
+"Sie können <literal>final</literal>e Klassen, die kein Interface mit "
+"Hibernate implementieren, persistieren, aber Sie werden keine Proxies für "
+"das \"Lazy Fetching\" von Assoziationen (d.h. das Nachladen assoziierter "
+"Objekte bei Bedarf) verwenden können - was Ihre Optionen bei der "
+"Feinabstimmung der Performance einschränkt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"Sie sollten es vermeiden, <literal>public final</literal>-Methoden an den "
+"nicht-finalen Klassen zu deklarieren. Wenn Sie eine Klasse mit einer "
+"<literal>public final</literal>-Methode verwenden wollen, müssen Sie "
+"Proxying durch Setzen von <literal>lazy=\"false\"</literal> explizit "
+"deaktivieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr ""
+"Zugriffsberechtigte und Mutatoren für persistente Felder deklarieren "
+"(optional)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. It is "
+"better to provide an indirection between the relational schema and internal "
+"data structures of the class. By default, Hibernate persists JavaBeans style "
+"properties and recognizes method names of the form <literal>getFoo</"
+"literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If "
+"required, you can switch to direct field access for particular properties."
+msgstr ""
+"<literal>Cat</literal> deklariert die Zugriffsberechtigungsmethoden für alle "
+"seine persistenten Felder. Viele andere ORM-Tools persistieren "
+"Instanzvariablen direkt. Unserer Ansicht nach ist es besser, eine "
+"Indirektion zwischen dem relationalen Schema und internen Datenstrukturen "
+"der Klasse bereitzustellen. In der Standardeinstellung persistiert Hibernate "
+"Properties im JavaBeans-Stil und erkennt Methodennamen in der Form "
+"<literal>getFoo</literal>, <literal>isFoo</literal> und <literal>setFoo</"
+"literal>. Bei Bedarf können Sie für bestimmte Properties zu direktem "
+"Feldzugriff wechseln."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"Properties müssen <emphasis>nicht</emphasis> als öffentlich deklariert "
+"werden - Hibernate kann eine Property als <literal>protected</literal> oder "
+"<literal>private</literal> \"Get\"-/ \"Set\"-Paar persistieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "Implementierung der Vererbung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+"Eine Subklasse muss ebenfalls die ersten und zweiten Regeln berücksichtigen. "
+"Sie erbt ihre Bezeichner-Property von der Superklasse <literal>Cat</literal>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid ""
+"Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr ""
+"Sie müssen die <literal>equals()</literal> and <literal>hashCode()</literal>-"
+"Methoden außer Kraft setzen, falls Sie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you:"
+msgstr ""
+"Sie müssen die <literal>equals()</literal> and <literal>hashCode()</literal>-"
+"Methoden außer Kraft setzen, falls Sie"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations); <emphasis>and</"
+"emphasis>"
+msgstr ""
+"vorhaben, die Instanzen persistenter Klassen in einem <literal>Set</literal> "
+"unterzubringen (die empfohlene Art mehrwertige Assoziationen zu "
+"repräsentieren) <emphasis>und</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "planen, den Wiederanbindung abgesetzter Instanzen zu verwenden"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. When you mix instances "
+"retrieved in different sessions, you must implement <literal>equals()</"
+"literal> and <literal>hashCode()</literal> if you wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate garantiert nur die Äquivalenz der persistenten Identität "
+"(Datenbankreihe) und der Java-Identität innerhalb eines bestimmten "
+"Gültigkeitsbreichs einer Session. Sobald die Instanzen verschiedener "
+"Sessions zusammenkommen, müssen <literal>equals()</literal> und "
+"<literal>hashCode()</literal> implementiert werden, wenn wir uns eine "
+"aussagekräftige Semantik für <literal>Set</literal>s wünschen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, "
+"because they are equal. If both are added to a <literal>Set</literal>, you "
+"will only have one element in the <literal>Set</literal>). Unfortunately, "
+"you cannot use that approach with generated identifiers. Hibernate will only "
+"assign identifier values to objects that are persistent; a newly created "
+"instance will not have any identifier value. Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. This is not a "
+"Hibernate issue, but normal Java semantics of object identity and equality."
+msgstr ""
+"Die offensichtlichste Weise <literal>equals()</literal>/<literal>hashCode()</"
+"literal> zu implementieren, ist mittels des Vergleichs des Bezeichnerwerts "
+"beider Objekte. Ist der Wert identisch, so müssen die beiden sich in "
+"derselben Datenbankreihe befinden und sind daher gleichwertig (werden beide "
+"einem <literal>Set</literal> hinzugefügt, so existiert lediglich ein Element "
+"im <literal>Set</literal>). Leider kann diese Vorgehensweise nicht bei "
+"generierten Bezeichnern verwendet werden! Hibernate ordnet nur persistenten "
+"Objekten Bezeichnerwerte zu, und eine neu erstellte Instanz wird keinen "
+"Bezeichnerwert besitzen! Desweiteren wird einer noch ungespeicherten "
+"Instanz, die Teil eines <literal>Set</literal> ist, bei Speicherung ein "
+"Bezeichnerwert zum Objekt zugeordnet. Falls <literal>equals()</literal> und "
+"<literal>hashCode()</literal> auf dem Bezeichnerwert basieren, so würde sich "
+"der Hash-Code ändern und dadurch das Interface (sog. \"contract\") des "
+"<literal>Set</literal> verletzen. Eine ausführliche Darstellung dieses "
+"Problems finden Sie auf der Website von Hibernate. Bitte beachten Sie, dass "
+"dies nicht auf Hibernate selbst zurückzuführen ist, sondern auf regulärer "
+"Java-Semantik hinsichtlich Objektidentität und Gleichheit basiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> using <emphasis>Business key equality</"
+"emphasis>. Business key equality means that the <literal>equals()</literal> "
+"method compares only the properties that form the business key. It is a key "
+"that would identify our instance in the real world (a <emphasis>natural</"
+"emphasis> candidate key):"
+msgstr ""
+"Wir empfehlen die Implementierung von <literal>equals()</literal> und "
+"<literal>hashCode()</literal> unter Verwendung von <emphasis>\"Business Key "
+"Equality\"</emphasis>. \"Business Key Equality\" bedeutet, dass die "
+"<literal>equals()</literal>-Methode nur die Properties, aus denen sich der "
+"\"Business Key\" zusammensetzt, miteinander vergleicht. Der Key (Schlüssel) "
+"identifiziert Ihre Instanz in der Realität (ein <emphasis>natürlicher</"
+"emphasis> Schlüsselkandidat bzw. \"Candidate Key\"):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A business key does not have to be as solid as a database primary key "
+"candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable "
+"or unique properties are usually good candidates for a business key."
+msgstr ""
+"Bitte beachten Sie, dass ein \"Business Key\" nicht so beständig wie ein "
+"Primärschlüsselkandidat der Datenbank sein muss (siehe <xref linkend="
+"\"transactions-basics-identity\"/>). Unveränderbare oder eindeutige "
+"Properties sind in der Regel eine gute Wahl für einen Business Key."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "Dynamische Modelle"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>The following features are currently considered experimental and "
+"may change in the near future.</emphasis>"
+msgstr ""
+"Bitte beachten Sie, dass die folgenden Features als experimentell gelten und "
+"sich in naher Zukunft ändern können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Persistent entities do not necessarily have to be represented as POJO "
+"classes or as JavaBean objects at runtime. Hibernate also supports dynamic "
+"models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) "
+"and the representation of entities as DOM4J trees. With this approach, you "
+"do not write persistent classes, only mapping files."
+msgstr ""
+"Persistente Entities müssen zur Runtime nicht unbedingt als POJO-Klassen "
+"oder JavaBean-Objekte repräsentiert werden. Hibernate unterstützt auch "
+"dynamische Modelle (unter Verwendung von <literal>Map</literal>s von "
+"<literal>Map</literal>s zur Runtime) und die Repräsentation von Entities als "
+"DOM4J-Trees. Bei dieser Vorgehensweise schreiben Sie keine persistenten "
+"Klassen, sondern nur Mapping-Dateien."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You can set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+"In der Standardeinstellung arbeitet Hibernate im regulären POJO-Modus. Sie "
+"können einen Standard-Entity-Repräsentationsmodus für eine bestimmte "
+"<literal>SessionFactory</literal> unter Verwendung der "
+"<literal>default_entity_mode</literal>-Konfigurationsoption einstellen "
+"(siehe <xref linkend=\"configuration-optional-properties\"/>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following examples demonstrate the representation using <literal>Map</"
+"literal>s. First, in the mapping file an <literal>entity-name</literal> has "
+"to be declared instead of, or in addition to, a class name:"
+msgstr ""
+"Das folgende Beispiel stellt die Repräsentation unter Verwendung von "
+"<literal>Map</literal>s dar. Zuerst muss in der Mapping-Datei ein "
+"<literal>entity-name</literal> anstelle von (oder zusätzlich zu) einem "
+"Klassennamen deklariert werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though associations are declared using target class names, the target "
+"type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+"Bitte bachten Sie, dass der Zieltyp einer Assoziation auch eine dynamische "
+"Entity statt POJO sein kann, obwohl Assoziationen unter Verwendung von Ziel-"
+"Klassennamen deklariert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, you can, at runtime, work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"Nachdem der Standard für den Entity-Modus auf <literal>dynamic-map</literal> "
+"für die <literal>SessionFactory</literal> gesetzt ist, können wir zur "
+"Runtime mit <literal>Map</literal>s von <literal>Map</literal>s arbeiten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the main advantages of dynamic mapping is quick turnaround time for "
+"prototyping, without the need for entity class implementation. However, you "
+"lose compile-time type checking and will likely deal with many exceptions at "
+"runtime. As a result of the Hibernate mapping, the database schema can "
+"easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"Die Vorteile des dynamischen Mappings liegen in der schnellen Durchlaufzeit "
+"für Musteranwendungsverfahren (sog. \"Turnaround-Time\" für \"Prototyping\") "
+"ohne die Notwendigkeit Entity-Klassen zu implementieren. Sie verlieren "
+"jedoch durch die Typ-Prüfung Kompilierungszeit, und es ist wahrscheinlich, "
+"dass es bei der Runtime zu zahlreichen Ausnahmemeldungen kommt. Dank des "
+"Mappings von Hibernate kann das Datenbankschema bequem vereinheitlicht und "
+"stabilisiert werden, so dass eine ordnungsgemäße Implementierung des Domain-"
+"Modells später problemlos hinzugefügt werden kann."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"Die Modi für die Entity Repräsentation können auch auf per <literal>Session</"
+"literal>-Basis eingestellt werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you do not have to call <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"Bitte beachten Sie, dass der Aufruf <literal>getSession()</literal> unter "
+"Verwendung von  <literal>EntityMode</literal> am <literal>Session</literal>-"
+"API und nicht an der <literal>SessionFactory</literal> erfolgt. Auf diese "
+"Weise teilt sich die <literal>Session</literal> die zu Grunde liegende JDBC-"
+"Verbindung, die Transaktion und andere Kontextinformationen. Das bedeutet, "
+"dass Sie in der sekundären <literal>Session</literal> nicht <literal>flush()"
+"</literal> und <literal>close()</literal> aufrufen müssen und auch die "
+"Transaktion und Verbindung der primären Arbeitseinheit überlassen können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\" />."
+msgstr ""
+"Weitere Informationen zum Leistungsvermögen der XML-Repräsentation finden "
+"Sie unter <xref linkend=\"xml\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "Tuplizer"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing that knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the corresponding tuplizer knows how create the POJO "
+"through its constructor. It also knows how to access the POJO properties "
+"using the defined property accessors."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal> und seine untergeordneten "
+"Schnittstellen sind angesichts des <literal>org.hibernate.EntityMode</"
+"literal> dieser Repräsentation für die Verwaltung eines bestimmten Teils der "
+"Datenrepräsentation verantwortlich. Wenn man sich einen bestimmten Teil von "
+"Daten als Datenstruktur vorstellt, so weiß der \"Tuplizer\" wie eine solche "
+"Datenstruktur erstellt wird und wie Werte in eine solche extrahiert und "
+"eingeführt werden. Beim POJO Entity-Modus zum Beispiel weiß der "
+"entsprechende Tuplizer wie POJO durch den Konstruktor erstellt wird und wie "
+"mittels definierter Property-Accessor-Methoden auf die POJO-Properties "
+"zugegriffen wird. Es existieren auf hoher Ebene zwei Typen von Tuplizern, "
+"die in den <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> und "
+"<literal>org.hibernate.tuple.component.ComponentTuplizer</literal> "
+"Interfaces repräsentiert sind. <literal>EntityTuplizer</literal>s sind für "
+"die Verwaltung der oben genannten Schnittstellen hinsichtlich der Entities "
+"verantwortlich, während <literal>ComponentTuplizer</literal>s dasselbe für "
+"Komponenten übernehmen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two high-level types of Tuplizers, represented by the <literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> interfaces. "
+"<literal>EntityTuplizer</literal>s are responsible for managing the above "
+"mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Users can also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode. Or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizer definitions are attached to the entity or component "
+"mapping they are meant to manage. Going back to the example of our customer "
+"entity:"
+msgstr ""
+"Benutzer können auch ihre eigenen Tuplizer einbinden. Es ist möglich, dass "
+"Sie während des \"dynamic-map\" Entity-Modus eine andere Implementierung von "
+"<literal>java.util.Map</literal> als <literal>java.util.HashMap</literal> "
+"benötigen oder eine andere Strategie für die Proxy-Generierung definieren "
+"müssen als die im Standard vorgegebene. Beide würden durch die Definition "
+"einer anwenderdefinierten Tuplizer-Implementierung erzielt. Tuplizer-"
+"Definitionen sind der Entity oder dem Komponenten-Mapping hinzugefügt, die "
+"sie verwalten sollen. Sehen wir uns noch einmal das Beispiel unserer Kunden-"
+"Entity an:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "EntityNameResolvers"
+msgstr "EntityResolver"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"interface is a contract for resolving the entity name of a given entity "
+"instance. The interface defines a single method "
+"<methodname>resolveEntityName</methodname> which is passed the entity "
+"instance and is expected to return the appropriate entity name (null is "
+"allowed and would indicate that the resolver does not know how to resolve "
+"the entity name of the given entity instance). Generally speaking, an "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> is going to "
+"be most useful in the case of dynamic models. One example might be using "
+"proxied interfaces as your domain model. The hibernate test suite has an "
+"example of this exact style of usage under the <package>org.hibernate.test."
+"dynamicentity.tuplizer2</package>. Here is some of the code from that "
+"package for illustration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to register an <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> users must either:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link>, implementing the <methodname>getEntityNameResolvers</methodname> "
+"method."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (which is the implementation class for <interfacename>org."
+"hibernate.SessionFactory</interfacename>) using the "
+"<methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "            kitten.setMother(this);\n"
+#~ "        kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "    kitten.setMother(this);\n"
+#~ "kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "\n"
+#~ "        <id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/>\n"
+#~ "\n"
+#~ "        <bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "            <key column=\"CUSTOMER_ID\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "    \n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class entity-name=\"Customer\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "            &lt;key column=\"CUSTOMER_ID\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "        &lt;/bag&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();]]>"
+#~ msgstr ""
+#~ "Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode."
+#~ "MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "        <!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        -->\n"
+#~ "        <tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/>\n"
+#~ "\n"
+#~ "        <id name=\"id\" type=\"long\" column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <!-- other properties -->\n"
+#~ "        ...\n"
+#~ "    </class>\n"
+#~ "</hibernate-mapping>\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "            protected final Map generateMap() {\n"
+#~ "                    return new CustomMap();\n"
+#~ "            }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    &lt;class entity-name=\"Customer\"&gt;\n"
+#~ "        &lt;!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        --&gt;\n"
+#~ "        &lt;tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" type=\"long\" column=\"ID\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- other properties --&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/class&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "    protected final Map generateMap() {\n"
+#~ "    return new CustomMap();\n"
+#~ "    }\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,514 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#: portability.xml:31
+#, fuzzy, no-c-format
+msgid "Database Portability Considerations"
+msgstr "Abgrenzung von Datenbanktransaktionen"
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialekt"
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:77
+#, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException]]></"
+"programlisting>. The basic contract here is that if the resolver "
+"'understands' the given database metadata then it returns the corresponding "
+"Dialect; if not it returns null and the process continues to the next "
+"resolver. The signature also identifies <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname> as possibly being thrown. "
+"A JDBCConnectionException here is interpreted to imply a \"non transient"
+"\" (aka non-recoverable) connection problem and is used to indicate an "
+"immediate stop to resolution attempts. All other exceptions result in a "
+"warning and continuing on to the next resolver."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:103
+#, fuzzy, no-c-format
+msgid "Identifier generation"
+msgstr "Die \"Getter\"-Methode des Bezeichners"
+
+#. Tag: para
+#: portability.xml:105
+#, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics. <note> <para> Hibernate was changed slightly once the implication "
+"of this was better understood so that the insert is delayed in cases where "
+"that is feasible. </para> </note> The underlying issue is that the actual "
+"semanctics of the application itself changes in these cases."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way. <note> <para> There are "
+"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
+"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
+"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
+"listitem> </itemizedlist> </para> </note> The idea behind these generators "
+"is to port the actual semantics of the identifer value generation to the "
+"different databases. For example, the <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
+"databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, fuzzy, no-c-format
+msgid "Database functions"
+msgstr "Aggregierte Funktionen"
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr ""
+
+#, fuzzy
+#~ msgid ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+#~ msgstr "org.hibernate.cache.TreeCacheProvider"
+
+#, fuzzy
+#~ msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+#~ msgstr "org.hibernate.cache.TreeCacheProvider"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,137 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "Vorwort"
+
+#. Tag: para
+#, no-c-format
+msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an Object/Relational Mapping tool for Java environments. The term Object/Relational Mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
+msgstr ""
+"Die Arbeit mit objektorientierter Software und einer relationalen Datenbank "
+"kann sich in Unternehmensumgebungen heutzutage als mühsam und zeitaufwendig "
+"erweisen. Bei Hibernate handelt es sich um ein objekt/relationales Mapping-"
+"Tool für Java Umgebungen. Der Begriff objekt/relationales Mapping (ORM) "
+"bezieht sich auf die Technik des Mappens einer Datenrepräsentation von einem "
+"Objektmodell zu einem relationalen Datenmodell mit SQL-basiertem Schema."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities. It can also significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate besorgt nicht nur das Mapping von Java-Klassen zu "
+"Datenbanktabellen (und von Java-Datentypen zu SQL-Datentypen ), sondern "
+"bietet auch Datenanfragen sowie Datenbeschaffungshilfen, mittels derer sich "
+"die Entwicklungszeit maßgeblich senken lässt, da die manuelle "
+"Datenbearbeitung in SQL und JDBC entfällt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Hibernate's goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
+msgstr ""
+"Hibernate will dem Entwickler 95 Prozent der mit gängiger Datenpersistenz "
+"verbundenen Programmierarbeit abnehmen. Hibernate ist möglicherweise nicht "
+"die beste Lösung für datenzentrische Anwendungen, die nur gespeicherte "
+"Prozeduren zur Implementierung der Business Logik in die Datenbank "
+"verwenden, ist jedoch was objektorientierte Domain-Modelle und Business "
+"Logik im Java-basierten Mittel-Tier angeht am leistungsfähigsten. Hibernate "
+"kann Ihnen mit Sicherheit dabei helfen, den anbieterspezifischen SQL-Code zu "
+"entfernen oder einzukapseln und unterstützt Sie auch bei der gängigen "
+"Aufgabe der Übersetzung des Ergebnissatzes einer tabellarischen "
+"Repräsentation in ein Objektdiagramm."
+
+#. Tag: para
+#, no-c-format
+msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
+msgstr ""
+"Falls Ihnen Hibernate und Objekt/Relationales Mapping oder sogar Java neu "
+"sind, orientieren Sie sich bitte an folgenden Schritten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"Lesen Sie <xref linkend=\"tutorial\"/> für eine schrittweise Anleitung. Der "
+"Quellcode der Anleitung ist Teil der Distrubution im <literal>doc/reference/"
+"tutorial/</literal>-Verzeichnis."
+
+#. Tag: para
+#, no-c-format
+msgid "Read <xref linkend=\"architecture\" /> to understand the environments where Hibernate can be used."
+msgstr ""
+"Lesen Sie <xref linkend=\"architecture\"/>, um mehr über die Umgebungen zu "
+"erfahren, in denen Hibernate eingesetzt werden kann."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "View the <literal>eg/</literal> directory in the Hibernate distribution. It contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Schauen Sie sich das <literal>eg/</literal>-Verzeichnis in der Hibernate "
+"Distribution an, es enthält eine einfache, selbständige Anwendung. Kopieren "
+"Sie Ihren JDBC-Treiber in das <literal>lib/</literal>-Verzeichnis und "
+"editieren Sie <literal>etc/hibernate.properties</literal>, indem Sie "
+"korrekte Werte für Ihre Datenbank spezifizieren. Von einer Kommandozeile im "
+"Distributionsverzeichnis tippen Sie <literal>ant eg</literal> (unter "
+"Verwendung von Ant) oder in Windows tippen Sie <literal>build eg</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Use this reference documentation as your primary source of information. Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need more help with application design, or if you prefer a step-by-step tutorial. Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+"Verwenden Sie diese Referenzdokumentation als Ihre primäre "
+"Informationsquelle. Weitere Informationen finden Sie außerdem unter "
+"<emphasis>Hibernate in Action</emphasis> (http://www.manning.com/bauer), "
+"falls Sie Hilfe bei Ihrem Anwendungsdesign benötigen oder eine Schritt-für-"
+"Schritt-Anleitung vorziehen. Eine herunterladbare Beispielanwendung von "
+"\"Hibernate in Action\" finden Sie auch unter http://caveatemptor.hibernate."
+"org."
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr ""
+"Antworten auf häufig gestellte Fragen (FAQs) finden Sie auf der Website von "
+"Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid "Links to third party demos, examples, and tutorials are maintained on the Hibernate website."
+msgstr ""
+"Auf der Hibernate Website befinden sich auch Demos, Beispiele und "
+"Anleitungen Dritter."
+
+#. Tag: para
+#, no-c-format
+msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
+msgstr ""
+"Bei Fragen wenden Sie sich an das Benutzerforum, das mit der Hibernate "
+"Website verlinkt ist. Wir bieten auch ein JIRA-Problemverfolgungssystem für "
+"Fehlerberichte und Feature-Anfragen. Falls Sie an der Entwicklung von "
+"Hibernate interessiert sind, registrieren Sie sich bei der Mailing-Liste für "
+"Entwickler. Falls Sie diese Dokumentation in Ihre Sprache übersetzen "
+"möchten, setzen Sie sich mittels der Mailing-Liste für Entwickler mit uns in "
+"Verbindung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue tracking system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1186 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "\"Criteria Queries\""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr "Hibernate besitzt eine intuitive, erweiterbare \"Criteria Query\"-API."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "Das Erstellen einer Criteria-Instanz"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"Das Interface <literal>org.hibernate.Criteria</literal> repräsentiert eine "
+"Anfrage an eine bestimmte persistente Klasse. Bei der <literal>Session</"
+"literal> handelt es sich um eine Factory für <literal>Criteria</literal>-"
+"Instanzen."
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "Den Ergebnissatz eingrenzen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"Ein individuelles \"Query Criterion\" (Anfragenkriterium) ist eine Instanz "
+"des Interface <literal>org.hibernate.criterion.Criterion</literal>. Die "
+"Klasse <literal>org.hibernate.criterion.Restrictions</literal> definiert "
+"Factory-Methoden, um bestimmte eingebaute <literal>Criterion</literal>-Typen "
+"einzuholen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "Einschränkungen können logisch gruppiert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses). One of the most useful allows you to specify SQL "
+"directly."
+msgstr ""
+"Es existiert eine ganze Reihe eingebauter \"Criterion\"-Typen "
+"(<literal>Restrictions</literal>-Subklassen), aber einer ist besonders "
+"hilfreich und ermöglicht es Ihnen, die SQL direkt zu spezifizieren."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"Der <literal>{alias}</literal>-Platzhalter wird durch den Reihen-Alias der "
+"angefragten Entity ersetzt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also obtain a criterion from a <literal>Property</literal> instance. "
+"You can create a <literal>Property</literal> by calling <literal>Property."
+"forName()</literal>:"
+msgstr ""
+"Eine andere Art an das Kriterium zu kommen ist über eine <literal>Property</"
+"literal>-Instanz. Sie können eine <literal>Property</literal> erstellen, "
+"indem Sie <literal>Property.forName()</literal> aufrufen."
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "Die Ergebnisse ordnen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"Sie können die Ergebnisse mit <literal>org.hibernate.criterion.Order</"
+"literal> ordnen."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "Assoziationen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By navigating associations using <literal>createCriteria()</literal> you can "
+"specify constraints upon related entities:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The second <literal>createCriteria()</literal> returns a new instance of "
+"<literal>Criteria</literal> that refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"beachten Sie, dass das zweite <literal>createCriteria()</literal> mit einer "
+"neuen Instanz von <literal>Criteria</literal> reagiert, die auf die Elemente "
+"<literal>kittens</literal>-Collection verweist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is also an alternate form that is useful in certain circumstances:"
+msgstr "Die folgende Alternative ist unter bestimmten Umständen hilfreich."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal> erstellt keine neue Instanz von "
+"<literal>Criteria</literal>.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The kittens collections held by the <literal>Cat</literal> instances "
+"returned by the previous two queries are <emphasis>not</emphasis> pre-"
+"filtered by the criteria. If you want to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"Bitte beachten Sie, dass die in den <literal>Cat</literal>-Instanzen "
+"enthaltenen \"kittens\"-Collections, die von den vorherigen zwei Anfragen "
+"zurückgesendet wurden, <emphasis>nicht</emphasis> nicht durch die Kriterien "
+"vorgefiltert werden! Falls Sie nur die \"Kittens\" erhalten wollen, auf die "
+"die Kriterien zutreffen, so müssen Sie einen <literal>ResultTransformer</"
+"literal> verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return all of the <literal>Cat</literal>s with a mate whose name "
+"starts with \"good\" ordered by their mate's age, and all cats who do not "
+"have a mate. This is useful when there is a need to order or limit in the "
+"database prior to returning complex/large result sets, and removes many "
+"instances where multiple queries would have to be performed and the results "
+"unioned by java in memory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Without this feature, first all of the cats without a mate would need to be "
+"loaded in one query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second query would need to retreive the cats with mates who's name started "
+"with \"good\" sorted by the mates age."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "Dynamischer Assoziationsabruf"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"Sie können die Semantik für den Assoziationsabruf während der Runtime mit "
+"<literal>setFetchMode()</literal> spezifizieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\" /> for "
+"more information."
+msgstr ""
+"Diese Anfrage ruft sowohl <literal>mate</literal> als auch <literal>kittens</"
+"literal> durch den äußeren Verbund (\"outer Join\") ab. Weitere "
+"Informationen finden Sie unter <xref linkend=\"performance-fetching\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "Beispielanfragen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"Mit der Klasse <literal>org.hibernate.criterion.Example</literal> können Sie "
+"ein Anfragenkriterium aus einer gegebenen Instanz zu konstruieren."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"Versions-Properties, Bezeichner und Assoziationen werden übergangen. In der "
+"Standardeinstellung werden auch Properties mit dem Wert Null ausgeschlossen."
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr ""
+"Sie können anpassen, wie das <literal>Example</literal> angewendet wird."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr ""
+"Sie können sogar Beispiele verwenden, um Kriterien auf assoziierte Objekte "
+"anzuwenden."
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "Projektionen, Aggregation und Gruppierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. You can apply a "
+"projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"Bei der Klasse <literal>org.hibernate.criterion.Projections</literal> "
+"handelt es sich um eine Factory für <literal>Projection</literal>-Instanzen. "
+"Eine Projektion wird auf eine Anfrage angewendet, indem man "
+"<literal>setProjection()</literal> aufruft."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"In einer \"Criteria Query\" ist kein explizites \"gruppieren nach\" "
+"notwendig. Bestimmte Projektionstypen sind als "
+"<emphasis>Gruppierungsprojektionen definiert</emphasis>, die auch in der SQL "
+"<literal>group by</literal>-Klausel auftreten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An alias can be assigned to a projection so that the projected value can be "
+"referred to in restrictions or orderings. Here are two different ways to do "
+"this:"
+msgstr ""
+"Ein Alias kann auf Wunsch einer Projektion zugeordnet werden, so dass auf "
+"den projezierten Wert in Einschränkungen oder Anordnungen verwiesen werden "
+"kann. Es gibt zwei verschiedene Arten das zu tun:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"Die <literal>alias()</literal> und <literal>as()</literal>-Methoden wrappen "
+"die Projektionsinstanzen in eine andere Alias-Instanz von "
+"<literal>Projection</literal>. Als Tastenkürzel können Sie einen Alias "
+"zuordnen, wenn Sie der Projektionsliste eine Projektion hinzufügen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"Sie können auch <literal>Property.forName()</literal> verwenden, um "
+"Projektionen auszudrücken:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "Abgesetzte Anfragen und Unteranfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class allows you to create a query "
+"outside the scope of a session and then execute it using an arbitrary "
+"<literal>Session</literal>."
+msgstr ""
+"Die <literal>DetachedCriteria</literal>-Klasse ermöglicht es Ihnen, eine "
+"Anfrage außerhalb des Gültigkeitsbereichs einer Session zu erstellen und sie "
+"später unter Verwendung einer arbiträren <literal>Session</literal> "
+"auszuführen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> can also be used to express a "
+"subquery. Criterion instances involving subqueries can be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"Ein <literal>DetachedCriteria</literal> kann auch dazu verwendet werden, "
+"eine Anfrage auszudrücken. Instanzen eines Kriteriums können mittels "
+"<literal>Subqueries</literal> oder <literal>Property</literal> erhalten "
+"werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "Sogar korrelierende Unteranfragen sind möglich:"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "Anfrage über natürlichen Bezeichner"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not "
+"efficient because query cache invalidation occurs too frequently. However, "
+"there is a special kind of query where you can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"Für die meisten Anfragen, einschließlich \"Criteria Queries\", ist das "
+"Anfragen-Cache nicht sehr effizient, weil zu oft eine Aufhebung des Anfragen-"
+"Caches stattfindet. Es gibt jedoch eine besondere Art der Anfrage, bei der "
+"der Aufhebungsalgorithmus des Caches optimiert werden kann: Suchläufe nach "
+"einem konstanten natürlichen Schlüssel. In einigen Anwendungen kommt diese "
+"Art der Anfrage häufig vor. Die \"Criteria\"-API sorgt in diesem Fall "
+"speziell vor."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, map the natural key of your entity using <literal>&lt;natural-id&gt;</"
+"literal> and enable use of the second-level cache."
+msgstr ""
+"Als erstes sollten Sie den natürlichen Schlüssel Ihrer Entity unter "
+"Verwendung von <literal>&lt;natural-id&gt;</literal> mappen und die "
+"Verwendung des Caches der zweiten Ebene aktivieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"Bitte beachten Sie, dass diese Funktionalität nicht für die Verwendung mit "
+"Entities mit <emphasis>veränderlichen</emphasis> natürlichen Schlüsseln "
+"vorgesehen ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once you have enabled the Hibernate query cache, the <literal>Restrictions."
+"naturalId()</literal> allows you to make use of the more efficient cache "
+"algorithm."
+msgstr ""
+"Nun ermöglicht uns <literal>Restrictions.naturalId()</literal> die "
+"Verwendung des effizienteren Cache-Algorithmus."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz%\", Hibernate.STRING) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz&#37;\", \n"
+#~ "        Hibernate.STRING) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F%\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F&#37;\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F%\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F&#37;\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat."
+#~ "class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat."
+#~ "class, \"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "
+#~ "\"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeightForSex) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\">\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <natural-id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <property name=\"org\"/>\n"
+#~ "    </natural-id>\n"
+#~ "    <property name=\"password\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"User\"&gt;\n"
+#~ "    &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;natural-id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;property name=\"org\"/&gt;\n"
+#~ "    &lt;/natural-id&gt;\n"
+#~ "    &lt;property name=\"password\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();]]>"
+#~ msgstr ""
+#~ "session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2672 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: Die \"Hibernate Query Language\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate uses a powerful query language (HQL) that is similar in appearance "
+"to SQL. Compared with SQL, however, HQL is fully object-oriented and "
+"understands notions like inheritance, polymorphism and association."
+msgstr ""
+"Hibernate ist mit einer sehr leistungsfähigen Anfragensprache ausgestattet, "
+"die (mit Absicht) große Ähnlichkeit mit SQL besitzt. Aber lassen Sie sich "
+"nicht durch die Syntax täuschen; HQL ist rein objektorientiert und versteht "
+"Begriffe wie Vererbung, Polymorphismus und Assoziation."
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "Beachtung der Groß- und Kleinschreibung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With the exception of names of Java classes and properties, queries are case-"
+"insensitive. 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 ""
+"Bei Anfragen ist die Groß- und Kleinschreibung irrelevant, außer es handelt "
+"sich um Namen von Java-Klassen und Properties. Daher ist <literal>SeLeCT</"
+"literal> dasselbe wie <literal>sELEct</literal> oder auch <literal>SELECT</"
+"literal>, jedoch ist <literal>org.hibernate.eg.FOO</literal> nicht gleich "
+"<literal>org.hibernate.eg.Foo</literal> und <literal>foo.barSet</literal> "
+"ist nicht <literal>foo.BARSET</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but this convention is unsuitable for "
+"queries embedded in Java code."
+msgstr ""
+"Dieses Handbuch verwendet Kleinbuchstaben für HQL-Schlüsselbegriffe. Einige "
+"Benutzer finden Anfragen, in denen die Schlüsselbegriffe in Großbuchstaben "
+"geschrieben sind zwar lesbarer, jedoch finden wir das innerhalb von Java-"
+"Code optisch nicht sehr ansprechend."
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "Die \"from\"-Klausel"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "Die einfachste Form der Hibernate-Anfrage lautet:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This returns all instances of the class <literal>eg.Cat</literal>. You do "
+"not usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. For example:"
+msgstr ""
+"die einfach mit sämtlichen Instanzen der Klasse <literal>eg.Cat</literal> "
+"reagiert. In der Regel muss der Klassenname nicht definiert werden, da die "
+"Standardeinstellung <literal>auto-import</literal> lautet. Daher schreiben "
+"wir in den meisten Fällen nur:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to refer to the <literal>Cat</literal> in other parts of the query, "
+"you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so you can use that alias later in the query. The "
+"<literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+"Diese Anfrage ordnet den Alias <literal>cat</literal> den <literal>Cat</"
+"literal>-Instanzen zu, so dass wir diesen Alias später in der Anfrage "
+"verwendet können. Der <literal>as</literal>-Schlüsselbegriff ist optional; "
+"wir könnten auch schreiben:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Multiple classes can appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"Mehrere Klassen können erscheinen und zu einem kartesischen Produkt oder "
+"Kreuzverbund (sog. \"Cross-Join\") führen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is good practice to name query aliases using an initial lowercase as this "
+"is consistent with Java naming standards for local variables (e.g. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"Es ist generell ratsam, Anfragen-Aliasse unter Verwendung eines kleinen "
+"Anfangsbuchstabens zu beginnen, da dies den Namensgebungsstandards für "
+"lokale Variablen bei Java entspricht (z.B. <literal>domesticCat</literal>)."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "Assoziationen und Verbünde (\"Joins\")"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also assign aliases to associated entities or to elements of a "
+"collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+"Man kann auch Aliasse assoziierten Entities oder sogar Elementen einer "
+"Collection von Werten mittels <literal>join</literal> zuordnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "Die unterstützten Verbundtypen wurden von ANSI SQL geborgt"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>full join</literal> (in der Regel nicht sehr nützlich)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "right outer join"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>full join</literal> (in der Regel nicht sehr nützlich)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"Die <literal>inner join</literal>, <literal>left outer join</literal> und "
+"<literal>right outer join</literal>-Konstrukte können abgekürzt werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"Sie können weitere Verbundbedingungen unter Verwendung des HQL-"
+"Schlüsselbegriffs <literal>with</literal> eingeben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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 outer join and lazy declarations of the mapping file for associations "
+"and collections. See <xref linkend=\"performance-fetching\" /> for more "
+"information."
+msgstr ""
+"Desweiteren ermöglicht ein \"Abruf\"-Join die Initialisierung von "
+"Assoziationen oder Collections von Werten samt deren übergeordneten Objekten "
+"unter Verwendung einer einzelnen Auswahl (sog. \"single select\"). Dies ist "
+"insbesondere im Zusammenhang mit Collections von Nutzen. Es setzt effektiv "
+"den \"Outer-Join\" (Außenverbund) und \"lazy\" Deklarationen der Mapping-"
+"Datei für Assoziationen und Collections außer Kraft. Weitere Informationen "
+"finden Sie auch unter <xref linkend=\"performance-fetching\"/>."
+
+#. Tag: para
+#, fuzzy, 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). The associated objects are also not returned directly "
+"in the query results. Instead, they may be accessed via the parent object. "
+"The only reason you might need an alias is if you are recursively join "
+"fetching a further collection:"
+msgstr ""
+"Ein Abruf-Join (sog. \"fetch join\") muss in der Regel keinen Alias "
+"zuordnen, weil die zugehörigen Objekte nicht in der <literal>where</literal>-"
+"Klausel (oder irgendeiner anderen Klausel) verwendet werden sollten. Die "
+"assoziierten Objekte werden außerdem nicht direkt in den Anfragenergebnissen "
+"wiedergegeben, sondern es wird via \"Parent\"-Objekt (d.h. dem "
+"übergeordneten Objekt) auf diese zugegriffen. Der einzige Grund aus dem wir "
+"einen Alias benötigen könnten ist, falls eine weitere Collection rekursiv "
+"abgerufen werden soll:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>fetch</literal> construct cannot be used in queries called "
+"using <literal>iterate()</literal> (though <literal>scroll()</literal> can "
+"be used). <literal>Fetch</literal> should be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, "
+"as these operations are based on the result rows which usually contain "
+"duplicates for eager collection fetching, hence, the number of rows is not "
+"what you would expect. <literal>Fetch</literal> should also not be used "
+"together with impromptu <literal>with</literal> condition. It is possible to "
+"create a cartesian product by join fetching more than one collection in a "
+"query, so take care in this case. Join fetching multiple collection roles "
+"can produce unexpected results for bag mappings, so user discretion is "
+"advised when formulating queries in this case. Finally, note that "
+"<literal>full join fetch</literal> and <literal>right join fetch</literal> "
+"are not meaningful."
+msgstr ""
+"Beachten Sie, dass das <literal>fetch</literal>-Konstrukt nicht in Anfragen "
+"verwendet werden kann, bei denen <literal>iterate()</literal> verwendet wird "
+"(obwohl <literal>scroll()</literal> verwendet werden kann). Auch sollte "
+"<literal>fetch</literal> nicht mit <literal>setMaxResults()</literal> oder "
+"<literal>setFirstResult()</literal> benutzt werden, da diese Vorgänge auf "
+"Ergebnisreihen basieren, die in der Regel Duplikate für den Collection-Abruf "
+"nach \"eager\"-Art (d.h. dem zusammengefassten Laden von Objekt und "
+"assoziierten Objekten mit Verbundoperationen) besitzen, und daher eine "
+"unerwartete Anzahl von Reihen liefern. Die Verwendung von <literal>fetch</"
+"literal> sollte auch in Verbindung mit einer ad hoc <literal>with</literal>-"
+"Bedingung vermieden werden. Es ist möglich, ein kartesisches Produkt zu "
+"erstellen, indem in einer Anfrage für mehr als eine Collection ein Join-"
+"Abruf erfolgt, achten Sie also in diesem Fall darauf. Ein Join-Abruf "
+"mehrerer Collection-Rollen führt manchmal zu unerwarteten Ergebnissen bei "
+"\"Bag\"-Mappings, achten Sie also darauf, wie Sie Ihre Anfragen in diesem "
+"Fall formulieren. <literal>full join fetch</literal> und <literal>right join "
+"fetch</literal> sind nicht von Bedeutung."
+
+#. Tag: para
+#, fuzzy, 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 in the first query immediately using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"Falls Sie \"lazy\"-Fetching (d.h. das Nachladen assoziierter Objekte bei "
+"Bedarf) auf Property-Ebene verwenden (mit Bytecode Instrumentierung), so "
+"kann durchgesetzt werden, dass Hibernate die \"lazy\" Properties sofort (in "
+"der ersten Anfrage) mittels <literal>fetch all properties</literal> abruft."
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "Formen der Verbundsyntax"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL unterstützt zwei Arten von \"Association-Joining\": <literal>implicit</"
+"literal> und <literal>explicit</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form, that is, where the join keyword is explicitly used in the "
+"from clause. This is the recommended form."
+msgstr ""
+"Die im vorherigen Abschnitt gezeigten Beispiele verwenden alle die "
+"<literal>explicit</literal>-Form, bei der der \"Join\"-Schlüsselbegriff "
+"explizit in der \"from\"-Klausel verwendet wird. Dieses ist die empfohlene "
+"Form."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"Die <literal>implicit</literal>-Form verwendet den \"Join\"-Schlüsselbegriff "
+"nicht. Statt dessen sind die Assoziationen unter Verwendung von "
+"Punktnotation \"dereferenziert\". <literal>implicit</literal>-Joins können "
+"in jedem der HQL-Sätze erscheinen. <literal>implicit</literal>-Join-"
+"Ergebnisse resultieren in \"inner Joins\" in der sich ergebenden SQL-"
+"Anweisung."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Referring to identifier property"
+msgstr "Verweise auf die Bezeichner-Property"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr ""
+"Es gibt im Wesentlichen 2 Arten, um auf die Bezeichner-Property einer Entity "
+"zu verweisen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that the "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"Die spezielle Property (Kleinbuchstaben) <literal>id</literal> kann "
+"verwendet werden, um auf die Bezeichner-Property einer Entity zu verweisen "
+"<emphasis> vorausgesetzt, dass diese Entity keine nicht-Bezeichner Property "
+"mit Namen id definiert </emphasis>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you can use that property "
+"name."
+msgstr ""
+"Falls die Entity eine benannte Bezeichner-Property definiert, können Sie "
+"diesen Property-Namen verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named. Otherwise, "
+"the special <literal>id</literal> property can be used to reference the "
+"identifier property."
+msgstr ""
+"Verweise auf Properties von zusammengesetzten Bezeichnern folgen denselben "
+"Namensgebungsregeln. Falls die Entity eine nicht-Bezeichner Property namens "
+"id besitzt, so kann auf die Property des zusammengesetzten Bezeichners nur "
+"mittels deren definiertem Namen verwiesen werden; andernfalls kann die "
+"spezielle <literal>id</literal>-Property verwendet werden, um auf die "
+"Bezeichner-Property zu verweisen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that, starting in version 3.2.2, this has changed significantly. "
+"In previous versions, <literal>id</literal> <emphasis>always</emphasis> "
+"referred to the identifier property regardless of its actual name. A "
+"ramification of that decision was that non-identifier properties named "
+"<literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+"Hinweis: Dies hat sich seit Version 3.2.2 maßgeblich verändert. In früheren "
+"Versionen verwies <literal>id</literal><emphasis>immer</emphasis> auf die "
+"Bezeichner-Property, unabhängig vom tatsächlichen Namen. Eine Auswirkung "
+"dieser Entscheidung war, dass in Hibernate Anfragen nie auf nicht-Bezeichner "
+"Properties mit Namen <literal>id</literal> verwiesen werden konnte."
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "Die \"select\"-Klausel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider the following:"
+msgstr ""
+"Die <literal>select</literal>-Klausel entscheidet, welche Objekte und "
+"Properties im Ergebnissatz der Anfrage erscheinen. Beachten Sie:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. You can express this query more compactly as:"
+msgstr ""
+"Die Anfrage wählt <literal>mate</literal>s anderer <literal>Cat</literal>s. "
+"Sie können diese Anfrage sogar noch kompakter ausdrücken:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"Anfragen können Properties jeden Wertetyps, einschließlich Properties des "
+"Komponententyps, wiedergeben:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>:"
+msgstr ""
+"Anfragen können mehrere Objekte und/oder Properties als Array vom Typ "
+"<literal>Object[]</literal> wiedergeben,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Or - assuming that the class <literal>Family</literal> has an appropriate "
+"constructor - as an actual typesafe Java object:"
+msgstr ""
+"in der Annahme, dass die Klasse <literal>Family</literal> einen "
+"entsprechenden Konstruktor besitzt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"Unter Verwendung von <literal>as</literal> können Sie Aliasse gewählten "
+"Ausdrücken zuordnen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr ""
+"Das ist besonders in Verbindung mit <literal>select new map</literal> "
+"nützlich:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"Diese Anfrage reagiert mit einer <literal>Map</literal> von Aliassen zu "
+"gewählten Werten."
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "Aggregierte Funktionen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL queries can even return the results of aggregate functions on properties:"
+msgstr ""
+"HQL-Anfragen können sogar die Ergebnisse aggregierter Funktionen an "
+"Properties zurücksenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "Die unterstützten aggregierten Funktionen sind "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "avg(...), sum(...), min(...), max(...)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "count(...), count(distinct ...), count(all...)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"In der \"select\"-Klausel können Sie Rechenzeichen, Verkettung und "
+"anerkannte SQL-Funktionen verwenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords can be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"Die <literal>distinct</literal> und <literal>all</literal>-Schlüsselbegriffe "
+"können verwendet werden und besitzen dieselbe Semantik wie in SQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Polymorphe Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "Eine Anfrage wie:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries can name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. 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 ""
+"reagiert nicht nur mit Instanzen von <literal>Cat</literal>, sondern auch "
+"Subklassen wie <literal>DomesticCat</literal>. Hibernate Anfragen können "
+"eine <emphasis>beliebige</emphasis> Java-Klasse oder Interface in der "
+"<literal>from</literal>-Klausel benennen. Die Anfrage reagiert mit Instanzen "
+"aller persistenten Klassen, die diese Klasse erweitern oder das Interface "
+"implementieren. Die folgende Anfrage würde mit allen persistenten Objekten "
+"reagieren:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"Das Interface <literal>Named</literal> könnte durch verschiedene persistente "
+"Klassen implementiert werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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 cannot call these "
+"queries using <literal>Query.scroll()</literal>."
+msgstr ""
+"Bitte beachten Sie, dass für die letzten beiden Anfragen mehr als ein SQL "
+"<literal>SELECT</literal> erforderlich ist. Das bedeutet, dass die "
+"<literal>order by</literal>-Klausel den gesamten Ergebnissatz nicht korrekt "
+"ordnet. (Es bedeutet auch, dass Sie diese Anfragen nicht mittels "
+"<literal>Query.scroll()</literal> aufrufen können)."
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "Die \"where\"-Klausel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to refine the list of "
+"instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+"Die <literal>where</literal>-Klausel erlaubt es Ihnen, die Liste der "
+"erhaltenen Instanzen einzugrenzen. Falls kein Alias existiert, können Sie "
+"namentlich auf die Properties verweisen:"
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr ""
+"Falls ein Alias existiert, verwenden Sie einen vollständigen Property-Namen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "reagiert mit Instanzen von 'Fritz' benannter <literal>Cat</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+"sendet sämtliche Instanzen von <literal>Foo</literal> zurück, für die eine "
+"Instanz von <literal>bar</literal> mit einer <literal>date</literal>-"
+"Property existiert, die gleich der <literal>startDate</literal>-Property von "
+"<literal>Foo</literal> ist. Zusammengesetzte Pfadausdrücke machen die "
+"<literal>where</literal>-Klausel sehr leistungsfähig. Ziehen Sie folgendes "
+"in Betracht:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+"Diese Anfrage wird in eine SQL-Anfrage mit Tabellenverbund (inner join) "
+"übersetzt. Falls Sie etwas wie das nachfolgende schreiben würden"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr ""
+"so würden Sie eine Anfrage erhalten, die vier Tabellenverbünde (sog. \"table "
+"joins\") in SQL benötigen würde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>=</literal> operator can be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"Mit dem <literal>=</literal>-Operator können nicht nur Properties, sondern "
+"auch Instanzen verglichen werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> can be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\" /> for more information."
+msgstr ""
+"Die spezielle Property (Kleinbuchstaben) <literal>id</literal> kann "
+"verwendet werden, um auf den eindeutigen Bezeichner eines Objekts zu "
+"verweisen. Weitere Informationen finden Sie unter <xref linkend=\"queryhql-"
+"identifier-property\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "Die zweite Anfrage ist effizient. Kein Tabellenverbund wird benötigt!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Properties of composite identifiers can also be used. Consider the following "
+"example where <literal>Person</literal> has composite identifiers consisting "
+"of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+"Properties zusammengesetzter Bezeichner können ebenfalls verwendet werden. "
+"Nehmen wir an <literal>Person</literal> besitzt einen zusammengesetzten "
+"Bezeichner, der aus <literal>country</literal> und <literal>medicareNumber</"
+"literal> besteht. Auch in diesem Fall finden Sie weitere Informationen zu "
+"Verweisen auf Bezeichner-Properties unter <xref linkend=\"queryhql-"
+"identifier-property\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "Erneut benötigt die zweite Anfrage keinen Tabellenverbund."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"queryhql-identifier-property\" /> for more information "
+"regarding referencing identifier properties)"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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."
+msgstr ""
+"Ebenso greift die spezielle Property <literal>class</literal> im Falle "
+"polymorpher Persistenz auf den Diskriminatorwert einer Instanz zu. Ein in "
+"der \"where\"-Klausel eingebetteter Java-Klassenname wird in seinen "
+"Diskriminatorwert übersetzt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\" /> for more "
+"information."
+msgstr ""
+"Sie können auch Komponenten oder zusammengesetzte Benutzertypen der besagten "
+"Komponententypen verwenden. Weitere Informationen finden Sie unter <xref "
+"linkend=\"queryhql-components\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal> that allows you to express a join in the following "
+"way (where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>):"
+msgstr ""
+"Ein \"any\"-Typ hat die speziellen Properties <literal>id</literal> und "
+"<literal>class</literal>, wodurch ein Verbund auf folgende Weise ausgedrückt "
+"werden kann (wo <literal>AuditLog.item</literal> eine mit <literal>&lt;"
+"any&gt;</literal> gemappte Property ist)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <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 ""
+"Bitte beachten Sie, dass <literal>log.item.class</literal> und "
+"<literal>payment.class</literal> auf Werte völlig unterschiedlicher "
+"Datenbankspalten in der obigen Anfrage verweisen würden."
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "Ausdrücke"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Expressions used in the <literal>where</literal> clause include the "
+"following:"
+msgstr ""
+"Die in der <literal>where</literal>-Klausel erlaubten Ausdrücke beinhalten "
+"die meisten Dinge, die in SQL geschrieben werden können:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "mathematische Operatoren <literal>+, -, *, /</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr ""
+"binäre Vergleichsoperatoren <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "logische Vorgänge <literal>and, or, not</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "Runde Klammern <literal>( )</literal>, Gruppierung anzeigend"
+
+#. Tag: para
+#, 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 ""
+"<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>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"\"Einfacher\" Fall <literal>case ... when ... then ... else ... end</"
+"literal>, und \"gesuchter\" Fall <literal>case when ... then ... else ... "
+"end</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"String-Verkettung <literal>...||...</literal> oder <literal>concat(...,...)</"
+"literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, and "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
+
+#. Tag: para
+#, 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(), mod()"
+"</literal>"
+msgstr ""
+"Jede Funktion oder Operator definiert durch EJB-QL 3.0: <literal>substring"
+"(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length"
+"(), mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> und <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"<literal>str()</literal> zur Konvertierung numerischer oder temporärer Werte "
+"in einen lesbaren String"
+
+#. Tag: para
+#, 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 ""
+"<literal>cast(... as ...)</literal>, wo ein zweites Argument der Name eines "
+"Hibernate-Typs ist und <literal>extract(... from ...)</literal>, wenn ANSI "
+"<literal>cast()</literal> und <literal>extract()</literal> von der zu Grunde "
+"liegenden Datenbank unterstützt werden"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"die HQL <literal>index()</literal>-Funktion, die für Aliasse eine "
+"verbundenen indizierten Collection gilt "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions that can be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"HQL-Funktionen, die Collection-wertige Pfadausdrücke annehmen: <literal>size"
+"(), minelement(), maxelement(), minindex(), maxindex()</literal> sowie die "
+"speziellen <literal>elements()</literal> und <literal>indices</literal>-"
+"Funktionen, die mittels <literal>some, all, exists, any, in</literal> "
+"gemessen werden können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</"
+"literal>"
+msgstr ""
+"Jede von der Datenbank unterstützte SQL-Skalarfunktion wie <literal>sign()</"
+"literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, "
+"<literal>sin()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "Positionelle Parameter im JDBC-Stil <literal>?</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"and <literal>:x1</literal>"
+msgstr ""
+"benannte Parameter <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"SQL-Literale <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"Java <literal>public static final</literal>-Konstanten <literal>eg.Color."
+"TABBY</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr ""
+"<literal>in</literal> und <literal>between</literal> können wie folgt "
+"verwendet werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "und die negierten Formen können geschrieben werden"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similarly, <literal>is null</literal> and <literal>is not null</literal> can "
+"be used to test for null values."
+msgstr ""
+"Ebenso können <literal>is null</literal> und <literal>is not null</literal> "
+"verwendet werden, um auf Nullwerte zu prüfen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Booleans can be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Booleans können ganz einfach in Ausdrücken verwendet werden, indem man in "
+"der Hibernate Konfiguration HQL-Anfragesubstitutionen deklariert:"
+
+#. Tag: para
+#, 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 ""
+"Das ersetzt die Schlüsselbegriffe <literal>true</literal> und "
+"<literal>false</literal> durch die Literale <literal>1</literal> und "
+"<literal>0</literal> in der aus dieser HQL übersetzten SQL:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can test the size of a collection with the special property "
+"<literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+"Sie können die Größe einer Collection mit der speziellen Property "
+"<literal>size</literal> oder der speziellen <literal>size()</literal>-"
+"Funktion überprüfen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For indexed collections, you can refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you can refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. For example:"
+msgstr ""
+"Für indizierte Collections können Sie auf den minimalen und den maximalen "
+"Index verweisen, indem Sie die <literal>minindex</literal> und "
+"<literal>maxindex</literal>-Funktionen verwenden. Ähnlich können Sie auch "
+"auf die minimalen und maximalen Elemente einer Collection des Grundtyps "
+"mittels <literal>minelement</literal> und <literal>maxelement</literal>-"
+"Funktionen verweisen."
+
+#. Tag: para
+#, fuzzy, 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):"
+msgstr ""
+"Die SQL-Funktionen <literal>any, some, all, exists, in</literal> werden "
+"unterstützt, wenn an den Element- oder Indexsatz einer Collection "
+"(<literal>elements</literal> und <literal>indices</literal>-Funktionen) oder "
+"das Ergebnis einer Unteranfrage gegeben (siehe unten)."
+
+#. Tag: para
+#, fuzzy, 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> - can only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"Bitte beachten Sie, dass folgende Konstrukte - <literal>size</literal>, "
+"<literal>elements</literal>, <literal>indices</literal>, <literal>minindex</"
+"literal>, <literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - in Hibernate3 nur in der \"where\"-Klausel "
+"verwendet werden können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, and maps) can be referred to "
+"by index in a where clause only:"
+msgstr ""
+"Auf Elemente indizierter Collections (Arrays, Listen, Maps) kann durch den "
+"Index verwiesen werden (nur in der \"where\"-Klausel):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> can even be an arithmetic "
+"expression:"
+msgstr ""
+"Der Ausdruck innerhalb von <literal>[]</literal> kann sogar ein "
+"arithmetischer Ausdruck sein."
+
+#. Tag: para
+#, fuzzy, 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 ""
+"HQL bietet außerdem die eingebaute <literal>index()</literal>-Funktion für "
+"Elemente einer \"One-to-Many\"-Assoziation oder einer Collection von Werten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr ""
+"Skalare SQL-Funktionen, die durch die zu Grunde liegende Datenbank "
+"unterstützt werden, können verwendet werden"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Consider how much longer and less readable the following query would be in "
+"SQL:"
+msgstr ""
+"Falls Sie jetzt noch nicht vom Sinn des Ganzen überzeugt sind, überlegen Sie "
+"einmal, um wie viel länger und um wie viel weniger lesbar die folgende "
+"Anfrage in SQL wäre:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>Tipp:</emphasis> etwas wie"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "Die Reihenfolge nach Klausel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The list returned by a query can be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"Die Liste, mit der eine Anfrage reagiert, kann nach jeder Property der "
+"Klasse oder Komponenten geordnet sein:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"Die optionalen <literal>asc</literal> oder <literal>desc</literal> zeigen "
+"die aufsteigende bzw. absteigende Reihenfolge an."
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "Die Gruppe nach Klausel"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A query that returns aggregate values can be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"Eine Anfrage, die aggregierte Werte zurücksendet kann durch jede Property "
+"einer zurückgesendeten Klasse oder Komponenten gruppiert werden:"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "Eine <literal>having</literal>-Klausel ist ebenfalls gestattet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses if they are supported by "
+"the underlying database (i.e., not in MySQL)."
+msgstr ""
+"SQL-Funktionen und aggregierte Funktionen sind in den <literal>having</"
+"literal> und <literal>order by</literal>-Klauseln gestattet , wenn sie von "
+"der zu Grunde liegenden Datenbank unterstützt werden (z.B. nicht in MySQL)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Neither the <literal>group by</literal> clause nor the <literal>order by</"
+"literal> clause can contain arithmetic expressions. Hibernate also does not "
+"currently expand a grouped entity, so you cannot write <literal>group by "
+"cat</literal> if all properties of <literal>cat</literal> are non-"
+"aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+"Beachten Sie, dass weder die <literal>group by</literal>-Klausel noch die "
+"<literal>order by</literal>-Klausel arithmetische Ausdrücke enthalten "
+"dürfen. Beachten Sie auch, dass Hibernate zur Zeit keine gruppierte Entity "
+"ausklappt, das heißt, Sie können nicht <literal>group by cat</literal> "
+"schreiben, wenn sämtliche Properties von <literal>cat</literal> nicht "
+"aggregiert sind. Sie müssen alle nicht aggregierten Properties explizit "
+"auflisten."
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "Unteranfragen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate 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 ""
+"Für Datenbanken, die Unterauswahlen unterstützen, unterstützt Hibernate "
+"innerhalb von Anfragen Unteranfragen. Eine Unteranfrage muss eingeklammert "
+"sein (oftmals durch einen SQL aggregierten Funktionsaufruf). Selbst "
+"korrelierende Unteranfragen (Unteranfragen, die auf einen Alias in der "
+"außerhalb liegenden Anfrage verweisen) sind gestattet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+"Beachten Sie, dass HQL-Unteranfragen nur in der Auswahl oder die \"where\"-"
+"Klausel auftreten können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more "
+"information."
+msgstr ""
+"Beachten Sie, dass Unteranfragen ebenfalls die <literal>row value "
+"constructor</literal>-Syntax nutzen können. Weitere Informationen finden Sie "
+"unter <xref linkend=\"queryhql-tuple\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "HQL-Beispiele"
+
+#. Tag: para
+#, fuzzy, 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 main strengths. The following "
+"example queries are similar to queries that have been used on recent "
+"projects. Please note that most queries you will write will be much simpler "
+"than the following examples."
+msgstr ""
+"Anfragen in Hibernate können sehr leistungsfähig und recht komplex sein. "
+"Genau genommen ist die Leistungsfähigkeit eine von Hibernates größten "
+"Stärken. Nachfolgend sehen Sie einige Beispielanfragen, ähnlich denen, die "
+"ich bei einem aktuellen Projekt verwendet habe. Bitte beachten Sie, dass die "
+"meisten Anfragen, die Sie werden schreiben müssen, wesentlich einfacher als "
+"diese sind!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following query returns the order id, number of items, the given minimum "
+"total value and the total value of the order for all unpaid orders for a "
+"particular customer. The results are ordered 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 ""
+"Die folgende Anfrage reagiert mit der ID der Bestellung (sog. \"order id\"), "
+"der Anzahl von Posten und dem Gesamtwert der Bestellung für alle unbezahlten "
+"Bestellungen für einen bestimmten Kunden und dem gegebenen Mindestwert, "
+"wobei die Ergebnisse nach Gesamtwert geordnet wird. Bei der Bestimmung der "
+"Preise wird der aktuelle Katalog verwendet. Die sich ergebende SQL-Anfrage "
+"an <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, "
+"<literal>PRODUCT</literal>, <literal>CATALOG</literal> und <literal>PRICE</"
+"literal>-Tabellen besitzt vier innere Verbünde (\"inner joins\") und eine "
+"(unkorrelierte) Unterauswahl."
+
+#. Tag: para
+#, 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 ""
+"Monströs! Im wirklichen Leben bin ich kein großer Freund von Unteranfragen, "
+"daher sieht meine Anfrage eher wie folgt aus:"
+
+#. Tag: para
+#, 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 ""
+"Die nächste Anfrage zählt die Anzahl von Zahlungen in jedem Status, wobei "
+"Zahlungen mit <literal>AWAITING_APPROVAL</literal>-Status, bei denen die "
+"aktuellste Statusänderung durch den Benutzer vorgenommen wurde, ausgenommen "
+"sind. Sie wird in eine SQL-Anfrage mit zwei inneren Verbünden und eine "
+"korrelierte Unterauswahl an die <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal> und <literal>PAYMENT_STATUS_CHANGE</"
+"literal>-Tabellen übersetzt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the <literal>statusChanges</literal> collection was mapped as a list, "
+"instead of a set, the query would have been much simpler to write."
+msgstr ""
+"Wäre die <literal>statusChanges</literal>-Collection als Liste statt als "
+"Satz (sog. \"set\") gemappt, so hätte sich die Anfrage einfacher schreiben "
+"lassen."
+
+#. Tag: para
+#, 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 ""
+"Die nächste Anfrage verwendet die MS SQL Server <literal>isNull()</literal>-"
+"Funktion, um alle Konten und unbezahlten Zahlungen für the Organisation, zu "
+"der der aktuelle Benutzer gehört, wiederzugeben. Sie wird in eine SQL-"
+"Anfrage mit drei inneren Verbünden (\"inner Joins\"), einen äußeren Verbund "
+"(\"outer Join\") und eine Unterauswahl gegen die <literal>ACCOUNT</literal>, "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, "
+"<literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> und "
+"<literal>ORG_USER</literal>-Tabellen übersetzt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"Bei einigen Datenbanken würden wir die (korrelierende) Unterauswahl "
+"abschaffen müssen."
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "\"Bulk\"-Aktualisierung und Löschen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\" /> for more information."
+msgstr ""
+"HQL unterstützt nun <literal>update</literal>, <literal>delete</literal> und "
+"<literal>insert ... select ...</literal>-Anweisungen. Weitere Einzelheiten "
+"hierzu finden Sie unter <xref linkend=\"batch-direct\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "Tipps &amp; Tricks"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr ""
+"Sie können die Anzahl der Anfragenergebnisse zählen, ohne diese tatsächlich "
+"wiederzugeben:"
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+"Um ein Ergebnis nach der Größe einer Collection zu ordnen, verwenden Sie die "
+"folgende Anfrage:"
+
+#. Tag: para
+#, 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 ""
+"Falls Ihre Datenbank Unterauswahlen unterstützt, können Sie eine Bedingung "
+"bezüglich der Auswahlgröße in der \"where\"-Klausel Ihrer Anfrage stellen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr ""
+"Falls Ihre Datenbank keine Unterauswahl unterstützt, verwenden Sie folgende "
+"Anfrage:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As this solution cannot return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"Da dabei wegen des inneren Verbunds nicht mit einem <literal>User</literal> "
+"mit \"Null\" Nachrichten reagiert werden kann, ist die folgende Form "
+"ebenfalls hilfreich:"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+"Properties eines JavaBean können an benannte Anfragenparameter gebunden "
+"werden:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"Collections sind unter Verwendung des <literal>Query</literal>-Interface mit "
+"einem Filter seitenwechselbar:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+"Collection-Elemente können mittels eines Anfragenfilters geordnet oder "
+"gruppiert werden:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr ""
+"Sie können die Größe einer Collection finden, ohne diese zu initialisieren:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "Komponenten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Components can be used similarly to the simple value types that are used in "
+"HQL queries. They can appear in the <literal>select</literal> clause as "
+"follows:"
+msgstr ""
+"Komponenten können auf nahezu alle Arten verwendet werden, wie Wertetypen in "
+"HQL-Anfragen. Sie können in der <literal>select</literal>-Klausel auftreten:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"wo die Namen-Property der Person eine Komponente ist. Komponenten können "
+"auch in der <literal>where</literal>-Klausel verwendet werden:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr ""
+"Komponenten können auch in der <literal>order by</literal>-Klausel verwendet "
+"werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"Ein weiterer gängiger Anwendungsbereich von Komponenten ist in <xref linkend="
+"\"queryhql-tuple\"/> \"Row-Value-Constructors\"."
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "Die Syntax des \"Row-Value-Constructors\""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax, sometimes referred to AS <literal>tuple</literal> syntax, even "
+"though the underlying database may not support that notion. Here, we are "
+"generally referring to multi-valued comparisons, typically associated with "
+"components. Consider an entity Person which defines a name component:"
+msgstr ""
+"HQL unterstützt die Verwendung der ANSI SQL <literal>row value constructor</"
+"literal>-Syntax (auch als <literal>tuple</literal>-Syntax bekannt), obwohl "
+"die zu Grunde liegende Datenbank diesen Begriff möglicherweise nicht "
+"unterstützt. Wir beziehen uns hier im Wesentlichen auf mehrwertige "
+"Vergleiche, in der Regel mit Komponenten assoziiert. Ziehen Sie eine Entity "
+"Person in Betracht, die eine Namenskomponente definiert:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"That is valid syntax although it is a little verbose. You can make this more "
+"concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+"Das ist eine gültige Syntax, wenngleich etwas wortreich. Präziser lässt sich "
+"dies mittels der <literal>row value constructor</literal>-Syntax ausdrücken:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr ""
+"Es kann sich als nützlich erweisen, dies in der <literal>select</literal>-"
+"Klausel zu spezifizieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using <literal>row value constructor</literal> syntax can also be beneficial "
+"when using subqueries that need to compare against multiple values:"
+msgstr ""
+"Die Verwendung der <literal>row value constructor</literal>-Syntax kann "
+"außerdem bei der Verwendung von Unteranfragen hilfreich sein, die mit "
+"mehreren Werten verglichen werden müssen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax, is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"Bei der Entscheidung, ob Sie diese Syntax verwenden möchten, sollten Sie "
+"berücksichtigen, dass die Anfrage von der Anordnung der Komponenten Sub-"
+"Properties in Metadata abhängig sein wird."
+
+#, fuzzy
+#~ msgid "<![CDATA[from eg.Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat]]>"
+#~ msgstr "from Cat as cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat]]>"
+#~ msgstr "from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula, Parameter]]>"
+#~ msgstr "from Formula, Parameter"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula as form, Parameter as param]]>"
+#~ msgstr "from Formula as form, Parameter as param"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
+#~ msgstr "from Cat as cat left join cat.mate.kittens as kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula form full join form.parameter param]]>"
+#~ msgstr "from Formula form full join form.parameter param"
+
+#~ msgid "inner join"
+#~ msgstr "inner join"
+
+#~ msgid "left outer join"
+#~ msgstr "left outer join"
+
+#, fuzzy
+#~ msgid "right outer join"
+#~ msgstr "left outer join"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight > 10.0]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight &gt; 10.0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Document fetch all properties order by name]]>"
+#~ msgstr "from Document fetch all properties order by name"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Document doc fetch all properties where lower(doc.name) "
+#~ "like '%cats%']]>"
+#~ msgstr ""
+#~ "from Document doc fetch all properties where lower(doc.name) like '&#37;"
+#~ "cats&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
+#~ msgstr "from Cat as cat where cat.mate.name like '&#37;s&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate]]>"
+#~ msgstr ""
+#~ "select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cat.mate from Cat cat]]>"
+#~ msgstr "select cat.mate from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri%']]>"
+#~ msgstr ""
+#~ "select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cust.name.firstName from Customer as cust]]>"
+#~ msgstr "select cust.name.firstName from Customer as cust"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "select new Family(mother, mate, offspr)\n"
+#~ "from DomesticCat as mother\n"
+#~ "    join mother.mate as mate\n"
+#~ "    left join mother.kittens as offspr"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, "
+#~ "count(*) as n )\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n )\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count"
+#~ "(cat)\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
+#~ "from Cat cat"
+
+#~ msgid "count(*)"
+#~ msgstr "count(*)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight]]>"
+#~ msgstr ""
+#~ "select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from "
+#~ "Person]]>"
+#~ msgstr "select firstName||' '||initial||' '||upper(lastName) from Person"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat]]>"
+#~ msgstr ""
+#~ "select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from java.lang.Object o]]>"
+#~ msgstr "from java.lang.Object o"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Named n, Named m where n.name = m.name]]>"
+#~ msgstr "from Named n, Named m where n.name = m.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat where name='Fritz']]>"
+#~ msgstr "from Cat where name='Fritz'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
+#~ msgstr "from Cat as cat where cat.name='Fritz'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date]]>"
+#~ msgstr ""
+#~ "select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
+#~ msgstr "from Cat cat where cat.mate.name is not null"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null]]>"
+#~ msgstr ""
+#~ "from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
+#~ msgstr "from Cat cat, Cat rival where cat.mate = rival.mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate]]>"
+#~ msgstr ""
+#~ "select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69]]>"
+#~ msgstr ""
+#~ "from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
+#~ msgstr "from Cat cat where cat.class = DomesticCat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
+#~ msgstr ""
+#~ "from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name not between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', "
+#~ "'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false "
+#~ "0</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"hibernate.query.substitutions\"&gt;true 1, false "
+#~ "0&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.alive = true]]>"
+#~ msgstr "from Cat cat where cat.alive = true"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
+#~ msgstr "from Cat cat where cat.kittens.size &gt; 0"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
+#~ msgstr "from Cat cat where size(cat.kittens) &gt; 0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]"
+#~ ">"
+#~ msgstr "from Calendar cal where maxelement(cal.holidays) &gt; current_date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
+#~ msgstr "from Order order where maxindex(order.items) &gt; 100"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
+#~ msgstr "from Order order where minelement(order.items) &gt; 10000"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)]]>"
+#~ msgstr ""
+#~ "select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)]]>"
+#~ msgstr ""
+#~ "select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
+#~ msgstr "from Cat cat where exists elements(cat.kittens)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
+#~ msgstr "from Player p where 3 &gt; all elements(p.scores)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
+#~ msgstr "from Show show where 'fizard' in indices(show.acts)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where order.items[0].id = 1234]]>"
+#~ msgstr "from Order order where order.items[0].id = 1234"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar]]>"
+#~ msgstr ""
+#~ "select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) < 5]]>"
+#~ msgstr ""
+#~ "select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) &lt; 5"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
+#~ msgstr "from DomesticCat cat where upper(cat.name) like 'FRI&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+#~ "    )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+#~ msgstr ""
+#~ "from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color]]>"
+#~ msgstr ""
+#~ "select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id]]>"
+#~ msgstr ""
+#~ "select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) > 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc]]>"
+#~ msgstr ""
+#~ "select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) &gt; 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as fatcat\n"
+#~ "where fatcat.weight > (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as fatcat\n"
+#~ "where fatcat.weight &gt; (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat]]>"
+#~ msgstr ""
+#~ "select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 < sysdate\n"
+#~ "    and catalog.effectiveDate >= all (\n"
+#~ "        select cat.effectiveDate\n"
+#~ "        from Catalog as cat\n"
+#~ "        where cat.effectiveDate < sysdate\n"
+#~ "    )\n"
+#~ "group by order\n"
+#~ "having sum(price.amount) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 <> 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 <> :currentUser\n"
+#~ "    )\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select count(payment), status.name\n"
+#~ "from Payment as payment\n"
+#~ "    join payment.currentStatus as status\n"
+#~ "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+#~ "    or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :"
+#~ "currentUser\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+#~ msgstr ""
+#~ "select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue()]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
+#~ msgstr "from User usr where size(usr.messages) &gt;= 1"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) >= 1]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:"
+#~ "name and foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and "
+#~ "foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial "
+#~ "filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by "
+#~ "this.amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );]]>"
+#~ msgstr ""
+#~ "Collection orderedCollection = s.filter( collection, \"order by this."
+#~ "amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue();]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue();"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name from Person p]]>"
+#~ msgstr "select p.name from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name.first from Person p]]>"
+#~ msgstr "select p.name.first from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name = :name]]>"
+#~ msgstr "from from Person p where p.name = :name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name.first = :firstName]]>"
+#~ msgstr "from from Person p where p.name.first = :firstName"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name]]>"
+#~ msgstr "from from Person p order by p.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name.first]]>"
+#~ msgstr "from from Person p order by p.name.first"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name.first='John' and p.name."
+#~ "last='Jingleheimer-Schmidt']]>"
+#~ msgstr ""
+#~ "from Person p where p.name.first='John' and p.name.last='Jingleheimer-"
+#~ "Schmidt'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
+#~ msgstr "from Person p where p.name=('John', 'Jingleheimer-Schmidt')"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1933 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "Native SQL"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can 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 <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"Sie können Anfragen im nativen SQL-Dialekt Ihrer Datenbank ausdrücken. Das "
+"ist insbesondere dann von Nutzen, wenn Sie Datenbank-spezifische Features "
+"wie Anfragetipps oder den <literal>CONNECT</literal>-Schlüsselbegriff in "
+"Oracle verwenden wollen. Außerdem steht dadurch ein Migrationspfad von einer "
+"direkten, auf SQL/JDBC basierenden Anwendung zu Hibernate zur Verfügung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL, including stored "
+"procedures, for all create, update, delete, and load operations."
+msgstr ""
+"Mit Hibernate3 können Sie per Hand geschriebene SQL (einschließlich "
+"gespeicherter Prozeduren) für alle create, update, delete, und load Vorgänge "
+"festlegen."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following sections describe how to use this "
+"API for querying."
+msgstr ""
+"Die Ausführung nativer SQL-Anfragen wird mittels <literal>SQLQuery</literal>-"
+"Interface gesteuert, das man durch Aufruf von <literal>Session.createSQLQuery"
+"()</literal> erhält. Nachfolgend erläutern wir die Verwendung dieser API für "
+"Anfragen."
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "Skalare Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr ""
+"Die grundlegendste SQL-Anfrage erfolgt durch eine Liste von Skalaren "
+"(Werten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These will return a List of Object arrays (Object[]) with scalar values for "
+"each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"Beides reagiert mit einer Liste von Objekt-Datenelementen (Object[]) mit "
+"skalaren Werten für jede Spalte der CATS-Tabelle. Hibernate wird unter "
+"Verwendung von ResultSetMetadata die tatsächliche Anordnung und Typen der "
+"erhaltenen Skalarwerte ableiten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal>, or "
+"simply to be more explicit in what is returned, one can use "
+"<literal>addScalar()</literal>:"
+msgstr ""
+"Um den Zusatz der Verwendung von <literal>ResultSetMetadata</literal> zu "
+"vermeiden oder einfach expliziter zu sein, können Sie <literal>addScalar()</"
+"literal> verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "Diese Anfrage spezifiziert:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "den SQL-Anfragen-String"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "die wiederzugebenden Spalten und Typen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This will return Object arrays, but now it will not use "
+"<literal>ResultSetMetadata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"Dadurch werden Objektreihen wiedergegeben, jedoch werden keine "
+"<literal>ResultSetMetdata</literal> verwendet, sondern es wird explizit die "
+"ID, NAME und BIRTHDATE Spalte als ein Long, String und ein Short vom zu "
+"Grunde liegenden Ergebnissatz (\"result set\") geholt. Das bedeutet auch, "
+"dass nur diese drei Spalten wiedergegeben werden, selbst wenn die Anfrage "
+"<literal>*</literal> verwendet und mehr als die drei gelisteten Spalten "
+"wiedergeben könnte."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr ""
+"Es ist möglich, die Typeninformationen für alle oder einige der Skalare "
+"auszulassen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to determine the type of NAME "
+"and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+"Es handelt sich im Wesentlichen um diesselbe Anfrage wie zuvor, außer dass "
+"jetzt <literal>ResultSetMetaData</literal> verwendet wurde, um den Typ von "
+"NAME und BIRTHDATE zu bestimmen, während der ID-Typ explizit spezifiziert "
+"wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped, or does not result in the expected type, it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"Der Dialekt steuert, wie die java.sql.Typen, die von ResultSetMetaData "
+"erhalten werden, zu Hibernate Typen gemappt werden. Falls ein bestimmter Typ "
+"nicht gemappt ist oder nicht den erwarteten Typ hervorbringt, so ist es "
+"möglich, dies durch Anpassung an <literal>registerHibernateType</literal> im "
+"Dialekt anzupassen."
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "Entity-Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"Die Anfragen oben behandeln die erhaltenen Skalarwerte, wobei es sich dabei "
+"um die \"unbearbeiteten\" Werte von resultset handelt. Nachfolgend sehen "
+"Sie, wie Sie Entity-Objekte von einer nativen SQL-Anfrage mittels "
+"<literal>addEntity()</literal> erhalten."
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "die von der Anfrage wiedergegebene Entity"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Geht man davon aus, dass Cat als Klasse mit den Spalten ID, NAME und "
+"BIRTHDATE gemappt ist, werden die Anfragen oben beide mit einer Liste "
+"antworten, in der jedes Element eine Entity von Cat ist."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"Falls die Entity mit <literal>many-to-one</literal> zu einer anderen Entity "
+"gemappt ist, so ist dies ebenfalls erforderlich wenn die native Anfrage "
+"durchgeführt wird, da sonst eine Datenbank-spezifische \"Spalte nicht "
+"gefunden\"-Fehlermeldung (\"column not found\") erscheint. Die zusätzlichen "
+"Spalten werden bei Verwendung der * Notation automatisch wiedergegeben, aber "
+"wie im folgenden Beispiel für eine <literal>many-to-one</literal> zu "
+"<literal>Dog</literal> wollen wir lieber explizit sein:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "Dies ermöglicht die ordnungsgemäße Funktion von cat.getDog()."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "Umgang mit Assoziationen und Collections"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"Es ist möglich \"eager Join\" in <literal>Dog</literal> anzuwenden, um den "
+"Extra-Weg zur Datenbank zur Initialisierung des Proxy zu vermeiden. Dies "
+"geschieht mittels der <literal>addJoin()</literal>-Methode, die es Ihnen "
+"ermöglicht, eine Assoziation oder Collection zu verbinden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example, the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that you added an alias name (\"cat\") to "
+"be able to specify the target property path of the join. It is possible to "
+"do the same eager joining for collections, e.g. if the <literal>Cat</"
+"literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"In diesem Beispiel ist die <literal>dog</literal>-Property der "
+"wiedergegebenen <literal>Cat</literal>'s voll initialisiert, ohne dass ein "
+"Extra-Weg zur Datenbank nötig ist. Beachten Sie, dass wir einen Alias-Namen "
+"(\"cat\") hinzugefügt haben, um den Pfad der Ziel-Property der Verbindung "
+"spezifizieren zu können. Es ist möglich, dasselbe für das \"eager Joining\" "
+"von Collections zu tun, z.B. wenn  <literal>Cat</literal> satt dessen eine "
+"\"One-to-many\" zu <literal>Dog</literal> hätte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"At this stage you are reaching the limits of what is possible with native "
+"queries, without starting to enhance the sql queries to make them usable in "
+"Hibernate. Problems can arise when returning multiple entities of the same "
+"type or when the default alias/column names are not enough."
+msgstr ""
+"Wir erreichen nun den Punkt, an dem wir an die Grenzen dessen stoßen, was "
+"mit nativen Anfragen möglich ist, ohne die sql-Anfragen weiterzuentwickeln, "
+"um sie in Hibernate verwendbar zu machen. Das Problem zeigt sich erstmals, "
+"wenn mehrere Entities desselben Typs auftauchen oder wenn die Standard "
+"Alias-/Spaltennamen nicht ausreichen."
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "Wiedergabe mehrerer Entities"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Until now, the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries that join multiple tables, since the same column names can "
+"appear in more than one table."
+msgstr ""
+"Bis jetzt wird angenommen, dass die Spaltennamen des Ergebnissatzes "
+"dieselben wie die im Mapping-Dokument spezifizierten Spaltennamen sind. Dies "
+"kann problematisch für SQL-Anfragen sein, die mehrere Tabellen verbinden, da "
+"dieselben Spaltennamen stets in mehr als einer Tabelle vorkommen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr ""
+"Spalten Alias-Einspeisung wird bei der folgenden Anfrage benötigt (die aller "
+"Wahrscheinlichkeit nach fehlschlagen wird):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The query was intended to return two Cat instances per row: a cat and its "
+"mother. The query will, however, fail because there is a conflict of names; "
+"the instances are mapped to the same column names. Also, on some databases "
+"the returned column aliases will most likely be on the form \"c.ID\", \"c."
+"NAME\", etc. which are not equal to the columns specified in the mappings "
+"(\"ID\" and \"NAME\")."
+msgstr ""
+"Die Absicht dieser Anfrage ist es, das diese zwei Cat-Instanzen pro Reihe "
+"wiedergibt, einer \"Cat\" und deren \"Mother\". Dies wird fehlschlagen, da "
+"ein Namenskonflikt existiert, weil diese zu denselben Spaltennamen gemappt "
+"sind; in manchen Datenbanken haben die wiedergegebenen Spalten-Aliasse aller "
+"Wahrscheinlichkeit nach die Form \"c.ID\", \"c.NAME\", usw. die nicht "
+"dieselbe wie die in den Mappings (\"ID\" und \"NAME\") spezifizierten "
+"Spalten besitzt."
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr ""
+"Die folgende Form ist nicht anfällig für die Duplizierung von Spaltennamen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"der SQL Anfragen-String mit Platzhaltern für die durch Hibernate "
+"eingespeisten Aliasse"
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "die von der Anfrage erhaltenen Entities"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you can list the columns explicitly, but even "
+"in this case Hibernate injects the SQL column aliases for each property. The "
+"placeholder for a column alias is just the property name qualified by the "
+"table alias. In the following example, you retrieve Cats and their mothers "
+"from a different table (cat_log) to the one declared in the mapping "
+"metadata. You can even use the property aliases in the where clause."
+msgstr ""
+"Die oben verwendete {cat.*} und {mother.*} Notation ist eine Kurzschrift für "
+"\"alle Properties\". Alternativ können Sie die Spalten direkt auflisten, "
+"wobei wir aber selbst in diesem Fall Hibernate die SQL Spalten-Aliasse für "
+"jede Property einspeisen lassen. Der Platzhalter für einen Spalten-Alias ist "
+"einfach der durch den Tabellen-Alias definierte Property-Name. Im folgenden "
+"Beispiel erhalten wir \"Cats\" und deren \"Mothers\" von einer anderen "
+"Tabelle (cat_log) als der in den Mapping-Metadata deklarierten. Beachten "
+"Sie, dass wir sogar die Property-Aliasse in der \"where\"-Klausel verwenden "
+"können, wenn wir das möchten."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "Alias- und Property-Referenzen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In most cases the above alias injection is needed. For queries relating to "
+"more complex mappings, like composite properties, inheritance "
+"discriminators, collections etc., you can use specific aliases that allow "
+"Hibernate to inject the proper aliases."
+msgstr ""
+"In den meisten Fällen wird die obige Alias-Einspeisung benötigt, jedoch "
+"müssen für komplexere Mappings betreffende Anfragen wie zusammengesetzte "
+"Properties, Vererbungsdiskriminatoren, Collections usw. spezielle Aliasse "
+"verwendet werden, die es Hibernate erlauben, die korrekten Aliasse "
+"einzuspeisen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows the different ways you can use the alias "
+"injection. Please note that the alias names in the result are simply "
+"examples; each alias will have a unique and probably different name when "
+"used."
+msgstr ""
+"Die folgende Tabelle zeigt die verschiedenen Möglichkeiten wie die Alias-"
+"Einspeisung verwendet werden kann. Hinweis: Die Alias-Namen im Ergebnis sind "
+"Beispiele, jeder Alias wird bei seiner Anwendung einen eindeutigen und "
+"wahrscheinlich unterschiedlichen Namen besitzen."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "Alias-Einspeisungsnamen"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "Syntax"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "Beispiel"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "Eine einfache Property"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "{[aliasname].[propertyname]"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "Eine zusammengesetzte Property"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "{[aliasname].[componentname].[propertyname]}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+msgstr "CURRENCY als {item.amount.currency}, VALUE als {item.amount.value}"
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "Diskriminator einer Entity"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "Alle Properties einer Entity"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "Ein Collection-Schlüssel"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "Die id einer Collection"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "Das Element einer Collection"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "property of the element in the collection"
+msgstr "Property des Elements in der Collection"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "{[aliasname].element.[propertyname]}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "Alle Properties des Elements in der Collection"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "All properties of the the collection"
+msgstr "Alle Properties der Collection"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "oder als eine <literal>List</literal>,"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "Wiedergabe nicht gemanagter Entities"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native SQL queries, allowing "
+"it to return non-managed entities."
+msgstr ""
+"Es ist möglich, einen ResultTransformer (Ergebnistransformer) an nativen SQL-"
+"Anfragen anzuwenden, der die Wiedergabe nicht gemanagter Entities ermöglicht."
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "ein Ergebnistransformer"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"Die Anfrage oben wird eine Liste von <literal>CatDTO</literal> wiedergeben, "
+"die instantiiert wurde und die Werte für NAME und BIRTHNAME in die "
+"entsprechenden Properties oder Felder eingespeist hat."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "Umgang mit Vererbung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Native SQL queries which query for entities that are mapped as part of an "
+"inheritance must include all properties for the baseclass and all its "
+"subclasses."
+msgstr ""
+"Native SQL-Anfragen für Entities, die als Teil einer Vererbung gemappt sind, "
+"müssen sämtliche Properties für die Stammklasse und alle Subklassen "
+"enthalten."
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "Parameter"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+"Native SQL-Anfragen unterstützen sowohl positionelle als auch benannte "
+"Parameter:"
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "Benannte SQL-Anfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Named SQL queries can be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, you do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"Benannte SQL-Anfragen können im Mapping-Dokument definiert und auf dieselbe "
+"Weise wie eine benannte HQL-Anfrage benannt werden. In diesem Fall muss "
+"<emphasis>nicht</emphasis> der Aufruf <literal>addEntity()</literal> "
+"erfolgen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;return-join&gt;</literal> element is use to join "
+"associations and the <literal>&lt;load-collection&gt;</literal> element is "
+"used to define queries which initialize collections,"
+msgstr ""
+"Die <literal>&lt;return-join&gt;</literal> und <literal>&lt;load-"
+"collection&gt;</literal>-Elemente werden verwendet, um Assoziationen zu "
+"verbinden bzw. Anfragen, die Collections definieren, zu initialisieren."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> "
+"element:"
+msgstr ""
+"Eine benannte SQL-Anfrage kann einen Skalarwert wiedergeben. Sie müssen "
+"unter Verwendung des <literal>&lt;return-scalar&gt;</literal>-Elements den "
+"Spalten-Alias und den Hibernate-Typ deklarieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can externalize the resultset mapping information in a <literal>&lt;"
+"resultset&gt;</literal> element which will allow you to either reuse them "
+"across several named queries or through the <literal>setResultSetMapping()</"
+"literal> API."
+msgstr ""
+"Sie können die Mapping-Informationen des Ergebnissatzes (\"resultset\") in "
+"einem <literal>&lt;resultset&gt;</literal>-Element externalisieren, um diese "
+"entweder über mehrere benannte Anfragen hinweg oder durch die "
+"<literal>setResultSetMapping()</literal>-API wiederzuverwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can, alternatively, use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"Alternativ können Sie Mapping-Informationen des Ergebnissatzes in Ihren hbm-"
+"Dateien direkt in Java Code verwenden."
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr ""
+"Die Verwendung der Return-Property zur expliziten Spezifizierung von "
+"Spalten-/Aliasnamen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can explicitly tell Hibernate what column aliases to use with "
+"<literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}"
+"</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+"Mit <literal>&lt;return-property&gt;</literal> können Sie Hibernate explizit "
+"anweisen, welche Aliasse es verwenden soll, statt die <literal>{}</literal>-"
+"Syntax zu verwenden, bei der Hibernate seine eigenen Aliasse einspeist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;return-property&gt;</literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which cannot "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal>&lt;return-property&gt;</literal> funktioniert auch mit mehreren "
+"Spalten. Dies löst die Einschränkungen der <literal>{}</literal>-Syntax, die "
+"keine feinstufige Steuerung mehrspaltiger Properties erlaubt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example <literal>&lt;return-property&gt;</literal> was used in "
+"combination with the <literal>{}</literal>-syntax for injection. This allows "
+"users to choose how they want to refer column and properties."
+msgstr ""
+"Bitte beachten Sie, dass wir in diesem Beispiel <literal>&lt;return-"
+"property&gt;</literal> in Verbindung mit der <literal>{}</literal>-Syntax "
+"für die Einspeisung verwendet haben. Dadurch ist es Benutzern möglich zu "
+"entscheiden, wie auf Spalten und Properties verwiesen werden soll."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal>&lt;return-"
+"discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+"Falls Ihr Mapping über einen Diskriminator verfügt, so müssen Sie "
+"<literal>&lt;return-discriminator&gt;</literal> verwenden, um die "
+"Diskriminator-Spalte festzulegen."
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "Die Verwendung gespeicherter Prozeduren für Anfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 provides support for queries via stored procedures and functions. "
+"Most of the following documentation is equivalent for both. The stored "
+"procedure/function must return a resultset as the first out-parameter to be "
+"able to work with Hibernate. An example of such a stored function in Oracle "
+"9 and higher is as follows:"
+msgstr ""
+"Hibernate 3 bietet Support für Anfragen via gespeicherter Prozeduren und "
+"Funktionen. Die meisten Teile der nachfolgenden Dokumentation sind für beide "
+"gleich. Die gespeicherte Prozedur/Funktion muss einen Ergebnissatz als "
+"ersten \"out-Parameter\" wiedergeben, um mit Hibernate arbeiten zu können. "
+"Ein Beispiel für eine solche gespeicherte Funktion in Oracle 9 und späteren "
+"Versionen lautet wie folgt:"
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+"Um diese Anfrage in Hibernate zu verwenden, müssen Sie sie durch eine "
+"benannte Anfrage mappen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Stored procedures currently only return scalars and entities. <literal>&lt;"
+"return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are "
+"not supported."
+msgstr ""
+"Bitte beachten Sie, dass gespeicherte Prozeduren gegenwärtig nur Skalare und "
+"Entities wiedergeben. <literal>&lt;return-join&gt;</literal> und "
+"<literal>&lt;load-collection&gt;</literal> werden nicht unterstützt."
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "Regeln/Einschränkungen bei der Verwendung gespeicherter Prozeduren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You cannot use stored procedures with Hibernate unless you follow some "
+"procedure/function rules. If they do not follow those rules they are not "
+"usable with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Um gespeicherte Prozeduren mit Hibernate zu verwenden, müssen die Prozeduren/"
+"Funktionen einigen Regeln folgen. Falls sie diese nicht berücksichtigen, "
+"können sie nicht mit Hibernate verwendet werden. Falls Sie diese Prozeduren "
+"dennoch benutzen wollen, so müssen Sie sie mittels <literal>session."
+"connection()</literal> ausführen. Die Regeln sind für jede Datenbank anders, "
+"da Datenbankanbieter jeweils über verschiedene gespeicherte Semantik/Syntax "
+"für Prozeduren verfügen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Stored procedure queries cannot be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"Gespeicherte Prozeduren können nicht mit <literal>setFirstResult()/"
+"setMaxResults()</literal> seitenweise umgespeichert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+"Die empfohlen Form für den Aufruf ist Standard SQL92: <literal>{ ? = call "
+"functionName (&lt;parameters&gt;) }</literal> oder <literal>{ ? = call "
+"procedureName(&lt;parameters&gt;}</literal>. Native Aufrufsyntax wird nicht "
+"unterstützt."
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "Für Oracle gelten die folgenden Regeln:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type. See Oracle "
+"literature for further information."
+msgstr ""
+"Eine Funktion muss mit einem Ergebnissatz (\"result set\") reagieren. Der "
+"erste Parameter einer Prozedur muss ein <literal>OUT</literal> sein, das "
+"einen Satz von Ergenissen liefert. Dies geschieht unter Verwendung eines "
+"<literal>SYS_REFCURSOR</literal>-Typs in Oracle 9 oder 10. In Oracle müssen "
+"Sie einen <literal>REF CURSOR</literal>-Typ definieren, siehe auch in "
+"Literatur zu Oracle."
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "Für Sybase oder MS SQL Server gelten die folgenden Regeln:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can "
+"return multiple result sets and update counts, Hibernate will iterate the "
+"results and take the first result that is a result set as its return value. "
+"Everything else will be discarded."
+msgstr ""
+"Eine Prozedur muss mit einem Ergebnissatz (\"result set\") reagieren. Bitte "
+"beachten Sie, dass - da diese Server mit mehreren Ergebnissätzen reagieren "
+"können/werden und Zählungen aktualisieren - Hibernate die Ergebnisse "
+"wiederholt und das erste Ergebnis als Wiedergabewert nimmt, das einen "
+"Ergebnissatz darstellt. Alles andere wird verworfen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"Falls Sie <literal>SET NOCOUNT ON</literal> in Ihrer Prozedur aktivieren "
+"können, so würde sie wahrscheinlich effizienter. Dies ist jedoch keine "
+"Voraussetzung."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr ""
+"Anwenderspezifische SQL für \"create\" (erstellen), \"update"
+"\" (aktualisieren) und \"delete\" (löschen)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL for create, update, and delete operations. The "
+"SQL can be overridden at the statement level or inidividual column level. "
+"This section describes statement overrides. For columns, see <xref linkend="
+"\"mapping-column-read-and-write\" />."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class and collection persisters in Hibernate already contain a set of "
+"configuration time generated strings (insertsql, deletesql, updatesql etc.). "
+"The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-"
+"delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override "
+"these strings:"
+msgstr ""
+"Hibernate3 kann angepasste SQL-Anweisungen für \"create\", \"update\", und "
+"\"delete\" Vorgänge verwenden. Die Klassen- und Collection-Persister in "
+"Hibernate enthalten bereits einen Satz von zur Konfigurationszeit "
+"generierten Strings (insertsql, deletesql, updatesql usw.). Die Mapping-Tags "
+"<literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-delete&gt;</literal> "
+"und <literal>&lt;sql-update&gt;</literal> setzen diese Strings außer Kraft:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you can use any dialect "
+"you like. This will reduce the portability of your mapping if you use "
+"database specific SQL."
+msgstr ""
+"Die SQL wird direkt in Ihrer Datenbank ausgeführt, Sie können daher jeden "
+"beliebigen Dialekt verwenden. Dies wird natürlich die Übertragbarkeit Ihres "
+"Mappings reduzieren, wenn Sie Datenbank-spezifische SQL benutzen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"Gespeicherte Prozeduren werden unterstützt, wenn das <literal>callable</"
+"literal>-Attribut wie folgt eingestellt ist:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The order of the positional parameters is vital, as they must be in the same "
+"sequence as Hibernate expects them."
+msgstr ""
+"Die Reihenfolge der positionellen Parameter ist gegenwärtig entscheidend, da "
+"sie dieselbe Sequenz besitzen müssen, wie Hibernate sie erwartet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can view the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled, Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. To view the expected sequence, do not include "
+"your custom SQL in the mapping files, as this will override the Hibernate "
+"generated static SQL."
+msgstr ""
+"Sie können die erwartete Reihenfolge sehen, indem Sie Debug-Protokollierung "
+"für die<literal>org.hibernate.persister.entity</literal>-Ebene aktivieren. "
+"Wenn diese Ebene aktiviert ist, druckt Hibernate die statische SQL aus, die "
+"zur Erstellung, Aktualisierung, Löschung usw. von Entities verwendet wird. "
+"(Um die erwartete Sequenz zu sehen, denken Sie daran, Ihre angepasste SQL "
+"nicht in die Mapping-Dateien einzuschließen, da diese die durch Hibernate "
+"generierte statische sql außer Kraft setzt)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The stored procedures are in most cases required to return the number of "
+"rows inserted, updated and deleted, as Hibernate has some runtime checks for "
+"the success of the statement. Hibernate always registers the first statement "
+"parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+"Die gespeicherten Prozeduren sind in den meisten Fällen (bzw. fast immer) "
+"für die Wiedergabe der Anzahl von eingefügten/aktualisierten/gelöschten "
+"Reihen erforderlich, da Hibernate einige Runtime-Überprüfungen hinsichtlich "
+"des Erfolgs der Anweisung durchführt. Hibernate registriert immer den ersten "
+"Anweisungsparameter als numerischen Ausgabeparameter für die CUD-Vorgänge:"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "Angepasste SQL für das Laden"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also declare your own SQL (or HQL) queries for entity loading. As "
+"with inserts, updates, and deletes, this can be done at the individual "
+"column level as described in <xref linkend=\"mapping-column-read-and-write"
+"\" /> or at the statement level. Here is an example of a statement level "
+"override:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You can "
+"reference this named query in a class mapping:"
+msgstr ""
+"Hier handelt es sich lediglich um eine Anfragendeklaration, wie zuvor "
+"erläutert. Sie können auf diese benannte Anfrage in einem Klassen-Mapping "
+"verweisen:"
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "Das funktioniert sogar mit gespeicherten Prozeduren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr ""
+"Sie können sogar eine Anfrage für das Laden von Collections definieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"Sie könnten sogar einen Entity-Loader definieren, der eine Collection "
+"mittels \"Join-Fetching\" lädt:"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can also declare your own SQL (or HQL) queries for entity loading:"
+#~ msgstr ""
+#~ "Sie können auch Ihre eigenen SQL (oder HQL)-Anfragen für das Laden von "
+#~ "Entities deklarieren:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat."
+#~ "class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM "
+#~ "CATS\").addEntity(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\")."
+#~ "addEntity(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, "
+#~ "D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME "
+#~ "FROM CATS c, DOGS d \n"
+#~ "    WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, "
+#~ "CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID "
+#~ "FROM CATS c, DOGS d\n"
+#~ "    WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE "
+#~ "c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE c."
+#~ "MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, "
+#~ "CATS m WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, CATS m "
+#~ "WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()"
+
+#, fuzzy
+#~ msgid "A_NAME as {item.name}"
+#~ msgstr "A_NAME as {item.name}"
+
+#, fuzzy
+#~ msgid "{[aliasname].class}"
+#~ msgstr "{[aliasname].class}"
+
+#, fuzzy
+#~ msgid "DISC as {item.class}"
+#~ msgstr "DISC as {item.class}"
+
+#, fuzzy
+#~ msgid "{[aliasname].*}"
+#~ msgstr "{[aliasname].*}"
+
+#~ msgid "{item.*}"
+#~ msgstr "{item.*}"
+
+#, fuzzy
+#~ msgid "{[aliasname].key}"
+#~ msgstr "{[aliasname].key}"
+
+#, fuzzy
+#~ msgid "ORGID as {coll.key}"
+#~ msgstr "ORGID als {coll.key}"
+
+#, fuzzy
+#~ msgid "{[aliasname].id}"
+#~ msgstr "{[aliasname].id}"
+
+#, fuzzy
+#~ msgid "EMPID as {coll.id}"
+#~ msgstr "EMPID als {coll.id}"
+
+#, fuzzy
+#~ msgid "{[aliasname].element}"
+#~ msgstr "{[aliasname].element}"
+
+#, fuzzy
+#~ msgid "XID as {coll.element}"
+#~ msgstr "XID als {coll.element}"
+
+#, fuzzy
+#~ msgid "NAME as {coll.element.name}"
+#~ msgstr "NAME als {coll.element.name}"
+
+#, fuzzy
+#~ msgid "{[aliasname].element.*}"
+#~ msgstr "{[aliasname].element.*}"
+
+#, fuzzy
+#~ msgid "{coll.element.*}"
+#~ msgstr "{coll.*}"
+
+#~ msgid "{coll.*}"
+#~ msgstr "{coll.*}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE "
+#~ "NAME like ?\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus%\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus%\").list();          ]]>"
+#~ msgstr ""
+#~ "Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?"
+#~ "\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus&#37;\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus&#37;\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"persons\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"persons\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"personsWith\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"personsWith\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return-scalar column=\"name\" type=\"string\"/>\n"
+#~ "    <return-scalar column=\"age\" type=\"long\"/>\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return-scalar column=\"name\" type=\"string\"/&gt;\n"
+#~ "    &lt;return-scalar column=\"age\" type=\"long\"/&gt;\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber&#37;'\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<resultset name=\"personAddress\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "</resultset>\n"
+#~ "\n"
+#~ "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;resultset name=\"personAddress\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "&lt;/resultset&gt;\n"
+#~ "\n"
+#~ "&lt;sql-query name=\"personsWith\" resultset-ref=\"personAddress\"&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\">\n"
+#~ "        <return-property name=\"name\" column=\"myName\"/>\n"
+#~ "        <return-property name=\"age\" column=\"myAge\"/>\n"
+#~ "        <return-property name=\"sex\" column=\"mySex\"/>\n"
+#~ "    </return>\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "</sql-query>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"&gt;\n"
+#~ "        &lt;return-property name=\"name\" column=\"myName\"/&gt;\n"
+#~ "        &lt;return-property name=\"age\" column=\"myAge\"/&gt;\n"
+#~ "        &lt;return-property name=\"sex\" column=\"mySex\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "        <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
+#~ "    </return>\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"organizationCurrentEmployments\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"myEndDate\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
+#~ "        <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
+#~ "        <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
+#~ "        <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
+#~ "        <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
+#~ "        <return-property name=\"id\" column=\"EID\"/>\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "    </return>\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"selectAllEmployees_SP\" callable=\"true\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"employee\" column=\"EMPLOYEE\"/&gt;\n"
+#~ "        &lt;return-property name=\"employer\" column=\"EMPLOYER\"/&gt;\n"
+#~ "        &lt;return-property name=\"startDate\" column=\"STARTDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"ENDDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"regionCode\" column=\"REGIONCODE\"/"
+#~ "&gt;\n"
+#~ "        &lt;return-property name=\"id\" column=\"EID\"/&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-"
+#~ "insert>\n"
+#~ "    <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
+#~ "    <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert&gt;INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )"
+#~ "&lt;/sql-insert&gt;\n"
+#~ "    &lt;sql-update&gt;UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?&lt;/sql-"
+#~ "update&gt;\n"
+#~ "    &lt;sql-delete&gt;DELETE FROM PERSON WHERE ID=?&lt;/sql-delete&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-"
+#~ "insert>\n"
+#~ "    <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-"
+#~ "delete>\n"
+#~ "    <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-"
+#~ "update>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert callable=\"true\"&gt;{call createPerson (?, ?)}&lt;/"
+#~ "sql-insert&gt;\n"
+#~ "    &lt;sql-delete callable=\"true\"&gt;{? = call deletePerson (?)}&lt;/"
+#~ "sql-delete&gt;\n"
+#~ "    &lt;sql-update callable=\"true\"&gt;{? = call updatePerson (?, ?)}"
+#~ "&lt;/sql-update&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL%ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL&#37;ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/"
+#~ "&gt;\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <loader query-ref=\"person\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"person\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
+#~ "    <key/>\n"
+#~ "    <one-to-many class=\"Employment\"/>\n"
+#~ "    <loader query-ref=\"employments\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"employments\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key/&gt;\n"
+#~ "    &lt;one-to-many class=\"Employment\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"employments\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"employments\">\n"
+#~ "    <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"employments\"&gt;\n"
+#~ "    &lt;load-collection alias=\"emp\" role=\"Person.employments\"/&gt;\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\"/>\n"
+#~ "    <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"emp\" property=\"pers.employments\"/&gt;\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "&lt;/sql-query&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/readonly.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/readonly.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/readonly.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1124 @@
+# Language de-DE translations for PACKAGE package.
+# Automatically generated, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-25 06:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid ""
+"Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ "
+"from what you may have encountered elsewhere. Incorrect usage may cause "
+"unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check the entity's simple properties or single-"
+"ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid ""
+"Hibernate will not update simple properties or updatable single-ended "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid ""
+"Hibernate will not update the version of the read-only entity if only simple "
+"properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid ""
+"In some ways, Hibernate treats read-only entities the same as entities that "
+"are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid ""
+"Hibernate cascades operations to associations as defined in the entity "
+"mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid ""
+"Hibernate updates the version if the entity has a collection with changes "
+"that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid ""
+"Even if an entity is not read-only, its collection association can be "
+"affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid ""
+"For details about the affect of read-only entities on different property and "
+"association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid ""
+"It saves execution time by not dirty-checking simple properties or single-"
+"ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid ""
+"Only persistent entities can be made read-only. Transient and detached "
+"entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid ""
+"Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid ""
+"you can map an entity class as <emphasis>immutable</emphasis>; when an "
+"entity of an immutable class is made persistent, Hibernate automatically "
+"makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for "
+"details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid ""
+"you can change a default so that entities loaded into the session by "
+"Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-"
+"loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid ""
+"you can make an HQL query or criteria read-only so that entities loaded when "
+"the query or criteria executes, scrolls, or iterates, are automatically made "
+"read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid ""
+"you can make a persistent entity that is already in the in the session read-"
+"only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid ""
+"When an entity instance of an immutable class is made persistent, Hibernate "
+"automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid ""
+"An entity of an immutable class can created and deleted the same as an "
+"entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid ""
+"Hibernate treats a persistent entity of an immutable class the same way as a "
+"read-only persistent entity of a mutable class. The only exception is that "
+"Hibernate will not allow an entity of an immutable class to be changed so it "
+"is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid ""
+"To change the default behavior so Hibernate loads entity instances of "
+"mutable classes into the session and automatically makes them read-only, "
+"call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid ""
+"To change the default back so entities loaded by Hibernate are not made read-"
+"only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, entities loaded by the "
+"following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid ""
+"executing, scrolling, or iterating HQL queries and criteria; to override "
+"this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid ""
+"persistent entities that are refreshed via Session.refresh(); a refreshed "
+"persistent entity will only be read-only if it was read-only before "
+"refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid ""
+"persistent entities added by the application via Session.persist(), Session."
+"save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns false (the default) when an HQL query "
+"or criteria executes, then entities and proxies of mutable classes loaded by "
+"the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid ""
+"You can override this behavior so that entities and proxies loaded by an HQL "
+"query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid ""
+"<literal>Query.setReadOnly( true )</literal> must be called before "
+"<literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, "
+"<literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid ""
+"<literal>Criteria.setReadOnly( true )</literal> must be called before "
+"<literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</"
+"literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid ""
+"Entities and proxies that exist in the session before being returned by an "
+"HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid ""
+"Uninitialized persistent collections returned by the query are not affected. "
+"Later, when the collection is initialized, entities loaded into the session "
+"will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid ""
+"Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria."
+"setReadOnly( true )</literal> works well when a single HQL query or criteria "
+"loads all the entities and intializes all the proxies and collections that "
+"the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid ""
+"When it is not possible to load and initialize all necessary entities in a "
+"single query or criteria, you can temporarily change the session default to "
+"load entities as read-only before the query is executed. Then you can "
+"explicitly initialize proxies and collections before restoring the session "
+"default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"setDefaultReadOnly( true );\n"
+"Contract contract = \n"
+"   ( Contract ) session.createQuery(\n"
+"           \"from Contract where customerName = 'Sherman'\" )\n"
+"           .uniqueResult();\n"
+"Hibernate.initialize( contract.getPlan() );\n"
+"Hibernate.initialize( contract.getVariations() );\n"
+"Hibernate.initialize( contract.getNotes() );\n"
+"setDefaultReadOnly( false );\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, then you can use Query."
+"setReadOnly( false ) and Criteria.setReadOnly( false ) to override this "
+"session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid ""
+"Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid ""
+"To change a read-only entity or proxy of a mutable class so it is no longer "
+"read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid ""
+"When a read-only entity or proxy is changed so it is no longer read-only, "
+"Hibernate assumes that the current state of the read-only entity is "
+"consistent with its database representation. If this is not true, then any "
+"non-flushed changes made before or while the entity was read-only, will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid ""
+"To throw away non-flushed changes and make the persistent entity consistent "
+"with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid ""
+"To flush changes made before or while the entity was read-only and make the "
+"database representation consistent with the current state of the persistent "
+"entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+"// evict the read-only entity so it is detached\n"
+"session.evict( entity );\n"
+"\n"
+"// make the detached entity (with the non-flushed changes) persistent\n"
+"session.update( entity );\n"
+"\n"
+"// now entity is no longer read-only and its changes can be flushed\n"
+"s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid ""
+"The following table summarizes how different property types are affected by "
+"making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid ""
+"* Behavior is different when the entity having the property/association is "
+"read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid ""
+"When a persistent object is read-only, Hibernate does not dirty-check simple "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid ""
+"Hibernate will not synchronize simple property state changes to the "
+"database. If you have automatic versioning, Hibernate will not increment the "
+"version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"// get a contract and make it read-only\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"\n"
+"// contract.getCustomerName() is \"Sherman\"\n"
+"contract.setCustomerName( \"Yogi\" );\n"
+"tx.commit();\n"
+"\n"
+"tx = session.beginTransaction();\n"
+"\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"// contract.getCustomerName() is still \"Sherman\"\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-one and many-to-one associations in "
+"the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid ""
+"We use the term <emphasis>unidirectional single-ended association</emphasis> "
+"when referring to functionality that is common to unidirectional one-to-one "
+"and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check unidirectional single-ended associations when "
+"the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid ""
+"If you change a read-only entity's reference to a unidirectional single-"
+"ended association to null, or to refer to a different entity, that change "
+"will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, then its references to unidirectional "
+"single-ended associations must be assigned when that entity is first "
+"created. Because the entity is automatically made read-only, these "
+"references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid ""
+"In the following examples, Contract has a unidirectional many-to-one "
+"association with Plan. Contract cascades save and update operations to the "
+"association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid ""
+"The following shows that changing a read-only entity's many-to-one "
+"association reference to null has no effect on the entity's database "
+"representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and set its plan to null \n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"contract.setPlan( null );\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid ""
+"The following shows that, even though an update to a read-only entity's many-"
+"to-one association has no affect on the entity's database representation, "
+"flush still cascades the save-update operation to the locally changed "
+"association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and change to a new plan\n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"Plan newPlan = new Plan( \"new plan\"\n"
+"contract.setPlan( newPlan);\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"// newPlan is non-null because it was persisted when \n"
+"// the previous transaction was committed; \n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-many and many-to-many associations "
+"owned by a read-only entity the same as when owned by an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid ""
+"Hibernate dirty-checks unidirectional one-to-many and many-to-many "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid ""
+"The collection can contain entities that are read-only, as well as entities "
+"that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid ""
+"Entities can be added and removed from the collection; changes are flushed "
+"to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid ""
+"updates that change the association reference to null or to refer to a "
+"different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, and it owns a bidirectional one-to-"
+"one association, then its reference must be assigned when that entity is "
+"first created. Because the entity is automatically made read-only, these "
+"references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid ""
+"When the owner is not read-only, Hibernate treats an association with a read-"
+"only entity the same as when the association is with an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid ""
+"A read-only entity has no impact on a bidirectional one-to-many/many-to-one "
+"association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using a non-inverse "
+"collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid ""
+"the one-to-many side uses a non-inverse collection that contains the read-"
+"only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid ""
+"a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid ""
+"a read-only entity can only be removed from the collection by an orphan "
+"delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid ""
+"Hibernate treats bidirectional many-to-many associations owned by a read-"
+"only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid ""
+"The collection on either side of the association can contain entities that "
+"are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid ""
+"Entities are added and removed from both sides of the collection; changes "
+"are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in both sides of the collection if they dirty the entity owning the "
+"respective collections."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2576 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "Das Arbeiten mit Objekten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a natural object-oriented view of persistence "
+"in Java applications."
+msgstr ""
+"Hibernate ist eine komplette objekt/relationale Mapping-Lösung, die dem "
+"Entwickler nicht nur Details des zu Grunde liegenden Datenbank-Management-"
+"Systems abnimmt, sondern auch die <emphasis>Statusverwaltung</emphasis> von "
+"Objekten bereit stellt. Dies ist im Gegensatz zur Verwaltung von SQL "
+"<literal>statements</literal> in gängigen JDBC/SQL-Persistenzschichten eine "
+"sehr natürliche, objektorientierte Ansicht der Persistenz in Java-"
+"Anwendungen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"Mit anderen Worten - Hibernate Anwendungsentwickler sollten sich stets über "
+"den <emphasis>Status</emphasis> Ihrer Objekte Gedanken machen und nicht "
+"unbedingt über die Ausführung von SQL-Anweisungen. Dieser Teil wird von "
+"Hibernate übernommen und ist nur dann für den Anwendungsentwickler von "
+"Bedeutung, wenn die Performance des Systems eingestellt wird."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Statusarten von Hibernate Objekten"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr ""
+"Hibernate definiert und unterstützt die folgenden Arten des Objektstatus:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application does not hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transient</emphasis> - ein Objekt ist transient (vorübergehend), "
+"wenn es mittels des <literal>new</literal> Operator gerade instantiiert "
+"wurde und mit keiner Hibernate <literal>Session</literal> assoziiert wird. "
+"Es besitzt keine persistene (dauerhafte) Repräsentation in der Datenbank, "
+"und es wurde kein Identifier-Wert zugeordnet. Transiente Instanzen werden "
+"durch die Speicherbereinigung (sog. \"Garbage Collector\") gelöscht, wenn "
+"die Anwendung keine Referenz mehr hält. Verwenden Sie die Hibernate "
+"<literal>Session</literal>, um ein Objekt persistent zu machen (und "
+"überlassen Sie Hibernate die Ausführung der SQL-Anweisungen, die für diesen "
+"Wechsel nötig sind)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers do not execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistent</emphasis> - eine persistente Instanz besitzt eine "
+"Repräsentation in der Datenbank sowie einen Bezeichnerwert. Sie könnte "
+"gerade gespeichert oder geladen worden sein, ist jedoch der Definition nach "
+"im Gültigkeitsbereich einer <literal>Session</literal>. Hibernate findet "
+"sämtliche Veränderungen, die sich an einem Objekt in persistentem Zustand "
+"ergeben haben und synchronisiert den Status mit der Datenbank, wenn die "
+"Arbeitseinheit abgeschlossen ist. Entwickler führen keine manuellen "
+"<literal>UPDATE</literal> oder <literal>DELETE</literal>-Anweisungen durch, "
+"wenn ein Objekt transient gemacht werden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e., a unit of work "
+"from the point of view of the user."
+msgstr ""
+"<emphasis>Detached</emphasis> - eine abgesetzte Instanz ist ein Objekt, das "
+"persistent war, dessen <literal>Session</literal> jedoch geschlossen wurde. "
+"Der Verweis zum Objekt besitzt natürlich nach wie vor Gültigkeit, und die "
+"abgesetzte Instanz kann sogar in diesem Status verändert werden. Eine "
+"abgesetzte Instanz kann einer neuen <literal>Session</literal> zu einem "
+"späteren Zeitpunkt wieder hinzugefügt werden, wodurch sie (mitsamt den "
+"Modifikationen) wieder persistent wird. Dieses Feature ermöglicht ein "
+"Programmiermodell für lange laufende Arbeitseinheiten, die Benutzer \"Think "
+"Time\" erfordern. Wir nennen diese <emphasis>Anwendungstransaktionen</"
+"emphasis> (sog. \"Application Transactions\"), d.h. eine Arbeitseinheit aus "
+"Sicht des Benutzers."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"Wir gehen nun tiefer auf Status und Statuswechsel (sowie die Hibernate "
+"Methoden, die einen Wechsel auslösen) ein."
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "Objekte persistent machen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Newly instantiated instances of a a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"Neu instantiierte Instanzen einer persistenten Klasse werden von Hibernate "
+"als <emphasis>transient</emphasis> angesehen. Wir können eine transiente "
+"Instanz jedoch <emphasis>persistent</emphasis> machen, indem wir sie mit "
+"einer Session assoziieren:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You can also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"Wenn <literal>Cat</literal> einen generierten Bezeichner besitzt, so wird "
+"dieser generiert und <literal>cat</literal> zugeordnet, wenn der Aufruf "
+"<literal>save()</literal> erfolgt. Wenn <literal>Cat</literal> einen "
+"<literal>assigned</literal> Bezeichner oder einen zusammengesetzten "
+"Schlüssel besitzt, so sollte der Bezeichner der <literal>cat</literal> "
+"Instanz zugeordnet werden, ehe <literal>save()</literal> aufgerufen wird. "
+"Sie können auch <literal>persist()</literal> statt <literal>save()</literal> "
+"verwenden, mit der Semantik der frühen EJB3-Fassung."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it does not guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"Alternativ können Sie den Bezeichner unter Verwendung einer überladenen "
+"Version von <literal>save()</literal> zuordnen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects can be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"Falls das von Ihnen persistent gemachte Objekt assoziierte Objekte besitzt "
+"(z.B. die <literal>kittens</literal>-Collection im vorherigen Beispiel), so "
+"können diese Objekte in beliebiger Reihenfolge persistent gemacht werden, so "
+"lange keine <literal>NOT NULL</literal>-Bedingung für eine "
+"Fremdschlüsselspalte existiert. Es besteht niemals das Risiko, dass "
+"Bedingungen für Fremdschlüssel verletzt werden. Allerdings kann eine "
+"<literal>NOT NULL</literal>-Bedingung verletzt werden, falls Sie mittels "
+"<literal>save()</literal> die Objekte in der falschen Reihenfolge speichern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually you do not bother with this detail, as you will normally use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations do not occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"In der Regel kümmern Sie sich nicht um dieses Detail, da Sie sehr "
+"wahrscheinlich Hibernates Feature für <emphasis>transitive Persistenz</"
+"emphasis> verwenden, um zugehörige Objekte automatisch zu speichern. "
+"Hibernate kümmert sich dann um alles, selbst wenn es nicht zu Verletzungen "
+"von <literal>NOT NULL</literal> Bedingungen kommt. Wir gehen später in "
+"diesem Kapitel noch näher auf transitive Persistenz ein."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "Das Laden eines Objekts"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> provide "
+"a way of retrieving a persistent instance if you know its identifier. "
+"<literal>load()</literal> takes a class object and loads the state into a "
+"newly instantiated instance of that class in a persistent state."
+msgstr ""
+"Die <literal>load()</literal>-Methode von <literal>Session</literal> gibt "
+"Ihnen die Möglichkeit, eine persistente Instanz abzurufen, wenn Sie deren "
+"Bezeichner bereits kennen. <literal>load()</literal> nimmt ein Klassenobjekt "
+"und lädt den Status in eine neu instantiierte Instanz der Klasse, in "
+"persistentem Zustand."
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr "Alternativ können Sie den Status in eine beliebige Instanz laden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Be aware that <literal>load()</literal> will throw an unrecoverable "
+"exception if there is no matching database row. If the class is mapped with "
+"a proxy, <literal>load()</literal> just returns an uninitialized proxy and "
+"does not actually hit the database until you invoke a method of the proxy. "
+"This is useful if you wish to create an association to an object without "
+"actually loading it from the database. It also allows multiple instances to "
+"be loaded as a batch if <literal>batch-size</literal> is defined for the "
+"class mapping."
+msgstr ""
+"Bitte beachten Sie, dass <literal>load()</literal> zu einer nicht behebbaren "
+"Ausnahmemeldung führt, falls keine passende Datenbankreihe existiert. Falls "
+"die Klasse mit einem Proxy gemappt ist, so reagiert <literal>load()</"
+"literal> nur mit einem nicht initialisierten Proxy und erreicht die "
+"Datenbank nicht, ehe eine Methode des Proxy aufgerufen wurde. Dieses "
+"Verhalten ist sehr hilfreich, wenn Sie eine Assoziation zu einem Objekt "
+"herstellen möchten, ohne es aus der Datenbank zu laden. Auch das Laden "
+"mehrerer Instanzen als \"Batch\" (Stapel) ist möglich, wenn <literal>batch-"
+"size</literal> für das Klassen-Mapping definiert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"Falls Sie nicht sicher sind, ob eine passende Datenbankreihe existiert, so "
+"sollten Sie die <literal>get()</literal>-Methode anwenden, die direkt auf "
+"die Datenbank zugreift und mit einer Nullmeldung reagiert, falls keine "
+"passende Reihe existiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"Sie können sogar ein Objekt mittels SQL <literal>SELECT ... FOR UPDATE</"
+"literal> laden, indem Sie einen <literal>LockMode</literal> verwenden. Siehe "
+"dazu auch die API-Dokumentation."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any associated instances or contained collections will <emphasis>not</"
+"emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to "
+"specify <literal>lock</literal> or <literal>all</literal> as a cascade style "
+"for the association."
+msgstr ""
+"Bitte beachten Sie, dass sämtliche assoziierten Instanzen oder enthaltenen "
+"Collections <emphasis>nicht</emphasis> für <literal>FOR UPDATE</literal> "
+"ausgewählt werden, außer Sie spezifizieren <literal>lock</literal> oder "
+"<literal>all</literal> als Aufeinanderschaltung der Assoziation (\"sog. "
+"Cascade Style\")."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"Es ist mittels der <literal>refresh()</literal>-Methode jederzeit möglich, "
+"ein Objekt und alle seine Collections erneut zu laden. Dies ist insbesondere "
+"dann von Nutzen, wenn Datenbank-Trigger zur Initialisierung der Objekt-"
+"Properties verwendet werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"How much does Hibernate load from the database and how many SQL "
+"<literal>SELECT</literal>s will it use? This depends on the "
+"<emphasis>fetching strategy</emphasis>. This is explained in <xref linkend="
+"\"performance-fetching\" />."
+msgstr ""
+"An diesem Punkt stellt sich eine wichtige Frage: Wie viel lädt Hibernate aus "
+"der Datenbank und wie viele SQL <literal>SELECT</literal>s werden verwendet? "
+"Nun, das hängt von der <emphasis>Abrufstrategie</emphasis> (sog. \"fetching "
+"strategy\") ab und wird in <xref linkend=\"performance-fetching\"/> näher "
+"erläutert."
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "Anfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you do not know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You can also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"Falls Sie die Bezeichner der Objekte, die Sie suchen nicht kennen, so "
+"benötigen Sie eine Anfrage. Hibernate unterstützt eine einfach zu "
+"verwendende doch leistungsfähige objektorientierte Anfragensprache (HQL). "
+"Für die befehlsorientierte Erstellung einer Anfrage unterstützt Hibernate "
+"ein technisch ausgefeiltes Feature für Kriterien- und Beispielanfragen (QBC "
+"and QBE). Sie können die Anfrage auch in der nativen SQL Ihrer Datenbank mit "
+"optionalem Support von Hibernate hinsichtlich der Konversion des "
+"Ergebnissatzes in die Objekte ausdrücken."
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "Ausführen von Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
+msgstr ""
+"HQL und native SQL-Anfragen werden durch eine Instanz von <literal>org."
+"hibernate.Query</literal> repräsentiert. Dieses Interface bietet Methoden "
+"zur Parameter-Bindung, Handhabung von Ergebnissätzen (sog. \"result sets\") "
+"und für das Ausführen der tatsächlichen Anfrage. Sie können mittels der "
+"<literal>Session</literal> immer eine <literal>Query</literal> erhalten:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A query is usually executed by invoking <literal>list()</literal>. The "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in a persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Queries that make use of eager "
+"fetching of collections usually return duplicates of the root objects, but "
+"with their collections initialized. You can filter these duplicates through "
+"a <literal>Set</literal>."
+msgstr ""
+"Eine Anfrage wird in der Regel durch den Aufruf <literal>list()</literal> "
+"ausgeführt, und das Ergebnis der Anfrage wird vollständig in eine Collection "
+"des Speichers geladen. Die durch eine Anfrage erhaltenen Entity-Instanzen "
+"befinden sich in persistentem Zustand. Die <literal>uniqueResult()</literal>-"
+"Methode bietet ein Tastaturkürzel, wenn Sie wissen, dass Ihre Anfrage nur "
+"mit einem einzelnen Objekt reagiert. Bitte beachten Sie, dass Anfragen, die "
+"für Collections \"eager Fetching\" (d.h. zusammengefasstes Laden von Objekt "
+"und assoziierten Objekten mit Verbundoperationen) verwenden, in der Regel "
+"mit Doubletten der Stammobjekte (sog. \"Root Objects\") reagieren (deren "
+"Collections sind jedoch initialisiert). Sie können diese Doubletten mittels "
+"<literal>Set</literal> jedoch ganz einfach filtern."
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "Iterationsergebnisse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will usually "
+"be the case if you expect that the actual entity instances returned by the "
+"query will already be in the session or second-level cache. If they are not "
+"already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"Manchmal lässt sich die Performance verbessern, indem die Anfrage mittels "
+"<literal>iterate()</literal>-Methode ausgeführt wird. Dies wird in der Regel "
+"nur der Fall sein, wenn sich die zu erwartenden Instanzen der Entity, die "
+"auf die Anfrage reagieren, bereits in der Session oder dem Cache-Speicher "
+"der zweiten Ebene befinden. Wenn diese nicht bereits gecacht sind, so wird "
+"<literal>iterate()</literal> langsamer als <literal>list()</literal> sein "
+"und könnte zahlreiche Datenbanktreffer für eine einfache Anfrage benötigen - "
+"für gewöhnlich <emphasis>1</emphasis> für die ursprüngliche Auswahl, die "
+"lediglich mit den Bezeichnern reagiert und <emphasis>n</emphasis> "
+"zusätzliche Auswahlen zur Initialisierung der tatsächlichen Instanzen."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "Anfragen, die mit Tupeln reagieren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate queries sometimes return tuples of objects. Each tuple is returned "
+"as an array:"
+msgstr ""
+"Hibernate Anfragen reagieren manchmal mit Tupeln (d.h. einer Liste "
+"korrelierter Datenwerte), wobei jeder Tupel als Array wiedergegeben wird:"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "Skalare Ergebnisse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can specify a property of a class in the <literal>select</literal> "
+"clause. They can even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+"Anfragen können im <literal>select</literal>-Satzteil die Property einer "
+"Klasse spezifizieren. Sie können sogar SQL-Datengruppen-Funktionen aufrufen. "
+"Properties oder Datengruppen werden als \"skalare\" Ergebnisse angesehen "
+"(und nicht als Entities in persistentem Zustand)."
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "Bind-Parameter"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are as follows:"
+msgstr ""
+"Methoden an <literal>Query</literal> sind vorhanden, um Werte an benannte "
+"Parameter oder <literal>?</literal>-Parameter nach JDBC-Art zu binden. "
+"<emphasis>Im Gegensatz zu JDBC nummeriert Hibernate Parameter ab Null.</"
+"emphasis> Bei benannten Parametern handelt es sich um Bezeichner in der Form "
+"<literal>:name</literal> im Anfragenstring. Die Vorteile benannter Parameter "
+"sind:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters are insensitive to the order they occur in the query string"
+msgstr ""
+"benannte Parameter sind unempfindlich im Bezug auf die Reihenfolge, in der "
+"sie im Anfragenstring erscheinen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "sie können innerhalb derselben Anfrage mehrere Male vorkommen"
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "sie dokumentieren sich selbst"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "Nummerierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set, that is, the maximum "
+"number of rows you want to retrieve and/or the first row you want to "
+"retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"Falls Sie Grenzen an Ihrem Ergebnissatz spezifizieren müssen (die maximale "
+"Anzahl von Reihen, die Sie erhalten und / oder die erste Reihe, die Sie "
+"erhalten wollen), sollten Sie Methoden des <literal>Query</literal>-"
+"Interface verwenden:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"Hibernate weiß, wie die Grenzanfrage in die native SQL Ihres DBMS zu "
+"übersetzen ist."
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "Scrollbare Iteration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface can be used to obtain a "
+"<literal>ScrollableResults</literal> object that allows flexible navigation "
+"of the query results."
+msgstr ""
+"Falls Ihr JDBC-Treiber scrollbare <literal>ResultSet</literal>s unterstützt, "
+"kann das <literal>Query</literal>-Interface benutzt werden, um ein "
+"<literal>ScrollableResults</literal>-Objekt zu erhalten, das die flexible "
+"Navigation der Anfragenergebnisse ermöglicht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that an open database connection and cursor is required for this "
+"functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"Bitte beachten Sie, dass eine offene Datenbankverbindung (und Cursor) für "
+"dies Funktionalität benötigt werden. Verwenden Sie <literal>setMaxResult()</"
+"literal>/<literal>setFirstResult()</literal>, falls Sie die offline "
+"Nummerierungsfunktionalität benötigen."
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "Externalisierung benannter Anfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define named queries in the mapping document. Remember to use a "
+"<literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup."
+msgstr ""
+"Sie können benannte Anfragen auch im Mapping-Dokument definieren. (Vergessen "
+"Sie nicht einen <literal>CDATA</literal>-Abschnitt zu verwenden, falls Ihre "
+"Anfrage Zeichen enthält, die als Markup interpretiert werden könnten)."
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr "Die Bindung und Ausführung der Parameter erfolgen befehlsorientiert:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The actual program code is independent of the query language that is used. "
+"You can also define native SQL queries in metadata, or migrate existing "
+"queries to Hibernate by placing them in mapping files."
+msgstr ""
+"Bitte beachten Sie, dass der tatsächliche Programmcode unabhängig von der "
+"verwendeten Anfragensprache ist. Sie können auch native SQL-Anfragen in "
+"Metadata definieren oder bestehende Anfragen zu Hibernate migrieren, indem "
+"Sie sie in Mapping-Dateien platzieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal>&lt;hibernate-"
+"mapping&gt;</literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal>&lt;class&gt;</literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"Beachten Sie außerdem, dass eine Anfragendeklaration innerhalb eines "
+"<literal>&lt;hibernate-mapping&gt;</literal>-Elements einen "
+"allgemeingültigen, eindeutigen Namen für die Anfrage erfordert, während eine "
+"Anfragendeklaration innerhalb eines <literal>&lt;class&gt;</literal>-"
+"Elements dadurch automatisch eindeutig gemacht wird, dass der vollständige "
+"Name der Klasse, z.B. <literal>eg.Cat.ByNameAndMaximumWeight</literal> "
+"vorangestellt wird."
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "Das Filtern von Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that can "
+"be applied to a persistent collection or array. The query string can refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"Ein Collection <emphasis>filter</emphasis> ist eine spezielle Art der "
+"Anfrage, die an einer persistenten Collection oder einem Array angewendet "
+"werden kann. Der Anfragenstring kann auf <literal>this</literal> verweisen, "
+"womit das aktuelle Element der Collection gemeint ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The returned collection is considered a bag that is a copy of the given "
+"collection. The original collection is not modified. This is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+"Die zurückgesendete Collection wird als \"Bag\" (Duplikat) angesehen, und es "
+"handelt sich um eine Kopie der vorgegebenen Collection. Die ursprüngliche "
+"Collection wird nicht verändert (dies steht im Gegensatz zur "
+"Schlussfolgerung den der Name \"Filter\" vermuten lässt, aber in Konsistenz "
+"mit dem erwarteten Verhalten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause, "
+"although they can have one if required. Filters are not limited to returning "
+"the collection elements themselves."
+msgstr ""
+"Beachten Sie, dass Filter keinen <literal>from</literal>-Satzteil benötigen "
+"(jedoch bei Bedarf einen besitzen können). Filter sind nicht darauf "
+"beschränkt, die Elemente der Collection selbst wiederzugeben."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"large collection:"
+msgstr ""
+"Selbst eine Anfrage mit leerem Filter ist von Nutzen, wenn man etwa einen "
+"Untersatz von Elementen in einer riesigen Collection lädt."
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "Kriterienanfragen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL is extremely powerful, but some developers prefer to build queries "
+"dynamically using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL ist sehr leistungsfähig, jedoch bevorzugen manche Entwickler den "
+"dynamischen Bau von Anfragen unter Verwendung einer objektorientierten API, "
+"statt des Erstellens von Anfragenstrings. Hibernate liefert für diese Fälle "
+"eine API für intuitive <literal>Criteria</literal>-Anfragen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria"
+"\" />."
+msgstr ""
+"Die <literal>Criteria</literal> und die zugehörige <literal>Example</"
+"literal>-API werden unter <xref linkend=\"querycriteria\"/> näher erläutert."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "Anfragen in nativer SQL"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate manage the mapping from result sets to objects. You can at "
+"any time call <literal>session.connection()</literal> and use the JDBC "
+"<literal>Connection</literal> directly. If you choose to use the Hibernate "
+"API, you must enclose SQL aliases in braces:"
+msgstr ""
+"Sie können eine Anfrage in SQL mittels <literal>createSQLQuery()</literal> "
+"ausdrücken und Hibernate das Mapping von den Ergebnissätzen zu den Objekten "
+"übernehmen lassen. Beachten Sie, dass Sie zu jedem Zeitpunkt "
+"<literal>session.connection()</literal> aufrufen und die JDBC "
+"<literal>Connection</literal> direkt benutzen können. Falls Sie die "
+"Hibernate API verwenden wollen, müssen Sie die SQL-Aliasse in Klammern mit "
+"einschließen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"SQL queries can contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\" />."
+msgstr ""
+"SQL-Anfragen können - wie auch Hibernate Anfragen - benannte und "
+"positionelle Parameter enthalten. Weitere Informationen zu nativen SQL-"
+"Anfragen in Hibernate finden Sie in <xref linkend=\"querysql\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "Änderungen an persistenten Objekten vornehmen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (i.e. objects "
+"loaded, saved, created or queried by the <literal>Session</literal>) can be "
+"manipulated by the application, and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis>. This is discussed later in this chapter. There is no need to call "
+"a particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. The most straightforward way "
+"to update the state of an object is to <literal>load()</literal> it and then "
+"manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+"<emphasis>Transaktionale persistente Instanzen</emphasis> (d.h. durch die "
+"<literal>Session</literal> geladene, gespeicherte, erstellte oder angefragte "
+"Objekte) können durch die Anwendung verarbeitet werden und sämtliche "
+"Veränderungen am persistenten Status bleiben bestehen, wenn die "
+"<literal>Session</literal> <emphasis>geräumt</emphasis> wird (darauf gehen "
+"wir später in diesem Kapitel noch ein). Es muss keine bestimmte Methode "
+"aufgerufen werden (wie etwa <literal>update()</literal>, das einen anderen "
+"Zweck hat), um Ihre Änderungen persistent zu machen. Die einfachste Art der "
+"Statusaktualisierung eines Objektes ist daher das Laden mittels <literal>load"
+"()</literal> und dessen direkte Modifizierung während die <literal>Session</"
+"literal> geöffnet ist:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient, as it requires in the same "
+"session both an SQL <literal>SELECT</literal> to load an object and an SQL "
+"<literal>UPDATE</literal> to persist its updated state. Hibernate offers an "
+"alternate approach by using detached instances."
+msgstr ""
+"Manchmal ist dieses Programmiermodell jedoch ineffizient, da es sowohl ein "
+"SQL <literal>SELECT</literal> (zum Laden eines Objekts) als auch ein SQL "
+"<literal>UPDATE</literal> (um den aktualisierten Status zu persistieren) "
+"innerhalb derselben Session erfordern würde. Daher bietet Hibernate mit der "
+"Verwendung abgesetzter Instanzen eine alternative Vorgehensweise."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you do not have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate can, however, provide special mass operation functions. See <xref "
+"linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+"Bitte beachten Sie, dass Hibernate keine eigene API für die direkte "
+"Ausführung von <literal>UPDATE</literal> oder <literal>DELETE</literal>-"
+"Anweisungen besitzt. Bei Hibernate handelt es sich um einen Dienst zur "
+"<emphasis>Statusverwaltung</emphasis>, das heißt, Sie müssen bei seiner "
+"Benutzung nicht in <emphasis>Anweisungen</emphasis> denken. JDBC ist eine "
+"perfekte API für die Ausführung von SQL-Anweisungen, sie können jederzeit "
+"eine JDBC <literal>Connection</literal> durch Aufruf von <literal>session."
+"connection()</literal> erhalten. Desweiteren steht die Idee von "
+"Massenvorgängen in Konflikt zu objekt/relationalem Mapping für Anwendungen, "
+"die an der Bearbeitung von online Transaktionen orientiert sind. Zukünftige "
+"Versionen von Hibernate werden möglicherweise spezielle Funktionen für "
+"Massenvorgänge bieten. Unter <xref linkend=\"batch\"/> finden Sie einige "
+"mögliche Tricks zur Batch-Bearbeitung."
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "Änderungen an abgesetzten Objekten"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"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 ""
+"Zahlreiche Anwendungen müssen ein Objekt in einer Transaktion abrufen, "
+"dieses für Modifizierungen an die UI-Schicht schicken und die Änderungen "
+"anschließend in einer neuen Transaktion speichern. Anwendungen, die diese "
+"Herangehensweise in einer Umgebung mit hoher Nebenläufigkeit (d.h. häufigem "
+"gleichzeitigen Zugriff) benutzen, verwenden in der Regel versionierte Daten, "
+"um die Isolation der \"langen\" Arbeitseinheit zu gewährleisten."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate unterstützt dieses Modell, indem es mittels der <literal>Session."
+"update()</literal> oder <literal>Session.merge()</literal>-Methoden die "
+"Möglichkeit der Wiederanbindung abgesetzter Instanzen bietet:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"Wäre <literal>Cat</literal> mit Bezeichner <literal>catId</literal> bereits "
+"durch <literal>secondSession</literal> geladen worden, wenn die Anwendung "
+"die Wiederanbindung durchzuführen versucht hätte, so wäre eine Ausnahme "
+"gemeldet worden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are certain that the session does not "
+"contain an already persistent instance with the same identifier. Use "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that the reattachment of your detached instances is "
+"the first operation that is executed."
+msgstr ""
+"Verwenden Sie <literal>update()</literal> falls Sie sicher sind, dass die "
+"Session nicht bereits eine persistente Instanz mit demselben Bezeichner "
+"besitzt und <literal>merge()</literal>, falls Sie Ihre Modifikationen zu "
+"einem beliebigen Zeitpunkt ohne Berücksichtigung des Sessionstatus mischen "
+"möchten. Mit anderen Worten ist <literal>update()</literal> in der Regel die "
+"erste Methode, die Sie in einer neuen Session aufrufen würden, um "
+"sicherzustellen, dass die Wiederanbindung Ihrer abgesetzten Instanzen der "
+"als erstes ausgeführte Vorgang ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances that are reachable from the given detached instance "
+"<emphasis>only</emphasis> if it wants their state to be updated. This can be "
+"automated using <emphasis>transitive persistence</emphasis>. See <xref "
+"linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+"Die Anwendung sollte von der gegebenen abgesetzten Instanz aus erreichbare "
+"abgesetzte Instanzen einzeln mittels <literal>update()</literal> "
+"aktualisieren, jedoch <emphasis>nur</emphasis>, wenn auch deren Status "
+"aktualisiert werden soll. Dieser Vorgang kann selbstverständlich mittels "
+"<emphasis>transitiver Persistenz</emphasis> automatisiert werden, siehe "
+"<xref linkend=\"objectstate-transitive\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified."
+msgstr ""
+"Die <literal>lock()</literal>-Methode ermöglicht es einer Anwendung "
+"ebenfalls, ein Objekt mit einer neuen Session zu re-assoziieren. Allerdings "
+"darf die abgesetzte Instanz in diesem Fall nicht verändert worden sein!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s. See the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"Beachten Sie, dass <literal>lock()</literal> mit verschiedenen "
+"<literal>LockMode</literal>s verwendet werden kann. Weitere Informationen "
+"dazu finden Sie in der API-Dokumentation und dem Kapitel zum \"Transaction "
+"Handling\". Die Wiederanbindung ist nicht der einzige Anwendungsfall für "
+"<literal>lock()</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\" />."
+msgstr ""
+"Andere Modelle für lange Arbeitseinheiten werden in <xref linkend="
+"\"transactions-optimistic\"/> erläutert."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "Automatische Statuserkennung"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Benutzer von Hibernate haben den Wunsch nach einer allgemeinen Methode "
+"geäußert, die entweder eine transiente Instanz durch Generierung eines neuen "
+"Bezeichners speichert oder die dem aktuellen Bezeichner zugehörigen "
+"abgesetzten Instanzen aktualisiert/erneut hinzufügt. Die "
+"<literal>saveOrUpdate()</literal>-Methode implementiert diese Funktionalität."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"Gebrauch und Semantik von <literal>saveOrUpdate()</literal> scheinen neue "
+"Benutzer manchmal zu überfordern. So lange Sie nicht versuchen, diese "
+"Instanzen von einer Session in einer neuen Session zu verwenden, sollten Sie "
+"<literal>update()</literal>, <literal>saveOrUpdate()</literal> oder "
+"<literal>merge()</literal> ohnehin nicht benutzen müssen. Manchmal kommen "
+"ganze Anwendungen ohne irgendeine dieser Methoden aus."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"In der Regel kommen <literal>update()</literal> oder <literal>saveOrUpdate()"
+"</literal> in folgenden Situationen zum Einsatz:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "die Anwendung lädt ein Objekt in der ersten Session"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "das Objekt wird an den UI-\"Tier\" weitergegeben"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "am Objekt werden einige Modifikationen vorgenommen"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "das Objekt wird zurück an den \"Business-Logic-Tier\" geleitet"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"die Anwendung persistiert diese Modifikationen durch Aufruf von "
+"<literal>update()</literal> in einer zweiten Session"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal> tut folgendes:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr ""
+"falls das Objekt in dieser Session bereits persistent ist, geschieht nichts"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"falls ein anderes mit der Session assoziiertes Objekt denselben Bezeichner "
+"besitzt, wird eine Ausnahme gemeldet"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+"falls das Objekt keine Bezeichner-Property besitzt, speichern Sie es mittels "
+"<literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"falls der Bezeichner des Objekts einen ihm zugeordneten Wert am neu "
+"instantiierten Objekt besitzt, speichern Sie mittels <literal>save()</"
+"literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"if the object is versioned by a <literal>&lt;version&gt;</literal> or "
+"<literal>&lt;timestamp&gt;</literal>, and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"falls das Objekt versioniert ist (durch <literal>&lt;version&gt;</literal> "
+"oder <literal>&lt;timestamp&gt;</literal>) und der Property-Wert der Version "
+"derselbe Wert wie der dem neu instantiierten Objekt zugeordnete ist, "
+"speichern Sie mittels <literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr ""
+"andernfalls aktualisieren Sie das Objekt mittels <literal>update()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "und <literal>merge()</literal> ist völlig anders:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"falls eine persistente Instanz mit demselben Bezeichner zum gegenwärtigen "
+"Zeitpunkt mit der Session assoziiert ist, so kopieren Sie den Status des "
+"vorgegebenen Objekts in die persistente Instanz"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"falls keine persistente Instanz zum gegenwärtigen Zeitpunkt mit der Session "
+"assoziiert wird, so versuchen Sie sie aus der Datenbank zu laden oder "
+"erstellen Sie eine neue persistente Instanz"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "die persistente Instanz wird zurückgeschickt"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"die vorgegebene Instanz wird nicht mit der Session assoziiert, sie bleibt "
+"abgesetzt"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "Das Löschen persistenter Objekte"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Your application, however, can still hold a reference to a deleted "
+"object. It is best to think of <literal>delete()</literal> as making a "
+"persistent instance, transient."
+msgstr ""
+"Mit <literal>Session.delete()</literal> wird der Status eines Objekts aus "
+"der Datenbank gelöscht. Natürlich kann Ihre Anwendung nach wie vor einen "
+"Verweis auf ein gelöschtes Objekt beinhalten. Durch <literal>delete()</"
+"literal> wird eine persistente Instanz gewissermaßen transient gemacht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can delete objects in any order, without risk of foreign key constraint "
+"violations. It is still possible to violate a <literal>NOT NULL</literal> "
+"constraint on a foreign key column by deleting objects in the wrong order, e."
+"g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"Sie können Objekte in beliebiger Reihenfolge löschen, ohne sich Sorgen um "
+"die Verletzung von Fremdschlüsselbedingungen machen zu müssen. Es ist nach "
+"wie vor möglich, eine <literal>NOT NULL</literal>-Bedingung an der "
+"Fremdschlüsselspalte zu verletzen, indem Objekte in der falschen Reihenfolge "
+"gelöscht werden, z.B. wenn Sie das übergeordnete Objekt löschen, jedoch "
+"vergessen, dies mit den untergeordneten Objekten ebenfalls zu tun."
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "Objektreplikation zwischen zwei verschiedenen Datenspeichern"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is sometimes useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"Es ist hin und wieder von Nutzen ein Diagramm persistenter Instanzen nehmen "
+"zu können und diese in einem anderen Datenspeicher persistent machen zu "
+"können, ohne Bezeichnerwerte erneut generieren zu müssen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+"Der <literal>ReplicationMode</literal> bestimmt, wie <literal>replicate()</"
+"literal> mit Konflikten mit bestehenden Reihen in der Datenbank umgeht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal> - ignoriert das Objekt, wenn "
+"bereits eine Datenbankreihe mit demselben Bezeichner existiert"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal> - überschreibt eine bestehende "
+"Datenbankreihe mit demselben Bezeichner"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal> - meldet eine Ausnahme, falls "
+"eine Datenbankreihe mit demselben Bezeichner existiert"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - überschreibt die Reihe, "
+"falls deren Versionsnummer älter ist als die Versionsnummer des Objekts, "
+"oder ignoriert andernfalls das Objekt"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"Anwendungsfälle dieses Features beinhalten die Abstimmung von in "
+"verschiedenen Datenbankinstanzen eingegebenen Daten, das Upgrade von "
+"Systemkonfigurationsinformationen während Produkt-Upgrades, die Wiederholung "
+"von während nicht-ACID Transaktionen gemachten Änderungen und mehr."
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "Das Räumen der Session"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes the <literal>Session</literal> will execute the SQL statements "
+"needed to synchronize the JDBC connection's state with the state of objects "
+"held in memory. This process, called <emphasis>flush</emphasis>, occurs by "
+"default at the following points:"
+msgstr ""
+"Von Zeit zu Zeit wird die <literal>Session</literal> die SQL-Anweisungen "
+"ausführen, die benötigt werden, um den Verbindungsstatus der JDBC mit dem "
+"Status der gespeicherten Objekte zu synchronisieren. Während dieses Vorgangs "
+"kommt es standardmäßig an den folgenden Punkten zur <emphasis>Räumung</"
+"emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "vor dem Ausführen einiger Anfragen"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "von <literal>org.hibernate.Transaction.commit()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "von <literal>Session.flush()</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "Die SQL-Anweisungen werden in der folgenden Reihenfolge herausgegeben"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"all entity insertions in the same order the corresponding objects were saved "
+"using <literal>Session.save()</literal>"
+msgstr ""
+"alle Entity-Einfügungen in derselben Reihenfolge der entsprechenden Objekte "
+"wurden mittels <literal>Session.save()</literal> gespeichert"
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "alle Entity-Aktualisierungen"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "alle Collection-Löschungen"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr ""
+"alle Löschungen, Aktualisierungen und Einfügungen von Elementen der "
+"Collection"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "alle Einfügungen in Collections"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"all entity deletions in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"alle Entity-Löschungen in derselben Reihenfolge, in der die entsprechenden "
+"Objekte gelöscht wurden unter Verwendung von <literal>Session.delete()</"
+"literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved."
+msgstr ""
+"(Eine Ausnahme ist, dass Objekte, die <literal>native</literal> ID-"
+"Generierung verwenden, beim Speichern eingefügt werden)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Except when you explicitly <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale or incorrect data."
+msgstr ""
+"Außer wenn Sie explizit <literal>flush()</literal> einsetzen, gibt es "
+"keinerlei Garantien dafür, <emphasis>wann</emphasis> die <literal>Session</"
+"literal> die JDBC-Aufrufe ausführt, nur die <emphasis>Reihenfolge</emphasis> "
+"der Ausführung steht fest. Hibernate gewährleistet jedoch, dass die "
+"<literal>Query.list(..)</literal> niemals abgelaufene oder falsche Daten "
+"liefert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time when the Hibernate <literal>Transaction</"
+"literal> API is used, flush automatically using the explained routine, or "
+"never flush unless <literal>flush()</literal> is called explicitly. The last "
+"mode is useful for long running units of work, where a <literal>Session</"
+"literal> is kept open and disconnected for a long time (see <xref linkend="
+"\"transactions-optimistic-longsession\" />)."
+msgstr ""
+"Es ist möglich das Verhalten in der Standardeinstellung so zu verändern, "
+"dass die Räumung seltener erfolgt.Die <literal>FlushMode</literal>-Klasse "
+"definiert drei verschiedene Modi: Nur zum Zeitpunkt des Festschreibens (sog. "
+"\"Commit-Time\") räumen (und nur wenn die Hibernate <literal>Transaction</"
+"literal> API verwendet wird), mittels der beschriebenen Routine automatisch "
+"räumen oder nie räumen, außer wenn der Aufruf <literal>flush()</literal> "
+"explizit erfolgt. Der letzte Modus ist insbesondere bei langen "
+"Arbeitseinheiten von Nutzen, wenn eine <literal>Session</literal> über "
+"längere Zeit hinweg geöffnet und abgekuppelt bleibt (siehe <xref linkend="
+"\"transactions-optimistic-longsession\"/>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\" />."
+msgstr ""
+"Während der Räumung kann es zu einer Ausnahmemeldung kommen (wenn z.B. ein "
+"DML-Vorgang eine Bedingung verletzt). Da der Umgang mit Ausnahmen ein "
+"gewisses Verständnis für das transaktionale Verhalten in Hibernate "
+"voraussetzt, erläutern wir es in <xref linkend=\"transactions\"/>."
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "Transitive Persistenz"
+
+#. Tag: para
+#, 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 ""
+"Es ist recht mühselig, einzelne Objekte zu speichern, zu löschen und erneut "
+"hinzuzufügen, insbesondere dann, wenn man es mit einem Diagramm assoziierter "
+"Objekte zu tun hat. Ein gängiger Fall ist die Beziehung zwischen "
+"übergeordneten und untergeordneten Objekten (sog. \"parent/child\"-"
+"Beziehung). Sehen Sie sich das folgende Beispiel an:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved and when the parent is deleted, the children will be deleted, etc. "
+"This works for operations such as the removal of a child from the "
+"collection. Since value-typed objects cannot have shared references, "
+"Hibernate will detect this and delete the child from the database."
+msgstr ""
+"Falls die untergeordneten Objekte (\"children\") in einer \"Parent/Child\"-"
+"Beziehung Wertetypen wären (z.B. eine Collection von Adressen oder Strings), "
+"so wäre ihr Lebenszyklus abhängig vom übergeordneten Objekt (\"Parent\"), "
+"und es wären keine weiteren Maßnahmen nötig, um die Statusänderungen bequem "
+"weiterzugeben (sog. \"cascading\"). Wenn das übergeordnete Objekt "
+"gespeichert wird, so werden auch die untergeordneten Objekte gespeichert, "
+"wird ein übergeordnetes Objekt gelöscht, werden auch die untergeordneten "
+"Objekte gelöscht usw. Das funktioniert sogar für Vorgänge bei denen etwa ein "
+"untergeordnetes Objekt aus der Collection entfernt wird: Hibernate spürt "
+"dieses auf und da solche Objekte keine geteilten Verweise besitzen können, "
+"wird das untergeordnete Objekt aus der Datenbank gelöscht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"Stellen Sie sich nun dieselbe Situation vor, mit dem Unterschied, dass es "
+"sich bei übergeordneten und untergeordneten Objekten um Entities, nicht "
+"Wertetypen (z.B. Kategorien und Posten oder \"Parent\" und \"Child\"-Cats) "
+"handelt. Entities besitzen ihren eigenen Lebenszyklus, unterstützen geteilte "
+"Verweise (d.h. selbst wenn eine Entity aus der Collection entfernt wird, "
+"kann sie deswegen nicht gelöscht werden) und standardmäßig existiert keine "
+"Statusweitergabe von einer Entity an eine andere zugehörige Entity. "
+"Hibernate implementiert standardmäßig keine <emphasis>Persistenz durch "
+"Erreichbarkeit</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"Für jeden Grundvorgang der Hibernate Session - einschließlich "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - gibt es eine entsprechende Art der "
+"Weitergabe. Die Arten sind dem entsprechend <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal> benannt. Falls Sie "
+"möchten, dass ein Vorgang entlang einer Assoziation weitergegeben wird, so "
+"müssen Sie dass im Mapping-Dokument angeben. Zum Beispiel wie folgt aussehen:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr ""
+"Die Arten der Weitergabe (sog. \"Cascade Styles\") können kombiniert werden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"Sie können sogar mittels <literal>cascade=\"all\"</literal> bestimmen, "
+"dass<emphasis>alle</emphasis> Vorgänge entlang der Assoziation weitergegeben "
+"werden. In der Standardeinstellung <literal>cascade=\"none\"</literal> ist "
+"festgelegt, dass keine Vorgänge weitergegeben werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"Eine besondere Art der Weitergabe namens <literal>delete-orphan</literal> "
+"gilt nur bei \"One-to-Many\"-Assoziationen und zeigt an, dass der "
+"<literal>delete()</literal>-Vorgang angewendet werden soll, wenn ein "
+"untergeordnetes Objekt aus der Assoziation entfernt wird."
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "Empfehlungen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It does not usually make sense to enable cascade on a <literal>&lt;many-to-"
+"one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. "
+"Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and "
+"<literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+"Es macht in der Regel keinen Sinn, die Weitergabe bei einer <literal>&lt;"
+"many-to-one&gt;</literal> oder <literal>&lt;many-to-many&gt;</literal>-"
+"Assoziation zu aktivieren. Die Weitergabe ist oftmals für <literal>&lt;one-"
+"to-one&gt;</literal> und <literal>&lt;one-to-many&gt;</literal>-"
+"Assoziationen von Nutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"Falls die Lebensdauer des untergeordneten Objekts an die Lebensdauer des "
+"übergeordneten Objekts gebunden ist, erklären Sie es zum <emphasis>"
+"\"Lifecycle Object\"</emphasis> indem Sie <literal>cascade=\"all,delete-"
+"orphan\"</literal> festlegen."
+
+#. Tag: para
+#, 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 "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"Andernfalls wird keine Weitergabe benötigt. Wenn Sie jedoch glauben, dass "
+"Sie oft mit über- und untergeordneten Objekten in derselben Transaktion "
+"arbeiten werden und Sie sich etwas Tipparbeit sparen möchten, so können Sie "
+"<literal>cascade=\"persist,merge,save-update\"</literal> verwenden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"Das Mappen einer Assoziation (entweder einer einwertigen Assoziation oder "
+"einer Collection) unter Verwendung von <literal>cascade=\"all\"</literal> "
+"kennzeichnet die Assoziation als zum <emphasis>Parent/Child</emphasis>-"
+"Beziehungstyp gehörig, bei dem Speichern/Aktualisieren/Löschen des "
+"übergeordneten Objekts zum Speichern/Aktualisieren/Löschen des "
+"untergeordneten Objekts (oder Objekte) führt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Furthermore, a mere reference to a child from a persistent parent will "
+"result in save/update of the child. This metaphor is incomplete, however. A "
+"child which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"Desweiteren führt schon der Verweis eines übergeordneten Objektes auf ein "
+"untergeordnetes Objekt zur Speicherung/Aktualisierung des letzteren. Diese "
+"Metapher ist jedoch unvollständig. Ein untergeordnetes Objekt auf das nicht "
+"mehr durch das übergeordnete Objekt verwiesen wird, wird <emphasis>nicht</"
+"emphasis> automatisch gelöscht, außer im Fall einer <literal>&lt;one-to-"
+"many&gt;</literal>-Assoziation, die mit <literal>cascade=\"delete-orphan\"</"
+"literal> gemappt ist. Die exakte Sematik bei Weitergabevorgängen bei der "
+"\"Parent\"/\"Child\"-Beziehung lautet wie folgt:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"Falls für einen \"Parent\" <literal>persist()</literal> gilt, so gilt für "
+"sämtliche \"Children\" ebenfalls <literal>persist()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"Falls für einen \"Parent\" <literal>merge()</literal> gilt, so gilt für "
+"sämtliche \"Children\" ebenfalls <literal>merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"Falls für einen \"Parent\" <literal>save()</literal>, <literal>update()</"
+"literal> oder <literal>saveOrUpdate()</literal> gilt, so gilt für sämtliche "
+"\"Children\" ebenfalls <literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"Falls auf ein transientes oder abgesetztes \"Child\" durch einen "
+"persistenten \"Parent\" verwiesen wird, so gilt dafür <literal>saveOrUpdate()"
+"</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"Falls ein \"Parent\" gelöscht wird, so gilt für alle \"Children\" "
+"<literal>delete()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"Falls der Verweis auf ein \"Child\" von einem persistenten \"Parent\" "
+"entfällt, <emphasis>passiert nicht besonderes</emphasis> - die Anwendung "
+"sollte das \"Child\" explizit löschen falls nötig - außer es gilt "
+"<literal>cascade=\"delete-orphan\"</literal>, in welchem Fall das \"verwaiste"
+"\" Child gelöscht wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-update</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"Beachten Sie außerdem, dass die Weitergabe von Vorgängen bei einem "
+"Objektdiagramm zum <emphasis>Zeitpunkt des Aufrufs</emphasis> oder "
+"<emphasis>zum Zeitpunkt der Räumung</emphasis> angewendet werden kann. Falls "
+"aktiviert werden alle Vorgänge an assoziierte Entities weitergegeben, die "
+"bei der Ausführung des Vorgangs erreichbar sind. Jedoch sind <literal>save-"
+"upate</literal> und <literal>delete-orphan</literal> für alle während der "
+"Räumung der <literal>Session</literal> erreichbaren, zugehörigen Entities "
+"transitiv."
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "Die Verwendung von Metadata"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate requires a rich meta-level model of all entity and value types. "
+"This model can be useful to the application itself. For example, the "
+"application might use Hibernate's metadata to implement a \"smart\" deep-"
+"copy algorithm that understands which objects should be copied (eg. mutable "
+"value types) and which objects that should not (e.g. immutable value types "
+"and, possibly, associated entities)."
+msgstr ""
+"Hibernate benötigt von allen Entity und Wertetypen ein sehr umfassendes "
+"Modell auf Meta-Ebene. Von Zeit zu Zeit ist dieses Modell für die Anwendung "
+"selbst sehr hilfreich. Die Anwendung könnte zum Beispiel Hibernates "
+"Metadaten verwenden, um einen \"intelligenten\" Algorithmus der Detailkopie "
+"zu implementieren, der weiß, welche Objekte kopiert werden müssen (z.B. "
+"veränderliche Wertetypen) und welche nicht (z.B. unveränderliche Wertetypen "
+"und möglicherweise zugehörige Entities)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces can be obtained "
+"from the <literal>SessionFactory</literal>."
+msgstr ""
+"Hibernate legt Metadata mittels der <literal>ClassMetadata</literal> und "
+"<literal>CollectionMetadata</literal>-Interfaces und der <literal>Type</"
+"literal>-Hierarchie dar. Instanzen der Metadata-Interfaces sind durch die "
+"<literal>SessionFactory</literal> verfügbar."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);]]>"
+#~ msgstr ""
+#~ "DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );]]>"
+#~ msgstr ""
+#~ "DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );"
+
+#, fuzzy
+#~ msgid "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+#~ msgstr "Cat fritz = (Cat) sess.load(Cat.class, generatedId);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );]]>"
+#~ msgstr ""
+#~ "// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();]]>"
+#~ msgstr ""
+#~ "Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+#~ msgstr "Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+#~ msgstr ""
+#~ "sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate < ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+#~ msgstr ""
+#~ "List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate &lt; ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten = (Cat) tuple[0];\n"
+#~ "    Cat mother = (Cat) tuple[1];\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten  = tuple[0];\n"
+#~ "    Cat mother  = tuple[1];\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from "
+#~ "DomesticCat cat \" +\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+#~ "(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()]]>"
+#~ msgstr ""
+#~ "Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" "
+#~ "+\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE &gt; i++ ) &amp;&amp; cats.next() ) pageOfCats.add"
+#~ "( cats.get(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight > ?\n"
+#~ "] ]></query>]]>"
+#~ msgstr ""
+#~ "&lt;query name=\"ByNameAndMaximumWeight\"&gt;&lt;![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight &gt; ?\n"
+#~ "] ]&gt;&lt;/query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");]]>"
+#~ msgstr ""
+#~ "Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Expression.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT "
+#~ "{cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list();]]>"
+#~ msgstr ""
+#~ "List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM&lt;10\",\n"
+#~ "    \"cat\",\n"
+#~ "    Cat.class\n"
+#~ ").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list()]]>"
+#~ msgstr ""
+#~ "List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM&lt;10\",\n"
+#~ "    \"cat\",\n"
+#~ "    Cat.class\n"
+#~ ").list()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+#~ "(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and "
+#~ "persisted]]>"
+#~ msgstr ""
+#~ "DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and persisted"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate]]>"
+#~ msgstr ""
+#~ "// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);]]>"
+#~ msgstr ""
+#~ "//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)]]>"
+#~ msgstr ""
+#~ "// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)"
+
+#, fuzzy
+#~ msgid "<![CDATA[sess.delete(cat);]]>"
+#~ msgstr "sess.delete(cat);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();]]>"
+#~ msgstr ""
+#~ "//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();]]>"
+#~ msgstr ""
+#~ "sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();"
+
+#, fuzzy
+#~ msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" cascade=\"persist\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" cascade=\"persist,delete,lock\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i&lt;propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() &amp;&amp; !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1469 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "Toolset-Handbuch"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, and Ant tasks."
+msgstr ""
+"\"Roundtrip Engineering\" mit Hibernate ist mit einem Satz von Eclipse-"
+"Plugins, Befehlszeilen-Tools sowie Ant-Aufgaben möglich."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"Die <emphasis>Hibernate Tools</emphasis> beinhalten gegenwärtig Plug-ins für "
+"die Eclipse-IDE sowie Ant-Aufgaben für invertiertes Engineering bestehender "
+"Datenbanken:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping "
+"files that supports auto-completion and syntax highlighting. It also "
+"supports semantic auto-completion for class names and property/field names, "
+"making it more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>Mapping-Editor:</emphasis> Ein Editor für Hibernate XML-Mapping-"
+"Dateien, der Auto-Vervollständigung und Syntax-Markierung unterstützt. Er "
+"unterstützt außerdem semantische Auto-Vervollständigung für Klassennamen und "
+"Property-/Feldnamen, wodurch er vielseitiger als ein regulärer XML-Editor "
+"ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> the console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you are also "
+"provided with an interactive view of your persistent classes and their "
+"relationships. The console allows you to execute HQL queries against your "
+"database and browse the result directly in Eclipse."
+msgstr ""
+"<emphasis>Console:</emphasis> Die Konsole ist eine neue Ansicht in Eclipse. "
+"Außer einer Baumansicht Ihrer Konsolenkonfiguration können Sie auch eine "
+"interaktive Ansicht Ihrer persistenten Klassen sowie deren Beziehungen "
+"erhalten. Die Konsole ermöglicht es Ihnen, HQL-Anfragen an Ihrer Datenbank "
+"zu stellen und die Ergebnisse direkt in Eclipse zu durchsuchen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> several wizards are provided with "
+"the Hibernate Eclipse tools. You can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or to reverse engineer an existing "
+"database schema into POJO source files and Hibernate mapping files. The "
+"reverse engineering wizard supports customizable templates."
+msgstr ""
+"<emphasis>Development Wizards:</emphasis> Unter den Hibernate Eclipse Tools "
+"finden Sie auch mehrere Entwicklungs-Wizards. Sie können einen Wizard zur "
+"schnellen Generierung von Hibernate Konfigurationsdateien (cfg.xml) oder "
+"sogar zur vollständigen Invertierung eines bestehenden Datenbankschemas in "
+"POJO Quelldateien und Hibernate Mapping-Dateien verwenden. Der \"Reverse "
+"Engineering\"-Wizard unterstützt anwenderdefinierte Templates."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package "
+"documentation for more information."
+msgstr ""
+"Bitte entnehmen Sie dem Paket <emphasis>Hibernate Tools</emphasis> und der "
+"zugehörigen Dokumentation weitere Informationen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool : "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even "
+"be used from \"inside\" Hibernate."
+msgstr ""
+"Das Hibernate Hauptpaket kommt jedoch gebündelt mit einem integrierten Tool "
+"(es kann sogar direkt von \"innerhalb\" Hibernate aus verwendet werden): "
+"<emphasis>SchemaExport</emphasis> auch bekannt als <literal>hbm2ddl</"
+"literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "Automatische Schema-Generierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"DDL can be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints, primary and "
+"foreign keys, for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"DDL kann mittels eines Hibernate Dienstprogramms aus Ihren Mapping-Dateien "
+"generiert werden. Das generierte Schema beinhaltet referentielle "
+"Integritätsbedingungen (Primär- und Fremdschlüssel) für Entity- und "
+"Collection-Tabellen. Tabellen und Reihungen (Sequenzen) werden auch für "
+"gemappte Bezeichnergeneratoren erstellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor-specific."
+msgstr ""
+"Sie <emphasis>müssen</emphasis> einen SQL-<literal>Dialect</literal> mittels "
+"der <literal>hibernate.dialect</literal>-Property bestimmen, wenn Sie dieses "
+"Tool verwenden, da DDL sehr anbieterspezifisch ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, you must customize your mapping files to improve the generated "
+"schema. The next section covers schema customization."
+msgstr ""
+"Zunächst passen Sie Ihre Mapping-Dateien an, um das generierte Schema zu "
+"verbessern."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "Anpassung des Schemas"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You can set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"Zahlreiche Hibernate Mapping-Elemente definieren optionale Attribute mit "
+"Namen <literal>length</literal>, <literal>precision</literal> und "
+"<literal>scale</literal>. Mit diesem Atrribut können Sie Länge, Genauigkeit "
+"und Skalierung einer Reihe einstellen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute for generating "
+"a <literal>NOT NULL</literal> constraint on table columns, and a "
+"<literal>unique</literal> attribute for generating <literal>UNIQUE</literal> "
+"constraint on table columns."
+msgstr ""
+"Einige Tags akzeptieren auch ein <literal>not-null</literal>-Attribut (für "
+"die Generierung einer <literal>NOT NULL</literal>-Bedingung an "
+"Tabellenspalten) sowie ein <literal>unique</literal>-Attribut (für die "
+"Generierung einer <literal>UNIQUE</literal>-Bedingung an Tabellenspalten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute can be used to group columns in a "
+"single, unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL. It is only used to group the "
+"columns in the mapping file."
+msgstr ""
+"Ein <literal>unique-key</literal>-Attribut kann ebenfalls benutzt werden, um "
+"Spalten in einer Bedingung mit einem einzelnen eindeutigen Kennbegriff zu "
+"gruppieren. Zur Zeit wird der spezifizierte Wert des <literal>unique-key</"
+"literal>-Attributs nicht <emphasis>nicht</emphasis> benutzt, um die "
+"Bedingung in der generierten DDL zu benutzen, sondern nur, um die Spalten in "
+"der Mapping-Datei zu gruppieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns can be "
+"grouped into the same index by simply specifying the same index name."
+msgstr ""
+"Ein <literal>index</literal>-Attribut legt den Namen eines Index fest, der "
+"unter Verwendung der gemappten Spalte(n) erstellt wird. Mehrere Spalten "
+"können in denselben Index gruppiert werden, indem einfach derselbe Indexname "
+"festgelegt wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute can be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"Ein <literal>foreign-key</literal>-Attribut kann verwendet werden, um den "
+"Namen einer generierten Bedingung des Fremdschlüssels außer Kraft zu setzen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal>&lt;column&gt;</literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"Zahlreiche Mapping-Elemente akzeptieren auch ein untergeordnetes "
+"<literal>&lt;column&gt;</literal>-Element. Das ist insbesondere für das "
+"Mappen von vielspaltigen Typen hilfreich:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>default</literal> attribute allows you to specify a default "
+"value for a column.You should assign the same value to the mapped property "
+"before saving a new instance of the mapped class."
+msgstr ""
+"Mit dem <literal>default</literal>-Attribut können Sie einen Standardwert "
+"für eine Spalte festlegen (Sie sollten denselben Wert einer gemappten "
+"Property zuordnen, ehe Sie eine neue Instanz der gemappten Klasse speichern)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"Das <literal>sql-type</literal>-Attribut ermöglicht die Außerkraftsetzung "
+"des Standard-Mappings eines Hibernate-Typs zum SQL-Datentyp."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"Das <literal>check</literal>-Attribut ermöglicht es Ihnen, eine "
+"Prüfungsbedingung festzulegen."
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "Attribut"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "Werte"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "Bedeutung"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>length</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "Zahl"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "Spaltenlänge"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "Dezimale Genauigkeit der Spalte"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "Dezimale Skalierung der Spalte"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "legt fest, dass die Spalte nicht-nullbar sein soll"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "bestimmt, dass die Spalte eine eindeutige Bedingung besitzt"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>index</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "bestimmt den Namen eines (mehrspaltigen) Index"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "bestimmt den Namen einer mehrspaltigen, eindeutigen Bedingung"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "foreign_key_name"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-"
+"to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-"
+"to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"legt den Namen einer Bedingung des Fremdschlüssels fest, der für eine "
+"Assoziation generiert wurde für ein <literal>&lt;one-to-one&gt;</literal>, "
+"<literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</literal> oder "
+"<literal>&lt;many-to-many&gt;</literal>-Mapping-Element. Bitte beachten Sie, "
+"dass <literal>inverse=\"true\"</literal>-Seiten beim <literal>SchemaExport</"
+"literal> nicht berücksichtigt werden."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal>&lt;column&gt;</"
+"literal> element only)"
+msgstr ""
+"setzt den Standard-Spaltentyp außer Kraft (nur Attribut von <literal>&lt;"
+"column&gt;</literal>-Element)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>default</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "SQL-Ausdruck"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "bestimmt einen Standardwert für die Spalte"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>check</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr ""
+"erstellt eine SQL-Überprüfungsbedingung an entweder der Spalte oder der "
+"Tabelle"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;comment&gt;</literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"Das <literal>&lt;comment&gt;</literal>-Element erlaubt die Bestimmung von "
+"Kommentaren für das generierte Schema."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL where supported."
+msgstr ""
+"Dies führt zu einer <literal>comment on table</literal> oder "
+"<literal>comment on column</literal>-Anweisung in der generierten DDL (wenn "
+"unterstützt)."
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "Start des Tools"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"Das <literal>SchemaExport</literal>-Tool schreibt ein DDL-Skript um DDL-"
+"Anweisungen zu standardisieren und/oder auszuführen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaExport</literal> command "
+"line options"
+msgstr "<literal>SchemaExport</literal>-Befehlszeilenoptionen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</"
+"emphasis><literal>org.hibernate.tool.hbm2ddl.SchemaExport</"
+"literal><emphasis>options mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "<literal>SchemaExport</literal>-Befehlszeilenoptionen"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "Option"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not output the script to stdout"
+msgstr "Skript nicht an stdout ausgeben"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "nur Tabellen droppen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "nur Tabellen erstellen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not export to the database"
+msgstr "nicht in die Datenbank exportieren"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "ddl-Skript an eine Datei ausgeben"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "--naming=eg.MyNamingStrategy"
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "Hibernate Konfiguration aus einer XML-Datei lesen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr "Datenbank-Properties aus einer Datei lesen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "generierte SQL sauber im Skript formatieren"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "wählen Sie eine <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "einen Delimiter für das Zeilenende des Skripts setzen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr ""
+"Sie können sogar <literal>SchemaExport</literal> in Ihre Anwendung einbetten:"
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Properties"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Database properties can be specified:"
+msgstr "Datenbank-Properties können bestimmt werden"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+msgstr ""
+"wie System-Properties mit <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr ""
+"in einer benannten Properties-Datei mit <literal>--properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "Die benötigten Properties sind:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "SchemaExport-Connection-Properties"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "Property-Name"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "hibernate.connection.driver_class"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "jdbc-Treiberklasse"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "jdbc url"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "Datenbankbenutzer"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "Benutzer-Passwort"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "in <literal>hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "Dialekt"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "Die Verwendung von Ant"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"Sie können <literal>SchemaExport</literal> vom Ihrem Ant-Build-Skript "
+"aufrufen:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "Inkrementelle Schema-Aktualisierungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon "
+"the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+"Das <literal>SchemaUpdate</literal>-Tool aktualisiert ein bestehendes Schema "
+"mit \"inkrementellen\" Änderungen. Bitte beachten Sie, das "
+"<literal>SchemaUpdate</literal> sehr vom JDBC-Metadaten-API abhängt und "
+"daher nicht mit allen JDBC-Treibern funktioniert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</"
+"emphasis><literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</"
+"literal><emphasis>options mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "<literal>SchemaUpdate</literal>-Befehlszeilenoptionen"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not export the script to the database"
+msgstr "Skript nicht in die Datenbank exportieren"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "eine <literal>.cfg.xml</literal>-Datei bestimmen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr ""
+"Sie können <literal>SchemaUpdate</literal> in Ihre Anwendung einbetten:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "Die Verwendung von Ant bei inkrementellen Schema-Aktualisierungen"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr "Sie können <literal>SchemaUpdate</literal> vom Ant-Skript aufrufen:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "Schema-Validierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. The "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API and, as such, will not work with all JDBC drivers. This tool is "
+"extremely useful for testing."
+msgstr ""
+"Das <literal>SchemaValidator</literal>-Tool validiert, ob das bestehende "
+"Datenbankschema zu Ihren Mapping-Dokumenten \"passt\". Beachten Sie, dass "
+"<literal>SchemaValidator</literal> sehr vom JDBC-Metadata-API abhängt und "
+"daher nicht mit allen JDBC-Treibern funktioniert. Dieses Tool ist beim "
+"Testen von großem Nutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</"
+"emphasis><literal>org.hibernate.tool.hbm2ddl.SchemaValidator</"
+"literal><emphasis>options mapping_files</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaValidator</literal> command "
+"line options:"
+msgstr "<literal>SchemaValidator</literal>-Befehlszeilenoptionen"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "<literal>SchemaValidator</literal>-Befehlszeilenoptionen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr ""
+"Sie können den <literal>SchemaValidator</literal> in Ihre Anwendung "
+"einbetten:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "Die Verwendung von Ant zur Schema-Validierung"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr ""
+"Sie können <literal>SchemaValidator</literal> vom Ant-Skript aus aufrufen:"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
+#~ msgstr "&lt;property name=\"zip\" length=\"5\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
+#~ msgstr "&lt;property name=\"balance\" precision=\"12\" scale=\"2\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key="
+#~ "\"OrgEmployeeId\"/>\n"
+#~ "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId"
+#~ "\"/&gt;\n"
+#~ "&lt;property name=\"employeeId\" unique-key=\"OrgEmployee\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
+#~ "<property name=\"firstName\" index=\"CustName\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"lastName\" index=\"CustName\"/&gt;\n"
+#~ "&lt;property name=\"firstName\" index=\"CustName\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
+#~ "    <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30"
+#~ "\"/>\n"
+#~ "    <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20"
+#~ "\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"name\" type=\"my.customtypes.Name\"/&gt;\n"
+#~ "    &lt;column name=\"last\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"30\"/&gt;\n"
+#~ "    &lt;column name=\"first\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"20\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"credits\" default=\"10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"credits\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"credits\" default=\"10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"version\" default=\"0\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;version name=\"version\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"version\" default=\"0\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" type=\"float\">\n"
+#~ "    <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\" type=\"float\"&gt;\n"
+#~ "    &lt;column name=\"balance\" sql-type=\"decimal(13,3)\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
+#~ "    <column name=\"foo\" check=\"foo > 10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"foo\" type=\"integer\"&gt;\n"
+#~ "    &lt;column name=\"foo\" check=\"foo &gt; 10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
+#~ "    ...\n"
+#~ "    <property name=\"bar\" type=\"float\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Foo\" table=\"foos\" check=\"bar &lt; 100.0\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;property name=\"bar\" type=\"float\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#~ msgid "length"
+#~ msgstr "length"
+
+#~ msgid "precision"
+#~ msgstr "precision"
+
+#~ msgid "scale"
+#~ msgstr "scale"
+
+#~ msgid "not-null"
+#~ msgstr "not-null"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "unique"
+#~ msgstr "eindeutig"
+
+#~ msgid "index"
+#~ msgstr "index"
+
+#~ msgid "index_name"
+#~ msgstr "index_name"
+
+#~ msgid "unique-key"
+#~ msgstr "unique-key"
+
+#~ msgid "unique_key_name"
+#~ msgstr "unique_key_name"
+
+#~ msgid "foreign-key"
+#~ msgstr "foreign-key"
+
+#, fuzzy
+#~ msgid "foreign_key_name"
+#~ msgstr "foreign-key"
+
+#~ msgid "sql-type"
+#~ msgstr "sql-type"
+
+#, fuzzy
+#~ msgid "SQL column type"
+#~ msgstr "SQL-Spaltentyp"
+
+#~ msgid "default"
+#~ msgstr "default"
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
+#~ "    <comment>Current customers only</comment>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\" table=\"CurCust\"&gt;\n"
+#~ "    &lt;comment&gt;Current customers only&lt;/comment&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\">\n"
+#~ "    <column name=\"bal\">\n"
+#~ "        <comment>Balance in USD</comment>\n"
+#~ "    </column>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\"&gt;\n"
+#~ "    &lt;column name=\"bal\"&gt;\n"
+#~ "        &lt;comment&gt;Balance in USD&lt;/comment&gt;\n"
+#~ "    &lt;/column&gt;\n"
+#~ "&lt;/property&gt;"
+
+#~ msgid "--quiet"
+#~ msgstr "--quiet"
+
+#~ msgid "--drop"
+#~ msgstr "--drop"
+
+#~ msgid "--create"
+#~ msgstr "--create"
+
+#~ msgid "--text"
+#~ msgstr "--text"
+
+#, fuzzy
+#~ msgid "--output=my_schema.ddl"
+#~ msgstr "--output=my_schema.ddl"
+
+#, fuzzy
+#~ msgid "--config=hibernate.cfg.xml"
+#~ msgstr "--config=hibernate.cfg.xml"
+
+#~ msgid "--properties=hibernate.properties"
+#~ msgstr "--properties=hibernate.properties"
+
+#~ msgid "--format"
+#~ msgstr "--format"
+
+#~ msgid "--delimiter=;"
+#~ msgstr "--delimiter=;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);"
+
+#, fuzzy
+#~ msgid "hibernate.connection.driver_class"
+#~ msgstr "hibernate.connection.url"
+
+#~ msgid "hibernate.connection.url"
+#~ msgstr "hibernate.connection.url"
+
+#~ msgid "hibernate.connection.username"
+#~ msgstr "hibernate.connection.username"
+
+#~ msgid "hibernate.connection.password"
+#~ msgstr "hibernate.connection.password"
+
+#~ msgid "hibernate.dialect"
+#~ msgstr "hibernate.dialect"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaexport\">\n"
+#~ "    <taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaexport>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaexport\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaexport&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaupdate\">\n"
+#~ "    <taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaupdate>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaupdate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemavalidate\">\n"
+#~ "    <taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemavalidator\n"
+#~ "        properties=\"hibernate.properties\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemavalidator>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemavalidate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemavalidator\n"
+#~ "        properties=\"hibernate.properties\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2444 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "Transaktionen und Nebenläufigkeit"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. It is recommended "
+"that you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"Der wichtigste Aspekt von Hibernate und der Nebenläufigkeitskontrolle ist "
+"die Tatsache, dass es sehr leicht verständlich ist. Hibernate verwendet JDBC-"
+"Verbindungen und JTA-Ressourcen direkt und ohne Hinzufügen zusätzlichen "
+"Sperrverhaltens (sog. \"Locking\"). Wir empfehlen Ihnen, der JDBC-, ANSI- "
+"und Transaktionsisolation-Spezifikation Ihres Datenbankmanagementsystems "
+"etwas Zeit zu widmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Through <literal>Session</literal>, which is also a transaction-scoped "
+"cache, Hibernate provides repeatable reads for lookup by identifier and "
+"entity queries and not reporting queries that return scalar values."
+msgstr ""
+"Hibernate sichert keine Objekte im Speicher. Bei Ihrer Anwendung lässt sich "
+"das durch das Isolationsniveau Ihrer Datenbanktransaktionen definierte "
+"Verhalten erwarten. Bitte beachten Sie, dass dank der <literal>Session</"
+"literal>, die ebenfalls über ein durch die Transkation begrenztes Cache "
+"verfügt, Hibernate wiederholbares Lesen für Suchläufe nach Bezeichner- und "
+"Entity-Anfragen liefert (ohne Anzeige von Anfragen, die mit skalaren Werten "
+"reagieren)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> "
+"syntax, a (minor) API for pessimistic locking of rows. Optimistic "
+"concurrency control and this API are discussed later in this chapter."
+msgstr ""
+"Neben der Versionierung für automatische optimistische "
+"Nebenläufigkeitskontrolle bietet Hibernate auch eine (kleinere) API für das "
+"pessimistische Sperren von Reihen unter Verwendung der <literal>SELECT FOR "
+"UPDATE</literal>-Syntax. Die optimistische Nebenläufigkeitskontrolle sowie "
+"die API werden später in diesem Kapitel noch erläutert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The discussion of concurrency control in Hibernate begins with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"Wir beginnen das Thema der Nebenläufigkeitskontrolle in Hibernate mit der "
+"Granularität von <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal> und <literal>Session</literal> sowie Datenbanktransaktionen und "
+"langen Konversationen (sog. \"Conversations\")."
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "Gültigkeitsbereiche von Session und Transaktion"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object, intended to be shared by all application threads. It is created "
+"once, usually on application startup, from a <literal>Configuration</"
+"literal> instance."
+msgstr ""
+"Eine <literal>SessionFactory</literal> ist ein in der Erstellung teures, "
+"threadsicheres Objekt, das von allen Anwendungsthreads geteilt werden soll. "
+"Sie wird einmal - in der Regel beim Startup der Anwendung - aus einer "
+"<literal>Configuration</literal>-Instanz erstellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once and then discarded for: a single request, a conversation "
+"or a single unit of work. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, "
+"unless it is needed. It will not consume any resources until used."
+msgstr ""
+"Eine <literal>Session</literal> ist ein in der Erstellung nicht teures, "
+"nicht threadsicheres Objekt, das für den einmaligen Gebrauch durch eine "
+"Anfrage, eine Konversation oder eine Arbeitseinheit vorgesehen ist und "
+"anschließend verworfen wird. Eine <literal>Session</literal> erhält keine "
+"JDBC-<literal>Connection</literal> (oder eine <literal>Datasource</"
+"literal>), außer diese werden benötigt, d.h. sie benötigen bis zum Gebrauch "
+"keine Ressourcen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In order to reduce lock contention in the database, a database transaction "
+"has to be as short as possible. Long database transactions will prevent your "
+"application from scaling to a highly concurrent load. It is not recommended "
+"that you hold a database transaction open during user think time until the "
+"unit of work is complete."
+msgstr ""
+"Der Vollständigkeit halber sollten Sie sich auch Gedanken zu "
+"Datenbanktransaktionen machen. Eine Datenbanktransaktion sollte so kurz wie "
+"möglich sein, um Sperrkonkurrenz (sog. \"Lock Contention\") in der Datenbank "
+"zu reduzieren. Lange Datenbanktransaktionen behindern Ihre Anwendung bei der "
+"Skalierung stark nebenläufiger Loads. Es ist daher fast nie gut, eine "
+"Datenbank während der Benutzer \"Think Time\" offen zu halten, bis die "
+"Arbeitseinheit beendet ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+"Was ist der Gültigkeitsbereich einer Arbeitseinheit? Kann eine einzelne "
+"Hibernate <literal>Session</literal> mehrere Datenbanktransaktionen umfassen "
+"oder gilt eine \"one-to-one\"-Beziehung? Wann sollte eine <literal>Session</"
+"literal> geöffnet und geschlossen werden, und wie werden die Grenzen der "
+"Datenbanktransaktionen demarkiert?"
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "Arbeitseinheit"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, let's define a unit of work. A unit of work is a design pattern "
+"described by Martin Fowler as <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation> In other words, its a series of operations we wish to carry out "
+"against the database together. Basically, it is a transaction, though "
+"fulfilling a unit of work will often span multiple physical database "
+"transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really "
+"we are talking about a more abstract notion of a transaction. The term "
+"\"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use the <emphasis>session-per-operation</emphasis> antipattern: do "
+"not open and close a <literal>Session</literal> for every simple database "
+"call in a single thread. 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. This also means that auto-commit after "
+"every single SQL statement is useless in an application as this mode is "
+"intended for ad-hoc SQL console work. Hibernate disables, or expects the "
+"application server to disable, auto-commit mode immediately. Database "
+"transactions are never optional. All communication with a database has to "
+"occur inside a transaction. Auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also more maintainable and "
+"extensible."
+msgstr ""
+"Zunächst einmal sollten Sie nicht das Negativ-Entwurfsmuster "
+"<emphasis>Session-pro-Vorgang</emphasis> verwenden, d.h. öffnen und "
+"schließen Sie eine <literal>Session</literal> nicht bei jedem einfachen "
+"Datenbankaufruf in einem einzelnen Thread! Natürlich gilt dasselbe für "
+"Datenbanktransaktionen. Datenbankaufrufe in einer Anwendung erfolgen durch "
+"eine geplante Sequenz, sie werden in atomare Arbeitseinheiten gruppiert. "
+"(Beachten Sie, dass dadurch auch Auto-Festschreibung (sog. \"Auto-Commit\") "
+"nach jeder einzelnen SQL-Anweisung in einer Anwendung nutzlos ist, dieser "
+"Modus ist für ad-hoc SQL-Konsolenarbeit vorgesehen. Hibernate deaktiviert - "
+"oder erwartet, dass dies der Applikationsserver tut - den Auto-"
+"Festschreibungsmodus sofort). Datenbanktransaktionen sind niemals optional, "
+"jede Kommunikation mit einer Datenbank muss innerhalb einer Transaktion "
+"erfolgen, unabhängig davon, ob Daten gelesen oder geschrieben werden. Wie "
+"beschrieben sollte das Auto-Festschreibungsverhalten beim Lesen von Daten "
+"vermieden werden, da viele kleinere Transaktionen aller Wahrscheinlichkeit "
+"nach weniger leistungsfähig sind als eine klar definierte Arbeitseinheit. "
+"Letztere lässt sich besser warten und ist erweiterbar."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is sent to the server, where the Hibernate persistence layer runs. A "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. On completion of the work, and "
+"once the response for the client has been prepared, the session is flushed "
+"and closed. Use a single database transaction to serve the clients request, "
+"starting and committing it when you open and close the <literal>Session</"
+"literal>. The relationship between the two is one-to-one and this model is a "
+"perfect fit for many applications."
+msgstr ""
+"Das gängigste Muster der Mehrbenutzer-Client/Server-Applikation ist "
+"<emphasis>Session-pro-Anfrage</emphasis>. Bei diesem Modell wird eine "
+"Anfrage des Client an den Server geschickt (wo die Hibernate "
+"Persistenzschicht läuft), eine neue Hibernate <literal>Session</literal> "
+"wird geöffnet und sämtliche Datenbankvorgänge werden in dieser "
+"Arbeitseinheit ausgeführt. Ist der Arbeitsvorgang abgeschlossen (und die "
+"Antwort für den Client vorbereitet), wird die Session geräumt und "
+"geschlossen. Sie würden auch eine einzelne Datenbanktransaktion für die "
+"Client-Anfrage verwenden, wobei diese beim Öffnen und Schließen der "
+"<literal>Session</literal> gestartet und festgeschrieben wird. Die Beziehung "
+"zwischen den beiden ist \"one-to-one\" (injektiv) und dieses Modell eignet "
+"sich perfekt für zahlreiche Anwendungen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. Start a "
+"transaction when a server request has to be processed, and end the "
+"transaction before the response is sent to the client. Common solutions are "
+"<literal>ServletFilter</literal>, AOP interceptor with a pointcut on the "
+"service methods, or a proxy/interception container. An EJB container is a "
+"standardized way to implement cross-cutting aspects such as transaction "
+"demarcation on EJB session beans, declaratively with CMT. If you use "
+"programmatic transaction demarcation, for ease of use and code portability "
+"use the Hibernate <literal>Transaction</literal> API shown later in this "
+"chapter."
+msgstr ""
+"Die Herausforderung liegt in der Implementierung. Hibernate bietet ein "
+"eingebautes Management der \"aktuellen Session\", um dieses Muster zu "
+"vereinfachen. Sie müssen lediglich eine Transaktion starten, wenn eine "
+"Serveranfrage bearbeitet werden muss und die Transaktion beenden ehe die "
+"Antwort an den Client verschickt wird. Sie können dies auf beliebige Weise "
+"ausführen, gängige Lösungen sind <literal>ServletFilter</literal>, AOP-"
+"Interzeptor mit einem Pointcut an den Servicemethoden oder einem \"Proxy/"
+"Interception Container\". Ein EJB-Container ist eine standardisierte Art der "
+"Implementierung von Aspekten wie Transaktionsdemarkation an EJB Session-"
+"Beans, deklarativ mit CMT. Falls Sie sich für die Verwendung "
+"programmatischer Transaktionsdemarkation entscheiden, so ist die später in "
+"diesem Kapitel erläuterte Hibernate <literal>Transaction</literal>-API "
+"aufgrund von Benutzerfreundlichkeit und Codeübertragbarkeit zu bevorzugen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by calling <literal>sessionFactory.getCurrentSession()</literal>. "
+"You will always get a <literal>Session</literal> scoped to the current "
+"database transaction. This has to be configured for either resource-local or "
+"JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+"Ihr Anwendungscode kann auf eine \"aktuelle Session\" zugreifen, um die "
+"Anfrage zu bearbeiten, indem wann immer nötig einfach der Aufruf "
+"<literal>sessionFactory.getCurrentSession()</literal> erfolgt. Sie werden "
+"stets eine durch die aktuelle Datenbanktransaktion begrenzte "
+"<literal>Session</literal> erhalten. Dies muss entweder für \"Resource-local"
+"\" oder JTA-Umgebungen konfiguriert werden, siehe <xref linkend="
+"\"architecture-current-session\"/>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can extend the scope of a <literal>Session</literal> and database "
+"transaction until the \"view has been rendered\". This is especially useful "
+"in servlet applications that utilize a separate rendering phase after the "
+"request has been processed. Extending the database transaction until view "
+"rendering, is achieved by implementing your own interceptor. However, this "
+"will be difficult if you rely on EJBs with container-managed transactions. A "
+"transaction will be completed when an EJB method returns, before rendering "
+"of any view can start. See the Hibernate website and forum for tips and "
+"examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+"Manchmal empfiehlt es sich, den Gültigkeitsbereich einer <literal>Session</"
+"literal> und Datenbanktransaktion zu erweitern bis die \"Ansicht gerendert "
+"wurde\". Das ist insbesondere bei Servlet-Anwendungen von Nutzen, die eine "
+"separate Rendering-Phase nach der Bearbeitung der Anfrage verwenden. Die "
+"Verlängerung der Datenbanktransaktion bis das Rendering der Ansicht "
+"abgeschlossen ist, ist ganz einfach, wenn Sie Ihren eigenen Interzeptor "
+"implementieren. Es ist jedoch nicht ganz einfach umzusetzen, wenn Sie auf "
+"EJBs mit Container-gemanagten Transaktionen angewiesen sind, da eine "
+"Transaktion abgeschlossen wird, wenn eine EJB-Methode wiedergegeben wird, "
+"ehe das Rendering einer Ansicht gestartet werden kann. Auf der Hibernate "
+"Website und im Forum finden Sie Tipps und Beispiele rund um dieses "
+"<emphasis>Offene Session in Ansicht</emphasis>-Muster."
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "Lange Konversationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The session-per-request pattern is not the only way of designing units of "
+"work. Many business processes require a whole series of interactions with "
+"the user that are interleaved with database accesses. In web and enterprise "
+"applications, it is not acceptable for a database transaction to span a user "
+"interaction. Consider the following example:"
+msgstr ""
+"Das \"Session-pro-Anfrage\"-Muster ist nicht das einzige hilfreiche Konzept, "
+"das beim Design von Arbeitseinheiten verwendet werden kann. Zahlreiche "
+"Geschäftsvorgänge erfordern ganze Serien von Interaktionen, bei denen der "
+"Benutzer in Datenbankzugriffe involviert ist. In Web- und "
+"Unternehmensanwendungen ist es nicht akzeptabel, dass eine "
+"Datenbanktransaktion eine Benutzerinteraktion umfasst. Schauen Sie sich "
+"folgendes Beispiel an:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first screen of a dialog opens. The data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"Der erste Bildschirmdialog wird geöffnet und die für den Benutzer sichtbaren "
+"Daten werden in einer bestimmten <literal>Session</literal> und "
+"Datenbanktransaktion geladen. Der Benutzer kann Änderungen an den Objekten "
+"vornehmen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects their modifications to "
+"be made persistent. The user also expects that they were the only person "
+"editing this information and that no conflicting modification has occurred."
+msgstr ""
+"Der Benutzer klickt nach 5 Minuten auf \"Speichern\" (\"save\") und "
+"erwartet, dass die vorgenommenen Änderungen persistent gemacht wurden; er "
+"erwartet außerdem, die einzige Person zu sein, die Änderungen vornimmt und "
+"dass nicht die Möglichkeit widersprüchlicher Änderungen besteht."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"From the point of view of the user, we call this unit of work a long-running "
+"<emphasis>conversation</emphasis> or <emphasis>application transaction</"
+"emphasis>. There are many ways to implement this in your application."
+msgstr ""
+"Wir nennen diese Arbeitseinheit vom Standpunkt des Benutzers aus eine lange "
+"laufende <emphasis>Konversation</emphasis> (oder "
+"<emphasis>Anwendungstransaktion</emphasis>). Es gibt zahlreiche Arten, wie "
+"Sie dies in Ihrer Anwendung implementieren können."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow "
+"the application to scale with the number of concurrent users."
+msgstr ""
+"Eine erste, harmlose Implementierung könnte die <literal>Session</literal> "
+"und Datenbanktransaktion während der Benutzer \"Think Time\" offen halten, "
+"wobei Sperren einen Schutz vor gleichzeitigen Modifikationen liefern und "
+"eine Garantie für Isolation und Atomarität bieten. Dies ist natürlich ein "
+"Negativ-Entwurf, da Sperrkonkurrenz (sog. \"Lock Contention\") es der "
+"Anwendung nicht erlauben würde, die Anzahl gleichzeitiger Benutzer zu "
+"erhöhen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have to use several database transactions to implement the conversation. "
+"In this case, maintaining isolation of business processes becomes the "
+"partial responsibility of the application tier. A single conversation "
+"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 (for example, in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+"Wir müssen ganz offensichtlich mehrere Datenbanktransaktionen verwenden, um "
+"die Konversation zu implementieren. In diesem Fall unterliegt die "
+"Aufrechterhaltung der Isolation von Business-Vorgängen zum Teil der "
+"Verantwortung des Applikations-Tiers. Eine einzelne Konversation umfasst in "
+"der Regel mehrere Datenbanktransaktionen. Sie wird atomar sein, falls eine "
+"dieser Datenbanktransaktionen (die letzte) die aktualisierten Daten "
+"speichert, alle anderen lesen einfach Daten (z.B. in einem \"Wizard-style "
+"Dialog\" der sich über mehrere Anfrage/Antworten-Zyklen erstreckt). Das ist "
+"einfacher zu implementieren als man meint, insbesondere dann, wenn Sie "
+"Hibernates Features nutzen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic "
+"optimistic concurrency control for you. It can automatically detect if a "
+"concurrent modification occurred during user think time. Check for this at "
+"the end of the conversation."
+msgstr ""
+"<emphasis>Automatische Versionierung</emphasis> - Hibernate kann eine "
+"automatische, optimistische Nebenläufigkeitskontrolle für Sie übernehmen und "
+"erkennt automatisch, ob während der Benutzer \"Think Time\" eine "
+"gleichzeitige Modifikation stattgefunden hat. In der Regel prüfen wir nur am "
+"Ende der Konversation."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis>: if you decide to use the "
+"<emphasis>session-per-request</emphasis> pattern, all loaded instances will "
+"be in the detached state during user think time. Hibernate allows you to "
+"reattach the objects and persist the modifications. The pattern is called "
+"<emphasis>session-per-request-with-detached-objects</emphasis>. Automatic "
+"versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Abgesetzte Objekte</emphasis> - Falls Sie das bereits dargestellte "
+"<emphasis>Session-pro-Anfrage </emphasis>-Muster verwenden, so befinden sich "
+"alle geladenen Instanzen während der Benutzer \"Think Time\" in abgesetztem "
+"Status. Hibernate ermöglicht die Wiederanbindung der Objekte sowie die "
+"Persistierung der Modifikationen, das Muster heißt <emphasis>Session-pro-"
+"Anfrage-mit-abgesetzten-Objekten</emphasis> (sog \"session-per-request-with-"
+"detached-objects\"). Automatische Versionierung wird zur Isolation "
+"gleichzeitiger Modifikationen verwendet."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis>: the Hibernate "
+"<literal>Session</literal> can be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed and reconnected "
+"when a new client request occurs. This pattern is known as <emphasis>session-"
+"per-conversation</emphasis> and makes even reattachment unnecessary. "
+"Automatic versioning is used to isolate concurrent modifications and the "
+"<literal>Session</literal> will not be allowed to be flushed automatically, "
+"but explicitly."
+msgstr ""
+"<emphasis>Erweiterte (oder lange) Session</emphasis> - Die Hibernate "
+"<literal>Session</literal> kann von der zu Grunde liegenden JDBC-Verbindung "
+"gelöst werden, nachdem die Datenbanktransaktion festgeschrieben wurde. Eine "
+"erneute Verbindung kann dann bei einer neuen Client-Anfrage erfolgen. Dieses "
+"Muster ist unter dem Namen <emphasis>Session-pro-Konversation</emphasis> "
+"(sog. \"Session-per-Conversation\") bekannt und macht sogar die "
+"Wiederanbindung unnötig. Automatische Versionierung wird verwendet, um "
+"gleichzeitige Modifikationen zu isolieren, und die <literal>Session</"
+"literal> kann in der Regel nicht automatisch, sondern nur explizit, geräumt "
+"werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages. These disadvantages are discussed later in this chapter in "
+"the context of optimistic concurrency control."
+msgstr ""
+"Sowohl <emphasis>Session-pro-Anfrage-mit-abgesetzten-Objekten</emphasis> als "
+"auch <emphasis>Session-pro-Konversation</emphasis> bieten Vor- und "
+"Nachteile. Diese werden später in diesem Kapitel im Zusammenhang mit "
+"optimistischer Nebenläufigkeitskontrolle erläutert."
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "Die Berücksichtigung der Objektidentität"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An application can concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. It "
+"is for this reason that there are two different notions of identity:"
+msgstr ""
+"Eine Anwendung kann gleichzeitig auf denselben persistenten Status in zwei "
+"verschiedenen <literal>Session</literal>s zugreifen. Jedoch kann die Instanz "
+"einer persistenten Klasse nie von zwei <literal>Session</literal>-Instanzen "
+"geteilt werden. Es gibt daher zwei unterschiedliche Begriffe von Identität "
+"(sog. \"Identity\"):"
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "Datenbank-Identität"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "foo.getId().equals( bar.getId() )"
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "JVM-Identität"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For objects attached to a <emphasis>particular</emphasis> <literal>Session</"
+"literal> (i.e., in the scope of a <literal>Session</literal>), the two "
+"notions are equivalent and JVM identity for database identity is guaranteed "
+"by Hibernate. While the application might concurrently access the \"same"
+"\" (persistent identity) business object in two different sessions, the two "
+"instances will actually be \"different\" (JVM identity). Conflicts are "
+"resolved using an optimistic approach and automatic versioning at flush/"
+"commit time."
+msgstr ""
+"Dann sind für an zu einer <emphasis>bestimmten</emphasis> <literal>Session</"
+"literal> gehörenden Objekte (d.h. im Gültigkeitsbereich einer "
+"<literal>Session</literal>) die beiden Begriffe äquivalent, und die JVM-"
+"Identität für Datenbank-Identität wird von Hibernate garantiert. Während "
+"jedoch die Anwendung zeitgleich auf \"dasselbe\" (persistente Identität) "
+"Businessobjekt in zwei verschiedenen Sessions zugreifen kann, werden die "
+"beiden Instanzen tatsächlich \"unterschiedlich\" sein (JVM-Identität). "
+"Konflikte werden gelöst, indem zum Zeitpunkt des Räumens/Festschreibens "
+"(automatische Versionierung) eine optimistische Vorgehensweise verwendet "
+"wird."
+
+#. Tag: para
+#, fuzzy, 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 means that it does not need expensive locking or "
+"other means of synchronization. The application does not need to synchronize "
+"on any business object, as long as it maintains a single thread per "
+"<literal>Session</literal>. Within a <literal>Session</literal> the "
+"application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+"Bei dieser Vorgehensweise kümmern sich Hibernate und die Datenbank um die "
+"Nebenläufigkeit. Dadurch bietet sich auch die beste Skalierbarkeit, da die "
+"Gewährleistung von Identität ein einthreadigen Arbeitseinheiten keine teuren "
+"Sperren oder andere Synchronisationsmaßnahmen erfordert. Die Anwendung muss "
+"nie Synchronisierungen an Businessobjekten durchführen, so lange nur ein "
+"einzelner Thread pro <literal>Session</literal> existiert. Innerhalb einer "
+"<literal>Session</literal> kann die Anwendung ohne Probleme <literal>==</"
+"literal> verwenden, um Objekte zu vergleichen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal> might produce 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). JVM identity, "
+"however, is by definition not guaranteed for instances in a detached state. "
+"The developer has to override the <literal>equals()</literal> and "
+"<literal>hashCode()</literal> methods in persistent classes and implement "
+"their own notion of object equality. There is one caveat: never use the "
+"database identifier to implement equality. Use a business key that is a "
+"combination of unique, usually immutable, attributes. The database "
+"identifier will change if a transient object is made persistent. 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 business keys do not 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. Please note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+"Jedoch kann eine Anwendung, die <literal>==</literal> außerhalb einer "
+"<literal>Session</literal> verwendet, unerwartete Ergebnisse liefern. Dies "
+"kann auch an einigen unerwarteten Orten geschehen, etwa wenn Sie zwei "
+"abgesetzte Instanzen in demselben <literal>Set</literal> ablegen. Beide "
+"besitzen möglicherweise diesselbe Datenbank-Identität (d.h. sie "
+"repräsentieren diesselbe Reihe), aber die JVM-Identität wird der Definition "
+"nach nicht für Instanzen mit abgesetztem Status garantiert. Der Entwickler "
+"muss die <literal>equals()</literal> und <literal>hashCode()</literal>-"
+"Methoden in persistenten Klassen außer Kraft setzen und seinen eigenen "
+"Begriff von Objektgleichheit implementieren. Es existiert eine "
+"Einschränkung: Verwenden Sie niemals den Datenbank-Bezeichner zur "
+"Implementierung der Gleichheit, sondern verwenden Sie einen Business-"
+"Schlüssel, eine Kombination eindeutiger, in der Regel unveränderlicher "
+"Attribute. Der Datenbank-Bezeichner ändert sich, wenn ein transientes Objekt "
+"persistent gemacht wird. Wenn die transiente Instanz (normalerweise zusammen "
+"mit abgesetzten Instanzen) in einem <literal>Set</literal> gehalten wird, so "
+"findet bei Veränderung des Hashcodes ein Vertragsbruch des <literal>Set</"
+"literal> statt. Attribute für Business-Schlüssel müssen nicht so stabil wie "
+"Primärschlüssel der Datenbank sein, und Sie müssen lediglich die Stabilität "
+"garantieren während die Objekte sich im selben <literal>Set</literal> "
+"befinden. Weitere Informationen zu diesem Thema finden Sie auf der Hibernate-"
+"Website. Beachten Sie bitte auch, dass es sich hierbei nicht um eine "
+"Hibernate-Thematik, sondern Java Objekt-Identität und Gleichheit handelt."
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "Gängige Probleme"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> "
+"or <emphasis>session-per-application</emphasis> (there are, however, rare "
+"exceptions to this rule). Some of the following issues might also arise "
+"within the recommended patterns, so ensure that you understand the "
+"implications before making a design decision:"
+msgstr ""
+"Verwenden Sie nie die Negativ-Entwurfsmuster <emphasis>Session-pro-Benutzer-"
+"Session</emphasis> (sog. \"Session-per-User-Session\") oder "
+"<emphasis>Session-pro-Anwendung</emphasis> (sog. \"Session-per-Application"
+"\"). Natürlich gibt es seltene Ausnahmen zu dieser Regel. Beachten Sie "
+"bitte, dass einige der folgenden Fälle auch bei den empfohlenen Mustern "
+"auftreten können, und vergewissern Sie sich, dass Sie mit den Implikationen "
+"vertraut sind, ehe Sie Entscheidungen hinsichtlich des Designs treffen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things that work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if a <literal>Session</literal> instance is shared. If "
+"you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (this is discussed later in the chapter), you "
+"should consider synchronizing access to your Http session. Otherwise, a user "
+"that clicks reload fast enough can use the same <literal>Session</literal> "
+"in two concurrently running threads."
+msgstr ""
+"Eine <literal>Session</literal> ist nicht threadsicher. Dinge, die "
+"gleichzeitig laufen sollen, wie etwa HTTP-Anfragen, Session-Beans oder Swing-"
+"Worker werden Race-Conditions auslösen, wenn eine <literal>Session</literal>-"
+"Instanz geteilt würde. Falls Sie Ihre Hibernate <literal>Session</literal> "
+"in Ihrer <literal>HttpSession</literal> behalten (wird später noch "
+"erläutert), sollten Sie in Erwägung ziehen, den Zugriff auf Ihre Http-"
+"Session zu synchronisieren. Anderfalls kann ein Benutzer der schnell genug "
+"auf \"erneut laden\" klickt diesselbe <literal>Session</literal> in in zwei "
+"gleichzeitig laufenden Threads benutzen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (this is "
+"discussed in more detail later in the chapter). If your <literal>Session</"
+"literal> is bound to the application, you have to stop the application. "
+"Rolling back the database transaction does not put your business objects "
+"back into the state they were at the start of the transaction. This means "
+"that the database state and the business objects will be out of sync. "
+"Usually this is not a problem, because exceptions are not recoverable and "
+"you will have to start over after rollback anyway."
+msgstr ""
+"Eine Ausnahmemeldung von Hibernate bedeutet, dass Sie Ihre "
+"Datenbanktransaktion wiederholen und die <literal>Session</literal> sofort "
+"schließen müssen (dazu später mehr). Falls Ihre <literal>Session</literal> "
+"an die Anwendung gebunden ist, so müssen Sie die Anwendung stoppen. Das "
+"Wiederholen (sog. \"Rollback\") der Datenbanktransaktion bringt Ihre "
+"Business-Objekte nicht in deren Zustand zu Beginn der Transaktion zurück. "
+"Das bedeutet, dass der Datenbankzustand und die Business-Objekte nicht mehr "
+"synchron sind. In der Regel ist das kein Problem, da Ausnahmen nicht wieder "
+"herstellbar sind und Sie nach einem Rollback ohnehin wieder neu anfangen "
+"müssen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in a persistent "
+"state (watched and checked for dirty state by Hibernate). If you keep it "
+"open for a long time or simply load too much data, it will grow endlessly "
+"until you get an OutOfMemoryException. One solution is to call <literal>clear"
+"()</literal> and <literal>evict()</literal> to manage the <literal>Session</"
+"literal> cache, but you should consider a Stored Procedure if you need mass "
+"data operations. Some solutions are shown in <xref linkend=\"batch\" />. "
+"Keeping a <literal>Session</literal> open for the duration of a user session "
+"also means a higher probability of stale data."
+msgstr ""
+"Die <literal>Session</literal> speichert jedes Objekt, das sich in "
+"persistentem Status befindet (von Hibernate im Hinblick auf Zugriffe "
+"überwacht). Das bedeutet, dass es so lange weiterwächst, bis Sie eine "
+"\"OutOfMemoryException\"-Ausnahme erhalten, wenn Sie sie lange Zeit geöffnet "
+"halten oder einfach zu viele Daten laden. Eine Lösung hierfür besteht im "
+"Aufruf von <literal>clear()</literal> und <literal>evict()</literal>, um das "
+"<literal>Session</literal>-Cache zu managen, aber wahrscheinlich sollten Sie "
+"eine gespeicherte Prozedur (sog. \"stored procedure\") in Betracht ziehen, "
+"falls Sie Massendatenvorgänge benötigen. Einige Lösungen sind in <xref "
+"linkend=\"batch\"/> aufgeführt. Eine <literal>Session</literal> während der "
+"Dauer einer Benutzer-Session geöffnet zu halten, kann auch eine hohe "
+"Wahrscheinlichkeit veralteter Daten bedeuten."
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "Abgrenzung von Datenbanktransaktionen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Database, 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. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"Datenbank- (oder System-) Transaktionsgrenzen sind immer notwendig. Es kann "
+"keine Kommunikation mit der Datenbank außerhalb einer Datenbanktransaktion "
+"erfolgen (das sorgt insbesondere bei Entwicklern, die den Auto-"
+"Festschreibungsmodus gewohnt sind, manchmal für Verwirrung). Verwenden Sie "
+"stets klare Transaktionsgrenzen, selbst bei schreibgeschützten Vorgängen. Je "
+"nach Isolationsebene und Leistungsfähigkeit der Datenbank ist dies "
+"vielleicht nicht nötig, aber es schadet nicht, wenn Sie Transaktionen immer "
+"explizit demarkieren. Eine einzelne Datenbanktransaktion wird in jedem Fall "
+"besser arbeiten als viele kleine Transaktionen, selbt beim ausschließlichen "
+"Lesen von Daten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e., standalone, simple "
+"Web- or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries (begin, commit, or rollback database transactions) themselves. A "
+"managed environment usually provides container-managed transactions (CMT), "
+"with the transaction assembly defined declaratively (in deployment "
+"descriptors of EJB session beans, for example). Programmatic transaction "
+"demarcation is then no longer necessary."
+msgstr ""
+"Eine Hibernate Anwendung kann in nicht-gemanagten (d.h. selbstständigen, "
+"einfachen Web- oder Swing-Anwendungen) sowie gemanagten J2EE-Umgebungen "
+"laufen. Wenn in einer nicht-gemanagten Umgebung, so ist Hibernate "
+"normalerweise für seinen eigenen Datenbank Verbindungspool verantwortlich. "
+"Der Anwendungsentwickler muss manuell die Grenzen der Transaktion "
+"einstellen, mit anderen Worten die Datenbanktransaktion selbst beginnen, "
+"festschreiben oder wiederholen (d.h. einen Rollback vornehmen). Eine "
+"gemanagte Umgebung bietet normalerweise Container-gemanagte Transaktionen "
+"(CMT), wobei die Anordnung der Transaktion deklarativ zum Beispiel in den "
+"Deployment-Deskriptoren der EJB Session-Beans definiert wird. Eine "
+"programmatische Transaktionsdemarkation ist dann nicht länger notwendig."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, it is often desirable to keep your persistence layer portable "
+"between non-managed resource-local environments, and systems that can rely "
+"on JTA but use BMT instead of CMT. In both cases use programmatic "
+"transaction demarcation. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"Es ist jedoch oftmals wünschenswert die Persistenzschicht zwischen nicht "
+"gemanagten Ressourcen-lokalen Umgebungen und Systemen, die sich auf JTA "
+"stützen aber BMT statt CMT verwenden, übertragbar zu halten. In beiden "
+"Fällen würden Sie programmatische Transaktionsdemarkation benutzen. "
+"Hibernate bietet ein Wrapper-API mit Namen <literal>Transaction</literal> "
+"das in das native Transaktionssystem Ihrer Deployment-Umgebung übersetzt "
+"wird. Dieses API ist optional, jedoch empfehlen wir dringend dessen "
+"Verwendung, außer Sie befinden sich in einem CMT Session-Bean. "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+"In der Regel umfasst das Beenden einer <literal>Session</literal> vier "
+"eindeutige Phasen:"
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "Räumen der Session"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "Festschreibung der Transaktion"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "Schließen der Session"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "Bearbeitung von Ausnahmen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We discussed Flushing the session earlier, so we will now have a closer look "
+"at transaction demarcation and exception handling in both managed and non-"
+"managed environments."
+msgstr ""
+"Die Räumung einer Session wurde zuvor bereits erläutert - werfen wir nun "
+"einen genaueren Blick auf die Transaktionsdemarkation und den Umgang mit "
+"Ausnahmen in gemanagten und nicht gemanagten Umgebungen."
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "Die nicht-gemanagte Umgebung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e., non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"Falls eine Hibernate Persistenzschicht in einer nicht-gemanagten Umgebung "
+"läuft, werden Datenbankverbindungen in der Regel durch einfache "
+"Verbindungspools (d.h. nicht-DataSource) bearbeitet, von denen Hibernate "
+"nach Bedarf Verbindungen erhält. Das Session-/Transaktionsbearbeitungsidiom "
+"sieht wie folgt aus:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You do not have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly: the call to <literal>commit()</literal> automatically triggers "
+"the synchronization depending on the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"Sie müssen keinen expliziten <literal>flush()</literal> der "
+"<literal>Session</literal> durchführen - der Aufruf <literal>commit()</"
+"literal> löst die Synchronisierung für die Session automatisch aus (je nach "
+"<xref linkend=\"objectstate-flushing\"/>). Der Aufruf <literal>close()</"
+"literal> markiert das Ende einer Session. Die Hauptauswirkung von "
+"<literal>close()</literal> ist, dass die JDBC-Verbindung von der Session "
+"aufgegeben wird. Dieser Java-Code ist übertragbar und funktioniert sowohl in "
+"nicht gemanagten als auch in JTA-Umgebungen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As outlined earlier, a much more flexible solution is Hibernate's built-in "
+"\"current session\" context management:"
+msgstr ""
+"Eine wesentlich flexiblere Lösung ist Hibernates integriertes "
+"Kontextmanagement für die \"aktuelle Session\" wie zuvor beschrieben:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You will not see these code snippets in a regular application; fatal "
+"(system) exceptions should always be caught at the \"top\". In other words, "
+"the code that executes Hibernate 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. The current context management "
+"by Hibernate can significantly simplify this design by accessing a "
+"<literal>SessionFactory</literal>. Exception handling is discussed later in "
+"this chapter."
+msgstr ""
+"Sie werden diese Codestücke aller Wahrscheinlichkeit in einer regulären "
+"Anwendung niemals sehen; fatale (System)-Ausnahmen sollten stets \"ganz oben"
+"\" aufgefangen werden. Mit anderen Worten: Der Code, der Hibernate Aufrufe "
+"(in der Persistenzschicht) ausführt und der Code, der die "
+"<literal>RuntimeException</literal> bearbeitet (und in der Regel nur "
+"reinigen und beenden kann) befinden sich in unterschiedlichen Schichten. Das "
+"aktuelle Kontextmanagement von Hibernate kann diesen Entwurf entscheidend "
+"vereinfachen, da Sie lediglich auf eine <literal>SessionFactory</literal> "
+"zugreifen müssen. Der Umgang mit Ausnahmen wird später in diesem Kapitel "
+"noch näher erläutert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, which is the default, and for the second example select <literal>"
+"\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"Bitte beachten Sie, dass Sie <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal> (Standard) und für das zweite Beispiel  "
+"<literal>\"thread\"</literal> als <literal>hibernate."
+"current_session_context_class</literal> wählen sollten."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "Die Verwendung von JTA"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (for example, behind "
+"EJB session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"Falls Ihre Persistenzschicht in einem Applikationsserver läuft (z.B. hinter "
+"EJB Session-Beans), so wird jede durch Hibernate erlangte "
+"Datenquellenverbindung Teil der allgemeinen JTA-Transaktion. Sie können auch "
+"eine selbstsändige JTA-Implementierung installieren und diese ohne EJB "
+"verwenden. Hibernate bietet zwei Strategien für die JTA-Integration."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. The transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"Falls Sie vom Bean gemanagte Transaktionen (BMT) benutzen, so teilt "
+"Hibernate dem Applikationsserver mit, dass eine BMT-Transaktion gestartet "
+"und beendet werden soll, wenn Sie eine <literal>Transaction</literal>-API "
+"verwenden. Der Transaktionsmanagement-Code ist also identisch mit der nicht-"
+"gemanagten Umgebung."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+"Falls Sie eine transaktionsgebundene <literal>Session</literal>, d.h. die "
+"<literal>getCurrentSession()</literal>-Funktionalität für einfache "
+"Kontextübertragung benutzen wollen, müssen Sie die JTA "
+"<literal>UserTransaction</literal>-API direkt verwenden:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With CMT, transaction demarcation is completed in session bean deployment "
+"descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+"Mit CMT erfolgt die Transaktionsdemarkation in Session-Bean-Deployment-"
+"Deskriptoren (und nicht programmatisch), weswegen der Code wie folgt "
+"reduziert ist:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In a CMT/EJB, even rollback happens automatically. An unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>You do "
+"not need to use the Hibernate <literal>Transaction</literal> API at all with "
+"BMT or CMT, and you get automatic propagation of the \"current\" Session "
+"bound to the transaction.</emphasis>"
+msgstr ""
+"In einem CMT/EJB erfolgt sogar der Rollback automatisch, da eine "
+"unbearbeitete<literal>RuntimeException</literal>, die durch eine Session-"
+"Bean-Methode gemeldet wird, dem Container mitteilt, dass er die allgemeine "
+"Transaktion auf Rollback setzen soll. <emphasis>Das bedeutet, dass Sie die "
+"Hibernate <literal>Transaction</literal>-API gar nicht mit BMT oder CMT "
+"verwenden müssen und Sie eine automatische Fortpflanzung der \"aktuellen\", "
+"an die Transaktion gebundenen Session erhalten.</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When configuring Hibernate's transaction factory, choose <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> if you use JTA "
+"directly (BMT), and <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> in a CMT session bean. Remember to also set "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that "
+"your <literal>hibernate.current_session_context_class</literal> is either "
+"unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+"Bitte beachten Sie, dass Sie <literal>org.hibernate.transaction."
+"JTATransactionFactory</literal> wählen sollten, falls Sie JTA direkt (BMT) "
+"verwenden und <literal>org.hibernate.transaction.CMTTransactionFactory</"
+"literal> in einem CMT Session-Bean, wenn Sie Hibernates Transaction-Factory "
+"konfigurieren. Sie sollten auch daran denken <literal>hibernate.transaction."
+"manager_lookup_class</literal> einzustellen. Vergewissern Sie sich außerdem, "
+"dass <literal>hibernate.current_session_context_class</literal> entweder "
+"nicht gesetzt (rückwärtige Kompatibilität) oder auf <literal>\"jta\"</"
+"literal> gesetzt ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. 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. Most applications can easily avoid "
+"using <literal>scroll()</literal> or <literal>iterate()</literal> from the "
+"JTA or CMT code.)"
+msgstr ""
+"Der <literal>getCurrentSession()</literal>-Vorgang hat einen Nachteil in "
+"einer JTA-Umgebung. Es gibt eine Einschränkung hinsichtlich der Verwendung "
+"des <literal>after_statement</literal>-Verbindungsfreigabemodus, der dann im "
+"Standard benutzt wird. Aufgrund einer Beschränkung der JTA-Spezifikation, "
+"ist es Hibernate nicht möglich, ungeschlossene <literal>ScrollableResults</"
+"literal> oder <literal>Iterator</literal>-Instanzen, die durch "
+"<literal>scroll()</literal> oder <literal>iterate()</literal> erhalten "
+"wurden, automatisch zu bereinigen. Sie <emphasis>müssen</emphasis> den zu "
+"Grunde liegenden Datenbank-Cursor durch Aufruf von "
+"<literal>ScrollableResults.close()</literal> oder <literal>Hibernate.close"
+"(Iterator)</literal> explizit von einem <literal>finally</literal>-Block "
+"freigeben. (Natürlich können die meisten Anwendungen leicht die Verwendung "
+"von <literal>scroll()</literal> oder <literal>iterate()</literal> vom JTA- "
+"oder CMT-Code vermeiden)."
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "Der Umgang mit Ausnahmen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception, including any "
+"<literal>SQLException</literal>, immediately rollback the database "
+"transaction, call <literal>Session.close()</literal> and discard the "
+"<literal>Session</literal> instance. Certain methods of <literal>Session</"
+"literal> will <emphasis>not</emphasis> leave the session in a consistent "
+"state. No exception thrown by Hibernate can be treated as recoverable. "
+"Ensure that the <literal>Session</literal> will be closed by calling "
+"<literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"Falls die <literal>Session</literal> eine Ausnahme meldet (einschließlich "
+"<literal>SQLException</literal>), sollten Sie sofort einen Rollback der "
+"Datenbanktransaktion durchführen, <literal>Session.close()</literal> "
+"aufrufen und die <literal>Session</literal> verwerfen. Bestimmte Methoden "
+"von <literal>Session</literal> werden die Session <emphasis>nicht</emphasis> "
+"in konsistentem Zustand lassen. Keine von Hibernate gemeldete Ausnahme kann "
+"als wiederherstellbar betrachtet werden. Vergewissern Sie sich, dass die "
+"<literal>Session</literal> durch Aufruf von <literal>close()</literal> in "
+"einem <literal>finally</literal> Block geschlossen wird."
+
+#. Tag: para
+#, fuzzy, 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. "
+"It was not in older versions of Hibernate. In our opinion, we should not "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e., in higher layers) and "
+"either an error message is presented to the application user or some other "
+"appropriate action is taken. Note that Hibernate might also throw other "
+"unchecked exceptions that are not a <literal>HibernateException</literal>. "
+"These are not recoverable and appropriate action should be taken."
+msgstr ""
+"Bei der <literal>HibernateException</literal>, die die meisten Fehler "
+"abdeckt, die innerhalb einer Persistenzschicht Hibernates vorkommen können, "
+"handelt es sich um eine ungeprüfte Ausnahme (in älteren Versionen von "
+"Hibernate war sie das nicht). Unserer Ansicht nach sollte der "
+"Anwendungsentwickler nicht gezwungen sein, eine nicht wiederherstellbare "
+"Ausnahme in einer tiefen Schicht abzufangen. In den meisten Systemen werden "
+"ungeprüfte und schwere Ausnahmefehler in einem der ersten Rahmen des "
+"Methodenaufrufstapels bearbeitet (d.h. in höheren Schichten) und eine "
+"Fehlernachricht wird dem Anwendungsbenutzer gemeldet (oder eine andere "
+"passende Vorgehensweise wird unternommen). Bitte beachten Sie, dass "
+"Hibernate auch andere ungeprüfte Ausnahmen melden kann, bei denen es sich "
+"nicht um <literal>HibernateException</literal> handelt. Auch diese sind "
+"nicht wiederherstellbar, und es sollten die entsprechenden Maßnahmen "
+"ergriffen werden."
+
+#. Tag: para
+#, fuzzy, 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 ""
+"Hibernate wrappt <literal>SQLException</literal>s, die während der "
+"Interaktion mit der Datenbank gemeldet werden in eine "
+"<literal>JDBCException</literal>. Hibernate wird auch versuchen, die "
+"Ausnahme in eine sinnvollere Subklasse von <literal>JDBCException</literal> "
+"zu konvertieren. Die zu Grunde liegende <literal>SQLException</literal> ist "
+"mittels <literal>JDBCException.getCause()</literal> immer verfügbar. "
+"Hibernate konvertiert die <literal>SQLException</literal> in eine "
+"entsprechende <literal>JDBCException</literal>-Subklasse, indem es den der "
+"<literal>SessionFactory</literal> zugehörigen "
+"<literal>SQLExceptionConverter</literal> verwendet. In der "
+"Standardeinstellung ist der <literal>SQLExceptionConverter</literal> durch "
+"den konfigurierten Dialekt definiert, es ist jedoch auch möglich, eine "
+"anwenderdefinierte Implementierung anzuschließen (siehe Javadocs zu "
+"<literal>SQLExceptionConverterFactory</literal>-Klasse für Einzelheiten). "
+"Die Standard <literal>JDBCException</literal>-Untertypen sind:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal>: indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal> - zeigt einen Fehler mit der zu "
+"Grunde liegenden JDBC-Kommunikation an."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal>: indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal> - zeigt ein grammatisches oder "
+"syntaktisches Problem mit der herausgegebenen SQL an."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal>: indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal> - zeigt eine Form von "
+"Verletzung der Integritätsbedingung an."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal>: indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal> - zeigt einen Fehler bei der "
+"Ermittlung der für den angefragten Vorgang erforderlichen Sperrebene (sog. "
+"\"Lock Level\") an."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal>: a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal> - eine generische Ausnahme, die "
+"unter keine der anderen Kategorien fällt."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "Transaktions-Timeout"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An important feature provided by a managed environment like EJB, that is "
+"never provided for non-managed code, is transaction timeout. Transaction "
+"timeouts ensure that no misbehaving transaction can indefinitely tie up "
+"resources while returning no response to the user. Outside a managed (JTA) "
+"environment, Hibernate cannot fully provide this functionality. However, "
+"Hibernate can at least control data access operations, ensuring that "
+"database level deadlocks and queries with huge result sets are limited by a "
+"defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functionality is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"Ein sehr wichtiges Feature, das durch eine gemanagte Umgebung wie EJB "
+"geliefert wird und das für nicht-gemanagten Code nicht verfügbar ist, ist "
+"der Transaktions-Timeout. Transaktions-Timeouts stellen sicher, dass eine "
+"nicht ordnungsgemäß laufende Transaktion nicht endlos Ressources vergeuden "
+"kann, während der Benutzer auf Antwort wartet. Außerhalb einer gemanagten "
+"(JTA) Umgebung, kann Hibernate diese Funktionalität nicht in vollem Umfang "
+"gewährleisten. Jedoch kann Hibernate zumindest Datenzugriffsvorgänge steuern "
+"und sicherstellen, dass Deadlocks auf Datenbankebene und Anfragen mit sehr "
+"großen Ergebnissätzen durch einen definierten Timeout eingeschränkt werden. "
+"In einer gemanagten Umgebung kann Hibernate den Transaktions-Timeout an JTA "
+"übertragen. Diese Funktionalität wird durch das Hibernate "
+"<literal>Transaction</literal>-Objekt abstrahiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>setTimeout()</literal> cannot be called in a CMT bean, where "
+"transaction timeouts must be defined declaratively."
+msgstr ""
+"Beachten Sie, dass <literal>setTimeout()</literal> nicht in einem CMT-Bean "
+"aufgerufen werden kann, in dem Transaktions-Timeouts deklarativ definiert "
+"sein müssen."
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "Optimistische Nebenläufigkeitskontrolle"
+
+#. Tag: para
+#, fuzzy, 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 three possible approaches to "
+"writing application code that uses optimistic concurrency. The use cases we "
+"discuss are in the context of long conversations, but version checking also "
+"has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+"Die einzige, mit hoher Nebenläufigkeit und hoher Skalierbarkeit konsistente "
+"Vorgehensweise ist die optimistische Nebenläufigkeitskontrolle mit "
+"Versionierung. Die Versionsprüfung verwendet Versionsnummern oder "
+"Zeitstempel (sog. \"Timestamps\"), um widersprüchliche Aktualisierungen "
+"aufzuspüren (und um verlorenen Aktualisierungen vorzubeugen). Hibernate "
+"bietet drei mögliche Vorgehensweisen für das Schreiben eines "
+"Anwendungscodes, der optimistische Nebenläufigkeit verwendet. Die von uns "
+"dargestellten Anwendungsfälle sind für den Kontext langer Konversationen, "
+"jedoch bietet die Versionsprüfung auch den Vorteil bei einzelnen "
+"Datenbanktransaktionen verlorenen Aktualisierungen vorzubeugen."
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "Kontrolle der Anwendungsversion"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. The application is forced to carry out its own version "
+"checking to ensure conversation transaction isolation. This approach is the "
+"least efficient in terms of database access. It is the approach most similar "
+"to entity EJBs."
+msgstr ""
+"Bei einer Implementierung ohne große Hilfe von Hibernate erfolgt jede "
+"Interaktion mit der Datenbank in einer neuen <literal>Session</literal>, und "
+"es ist die Verantwortung des Entwicklers alle persistenten Instanzen aus der "
+"Datenbank erneut zu laden ehe diese verändert werden. Durch diese "
+"Vorgehensweise wird die Anwendung dazu gezwungen, ihre eigene "
+"Versionsprüfung durchzuführen, um die Transaktionsisolation der Konversation "
+"sicherzustellen. Im Hinblick auf Datenbankzugriff ist diese Herangehensweise "
+"die am wenigsten effiziente, ähnelt jedoch am meisten den Entity-EJBs."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>&lt;"
+"version&gt;</literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"Die <literal>version</literal>-Property wird unter Verwendung von "
+"<literal>&lt;version&gt;</literal> gemappt, und Hibernate wird diese während "
+"des Räumens automatisch inkrementieren, falls die Entity aufgrund eines "
+"Zugriffs als \"dirty\" erkannt wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you are operating in a low-data-concurrency environment, and do not "
+"require version checking, you can use this approach and skip the version "
+"check. In this case, <emphasis>last commit wins</emphasis> is the default "
+"strategy for long conversations. Be aware 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 ""
+"Falls Sie jedoch in einer Umgebung mit geringer Daten-Nebenläufigkeit "
+"arbeiten und keine Versionsprüfung benötigen, so können Sie diese "
+"Vorgehensweise verwenden und die Versionsprüfung einfach überspringen. In "
+"diesem Fall <emphasis>gilt die letzte Festschreibung</emphasis>, und dies "
+"ist die Standadrd-Strategie für lange Konversationen. Seien Sie sich der "
+"Tatsache bewusst, dass dies die Benutzer der Anwendung verwirren wird, da es "
+"zu verlorenen Aktualisierungen ohne Fehlermeldungen oder der Möglichkeit des "
+"Mischens widersprüchlicher Änderungen kommen kann."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Manual version checking is only feasible in 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 an extended <literal>Session</"
+"literal> or detached instances as the design paradigm."
+msgstr ""
+"Die manuelle Versionsprüfung ist nur unter sehr trivialen Umständen machbar "
+"und bei den meisten Anwendungen nicht brauchbar. Oft müssen nicht nur "
+"einzelne Instanzen, sondern vollständige Diagramme geänderter Objekte "
+"überprüft werden. Hibernate bietet eine automatische Versionsprüfung mittels "
+"entweder einer erweiterten <literal>Session</literal> oder abgesetzter "
+"Instanzen als Entwurfsmuster."
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "Erweiterte Session und automatische Versionierung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"that are used for the whole conversation are known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It is up to "
+"the developer to catch and handle this exception. Common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data."
+msgstr ""
+"Eine einzelne <literal>Session</literal>-Instanz und deren persistente "
+"Instanzen werden für die gesamte Konversation verwendet, was als "
+"<emphasis>Session-per-Konversation</emphasis> (sog. \"Session-per-"
+"Conversation\") bekannt ist. Hibernate prüft zum Zeitpunkt der Räumung die "
+"Versionen der Instanz und meldet eine Ausnahme wenn nebenläufige "
+"Modifikationen aufgespürt werden. Dem Entwickler bleibt das Auffinden und "
+"Bearbeiten dieser Ausnahme überlassen (gängige Optionen sind die Möglichkeit "
+"des Benutzers, Veränderungen zu mischen oder die Business-Konversation mit "
+"nicht veralteten Daten erneut zu starten)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application does not version "
+"check or reattach detached instances, nor does it have to reload instances "
+"in every database transaction."
+msgstr ""
+"Die <literal>Session</literal> wird von einer zu Grunde liegenden JDBC-"
+"Verbindung gelöst, wenn Sie auf Benutzerinteraktion wartet. Hinsichtlich des "
+"Datenbankzugriffs ist diese Vorgehensweise die effizienteste. Die Anwendung "
+"muss sich weder um Versionsprüfung oder um die Wiederanbindung abgesetzter "
+"Instanzen, noch um das erneute Laden von Instanzen in jeder "
+"Datenbanktransaktion kümmern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>foo</literal> object knows which <literal>Session</literal> it "
+"was loaded in. Beginning a new database transaction on an old session "
+"obtains a new connection and resumes the session. Committing a database "
+"transaction disconnects a session from the JDBC connection and returns the "
+"connection to the pool. After reconnection, to force a version check on data "
+"you are not updating, you can call <literal>Session.lock()</literal> with "
+"<literal>LockMode.READ</literal> on any objects that might have been updated "
+"by another transaction. You do not need to lock any data that you "
+"<emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode."
+"MANUAL</literal> on an extended <literal>Session</literal>, so that only the "
+"last database transaction cycle is allowed to actually persist all "
+"modifications made in this conversation. Only this last database transaction "
+"will include the <literal>flush()</literal> operation, and then "
+"<literal>close()</literal> the session to end the conversation."
+msgstr ""
+"Das <literal>foo</literal>-Objekt weiß nach wie vor in welcher "
+"<literal>Session</literal> es geladen wurde. Beim Start einer neuen "
+"Datenbanktransaktion an einer alten Session wird eine neue Verbindung "
+"aufgebaut und die Session fortgesetzt. Das Festschreiben einer "
+"Datenbanktransaktion löst die Verbindung einer Session von der JDBC-"
+"Verbindung und sendet die Verbindung zurück an den Pool. Nach der erneuten "
+"Verbindung können Sie eine Versionsprüfung an nicht zu aktualisierenden "
+"Daten vornehmen, indem Sie <literal>Session.lock()</literal> mit "
+"<literal>LockMode.READ</literal> an sämtlichen Objekten aufrufen, die durch "
+"eine andere Transaktion hätten aktualisiert werden können. Sie müssen keine "
+"Daten sperren, die aktualisiert <emphasis>werden</emphasis>. Normalerweise "
+"würden Sie <literal>FlushMode.NEVER</literal> an einer erweiterten "
+"<literal>Session</literal> einstellen, damit nur der letzte Zyklus der "
+"Datenbanktransaktion sämtliche in der Konversation vorgenommene "
+"Modifikationen persistieren kann. Daher würde nur die letzte "
+"Datenbanktransaktion den <literal>flush()</literal>-Vorgang beinhalten und "
+"würde auch durch Schließen der Session mittels <literal>close()</literal> "
+"die Konversation beenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time (for example, an <literal>HttpSession</"
+"literal> should be kept as small as possible). As the <literal>Session</"
+"literal> is also the first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. Use a "
+"<literal>Session</literal> only for a single conversation as it will soon "
+"have stale data."
+msgstr ""
+"Dieses Muster ist problematisch, wenn die <literal>Session</literal> zu groß "
+"ist, um während der Benutzer \"Think Time\" gespeichert zu werden; eine "
+"<literal>HttpSession</literal> etwa sollte so klein wie möglich gehalten "
+"werden. Da die <literal>Session</literal> auch der (obligatorische) "
+"Cachespeicher der ersten Ebene ist und sämtliche geladenen Objekte enthält, "
+"kann diese Strategie wahrscheinlich nur für ein paar Anfragen/Antworten-"
+"Zyklen verwendet werden. Sie sollten eine <literal>Session</literal> nur für "
+"eine einzelne Konversation verwenden, da diese recht bald veraltete Daten "
+"enthält."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Earlier versions of Hibernate required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect."
+msgstr ""
+"(Beachten Sie, dass frühere Versionen von Hibernate die explizite "
+"Verbindungsunterbrechung und erneute Verbindung einer <literal>Session</"
+"literal> erforderten. Diese Methoden wurden verworfen, da das Starten und "
+"Beenden einer Transaktion diesselbe Wirkung hat)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Keep the disconnected <literal>Session</literal> close to the persistence "
+"layer. Use an EJB stateful session bean to hold the <literal>Session</"
+"literal> in a three-tier environment. Do not transfer it to the web layer, "
+"or even serialize it to a separate tier, to store it in the "
+"<literal>HttpSession</literal>."
+msgstr ""
+"Sie sollten außerdem darauf achten, dass die unterbrochene <literal>Session</"
+"literal> nahe der Persistenschicht verbleibt. Mit anderen Worten, verwenden "
+"Sie ein EJB-\"Stateful-Session-Bean\", um die <literal>Session</literal> in "
+"einer Three-Tier-Umgebung zu halten und diese nicht in die Webschicht zu "
+"transferieren (oder sogar zu einem separaten Tier zu serialisieren) und in "
+"der <literal>HttpSession</literal> zu speichern."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki "
+"for examples."
+msgstr ""
+"Das erweiterte Session-Muster oder <emphasis>Session-per-Konversation</"
+"emphasis> ist schwieriger mit automatischem Kontextmanagement der aktuellen "
+"Session zu implementieren. Sie müssen Ihre eigene Implementierung des "
+"<literal>CurrentSessionContext</literal> dafür bereitstellen, Beispiele "
+"finden Sie im Hibernate Wiki."
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "Abgesetzte Objekte und automatische Versionierung"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. 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 <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"Jede Interaktion mit dem persistenten Speicher geschieht in einer neuen "
+"<literal>Session</literal>. Allerdings werden dieselben persistenten "
+"Instanzen für jede Interaktion mit der Datenbank wiederverwendet. Die "
+"Anwendung manipuliert den Status der abgesetzten Instanzen, die ursprünglich "
+"in einer anderen <literal>Session</literal> geladen wurden und fügt diese "
+"mittels <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()"
+"</literal> oder <literal>Session.merge()</literal> erneut hinzu."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occurred."
+msgstr ""
+"Auch hier prüft Hibernate die Versionen der Instanz während der Räumung und "
+"meldet eine Ausnahme, wenn widersprüchlich Aktualisierungen erfolgt sind."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also call <literal>lock()</literal> instead of <literal>update()</"
+"literal>, and use <literal>LockMode.READ</literal> (performing a version "
+"check and bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"Sie können auch <literal>lock()</literal> statt <literal>update()</literal> "
+"aufrufen und <literal>LockMode.READ</literal> verwenden (unter Umgehung "
+"aller Caches eine Versionsprüfung durchführend) falls Sie sicher sind, dass "
+"keine Änderungen am Objekt vorgenommen wurden."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "Anpassung der automatischen Versionierung "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"Sie können Hibernates automatische Versionserhöhung für bestimmte Properties "
+"und Collections deaktivieren, indem Sie das <literal>optimistic-lock</"
+"literal>-Mapping-Attribut auf <literal>false</literal> setzen. Hibernate "
+"wird dann selbst bei einem Zugriff auf die Property die Versionsnummer nicht "
+"mehr erhöhen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Legacy database schemas are often static and cannot be modified. Or, other "
+"applications might access the same database and will not know how to handle "
+"version numbers or even timestamps. In both cases, versioning cannot rely on "
+"a particular column in a table. To force a version check with a comparison "
+"of the state of all fields in a row but without a version or timestamp "
+"property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal>&lt;class&gt;</literal> mapping. This conceptually only works if "
+"Hibernate can compare the old and the new state (i.e., if you use a single "
+"long <literal>Session</literal> and not session-per-request-with-detached-"
+"objects)."
+msgstr ""
+"Datenbankschemas von Stammdaten sind oftmals statisch und können nicht "
+"verändert werden. Oder andere Anwendungen könnten auf dieselbe Datenbank "
+"zugreifen und nicht wissen wie mit Versionsnummern und Zeitstempeln "
+"umzugehen ist. In beiden Fällen kann sich die Versionierung nicht auf eine "
+"bestimmte Tabellenspalte stützen. Um eine Versionsprüfung ohne Mapping der "
+"Versions- oder Zeitstempel-Property zu erzwingen und einen Statusvergleich "
+"sämtlicher Felder einer Reihe zu erhalten, stellen Sie <literal>optimistic-"
+"lock=\"all\"</literal> im <literal>&lt;class&gt;</literal>-Mapping ein. "
+"Bitte beachten Sie, dass dies nur funktioniert, wenn Hibernate den alten und "
+"neuen Status vergleichen kann, d.h. wenn Sie eine einzelne, lange "
+"<literal>Session</literal> und nicht Session-pro-Anfrage-mit-abgesetzten-"
+"Objekten (\"session-per-request-with-detached-objects\") verwenden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Concurrent modification can be permitted in instances where the changes that "
+"have been made do not overlap. If you set <literal>optimistic-lock=\"dirty"
+"\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate "
+"will only compare dirty fields during flush."
+msgstr ""
+"Manchmal kann eine gleichzeitige Modifikation gestattet werden, so lange die "
+"vorgenommenen Änderungen sich nicht überschneiden. Wenn Sie "
+"<literal>optimistic-lock=\"dirty\"</literal> beim Mappen der <literal>&lt;"
+"class&gt;</literal> einstellen, so wird Hibernate zum Zeitpunkt der Räumung "
+"nur Felder vergleichen, auf die zugegriffen wurde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with a full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement, with an appropriate <literal>WHERE</literal> clause, per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate may execute unnecessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did occur "
+"before updating the row."
+msgstr ""
+"In beiden Fällen, also mit erklärten Versions-/Zeitstempelspalten oder mit "
+"\"full/dirty\"-Feldvergleich, verwendet Hibernate eine einzelne "
+"<literal>UPDATE</literal>-Anweisung (mit entsprechender <literal>WHERE</"
+"literal>-Klausel) pro Entity, die die Versionsprüfung ausführen und die "
+"Informationen aktualisieren soll. Falls Sie transitive Persistenz anwenden, "
+"um die Wiederanbindung an assoziierte Entities weiterzugeben, ist es "
+"möglich, dass Hibernate unnötige Aktualisierungen durchführt. In der Regel "
+"ist das kein Problem, aber <emphasis>\"On-Update\"</emphasis>-Trigger in der "
+"Datenbank könnten ausgeführt werden, selbst wenn keine Änderungen an den "
+"abgesetzten Instanzen vorgenommen wurden. Sie können dieses Verhalten "
+"anpassen, indem Sie <literal>select-before-update=\"true\"</literal> im "
+"<literal>&lt;class&gt;</literal>-Mapping einstellen, so dass Hibernate "
+"<literal>SELECT</literal> für die Instanz einsetzen muss, damit "
+"sichergestellt wird, dass tatsächlich Änderungen vorgenommen wurden ehe die "
+"Reihe aktualisiert wird."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Pessimistic locking"
+msgstr "Pessimistisches Sperren"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is not intended that users spend much time worrying about locking "
+"strategies. It is usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may wish to obtain exclusive pessimistic locks or re-obtain "
+"locks at the start of a new transaction."
+msgstr ""
+"Der Benutzer sollte sich nicht viele Gedanken um Sperrstrategien machen "
+"müssen. In der Regel reicht es aus, eine Isolationsebene für die JDBC-"
+"Verbindungen zu bestimmen und dann der Datenbank die restliche Arbeit zu "
+"überlassen. Erfahrene Benutzer möchten manchmal exklusive pessimistische "
+"Sperren haben oder Sperren zu Beginn einer neuen Transaktion erneut erhalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database; it never "
+"lock objects in memory."
+msgstr ""
+"Hibernate wird stets den Sperrmechanismus der Datenbank verwenden und "
+"niemals Objekte im Speicher sperren!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"Die <literal>LockMode</literal>-Klasse definiert die unterschiedlichen "
+"Sperrebenen, die Hibernate erlangen kann. Eine Sperre wird durch die "
+"folgenden Mechanismen erlangt:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal> wird automatisch erlangt, wenn Hibernate "
+"eine Reihe aktualisiert oder einfügt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal> wird durch explizite Benutzeranfrage "
+"mittels Verwendung von <literal>SELECT ... FOR UPDATE</literal> bei diese "
+"Syntax unterstützenden Datenbanken erhalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> wird durch explizite "
+"Benutzeranfrage mittels Verwendung von <literal>SELECT ... FOR UPDATE "
+"NOWAIT</literal> in Oracle erhalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. It can be "
+"re-acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal> erfolgt automatisch, wenn Hibernate Daten "
+"unter \"Repeatable Read\" oder \"Serializable\" Isolationsebene liest. Kann "
+"durch explizite Benutzeranfrage erneut erhalten werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal> repräsentiert das Fehlen einer Sperre. Alle "
+"Objekte wechseln am Ende einer <literal>Transaction</literal> in diesen "
+"Sperrmodus. Objekte, die durch Aufruf von <literal>update()</literal> oder "
+"<literal>saveOrUpdate()</literal> der Session zugeordnet werden, starten "
+"ebenfalls in diesem Sperrmodus."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"explicit user request\" is expressed in one of the following ways:"
+msgstr ""
+"Die \"explizite Benutzeranfrage\" wird auf eine der folgenden Arten "
+"ausgedrückt:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"Ein Aufruf an <literal>Session.load()</literal>, der einen "
+"<literal>LockMode</literal> bestimmt."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "Ein Aufruf an <literal>Session.lock()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "Ein Aufruf an <literal>Query.setLockMode()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"Falls <literal>Session.load()</literal> mit <literal>UPGRADE</literal> oder "
+"<literal>UPGRADE_NOWAIT</literal> aufgerufen wird und das angefragte Objekt "
+"bis jetzt noch nicht durch die Session geladen wurde, so wird das Objekt "
+"unter Verwendung von <literal>SELECT ... FOR UPDATE</literal> geladen. Falls "
+"<literal>load()</literal> für ein bereits mit weniger restriktiver Sperre "
+"geladenes Objekt als das angefragte aufgerufen wird, so ruft Hibernate "
+"<literal>lock()</literal> für das Objekt auf."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used."
+msgstr ""
+"<literal>Session.lock()</literal> führt eine Versionsnummernprüfung durch, "
+"falls der spezifizierte Sperrmodus <literal>READ</literal>, "
+"<literal>UPGRADE</literal> oder <literal>UPGRADE_NOWAIT</literal> lautet. "
+"(Im Fall von  <literal>UPGRADE</literal> oder <literal>UPGRADE_NOWAIT</"
+"literal> wird <literal>SELECT ... FOR UPDATE</literal> verwendet)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the requested lock mode is not supported by the database, Hibernate uses "
+"an appropriate alternate mode instead of throwing an exception. This ensures "
+"that applications are portable."
+msgstr ""
+"Falls die Datenbank den gewünschten Sperrmodus nicht unterstützt, verwendet "
+"Hibernate einen entsprechenden Alternativmodus (statt eine Ausnahme zu "
+"melden). Dadurch wird gewährleistet, dass Anwendungen übertragbar sind."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Connection release modes"
+msgstr "Die Modi der Verbindungsfreigabe"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the legacies of Hibernate 2.x JDBC connection management meant that a "
+"<literal>Session</literal> would obtain a connection when it was first "
+"required and then maintain that connection until the session was closed. "
+"Hibernate 3.x introduced the notion of connection release modes that would "
+"instruct a session how to handle its JDBC connections. The following "
+"discussion is pertinent only to connections provided through a configured "
+"<literal>ConnectionProvider</literal>. User-supplied connections are outside "
+"the breadth of this discussion. The different release modes are identified "
+"by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</"
+"literal>:"
+msgstr ""
+"Das Legacy (2.x) Verhalten von Hibernate hinsichtlich der Verwaltung von "
+"JDBC-Verbindungen war, dass eine <literal>Session</literal> eine Verbindung "
+"dann erhalten würde, wenn diese das erste Mal gebraucht wurde und diese "
+"Verbindung dann bis zur Schließung der Session gehalten wurde. Mit Hibernate "
+"3.x wurde der Begriff von Verbindungsfreigabe-Modi eingeführt, durch die "
+"einer Session mitgeteilt wird, wie ihre JDBC-Verbindungen zu handhaben sind. "
+"Bitte beachten Sie, dass die folgende Erörterung sich nur auf Verbindungen "
+"bezieht, die mittels <literal>ConnectionProvider</literal> konfiguriert "
+"sind; durch den Benutzer bereitgestellte Verbindungen liegen außerhalb der "
+"hier erläuterten Thematik. Die unterschiedlichen Freigabe-Modi werden durch "
+"die aufgezählten Werte von <literal>org.hibernate.ConnectionReleaseMode</"
+"literal> identifiziert:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal>: is the legacy behavior described above. The "
+"Hibernate session obtains a connection when it first needs to perform some "
+"JDBC access and maintains that connection until the session is closed."
+msgstr ""
+"<literal>ON_CLOSE</literal> - ist im Wesentlichen das oben beschriebene "
+"Legacy-Verhalten. Die Hibernate Session erhält eine Verbindung, wenn sie "
+"erstmals einen JDBC-Zugriff durchführen muss und hält diese Verbindung bis "
+"zur Schließung der Session."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal>: releases connections after a "
+"<literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal> - teilt mit, dass Verbindungen nach "
+"Beendigung einer <literal>org.hibernate.Transaction</literal> freigegeben "
+"werden sollen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): "
+"releases connections after every statement execution. This aggressive "
+"releasing is skipped if that statement leaves open resources associated with "
+"the given session. Currently the only situation where this occurs is through "
+"the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (auch als \"aggressive release\" oder "
+"aggressive Freigabe bekannt) - teilt mit, dass Verbindungen nach Ausführung "
+"jeder einzelnen Anweisung freigegeben werden sollen. Diese Art der "
+"aggressiven Freigabe wird übersprungen, wenn die Anweisung offene Ressourcen "
+"zurücklässt, die mit der gegebenen Session assoziiert werden; momentan ist "
+"der einzige Fall, bei dem dies eintritt, mittels Verwendung von <literal>org."
+"hibernate.ScrollableResults</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values "
+"are as follows:"
+msgstr ""
+"Der Konfigurationsparameter <literal>hibernate.connection.release_mode</"
+"literal> bestimmt, welcher Freigabemodus verwendet werden soll. Folgende "
+"Werte sind möglich:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>auto</literal> (the default): this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this "
+"default behavior as failures due to the value of this setting tend to "
+"indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (Standard) - diese Auswahl delegiert zum "
+"Freigabemodus der durch die <literal>org.hibernate.transaction."
+"TransactionFactory.getDefaultReleaseMode()</literal>-Methode erhalten wird. "
+"Für JTATransactionFactory erhält man ConnectionReleaseMode.AFTER_STATEMENT; "
+"für JDBCTransactionFactory, erhält man ConnectionReleaseMode."
+"AFTER_TRANSACTION. Es ist nur in seltenen Fällen sinnvoll, dieses "
+"Standardverhalten zu ändern, da Fehler aufgrund des Wertes dieser "
+"Einstellung in der Regel Bugs und/oder ungültige Annahmen im Benutzercode "
+"anzeigen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This "
+"setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+"<literal>on_close</literal> - setzt ConnectionReleaseMode.ON_CLOSE. Diese "
+"Einstellung wird zur rückwärtigen Kompatibilität verwendet, wird jedoch "
+"nicht empfohlen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>after_transaction</literal>: uses ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode, connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal> - setzt ConnectionReleaseMode."
+"AFTER_TRANSACTION. Diese Einstellung sollte nicht in JTA-Umgebungen "
+"verwendet werden. Beachten Sie auch, dass bei ConnectionReleaseMode."
+"AFTER_TRANSACTION, für eine als im Auto-Festschreibungsmodus befindlich "
+"angesehene Session Verbindungen freigegeben werden als ob der Freigabemodus "
+"AFTER_STATEMENT lauten würde."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>after_statement</literal>: uses ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time you make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter if we re-establish the same connection."
+msgstr ""
+"<literal>after_statement</literal> - setzt die Verwendung von "
+"ConnectionReleaseMode.AFTER_STATEMENT. Außerdem wird der konfigurierte "
+"<literal>ConnectionProvider</literal> abgefragt, um zu sehen ob diese "
+"Einstellung unterstützt wird (<literal>supportsAggressiveRelease()</"
+"literal>). Falls nicht, wird der Freigabemodus auf ConnectionReleaseMode."
+"AFTER_TRANSACTION zurückgesetzt. Diese Einstellung ist nur in Umgebungen "
+"sicher, in denen bei jedem Aufruf an den <literal>ConnectionProvider."
+"getConnection()</literal> auf dieselbe zu Grunde liegende JDBC-Verbindung "
+"zurückgegriffen werden kann oder in Auto-Festschreibungsumgebungen, bei "
+"denen es irrelevant ist, ob wir dieselbe Verbindung wieder erhalten."
+
+#~ msgid "foo==bar"
+#~ msgstr "foo==bar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ...\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ..."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+#~ "();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion!=foo.getVersion ) throw new StaleObjectStateException();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,3147 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Intended for new users, this chapter provides an step-by-step introduction "
+"to Hibernate, starting with a simple application using an in-memory "
+"database. The tutorial is based on an earlier tutorial developed by Michael "
+"Gloegl. All code is contained in the <filename>tutorials/web</filename> "
+"directory of the project source."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial expects the user have knowledge of both Java and SQL. If you "
+"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
+"good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The distribution contains another example application under the "
+"<filename>tutorial/eg</filename> project source directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "Teil 1 - Die erste Hibernate Anwendung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For this example, we will set up a small database application that can store "
+"events we want to attend and information about the host(s) of these events."
+msgstr ""
+"Nehmen wir etwa an, wir bräuchten eine kleine Datenbank-Anwendung zur "
+"Speicherung von Veranstaltungen, an denen wir teilnehmen wollen sowie "
+"Informationen zu deren Organisatoren."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although you can use whatever database you feel comfortable using, we will "
+"use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java "
+"database) to avoid describing installation/setup of any particular database "
+"servers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first thing we need to do is to set up the development environment. We "
+"will be using the \"standard layout\" advocated by alot of build tools such "
+"as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has "
+"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
+"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
+"ulink>. As this tutorial is to be a web application, we will be creating and "
+"making use of <filename>src/main/java</filename>, <filename>src/main/"
+"resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will be using Maven in this tutorial, taking advantage of its transitive "
+"dependency management capabilities as well as the ability of many IDEs to "
+"automatically set up a project for us based on the maven descriptor."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not a requirement to use Maven. If you wish to use something else to "
+"build this tutoial (such as Ant), the layout will remain the same. The only "
+"change is that you will need to manually account for all the needed "
+"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> providing transitive dependency management you would "
+"still use the dependencies mentioned below. Otherwise, you'd need to grab "
+"<emphasis>all</emphasis> dependencies, both explicit and transitive, and add "
+"them to the project's classpath. If working from the Hibernate distribution "
+"bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts "
+"in the <filename>lib/required</filename> directory and all files from either "
+"the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/"
+"javassist</filename> directory; additionally you will need both the servlet-"
+"api jar and one of the slf4j logging backends."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "Die erste Klasse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, we create a class that represents the event we want to store in the "
+"database; it is a simple JavaBean class with some properties:"
+msgstr ""
+"Anschließend erstellen wir eine Klasse, die die Veranstaltung repräsentiert, "
+"die in der Datenbank gespeichert werden soll."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class uses standard JavaBean naming conventions for property getter and "
+"setter methods, as well as private visibility for the fields. Although this "
+"is the recommended design, it is not required. Hibernate can also access "
+"fields directly, the benefit of accessor methods is robustness for "
+"refactoring."
+msgstr ""
+"Sie sehen, dass diese Klasse standardmäßige JavaBean Namenskonventionen für "
+"Getter- und Setter-Methoden der Property sowie eigene Sichtbarkeit für die "
+"Felder verwendet. Dieses ist der empfohlene - nicht aber der vorgeschriebene "
+"- Entwurf. Hibernate kann auch direkt auf Felder zugreifen, wobei der "
+"Vorteil dieser Zugriffsmethoden in der Stabilität bei der Steigerung der "
+"Bedienerfreundlichkeit liegt. Der \"No-Argument\"-Konstruktor (d.h. der "
+"Konstruktor ohne Parameter) wird benötigt, um ein Objekt dieser Klasse durch "
+"Reflexion zu instanziieren."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>id</literal> property holds a unique identifier value for a "
+"particular event. All persistent entity classes (there are less important "
+"dependent classes as well) will need such an identifier property if we want "
+"to use the full feature set of Hibernate. In fact, most applications, "
+"especially web applications, need to distinguish objects by identifier, so "
+"you should consider this a feature rather than a limitation. However, we "
+"usually do not manipulate the identity of an object, hence the setter method "
+"should be private. Only Hibernate will assign identifiers when an object is "
+"saved. Hibernate can access public, private, and protected accessor methods, "
+"as well as public, private and protected fields directly. The choice is up "
+"to you and you can match it to fit your application design."
+msgstr ""
+"Die <literal>id</literal>-Property enthält einen eindeutigen \"Identifier\"-"
+"Wert (Bezeichnerwert) für eine bestimmte Veranstaltung. Alle persistenten "
+"Entity-Klassen (es existieren außerdem weniger wichtige abhängige Klassen) "
+"werden eine solche Bezeichner-Property benötigen, falls Sie sämtliche "
+"Features von Hibernate verwenden möchten. Die meisten Applikationen (und "
+"insbesondere Webanwendungen) müssen Objekte mittels Bezeichner "
+"unterscheiden, daher sollten Sie dies eher als zusätzliches Feature und "
+"nicht als Einschränkung ansehen. Allerdings wird die Identität eines Objekts "
+"in der Regel nicht verändert, weswegen die \"Setter\"-Methode nicht "
+"öffentlich sein sollte. Ausschließlich Hibernate wird bei der Speicherung "
+"eines Objekts Bezeichner zuweisen. Sie sehen also, dass Hibernate "
+"öffentliche, nicht-öffentliche und geschützte Zugriffsmethoden aufrufen "
+"kann. Die Entscheidung liegt ganz bei Ihnen, und Sie können die Wahl Ihren "
+"persönlichen Bedürfnissen anpassen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The no-argument constructor is a requirement for all persistent classes; "
+"Hibernate has to create objects for you, using Java Reflection. The "
+"constructor can be private, however package or public visibility is required "
+"for runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"Der \"No-Argument\"-Konstruktor (d.h. der Konstruktor ohne Parameter) ist "
+"eine Voraussetzung für alle persistenten Klassen. Hibernate erstellt unter "
+"Verwendung von Java Reflection diese Objekte für Sie. Der Konstruktor kann "
+"nicht-öffentlich sein, jedoch werden bei der Proxy-Generierung zur Runtime "
+"Sichtbarkeit der Pakete sowie effizienter Datenabruf ohne Bytecode-"
+"Instrumentierung benötigt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</"
+"filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "Die Mapping-Datei"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate muss darüber informiert werden, wie Objekte der persistenten "
+"Klasse geladen und gespeichert werden sollen. Hier wird die \"Mapping\"-"
+"Datei von Hibernate benötigt. Diese Datei informiert Hibernate darüber, auf "
+"welche Tabelle in der Datenbank zugegriffen werden soll und welche Spalten "
+"dieser Tabelle verwendet werden sollen."
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "Die Grundstruktur einer Mapping-Datei sieht wie folgt aus:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate DTD is sophisticated. You can use it for auto-completion of XML "
+"mapping elements and attributes in your editor or IDE. Opening up the DTD "
+"file in your text editor is the easiest way to get an overview of all "
+"elements and attributes, and to view the defaults, as well as some comments. "
+"Hibernate will not load the DTD file from the web, but first look it up from "
+"the classpath of the application. The DTD file is included in "
+"<filename>hibernate-core.jar</filename> (it is also included in the "
+"<filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+"Bitte beachten Sie, dass Hibernate DTD technisch sehr ausgefeilt ist. Sie "
+"können es für Auto-Vervollständigung von XML-Mapping-Elementen und "
+"Attributen in Ihrem Editor oder IDE verwenden. Sie sollte die DTD-Datei in "
+"Ihrem Text-Editor öffnen - es ist die bequemste Art einen Überblick über "
+"alle Elemente und Attribute zu bekommen und die Standardeinstellungen sowie "
+"einige Kommentare zu sehen. Bitte beachten Sie, dass Hibernate die DTD-Datei "
+"nicht aus dem Web lädt, sondern sie vom Klassenpfad der Anwendung aufsucht. "
+"Die DTD-Datei ist im <literal>hibernate3.jar</literal> sowie im <literal>src/"
+"</literal>-Verzeichnis der Hibernate-Distribution enthalten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is, of course, not optional."
+msgstr ""
+"In zukünftigen Beispielen werden wir die DTD-Deklaration weglassen, um den "
+"Code zu verkürzen. Natürlich ist dies nicht optional."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need a mapping to a table in the SQL database:"
+msgstr ""
+"Zwischen den beiden <literal>hibernate-mapping</literal>-Tags fügen Sie ein "
+"<literal>class</literal>-Element ein. Alle persistenten Entity-Klassen "
+"(wieder kann es später zu abhängigen Klassen kommen, die keine Entities der "
+"ersten Klasse sind) benötigen ein solches Mapping zu einer Tabelle in der "
+"SQL-Datenbank:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"So far we have told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>. Each "
+"instance is now represented by a row in that table. Now we can continue by "
+"mapping the unique identifier property to the tables primary key. As we do "
+"not want to care about handling this identifier, we configure Hibernate's "
+"identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+"Mit den bisherigen Schritten haben wir Hibernate darüber informiert, wie ein "
+"Objekt der Klasse <literal>Event</literal> in die Tabelle <literal>EVENTS</"
+"literal> persistiert und geladen werden soll, wobei jede Instanz durch eine "
+"Reihe in dieser Tabelle repräsentiert wird. Wir fahren nun mit einem Mapping "
+"der eindeutigen Identifier-Property zum primären Kernbegriff (\"Primary Key"
+"\") der Tabelle fort. Damit wir uns in Zukunft nicht weiter um diesen "
+"Identifier kümmern müssen, konfigurieren wir außerdem die Identifier-"
+"Generierungsstrategie von Hibernate für eine Ersatzspalte des primären "
+"Kernbegriffs:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifier "
+"property. The <literal>name=\"id\"</literal> mapping attribute declares the "
+"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
+"</literal> and <literal>setId()</literal> methods to access the property. "
+"The column attribute tells Hibernate which column of the <literal>EVENTS</"
+"literal> table holds the primary key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The nested <literal>generator</literal> element specifies the identifier "
+"generation strategy (aka how are identifier values generated?). In this case "
+"we choose <literal>native</literal>, which offers a level of portability "
+"depending on the configured database dialect. Hibernate supports database "
+"generated, globally unique, as well as application assigned, identifiers. "
+"Identifier value generation is also one of Hibernate's many extension points "
+"and you can plugin in your own strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>native</literal> is no longer consider the best strategy in terms "
+"of portability. for further discussion, see <xref linkend=\"portability-idgen"
+"\" />"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lastly, we need to tell Hibernate about the remaining entity class "
+"properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+"Zuletzt nehmen wir Vereinbarungen für die persistenten Properties der Klasse "
+"in die Mapping-Datei auf. In der Standardeinstellung werden keine Properties "
+"der Klasse als persistent angesehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similar to the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. In this case, Hibernate will search for "
+"<literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle"
+"()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+"Genau wie das <literal>id</literal>-Element informiert auch das "
+"<literal>name</literal>-Attribut des <literal>property</literal>-Elements "
+"Hibernate darüber, welche Getter- und Setter-Methoden verwendet werden "
+"sollen. In diesem Fall wird Hibernate also nach <literal>getDate()/setDate()"
+"</literal> sowie <literal>getTitle()/setTitle()</literal> suchen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> does "
+"not? Without the <literal>column</literal> attribute, Hibernate by default "
+"uses the property name as the column name. This works for <literal>title</"
+"literal>, however, <literal>date</literal> is a reserved keyword in most "
+"databases so you will need to map it to a different name."
+msgstr ""
+"Warum aber enthält das <literal>date</literal> Property-Mapping "
+"das<literal>column</literal>-Attribut, <literal>title</literal> jedoch "
+"nicht? Ohne das <literal>column</literal>-Attribut verwendet Hibernate "
+"standardmäßig den Namen der Property als Spaltennamen. Dies funktioniert gut "
+"für <literal>title</literal>. Allerdings ist <literal>date</literal> in den "
+"meisten Datenbanken ein reservierter Schlüsselbegriff, so dass es besser zu "
+"einem anderen Namen gemappt werden sollte."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>title</literal> mapping also lacks a <literal>type</literal> "
+"attribute. The types declared and used in the mapping files are not Java "
+"data types; they are not SQL database types either. These types are called "
+"<emphasis>Hibernate mapping types</emphasis>, converters which can translate "
+"from Java to SQL data types and vice versa. Again, Hibernate will try to "
+"determine the correct conversion and mapping type itself if the "
+"<literal>type</literal> attribute is not present in the mapping. In some "
+"cases this automatic detection using Reflection on the Java class might not "
+"have the default you expect or need. This is the case with the "
+"<literal>date</literal> property. Hibernate cannot know if the property, "
+"which is of <literal>java.util.Date</literal>, should map to a SQL "
+"<literal>date</literal>, <literal>timestamp</literal>, or <literal>time</"
+"literal> column. Full date and time information is preserved by mapping the "
+"property with a <literal>timestamp</literal> converter."
+msgstr ""
+"Ebenfalls interessant ist die Tatsache, dass das <literal>title</literal>-"
+"Mapping ebenfalls über kein <literal>type</literal>-Attribut verfügt. Die "
+"von uns deklarierten und in den Mapping-Dateien verwendeten Typen sind "
+"nicht, wie man vielleicht erwarten würde, Java-Datentypen. Es handelt sich "
+"auch nicht um SQL-Datenbank-Typen. Diese Typen sind so genannte <emphasis>"
+"\"Hibernate Mapping-Typen\"</emphasis>, Konverter, die von Java in SQL-"
+"Datentypen und umgekehrt übersetzen können. Auch hier wird Hibernate selbst "
+"versuchen die Datenkonvertierung zu bestimmen, falls das <literal>type</"
+"literal>-Attribut im Mapping nicht vorhanden ist. In einigen Fällen hat "
+"diese automatische Erkennung (unter Verwendung von Reflection auf der Java-"
+"Klasse) möglicherweise nicht den \"Default\"-Wert, den Sie erwarten oder "
+"benötigen. Dies ist bei der <literal>date</literal>-Property der Fall. "
+"Hibernate weiß nicht, ob die Property (die von <literal>java.util.Date</"
+"literal> ist) zu einer SQL <literal>date</literal>, einer "
+"<literal>timestamp</literal> oder einer <literal>time</literal>-Spalte "
+"mappen sollte. Vollständige Informationen zu Datum und Zeit werden durch das "
+"Mapping der Property mit einem <literal>timestamp</literal>-Konverter "
+"verwahrt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes this mapping type determination using reflection when the "
+"mapping files are processed. This can take time and resources, so if startup "
+"performance is important you should consider explicitly defining the type to "
+"use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this mapping file as <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Die Konfiguration von Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this point, you should have the persistent class and its mapping file in "
+"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
+"run in \"server mode\""
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will utilize the Maven exec plugin to launch the HSQLDB server by "
+"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
+"it start up and bind to a TCP/IP socket; this is where our application will "
+"connect later. If you want to start with a fresh database during this "
+"tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</"
+"filename> directory, and start HSQLDB again."
+msgstr ""
+"Erstellen Sie ein Verzeichnis mit dem Namen <literal>data</literal> im "
+"Stammverzeichnis des Entwicklungsverzeichnisses - hier wird HSQL DB seine "
+"Datendateien speichern. Starten Sie die Datenbank, indem Sie <literal>java -"
+"classpath ../lib/hsqldb.jar org.hsqldb.Server</literal> in diesem "
+"Datenverzeichnis ausführen. Sie sehen, wie sie hochfährt und auf ein TCP/IP-"
+"Socket anspricht, an dem sich die Anwendung später verbindet. Falls Sie "
+"während dieser Anleitung mit einer frischen Datenbank starten wollen, "
+"schließen Sie HSQL DB (drücken Sie <literal>CTRL + C</literal> im Fenster), "
+"löschen Sie alle Dateien im <literal>data/</literal>-Verzeichnis und starten "
+"Sie HSQL DB erneut."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will be connecting to the database on behalf of your application, "
+"so it needs to know how to obtain connections. For this tutorial we will be "
+"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate comes with support for two third-"
+"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. However, we will be using the Hibernate built-in "
+"connection pool for this tutorial."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The built-in Hibernate connection pool is in no way intended for production "
+"use. It lacks several features found on any decent connection pool."
+msgstr "Hash-Tabelle (nicht für den Produktionsgebrauch vorgesehen)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</"
+"literal> file, or even complete programmatic setup. Most users prefer the "
+"XML configuration file:"
+msgstr ""
+"Für die Konfiguration von Hibernate können eine einfache <literal>hibernate."
+"properties</literal>-Datei, eine etwas differenziertere <literal>hibernate."
+"cfg.xml</literal>-Datei oder sogar ein kompletter programmorientierter "
+"Aufbau verwendet werden. Die meisten Benutzer bevorzugen die XML-"
+"Konfigurationsdatei:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory "
+"is a global factory responsible for a particular database. If you have "
+"several databases, for easier startup you should use several <literal>&lt;"
+"session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+"Bitte beachten Sie, dass diese XML-Konfiguration eine andere DTD "
+"(Dokumenttyp-Definition) verwendet. Wir konfigurieren Hibernates "
+"<literal>SessionFactory</literal> - eine allgemeingültige und für eine "
+"bestimmte Datenbank verantwortliche Factory. Falls Sie mehrere Datenbanken "
+"besitzen, verwenden Sie mehrere <literal>&lt;session-factory&gt;</literal> "
+"Konfigurationen, üblicherweise in mehreren Konfigurationsdateien (für die "
+"einfachere Inbetriebnahme)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases, Hibernate is able to properly determine which dialect to use. "
+"See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's automatic session management for persistence contexts is "
+"particularly useful in this context. The <literal>hbm2ddl.auto</literal> "
+"option turns on automatic generation of database schemas directly into the "
+"database. This can also be turned off by removing the configuration option, "
+"or redirected to a file with the help of the <literal>SchemaExport</literal> "
+"Ant task. Finally, add the mapping file(s) for persistent classes to the "
+"configuration."
+msgstr ""
+"Die ersten vier <literal>property</literal>-Elemente enthalten die nötige "
+"Konfiguration für die JDBC-Verbindung. Das Dialekt <literal>property</"
+"literal>-Element legt die bestimmte SQL-Variante fest, die Hibernate "
+"generiert. Hibernates automatisches Session-Management für Persistenz-"
+"Kontexte wird sich hier als hilfreich erweisen. Die <literal>hbm2ddl.auto</"
+"literal>-Option schaltet die automatische Generierung von Datenbankschemas "
+"ein - direkt in die Datenbank. Dies lässt sich natürlich auch ausschalten "
+"(durch Entfernen der config-Option) oder mit Hilfe der "
+"<literal>SchemaExport</literal> Ant-Aufgabe an eine Datei umleiten. Zuletzt "
+"werden die Mapping-Datei(en) für persistente Klassen der Konfiguration "
+"hinzugefügt."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>hibernate.cfg.xml</filename> into the "
+"<filename>src/main/resources</filename> directory."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Building with Maven"
+msgstr "\"Builden\" mit Ant"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now build the tutorial with Maven. You will need to have Maven "
+"installed; it is available from the <ulink url=\"http://maven.apache.org/"
+"download.html\">Maven download page</ulink>. Maven will read the <filename>/"
+"pom.xml</filename> file we created earlier and know how to perform some "
+"basic project tasks. First, lets run the <literal>compile</literal> goal to "
+"make sure we can compile everything so far:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "Inbetriebnahme und Helfer"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is time to load and store some <literal>Event</literal> objects, but "
+"first you have to complete the setup with some infrastructure code. You have "
+"to startup Hibernate by building a global <interfacename>org.hibernate."
+"SessionFactory</interfacename> object and storing it somewhere for easy "
+"access in application code. A <interfacename>org.hibernate.SessionFactory</"
+"interfacename> is used to obtain <interfacename>org.hibernate.Session</"
+"interfacename> instances. A <interfacename>org.hibernate.Session</"
+"interfacename> represents a single-threaded unit of work. The "
+"<interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe "
+"global object that is instantiated once."
+msgstr ""
+"Als nächstes werden einige <literal>Event</literal>-Objekte geladen und "
+"gespeichert, jedoch muss zuerst die Konfiguration mit einigen Infrastruktur-"
+"Codes (sog. \"Infrastructure Codes\") vervollständigt werden. Wir müssen "
+"Hibernate starten. Die Inbetriebnahme beinhaltet ein allgemeingültiges "
+"<literal>SessionFactory</literal>-Objekt, das an einer Stelle gespeichert "
+"wird, auf die im Applikationscode leicht zugegriffen werden kann. Eine "
+"<literal>SessionFactory</literal> kann neue <literal>Session</literal>s "
+"öffnen. Eine <literal>Session</literal> repräsentiert eine aus einem Thread "
+"bestehende Arbeitseinheit, eine <literal>SessionFactory</literal> ist ein "
+"threadsicheres, allgemeingültiges Objekt, das einmal instanziiert ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will create a <literal>HibernateUtil</literal> helper class that takes "
+"care of startup and makes accessing the <interfacename>org.hibernate."
+"SessionFactory</interfacename> more convenient."
+msgstr ""
+"Wir erstellen eine <literal>HibernateUtil</literal>-Helferklasse, die den "
+"Startup erledigt und einen bequemen Zugriff auf eine "
+"<literal>SessionFactory</literal> ermöglicht. Werfen wir einen Blick auf die "
+"Implementierung:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class not only produces the global <interfacename>org.hibernate."
+"SessionFactory</interfacename> reference in its static initializer; it also "
+"hides the fact that it uses a static singleton. We might just as well have "
+"looked up the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"reference from JNDI in an application server or any other location for that "
+"matter."
+msgstr ""
+"Diese Klasse produziert nicht nur die allgemeingültige "
+"<literal>SessionFactory</literal> in ihrem statischen Initialisierer (sog. "
+"\"Initializer\" - wird beim Laden der Klasse von der JVM aufgerufen), "
+"sondern verwendet außerdem ein statisches Singleton. Es kann außerdem die "
+"<literal>SessionFactory</literal> von JNDI in einem Applikationsserver "
+"aufsuchen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you give the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"a name in your configuration, Hibernate will try to bind it to JNDI under "
+"that name after it has been built. Another, better option is to use a JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. Such advanced options are "
+"discussed later."
+msgstr ""
+"Wenn Sie <literal>SessionFactory</literal> einen Namen in Ihrer "
+"Konfigurationsdatei geben, so wird Hibernate versuchen, diese nach dem Build-"
+"Prozess an JNDI zu binden. Um diesen Code komplett zu meiden, könnten Sie "
+"JMX-Deployment verwenden und den JMX-fähigen Container instanziieren sowie "
+"<literal>HibernateService</literal> an JNDI binden. Diese erweiterten "
+"Optionen werden in der Referenz-Dokumentation von Hibernate näher erläutert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You now need to configure a logging system. Hibernate uses commons logging "
+"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
+"Log4j: copy <literal>log4j.properties</literal> from the Hibernate "
+"distribution in the <literal>etc/</literal> directory to your <literal>src</"
+"literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you "
+"prefer to have more verbose output than that provided in the example "
+"configuration, you can change the settings. By default, only the Hibernate "
+"startup message is shown on stdout."
+msgstr ""
+"Dies sollte problemlos kompilieren. Nun muss noch ein Protokollierungssystem "
+"(sog. \"Logging-System\") konfiguriert werden - Hibernate verwendet "
+"\"Commons-Logging\" und überlässt Ihnen die Wahl zwischen Log4j- und JDK 1.4-"
+"Logging. Die meisten Entwickler bevorzugen Log4j: Kopieren Sie "
+"<literal>log4j.properties</literal> aus der Hibernate-Distribution (es "
+"befindet sich im <literal>etc/</literal>-Verzeichnis) in Ihr <literal>src</"
+"literal>-Verzeichnis neben <literal>hibernate.cfg.xml</literal>. Schauen Sie "
+"sich die Beispielkonfiguration an, und ändern Sie die Einstellungen, wenn "
+"Sie eine aussagekräftigere Ausgabe wünschen. In der Standardeinstellung "
+"werden nur die Hibernate Startup-Nachrichten in stdout dargesellt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The tutorial infrastructure is complete and you are now ready to do some "
+"real work with Hibernate."
+msgstr ""
+"Die Infrastruktur der Anleitung ist nun vollständig - und wir können mit der "
+"Benutzung von Hibernate beginnen."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "Das Laden und Speichern von Objekten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We are now ready to start doing some real worjk with Hibernate. Let's start "
+"by writing an <literal>EventManager</literal> class with a <literal>main()</"
+"literal> method:"
+msgstr ""
+"Hibernate kann zum Laden und Speichern von Objekten verwendet werden. Eine "
+"<literal>EventManager</literal>-Klasse wird mit einer <literal>main()</"
+"literal>-Methode geschrieben:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</"
+"literal> object and handed it over to Hibernate. At that point, Hibernate "
+"takes care of the SQL and executes an <literal>INSERT</literal> on the "
+"database."
+msgstr ""
+"Erstellen Sie ein neues <literal>Event</literal>-Objekt, und übergeben Sie "
+"es Hibernate. Hibernate kümmert sich nun um SQL und führt <literal>INSERT</"
+"literal>s in der Datenbank aus. Werfen wir einen Blick auf den "
+"<literal>Session</literal>- und <literal>Transaction</literal>-Handling-Code "
+"ehe wir dies starten."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> is designed to represent a "
+"single unit of work (a single atmoic piece of work to be performed). For now "
+"we will keep things simple and assume a one-to-one granularity between a "
+"Hibernate <interface>org.hibernate.Session</interface> and a database "
+"transaction. To shield our code from the actual underlying transaction "
+"system we use the Hibernate <interfacename>org.hibernate.Transaction</"
+"interfacename> API. In this particular case we are using JDBC-based "
+"transactional semantics, but it could also run with JTA."
+msgstr ""
+"Bei einer <literal>Session</literal> handelt es sich um eine einzelne "
+"Arbeitseinheit. Im Augenblick wollen wir es einfach angehen und von einer "
+"\"One-to-One\"-Granularität zwischen einer Hibernate <literal>Session</"
+"literal> und einer Datenbanktransaktion ausgehen. Um den Code vom zu Grunde "
+"liegenden Transaktionssystem abzuschirmen (in diesem Falle schlichtes JDBC, "
+"allerdings könnte auch JTA eingesetzt werden) wird das <literal>Transaction</"
+"literal>-API (die Anwenderprogrammschnittstelle) verwendet, das in der "
+"Hibernate <literal>Session</literal> verfügbar ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like once you get hold of "
+"your <interfacename>org.hibernate.SessionFactory</interfacename>. The "
+"<literal>getCurrentSession()</literal> method always returns the \"current\" "
+"unit of work. Remember that we switched the configuration option for this "
+"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
+"xml</filename>? Due to that setting, the context of a current unit of work "
+"is bound to the current Java thread that executes the application."
+msgstr ""
+"Was genau macht <literal>sessionFactory.getCurrentSession()</literal>? "
+"Zunächst einmal können Sie es so oft Sie möchten aufrufen, wenn Sie Ihre "
+"<literal>SessionFactory</literal> haben (dank <literal>HibernateUtil</"
+"literal>). Die <literal>getCurrentSession()</literal>-Methode antwortet "
+"stets mit der \"aktuellen\" Arbeitseinheit. Wie Sie sich sicherlich "
+"erinnern, haben wir die Konfigurationsoption für diesen Mechanismus in der "
+"<literal>hibernate.cfg.xml</literal> auf \"Thread\" umgestellt. Daher wird "
+"die aktuelle Arbeitseinheit an den aktuellen Java-Thread gebunden, der die "
+"Anwendung ausführt. Es muss jedoch noch der Gültigkeitsbereich (sog. \"Scope"
+"\") berücksichtigt werden, d.h. wann eine Arbeitseinheit beginnt und wann "
+"sie endet."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers three methods of current session tracking. The \"thread\" "
+"based method is not intended for production use; it is merely useful for "
+"prototyping and tutorials such as this one. Current session tracking is "
+"discussed in more detail later on."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> begins when the first call to "
+"<literal>getCurrentSession()</literal> is made for the current thread. It is "
+"then bound by Hibernate to the current thread. When the transaction ends, "
+"either through commit or rollback, Hibernate automatically unbinds the "
+"<interface>org.hibernate.Session</interface> from the thread and closes it "
+"for you. If you call <literal>getCurrentSession()</literal> again, you get a "
+"new <interface>org.hibernate.Session</interface> and can start a new unit of "
+"work."
+msgstr ""
+"Eine <literal>Session</literal> beginnt, wenn sie erstmals gebraucht wird, "
+"wenn der erste Aufruf an <literal>getCurrentSession()</literal> erfolgt. Sie "
+"wird dann durch Hibernate an den aktuellen Thread gebunden. Wenn die "
+"Transaktion endet - sei es durch festschreiben oder zurücksetzen - löst "
+"Hibernate automatisch die <literal>Session</literal> vom Thread und schließt "
+"diese für Sie. Wenn Sie <literal>getCurrentSession()</literal> erneut "
+"aufrufen, so erhalten Sie eine neue <literal>Session</literal> und können "
+"mit einer neuen Arbeitseinheit beginnen. Dieses <emphasis>Thread-gebundene</"
+"emphasis> Programmiermodell ist die beliebteste Art der Benutzung von "
+"Hibernate, da es eine flexible Schichtung Ihres Codes erlaubt (der "
+"Transaktionsabgrenzungscode kann vom Datenzugriffscode getrennt werden; wir "
+"gehen darauf später in dieser Anleitung ein)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <interface>org."
+"hibernate.Session</interface> be used to execute one or several database "
+"operations? The above example uses one <interface>org.hibernate.Session</"
+"interface> for one operation. However this is pure coincidence; the example "
+"is just not complex enough to show any other approach. The scope of a "
+"Hibernate <interface>org.hibernate.Session</interface> is flexible but you "
+"should never design your application to use a new Hibernate <interface>org."
+"hibernate.Session</interface> for <emphasis>every</emphasis> database "
+"operation. Even though it is used in the following examples, consider "
+"<emphasis>session-per-operation</emphasis> an anti-pattern. A real web "
+"application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+"Sollte die Hibernate <literal>Session</literal> hinsichtlich des "
+"Gültigkeitsbereichs der Arbeitseinheit dazu verwendet werden, einen oder "
+"mehrere Datenbankvorgänge auszuführen? Das vorherige Beispiel verwendet eine "
+"<literal>Session</literal> für einen Vorgang. Das war Zufall, da das "
+"Beispiel einfach nicht komplex genug war, um eine andere Vorgehensweise "
+"darzustellen. Der Gültigkeitsbereich einer Hibernate <literal>Session</"
+"literal> ist flexibel, jedoch sollten Sie Ihre Anwendung nie so auslegen, "
+"dass eine neue Hibernate <literal>Session</literal> für <emphasis>jeden</"
+"emphasis> Datenbankvorgang verwendet wird. Selbst wenn Sie es in den "
+"nachfolgenden (einfachen) Beispielen einige Male sehen, so betrachten Sie "
+"<emphasis>Session-per-Operation</emphasis> als Negativmuster (sog. \"Anti-"
+"Pattern\"). Eine echte (Web)-Anwendung wird zu einem späteren Zeitpunkt noch "
+"gezeigt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"See <xref linkend=\"transactions\" /> for more information about transaction "
+"handling and demarcation. The previous example also skipped any error "
+"handling and rollback."
+msgstr ""
+"Auf <xref linkend=\"transactions\"/> finden Sie weitere Informationen zum "
+"Umgang mit Transaktionen und Abgrenzung (Demarkation). Auch Fehlerbehandlung "
+"und Zurücksetzen wurden im vorherigen Beispiel weggelassen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To run this, we will make use of the Maven exec plugin to call our class "
+"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
+"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You should see Hibernate starting up and, depending on your configuration, "
+"lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+"Nach der Kompilierung sollten Sie den Start von Hibernate sehen sowie - je "
+"nach der von Ihnen verwendeten Konfiguration - eine Menge an "
+"Protokollausgaben. Am Ende sehen Sie die folgende Zeile:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr ""
+"Ein Beispiel für die Ausführung einer HQL <literal>INSERT</literal>-"
+"Anweisung:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr ""
+"Als nächstes sollen auch die gespeicherten Veranstaltungen gelistet werden, "
+"daher fügen wir eine Option zur Hauptmethode hinzu:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr ""
+"Eine neue <literal>listEvents() method</literal> wird ebenfalls hinzugefügt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here, we are using a Hibernate Query Language (HQL) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+"Mittels HQL-Anfrage (\"Hibernate Query Language\") werden alle bestehenden "
+"<literal>Event</literal>-Objekte aus der Datenbank geladen. Hibernate "
+"generiert die entsprechende SQL (\"Structured Query Language\"), schickt sie "
+"an die Datenbank und füllt die <literal>Event</literal>-Objekte mit den "
+"Daten. Natürlich können mit HQL auch komplexere Anfragen erstellt werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we can call our new functionality, again using the Maven exec plugin: "
+"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
+"\" -Dexec.args=\"list\"</command>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "Teil 2 - Mapping-Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"So far we have mapped a single persistent entity class to a table in "
+"isolation. Let's expand on that a bit and add some class associations. We "
+"will add people to the application and store a list of events in which they "
+"participate."
+msgstr ""
+"Bis jetzt haben wir eine persistente Entity-Klasse zu einer Tabelle gemappt. "
+"Nachfolgend werden wir - darauf aufbauend - einige Klassen-Assoziationen "
+"hinzufügen. Zuerst fügen wir der Anwendung Personen sowie eine Liste von "
+"Veranstaltungen, an denen diese teilnehmen, hinzu."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "Das Mappen der Personenklasse"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "Der erste Teil der <literal>Person</literal>-Klasse ist einfach:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, create the new mapping file as <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr ""
+"Anschließend fügen Sie dann das neue Mapping der Konfiguration von Hibernate "
+"hinzu:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Create an association between these two entities. Persons can participate in "
+"events, and events have participants. The design questions you have to deal "
+"with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+"Als nächstes wird eine Assoziation zwischen diesen beiden Entities erstellt. "
+"Personen können an Veranstaltungen teilnehmen, und Veranstaltungen haben "
+"Teilnehmer. Die zu klärenden Frage des Aufbaus beinhaltet die der "
+"Richtungsabhängigkeit, Multiplizität und des Collection-Verhaltens."
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "Eine unidirektionale \"Set\"-basierte Assoziation"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By adding a collection of events to the <literal>Person</literal> class, you "
+"can easily navigate to the events for a particular person, without executing "
+"an explicit query - by calling <literal>Person#getEvents</literal>. Multi-"
+"valued associations are represented in Hibernate by one of the Java "
+"Collection Framework contracts; here we choose a <interfacename>java.util."
+"Set</interfacename> because the collection will not contain duplicate "
+"elements and the ordering is not relevant to our examples:"
+msgstr ""
+"Wir fügen der <literal>Person</literal>-Klasse eine Auswahl an "
+"Veranstaltungen hinzu. Auf diese Weise können Sie bequem zu den "
+"Veranstaltungen für eine bestimmte Person navigieren, ohne eine "
+"ausdrückliche Anfrage auszuführen - durch Aufruf von <literal>aPerson."
+"getEvents()</literal>. Wir verwenden eine Java-Collection, ein <literal>Set</"
+"literal>, weil die Collection keine doppelten Elemente enthält und die "
+"Reihenfolge für uns nicht von Bedeutung ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Before mapping this association, let's consider the other side. We could "
+"just keep this unidirectional or create another collection on the "
+"<literal>Event</literal>, if we wanted to be able to navigate it from both "
+"directions. This is not necessary, from a functional perspective. You can "
+"always execute an explicit query to retrieve the participants for a "
+"particular event. This is a design choice left to you, but what is clear "
+"from this discussion is the multiplicity of the association: \"many\" valued "
+"on both sides is called a <emphasis>many-to-many</emphasis> association. "
+"Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+"Ehe wir diese Assoziation mappen, müssen wir uns ein paar Gedanken machen. "
+"Natürlich könnten wir das Ganze unidirektional halten. Oder wir könnten eine "
+"andere Collection im <literal>Event</literal> erstellen, wenn wir "
+"bidirektional navigieren wollen, d.h. <literal>anEvent.getParticipants()</"
+"literal>. Von einer rein funktionalen Perspektive aus betrachtet ist das "
+"nicht notwendig.Sie könnten jederzeit eine ausdrückliche Anfrage ausführen, "
+"um die Teilnehmer an einer bestimmten Veranstaltung zu ermitteln. Die Wahl "
+"liegt hier ganz bei Ihnen. Was bei dieser Frage jedoch deutlich wird, ist "
+"die Multiplizität der Assoziation: Da auf beiden Seiten \"mehr\"wertig, "
+"nennen wir dies eine <emphasis>\"Many-to-Many\"</emphasis>-Assoziation. Wir "
+"verwenden daher Hibernates \"Many-to-Many\"-Mapping:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate supports a broad range of collection mappings, a <literal>set</"
+"literal> being most common. For a many-to-many association, or <emphasis>n:"
+"m</emphasis> entity relationship, an association table is required. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is decalred using the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person side, is defined with the <literal>key</literal> "
+"element, the column name for the event's side with the <literal>column</"
+"literal> attribute of the <literal>many-to-many</literal>. You also have to "
+"tell Hibernate the class of the objects in your collection (the class on the "
+"other side of the collection of references)."
+msgstr ""
+"Hibernate unterstützt alle Arten von Collection Mappings, mit <literal>&lt;"
+"set&gt;</literal> als dem gängisten. Für eine \"Many-to-Many\"-Assoziation "
+"(oder <emphasis>n:m</emphasis>-Entity-Beziehung), wird eine "
+"Assoziationstabelle benötigt. Jede Reihe dieser Tabelle repräsentiert eine "
+"Verbindung zwischen einer Person und einer Veranstaltung. Der Tabellenname "
+"ist mit dem <literal>table</literal>-Attribut des <literal>set</literal>-"
+"Elements konfiguriert. Der Identifier-Spaltenname in der Assoziation für die "
+"Personenseite ist mit dem <literal>&lt;key&gt;</literal>-Element definiert, "
+"der Spaltenname für die Veranstaltungsseite mit dem <literal>column</"
+"literal>-Attribut von <literal>&lt;many-to-many&gt;</literal>. Sie müssen "
+"Hibernate außerdem die Klasse der Objekte Ihrer Collection mitteilen "
+"(korrekt: die Klasse auf der anderen Seite der Verweis-Collection)."
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "Das Datenbankschema für dieses Mapping lautet daher:"
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "Das Bearbeiten der Assoziation"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now we will bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"Nun werden einige Personen und Veranstaltungen in einer neuen Methode im "
+"<literal>EventManager</literal> vereint:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. There is "
+"no explicit call to <literal>update()</literal> or <literal>save()</"
+"literal>; Hibernate automatically detects that the collection has been "
+"modified and needs to be updated. This is called <emphasis>automatic dirty "
+"checking</emphasis>. You can also try it by modifying the name or the date "
+"property of any of your objects. As long as they are in "
+"<emphasis>persistent</emphasis> state, that is, bound to a particular "
+"Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate "
+"monitors any changes and executes SQL in a write-behind fashion. The process "
+"of synchronizing the memory state with the database, usually only at the end "
+"of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the "
+"unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+"Nach dem Laden einer <literal>Person</literal> und eines <literal>Event</"
+"literal> (Veranstaltung), modifizieren Sie einfach die Collection mittels "
+"der regulären Collection-Methoden. Wie Sie sehen, existiert kein expliziter "
+"Aufruf für <literal>update()</literal> oder <literal>save()</literal>, "
+"Hibernate stellt automatisch fest, dass die Collection verändert wurde und "
+"aktualisiert werden muss. Dieser Vorgang ist unter der Bezeichnung <emphasis>"
+"\"Automatic Dirty Checking\"</emphasis> (d.h. eine automatische "
+"Modifizierungsprüfung) bekannt, und Sie können ihn auch ausprobieren, indem "
+"Sie die Property des Namens oder des Datums eines Ihrer Objekte ändern. So "
+"lange deren Status <emphasis>persistent</emphasis> ist, d.h. an eine "
+"bestimmte Hibernate <literal>Session</literal> gebunden ist (d.h. sie wurden "
+"gerade geladen oder in einer Arbeitseinheit gespeichert), überwacht "
+"Hibernate sämtliche Änderungen und führt SQL mittels Hinterher-Speichern "
+"(sog. \"write-behind\") aus. Der Vorgang der Synchronisation des "
+"Speicherstatus mit der Datenbank - in der Regel am Ende einer Arbeitseinheit "
+"- heißt <emphasis>Flushing</emphasis>. In unserem Code endet die "
+"Arbeitseinheit mit dem Festschreiben (oder Zurücksetzen) der "
+"Datenbanktransaktion, wie in der <literal>thread</literal>-"
+"Konfigurationsoption für die <literal>CurrentSessionContext</literal>-Klasse "
+"definiert."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can load person and event in different units of work. Or you can modify "
+"an object outside of a <interfacename>org.hibernate.Session</interfacename>, "
+"when it is not in persistent state (if it was persistent before, this state "
+"is called <emphasis>detached</emphasis>). You can even modify a collection "
+"when it is detached:"
+msgstr ""
+"Natürlich können Sie Person und Veranstaltung in verschiedenen "
+"Arbeitseinheiten laden oder ein Objekt außerhalb einer <literal>Session</"
+"literal> modifizieren, wenn es sich nicht in einem persistenten Status "
+"befindet (falls es zuvor persistent war, so nennen wir diesen Status "
+"<emphasis>\"detached\"</emphasis> d.h. abgesetzt). Sie können eine "
+"Collection sogar modifizieren, wenn diese abgesetzt ist:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again by binding it to a new unit of work, so any modifications you made to "
+"it while detached can be saved to the database. This includes any "
+"modifications (additions/deletions) you made to a collection of that entity "
+"object."
+msgstr ""
+"Der Aufruf <literal>update</literal> macht ein abgesetztes Objekt wieder "
+"persistent, man könnte auch sagen, dass es sich an eine neue Arbeitseinheit "
+"bindet. Alle von Ihnen in abgesetztem Zustand vorgenommenen Änderungen "
+"können in der Datenbank gespeichert werden. Dies beinhaltet auch jegliche "
+"Modifikationen (Hinzufügungen/Löschungen), die an der Collection dieses "
+"Entity-Objekts vorgenommen wurden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not much use in our example, but it is an important concept you can "
+"incorporate into your own application. Complete this exercise by adding a "
+"new action to the main method of the <literal>EventManager</literal> and "
+"call it from the command line. If you need the identifiers of a person and "
+"an event - the <literal>save()</literal> method returns it (you might have "
+"to modify some of the previous methods to return that identifier):"
+msgstr ""
+"Zwar hat das nicht viel mit unserer aktuellen Situation zu tun, aber es "
+"handelt sich dennoch um ein wichtiges Konzept, das Sie in Ihrer eigenen "
+"Anwendung ausführen können. Für den Moment vervollständigen Sie bitte diese "
+"Übung durch Hinzufügen einer neuen Aktion zur Hauptmethode des "
+"<literal>EventManager</literal>, und rufen Sie sie über die Befehlszeile "
+"auf. Falls Sie die Identifier einer Person oder einer Veranstaltung "
+"benötigen - die <literal>save()</literal>-Methode gibt diese wieder (es kann "
+"sein, dass Sie einige der vorherigen Methoden ändern müssen, damit der "
+"Identifier wiedergegeben wird):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is an example of an association between two equally important classes : "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <classname>java.lang.String</classname>. We "
+"call these classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"do not have their own identity, nor are they shared between entities. Two "
+"persons do not reference the same <literal>firstname</literal> object, even "
+"if they have the same first name. Value types cannot only be found in the "
+"JDK , but you can also write dependent classes yourself such as an "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal> class. In "
+"fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+"Dies war ein Beispiel für die Assoziation zweier gleich wichtiger Klassen, "
+"zweier Entities. Wie bereits erwähnt, existieren auch andere Klassen und "
+"Typen in einem typischen Modell, normalerweise \"weniger wichtige\". Einige "
+"sind Ihnen bereits bekannt, so etwa <literal>int</literal> oder ein "
+"<literal>String</literal>. Diese Klassen sind unter der Bezeichnung "
+"<emphasis>Werttypen</emphasis> (sog. \"value types\") bekannt und ihre "
+"Instanzen sind von einer bestimmten Entity <emphasis>abhängig</emphasis>. "
+"Instanzen dieser Typen haben keine eigene Identität und werden nicht von den "
+"Entities geteilt (zwei Personen verweisen nicht auf dasselbe "
+"<literal>firstname</literal>-Objekt, selbst wenn sie denselben Vornamen "
+"besitzen). Natürlich gibt es Werttypen nicht nur im JDK (genau genommen "
+"werden in einer Hibernate Anwendung alle JDK-Klassen als Werttypen "
+"angesehen), sondern Sie können abhängige Klassen auch selbst schreiben, wie "
+"z.B. <literal>Address</literal> oder <literal>MonetaryAmount</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"Sie können auch eine Collection von Werttypen entwerfen. Dies unterscheidet "
+"sich konzeptionell sehr von einer Collection von Referenzen zu anderen "
+"Entities, sieht aber in Java fast genauso aus."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "Collection von Werten"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Let's add a collection of email addresses to the <literal>Person</literal> "
+"entity. This will be represented as a <interfacename>java.util.Set</"
+"interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "Das Mapping dieses <literal>Set</literal>:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the use of the "
+"<literal>element</literal> part which tells Hibernate that the collection "
+"does not contain references to another entity, but is rather a collection "
+"whose elements are values types, here specifically of type <literal>string</"
+"literal>. The lowercase name tells you it is a Hibernate mapping type/"
+"converter. Again the <literal>table</literal> attribute of the <literal>set</"
+"literal> element determines the table name for the collection. The "
+"<literal>key</literal> element defines the foreign-key column name in the "
+"collection table. The <literal>column</literal> attribute in the "
+"<literal>element</literal> element defines the column name where the email "
+"address values will actually be stored."
+msgstr ""
+"Der Unterschied im Vergleich zu unserem früheren Mapping ist der "
+"<literal>element</literal>-Teil, der Hibernate mitteilt, dass die Collection "
+"keine Verweise zu einer anderen Entity enthält, sondern eine Collection von "
+"Elementen des <literal>String</literal>-Typs (die Schreibweise des Namens in "
+"Kleinbuchstaben zeigt an, dass es sich um einen Mapping-Typ/Converter von "
+"Hibernate handelt). Auch hier bestimmt das <literal>table</literal>-Attribut "
+"des <literal>set</literal>-Elements den Tabellennamen für die Collection. "
+"Das <literal>key</literal>-Element definiert den Spaltennamen des "
+"Fremdschlüssels in der Collection-Tabelle. Das <literal>column</literal>-"
+"Attribut im <literal>element</literal>-Element definiert den Spaltennamen in "
+"dem die <literal>String</literal>-Werte gespeichert werden."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is the updated schema:"
+msgstr "Werfen wir einen Blick auf das aktualisierte Schema:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key that uses both columns. This also implies that there cannot be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"Sie sehen, dass der Primärschlüssel der Collection-Tabelle ein "
+"zusammengesetzter Schlüssel (sog. \"composite key\") ist, der beide Spalten "
+"verwendet. Dies beinhaltet außerdem, dass keine doppelten E-Mail-Addressen "
+"pro Person existieren können, was genau die für ein Set benötigte Semantik "
+"in Java ist."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can now try to add elements to this collection, just like we did before "
+"by linking persons and events. It is the same code in Java:"
+msgstr ""
+"Sie können nun versuchen, Elemente zu dieser Collection hinzuzufügen oder "
+"dieser zu entnehmen, genau wie wir es zuvor bei der Verbindung von Personen "
+"und Veranstaltungen getan haben. In Java ist es derselbe Code:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This time we did not use a <emphasis>fetch</emphasis> query to initialize "
+"the collection. Monitor the SQL log and try to optimize this with an eager "
+"fetch."
+msgstr ""
+"Dieses Mal haben wir keine <emphasis>\"Fetch\"</emphasis>-Anfrage verwendet, "
+"um die Collection zu initialisieren. Der Aufruf an die \"Getter\"-Methode "
+"wird eine zusätzliche Auswahl auslösen, um sie zu initialisieren, damit ein "
+"Element hinzugefügt werden kann. Beobachten Sie das SQL-Protokoll und "
+"versuchen Sie es durch \"eager Fetching\" (d.h. durch zusammengefasstes "
+"Laden von Objekt und assoziierten Objekten mit Verbundoperationen) zu "
+"optimieren."
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "Bidirektionale Assoziationen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next you will map a bi-directional association. You will make the "
+"association between person and event work from both sides in Java. The "
+"database schema does not change, so you will still have many-to-many "
+"multiplicity."
+msgstr ""
+"Als nächstes mappen wir eine bidirektionale Assoziation, so dass die "
+"Assoziation zwischen zwischen Person und Veranstaltung in Java von beiden "
+"Seiten aus funktioniert.Das Datenbankschema verändert sich natürlich nicht, "
+"die \"Many-to-Many\"-Multiziplität bleibt weiterhin bestehen. Eine "
+"relationale Datenbank ist flexibler als eine Netzwerk-Programmiersprache und "
+"benötigt keine Navigationsrichtung - Daten können auf alle möglichen Arten "
+"eingesehen und aufgerufen werden."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A relational database is more flexible than a network programming language, "
+"in that it does not need a navigation direction; data can be viewed and "
+"retrieved in any possible way."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"class:"
+msgstr ""
+"Zuerst wird eine Collection von Teilnehmern der <literal>Event</literal> "
+"Veranstaltungsklasse hinzugefügt:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr ""
+"Nun mappen Sie auch diese Seite der Assoziation in <literal>Event.hbm.xml</"
+"literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These are normal <literal>set</literal> mappings in both mapping documents. "
+"Notice that the column names in <literal>key</literal> and <literal>many-to-"
+"many</literal> swap in both mapping documents. The most important addition "
+"here is the <literal>inverse=\"true\"</literal> attribute in the "
+"<literal>set</literal> element of the <literal>Event</literal>'s collection "
+"mapping."
+msgstr ""
+"Wie Sie sehen handelt es sich um normale <literal>set</literal> Mappings in "
+"beiden Mapping-Dokumenten. Beachten Sie, dass die Spaltennamen in "
+"<literal>key</literal> und <literal>many-to-many</literal> in den beiden "
+"Mapping-Dokumenten vertauscht sind. Die wichtigste Hinzufügung hier ist das "
+"<literal>inverse=\"true\"</literal>-Attribut im <literal>set</literal>-"
+"Element des Collection-Mappings des<literal>Event</literal>s."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side, the "
+"<literal>Person</literal> class, when it needs to find out information about "
+"the link between the two. This will be a lot easier to understand once you "
+"see how the bi-directional link between our two entities is created."
+msgstr ""
+"Dies teilt Hibernate mit, dass es die andere Seite - die <literal>Person</"
+"literal>-Klasse - bei der Suche nach der Verbindung der beiden verwenden "
+"soll. Nachdem gezeigt wurde, wie die bidirektionale Verbindung zwischen den "
+"beiden Entities erstellt wird, wird das noch verständlicher."
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "Die Bearbeitung bidirektionaler Verbindungen"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, keep in mind that Hibernate does not affect normal Java semantics. "
+"How did we create a link between a <literal>Person</literal> and an "
+"<literal>Event</literal> in the unidirectional example? You add an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. If you want to make this link bi-"
+"directional, you have to do the same on the other side by adding a "
+"<literal>Person</literal> reference to the collection in an <literal>Event</"
+"literal>. This process of \"setting the link on both sides\" is absolutely "
+"necessary with bi-directional links."
+msgstr ""
+"Zunächst sollten wir uns vergegenwärtigen, dass Hibernate keinen Einfluss "
+"auf die normale Java-Semantik hat. Erinnern wir uns, wie wir eine Verbindung "
+"zwischen einer <literal>Person</literal> und einem <literal>Event</literal> "
+"(Veranstaltung) in dem unidirektionalen Beispiel hergestellt haben: Wir "
+"haben der Collection von Veranstaltungsreferenzen einer Instanz von "
+"<literal>Person</literal> eine <literal>Event</literal>-Instanz zugefügt. "
+"Wenn wir diese Verbindung bidirektional machen wollen, so müssen wir "
+"dasselbe auf der anderen Seite tun - also eine <literal>Person</literal>-"
+"Referenz zur Collection in einem <literal>Event</literal> hinzufügen. Dieses "
+"\"Setzen der Verbindung auf beiden Seiten\" ist essentiell, und Sie sollten "
+"nie vergessen es zu tun."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many developers program defensively and create link management methods to "
+"correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+"Zahlreiche Entwickler programmieren defensiv und erstellen eine Management-"
+"Methoden Verbindung, um beide Seiten korrekt einzustellen, z.B. in "
+"<literal>Person</literal>:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The get and set methods for the collection are now protected. This allows "
+"classes in the same package and subclasses to still access the methods, but "
+"prevents everybody else from altering the collections directly. Repeat the "
+"steps for the collection on the other side."
+msgstr ""
+"Beachten Sie, dass die \"Get\" und \"Set\"-Methoden für die Collection nun "
+"geschützt sind - die Klassen desselben Pakets und Unterklassen können nach "
+"wie vor auf die Methoden zugreifen, aber (fast) niemand sonst kann direkt "
+"Eingriffe an der Collection vornehmen. Es empfiehlt sich, dasselbe mit der "
+"Collection auf der anderen Seite zu tun."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> mapping attribute? For you, and "
+"for Java, a bi-directional link is simply a matter of setting the references "
+"on both sides correctly. Hibernate, however, does not have enough "
+"information to correctly arrange SQL <literal>INSERT</literal> and "
+"<literal>UPDATE</literal> statements (to avoid constraint violations). "
+"Making one side of the association <literal>inverse</literal> tells "
+"Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. "
+"That is all that is necessary for Hibernate to resolve any issues that arise "
+"when transforming a directional navigation model to a SQL database schema. "
+"The rules are straightforward: all bi-directional associations need one side "
+"as <literal>inverse</literal>. In a one-to-many association it has to be the "
+"many-side, and in many-to-many association you can select either side."
+msgstr ""
+"Wie steht es um das <literal>inverse</literal>-Mapping-Attribut? Für Sie wie "
+"auch für Java ist eine bidirektionale Verbindung lediglich eine Sache des "
+"korrekten Setzens der Referenzen auf beiden Seiten. Hibernate hingegen "
+"verfügt nicht über genügend Informationen, um SQL <literal>INSERT</literal> "
+"und <literal>UPDATE</literal>-Anweisungen (um Coderegelverletzungen bei den "
+"Randbedingung - sog. \"Constraint Violations\" - zu vermeiden) ordnungsgemäß "
+"aufzubauen, und benötigt etwas Hilfe bei der korrekten Bearbeitung von "
+"bidirektionalen Assoziationen. Ist eine Seite der Assoziation "
+"<literal>inverse</literal> so wird sie von Hibernate ignoriert, da es diese "
+"als einen <emphasis>Spiegel</emphasis> (\"Mirror\") der anderen Seite "
+"ansieht. Das ist alles, was nötig ist, damit Hibernate alle Eventualitäten "
+"bei der Transformation eines direktionalen Navigationsmodells in ein SQL "
+"Datenbankschema erfolgreich bearbeitet. Die zu beachtenden Regeln sind "
+"unkompliziert: Alle bidirektionalen Assoziationen benötigen eine "
+"<literal>inverse</literal> Seite. In einer \"One-to-Many\"-Assoziation muss "
+"das die \"Many\"-Seite, in einer \"Many-to-Many\"-Assoziation eine der "
+"beiden Seiten sein."
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "Teil 3 - Die EventManager-Webanwendung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. You can now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Eine Hibernate Webanwendung verwendet <literal>Session</literal> und "
+"<literal>Transaction</literal> beinahe wie eine selbständige Applikation. "
+"Einige Muster sind jedoch hilfreich. Wir erstellen nun ein "
+"<literal>EventManagerServlet</literal>. Dieses Servlet kann alle in der "
+"Datenbank gespeicherten Veranstaltungen auflisten und bietet ein HTML-"
+"Formular, in das neue Veranstaltungen eingetragen werden können."
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "Das Schreiben des Grundservlets"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First we need create our basic processing servlet. Since our servlet only "
+"handles HTTP <literal>GET</literal> requests, we will only implement the "
+"<literal>doGet()</literal> method:"
+msgstr ""
+"Das Servlet bearbeitet nur HTTP <literal>GET</literal>-Anfragen, daher wird "
+"die <literal>doGet()</literal>-Methode implementiert:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The pattern applied here is called <emphasis>session-per-request</emphasis>. "
+"When a request hits the servlet, a new Hibernate <literal>Session</literal> "
+"is opened through the first call to <literal>getCurrentSession()</literal> "
+"on the <literal>SessionFactory</literal>. A database transaction is then "
+"started. All data access occurs inside a transaction irrespective of whether "
+"the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+"Das hier verwendete Muster heißt <emphasis>Session-per-Request</emphasis> "
+"(\"Session pro Anfrage\"). Wenn eine Anfrage beim Servlet eingeht, so wird "
+"eine neue Hibernate <literal>Session</literal> mit der ersten Aufruf an "
+"<literal>getCurrentSession()</literal> an der <literal>SessionFactory</"
+"literal> geöffnet. Anschließend wird eine Datenbanktransaktion gestartet "
+"&mdash; jeglicher Zugriff auf Daten muss innerhalb einer Transaktion "
+"stattfinden, unabhängig davon, ob Daten gelesen oder geschrieben werden (der "
+"Auto-Commit-Modus wird in Anwendungen nicht verwendet)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"Verwenden Sie <emphasis>keine</emphasis> neue Hibernate <literal>Session</"
+"literal> für jeden Datenbankvorgang. Verwenden Sie eine Hibernate "
+"<literal>Session</literal>, die die gesamte Anfrage umfasst. Verwenden Sie "
+"<literal>getCurrentSession()</literal>, damit diese automatisch an den "
+"aktuellen Java-Thread gebunden wird."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We will get to that part soon."
+msgstr ""
+"Als nächstes werden die möglichen Aktionen der Anfrage bearbeitet und die "
+"HTML-Antwort gerendert. Dieser Teil wird in Kürze behandelt."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering are complete. "
+"If any problems occurred during processing or rendering, an exception will "
+"be thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> pattern. Instead of the transaction "
+"demarcation code in every servlet, you could also write a servlet filter. "
+"See the Hibernate website and Wiki for more information about this pattern "
+"called <emphasis>Open Session in View</emphasis>. You will need it as soon "
+"as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"Die Arbeitseinheit endet schließlich, wenn Bearbeitung und Rendering "
+"abgeschlossen sind. Falls es während der Bearbeitung und des Rendering zu "
+"Problemen kommt, so wird eine Ausnahme gemeldet, und die "
+"Datenbanktransaktion wird wiederholt. Das<literal>session-per-request</"
+"literal>-Muster wird so vervollständigt. Statt des Demarkationscodes in "
+"jedem Servlet können Sie auch einen Servlet-Filter schreiben. Auf der "
+"Hibernate Webseite und Wiki finden Sie weitere Informationen zu diesem "
+"Muster mit dem Namen <emphasis>Open Session in View</emphasis>&mdash; "
+"(Ansicht der geöffneten Session) - Sie brauchen es, sobald Sie das Rendern "
+"Ihrer Ansicht in JSP in Erwägung ziehen, nicht in einem Servlet."
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "Bearbeitung und Rendering"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now you can implement the processing of the request and the rendering of the "
+"page."
+msgstr ""
+"Implementieren wir nun die Anfragenbearbeitung und das Rendern der Seite."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This coding style, with a mix of Java and HTML, would not scale in a more "
+"complex application&mdash;keep in mind that we are only illustrating basic "
+"Hibernate concepts in this tutorial. The code prints an HTML header and a "
+"footer. Inside this page, an HTML form for event entry and a list of all "
+"events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"Vorausgesetzt dieser Codierungsstil mit einer Mischung aus Java und HTML "
+"würde in einer komplexeren Anwendung nicht skalieren &mdash; vergessen Sie "
+"nicht, dass wir nur die grundlegenden Konzepte von Hibernate in dieser "
+"Anleitung erläutern. Der Code druckt eine HTML-Kopf- und Fußzeile. Innerhalb "
+"dieser Seite sind ein HTML-Formular für die Veranstaltungseingabe sowie eine "
+"Liste sämtlicher Veranstaltungen in der Datenbank gedruckt. Die erste "
+"Methode ist trivial und gibt nur HTML aus."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"Die <literal>listEvents()</literal> Methode verwendet die an den aktuellen "
+"Thread gebundene Hibernate <literal>Session</literal> bei der Ausführung "
+"einer Abfrage:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"Zuletzt wird die <literal>store</literal>-Vorgang zur "
+"<literal>createAndStoreEvent()</literal>-Methode gesendet, die ebenfalls die "
+"<literal>Session</literal> des aktuellen Threads verwendet:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The servlet is now complete. A request to the servlet will be processed in a "
+"single <literal>Session</literal> and <literal>Transaction</literal>. As "
+"earlier in the standalone application, Hibernate can automatically bind "
+"these objects to the current thread of execution. This gives you the freedom "
+"to layer your code and access the <literal>SessionFactory</literal> in any "
+"way you like. Usually you would use a more sophisticated design and move the "
+"data access code into data access objects (the DAO pattern). See the "
+"Hibernate Wiki for more examples."
+msgstr ""
+"Das Servlet ist jetzt komplett. Eine Anfrage beim Servlet wird in einer "
+"einzelnen <literal>Session</literal> und <literal>Transaction</literal> "
+"bearbeitet. Wie zuvor in der selbständigen Anwendung kann Hibernate diese "
+"Objekte automatisch an den aktuellen Ausführungsthread binden. Das gibt "
+"Ihnen die Freiheit, Ihren Code zu schichten und in beliebiger Weise auf die "
+"<literal>SessionFactory</literal> zuzugreifen. In der Regel würden Sie ein "
+"differenzierteres Design verwenden und den Datenzugriffscode in die "
+"Datenzugriffsobjekte (das DAO-Muster) verlegen. Auf Hibernate Wiki finden "
+"Sie weitere Beispiele."
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "Deployment und Test"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To deploy this application for testing we must create a Web ARchive (WAR). "
+"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
+"web.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To build and deploy call <literal>mvn package</literal> in your project "
+"directory and copy the <filename>hibernate-tutorial.war</filename> file into "
+"your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+"Um den <literal>ant war</literal>-Aufruf (\"call\") in Ihrem "
+"Projektverzeichnis zu bauen und auszuführen, kopieren Sie die "
+"<literal>hibernate-tutorial.war</literal>-Datei in Ihr Tomcat "
+"<literal>webapp</literal>-Verzeichnis. Falls Tomcat bei Ihnen nicht "
+"installiert ist, laden Sie es herunter, und folgen Sie den "
+"Installationsanweisungen. Sie müssen jedoch keine Konfigurationen von Tomcat "
+"ändern, um diese Anwendung auszuführen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not have Tomcat installed, download it from <ulink url=\"http://"
+"tomcat.apache.org/\" /> and follow the installation instructions. Our "
+"application requires no changes to the standard Tomcat configuration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
+msgstr ""
+"Wenn das Deployment erfolgt ist und Tomcat ausgeführt wird, greifen Sie "
+"mittels <literal>http://localhost:8080/hibernate-tutorial/eventmanager</"
+"literal> auf die Anwendung zu. Sehen Sie im Protokoll von Tomcat nach, ob "
+"Hibernate initialisiert wird, wenn die erste Anfrage bei Ihrem Servlet "
+"eingeht (das statische Initialisierungsprogramm in <literal>HibernateUtil</"
+"literal> wird aufgerufen), und prüfen Sie die detaillierte Ausgabe nach "
+"Ausnahmen."
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Zusammenfassung"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application. More tutorials are available from "
+"the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+"Diese Anleitung behandelt in Grundzügen die Erstellung einer einfachen "
+"selbständigen Hibernate-Applikation und einer kleinen Webanwendung."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "[...]\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "[...]\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"EVENT_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/"
+#~ ">\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"EVENT_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE"
+#~ "\"/&gt;\n"
+#~ "        &lt;property name=\"title\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <session-factory>\n"
+#~ "\n"
+#~ "        <!-- Database connection settings -->\n"
+#~ "        <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+#~ "property>\n"
+#~ "        <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+#~ "property>\n"
+#~ "        <property name=\"connection.username\">sa</property>\n"
+#~ "        <property name=\"connection.password\"></property>\n"
+#~ "\n"
+#~ "        <!-- JDBC connection pool (use the built-in) -->\n"
+#~ "        <property name=\"connection.pool_size\">1</property>\n"
+#~ "\n"
+#~ "        <!-- SQL dialect -->\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Enable Hibernate's automatic session context management -->\n"
+#~ "        <property name=\"current_session_context_class\">thread</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Disable the second-level cache  -->\n"
+#~ "        <property name=\"cache.provider_class\">org.hibernate.cache."
+#~ "NoCacheProvider</property>\n"
+#~ "\n"
+#~ "        <!-- Echo all executed SQL to stdout -->\n"
+#~ "        <property name=\"show_sql\">true</property>\n"
+#~ "\n"
+#~ "        <!-- Drop and re-create the database schema on startup -->\n"
+#~ "        <property name=\"hbm2ddl.auto\">update</property>\n"
+#~ "\n"
+#~ "        <mapping resource=\"org/hibernate/tutorial/domain/Event.hbm.xml\"/"
+#~ ">\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version='1.0' encoding='utf-8'?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "\n"
+#~ "    &lt;session-factory&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Database connection settings --&gt;\n"
+#~ "        &lt;property name=\"connection.driver_class\"&gt;org.hsqldb."
+#~ "jdbcDriver&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.url\"&gt;jdbc:hsqldb:hsql://"
+#~ "localhost&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.username\"&gt;sa&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.password\"&gt;&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- JDBC connection pool (use the built-in) --&gt;\n"
+#~ "        &lt;property name=\"connection.pool_size\"&gt;1&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- SQL dialect --&gt;\n"
+#~ "        &lt;property name=\"dialect\"&gt;org.hibernate.dialect."
+#~ "HSQLDialect&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Enable Hibernate's automatic session context management --"
+#~ "&gt;\n"
+#~ "        &lt;property name=\"current_session_context_class\"&gt;thread&lt;/"
+#~ "property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Disable the second-level cache  --&gt;\n"
+#~ "        &lt;property name=\"cache.provider_class\"&gt;org.hibernate.cache."
+#~ "NoCacheProvider&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Echo all executed SQL to stdout --&gt;\n"
+#~ "        &lt;property name=\"show_sql\"&gt;true&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Drop and re-create the database schema on startup --&gt;\n"
+#~ "        &lt;property name=\"hbm2ddl.auto\"&gt;create&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;mapping resource=\"events/Event.hbm.xml\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.util;\n"
+#~ "\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory = "
+#~ "buildSessionFactory();\n"
+#~ "\n"
+#~ "    private static SessionFactory buildSessionFactory() {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            return new Configuration().configure().buildSessionFactory"
+#~ "();\n"
+#~ "        }\n"
+#~ "        catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package util;\n"
+#~ "\n"
+#~ "import org.hibernate.*;\n"
+#~ "import org.hibernate.cfg.*;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory;\n"
+#~ "\n"
+#~ "    static {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            sessionFactory = new Configuration().configure()."
+#~ "buildSessionFactory();\n"
+#~ "        } catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial;\n"
+#~ "\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.*;\n"
+#~ "\n"
+#~ "import org.hibernate.tutorial.domain.Event;\n"
+#~ "import org.hibernate.tutorial.util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "import util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, "
+#~ "EVENT_ID) values (?, ?, ?)]]>"
+#~ msgstr ""
+#~ "[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values "
+#~ "(?, ?, ?)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "        else if (args[0].equals(\"list\")) {\n"
+#~ "            List events = mgr.listEvents();\n"
+#~ "            for (int i = 0; i < events.size(); i++) {\n"
+#~ "                Event theEvent = (Event) events.get(i);\n"
+#~ "                System.out.println(\n"
+#~ "                        \"Event: \" + theEvent.getTitle() + \" Time: \" + "
+#~ "theEvent.getDate()\n"
+#~ "                );\n"
+#~ "            }\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "if (args[0].equals(\"store\")) {\n"
+#~ "    mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "}\n"
+#~ "else if (args[0].equals(\"list\")) {\n"
+#~ "    List events = mgr.listEvents();\n"
+#~ "    for (int i = 0; i &lt; events.size(); i++) {\n"
+#~ "        Event theEvent = (Event) events.get(i);\n"
+#~ "        System.out.println(\"Event: \" + theEvent.getTitle() +\n"
+#~ "                           \" Time: \" + theEvent.getDate());\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private List listEvents() {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "        List result = session.createQuery(\"from Event\").list();\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "        return result;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private List listEvents() {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    List result = session.createQuery(\"from Event\").list();\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    return result;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"PERSON\">\n"
+#~ "        <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"age\"/>\n"
+#~ "        <property name=\"firstname\"/>\n"
+#~ "        <property name=\"lastname\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"age\"/&gt;\n"
+#~ "        &lt;property name=\"firstname\"/&gt;\n"
+#~ "        &lt;property name=\"lastname\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
+#~ "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
+#~ msgstr ""
+#~ "&lt;mapping resource=\"events/Event.hbm.xml\"/&gt;\n"
+#~ "&lt;mapping resource=\"events/Person.hbm.xml\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"age\"/>\n"
+#~ "    <property name=\"firstname\"/>\n"
+#~ "    <property name=\"lastname\"/>\n"
+#~ "\n"
+#~ "    <set name=\"events\" table=\"PERSON_EVENT\">\n"
+#~ "        <key column=\"PERSON_ID\"/>\n"
+#~ "        <many-to-many column=\"EVENT_ID\" class=\"Event\"/>\n"
+#~ "    </set>\n"
+#~ "\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"age\"/&gt;\n"
+#~ "    &lt;property name=\"firstname\"/&gt;\n"
+#~ "    &lt;property name=\"lastname\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;set name=\"events\" table=\"PERSON_EVENT\"&gt;\n"
+#~ "        &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"EVENT_ID\" class=\"events.Event\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "    _____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | <--> | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "        aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session\n"
+#~ "                .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "                .setParameter(\"pid\", personId)\n"
+#~ "                .uniqueResult(); // Eager fetch the collection so we can "
+#~ "use it detached\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "\n"
+#~ "        // End of first unit of work\n"
+#~ "\n"
+#~ "        aPerson.getEvents().add(anEvent); // aPerson (and its collection) "
+#~ "is detached\n"
+#~ "\n"
+#~ "        // Begin second unit of work\n"
+#~ "\n"
+#~ "        Session session2 = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session2.beginTransaction();\n"
+#~ "        session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "        session2.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session\n"
+#~ "            .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "            .setParameter(\"pid\", personId)\n"
+#~ "            .uniqueResult(); // Eager fetch the collection so we can use "
+#~ "it detached\n"
+#~ "\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    // End of first unit of work\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent); // aPerson (and its collection) is "
+#~ "detached\n"
+#~ "\n"
+#~ "    // Begin second unit of work\n"
+#~ "\n"
+#~ "    Session session2 = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session2.beginTransaction();\n"
+#~ "\n"
+#~ "    session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "    session2.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "            Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date"
+#~ "());\n"
+#~ "            Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "            mgr.addPersonToEvent(personId, eventId);\n"
+#~ "            System.out.println(\"Added person \" + personId + \" to event "
+#~ "\" + eventId);\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "    Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "    Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "    mgr.addPersonToEvent(personId, eventId);\n"
+#~ "    System.out.println(\"Added person \" + personId + \" to event \" + "
+#~ "eventId);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEmailAddresses() {\n"
+#~ "        return emailAddresses;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "        this.emailAddresses = emailAddresses;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "public Set getEmailAddresses() {\n"
+#~ "    return emailAddresses;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "    this.emailAddresses = emailAddresses;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR"
+#~ "\">\n"
+#~ "            <key column=\"PERSON_ID\"/>\n"
+#~ "            <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\"&gt;\n"
+#~ "    &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "    &lt;element type=\"string\" column=\"EMAIL_ADDR\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "  _____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | <--> | *EVENT_ID        |      |             |      |"
+#~ "___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  | <--> |  "
+#~ "*PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             "
+#~ "|      |___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  | "
+#~ "&lt;--&gt; |  *PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addEmailToPerson(Long personId, String "
+#~ "emailAddress) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        // adding to the emailAddress collection might trigger a lazy "
+#~ "load of the collection\n"
+#~ "        aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addEmailToPerson(Long personId, String emailAddress) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "\n"
+#~ "    // The getEmailAddresses() might trigger a lazy load of the "
+#~ "collection\n"
+#~ "    aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getParticipants() {\n"
+#~ "        return participants;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setParticipants(Set participants) {\n"
+#~ "        this.participants = participants;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "public Set getParticipants() {\n"
+#~ "    return participants;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setParticipants(Set participants) {\n"
+#~ "    this.participants = participants;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"participants\" table=\"PERSON_EVENT\" "
+#~ "inverse=\"true\">\n"
+#~ "            <key column=\"EVENT_ID\"/>\n"
+#~ "            <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "    &lt;key column=\"EVENT_ID\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"PERSON_ID\" class=\"events.Person\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    protected void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void addToEvent(Event event) {\n"
+#~ "        this.getEvents().add(event);\n"
+#~ "        event.getParticipants().add(this);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void removeFromEvent(Event event) {\n"
+#~ "        this.getEvents().remove(event);\n"
+#~ "        event.getParticipants().remove(this);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected Set getEvents() {\n"
+#~ "    return events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "protected void setEvents(Set events) {\n"
+#~ "    this.events = events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void addToEvent(Event event) {\n"
+#~ "    this.getEvents().add(event);\n"
+#~ "    event.getParticipants().add(this);\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void removeFromEvent(Event event) {\n"
+#~ "    this.getEvents().remove(event);\n"
+#~ "    event.getParticipants().remove(this);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.web;\n"
+#~ "\n"
+#~ "// Imports\n"
+#~ "\n"
+#~ "public class EventManagerServlet extends HttpServlet {\n"
+#~ "\n"
+#~ "    protected void doGet(\n"
+#~ "            HttpServletRequest request,\n"
+#~ "            HttpServletResponse response) throws ServletException, "
+#~ "IOException {\n"
+#~ "\n"
+#~ "        SimpleDateFormat dateFormatter = new SimpleDateFormat( \"dd.MM."
+#~ "yyyy\" );\n"
+#~ "\n"
+#~ "        try {\n"
+#~ "            // Begin unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "beginTransaction();\n"
+#~ "\n"
+#~ "            // Process request and render page...\n"
+#~ "\n"
+#~ "            // End unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().commit();\n"
+#~ "        }\n"
+#~ "        catch (Exception ex) {\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().rollback();\n"
+#~ "            if ( ServletException.class.isInstance( ex ) ) {\n"
+#~ "                throw ( ServletException ) ex;\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                throw new ServletException( ex );\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "protected void doGet(HttpServletRequest request,\n"
+#~ "                     HttpServletResponse response)\n"
+#~ "        throws ServletException, IOException {\n"
+#~ "\n"
+#~ "    SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy"
+#~ "\");\n"
+#~ "\n"
+#~ "    try {\n"
+#~ "        // Begin unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "        // Process request and render page...\n"
+#~ "\n"
+#~ "        // End unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().commit();\n"
+#~ "\n"
+#~ "    } catch (Exception ex) {\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().rollback();\n"
+#~ "        throw new ServletException(ex);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        // Write HTML header\n"
+#~ "        PrintWriter out = response.getWriter();\n"
+#~ "        out.println(\"<html><head><title>Event Manager</title></"
+#~ "head><body>\");\n"
+#~ "\n"
+#~ "        // Handle actions\n"
+#~ "        if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "            String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "            String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "            if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "                out.println(\"<b><i>Please enter event title and date.</"
+#~ "i></b>\");\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                createAndStoreEvent(eventTitle, dateFormatter.parse"
+#~ "(eventDate));\n"
+#~ "                out.println(\"<b><i>Added event.</i></b>\");\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        // Print page\n"
+#~ "       printEventForm(out);\n"
+#~ "       listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "       // Write HTML footer\n"
+#~ "       out.println(\"</body></html>\");\n"
+#~ "       out.flush();\n"
+#~ "       out.close();]]>"
+#~ msgstr ""
+#~ "// Write HTML header\n"
+#~ "PrintWriter out = response.getWriter();\n"
+#~ "out.println(\"&lt;html&gt;&lt;head&gt;&lt;title&gt;Event Manager&lt;/"
+#~ "title&gt;&lt;/head&gt;&lt;body&gt;\");\n"
+#~ "\n"
+#~ "// Handle actions\n"
+#~ "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "    String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "    String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "    if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Please enter event title and date."
+#~ "&lt;/i&gt;&lt;/b&gt;\");\n"
+#~ "    } else {\n"
+#~ "        createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Added event.&lt;/i&gt;&lt;/b&gt;"
+#~ "\");\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ "// Print page\n"
+#~ "printEventForm(out);\n"
+#~ "listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "// Write HTML footer\n"
+#~ "out.println(\"&lt;/body&gt;&lt;/html&gt;\");\n"
+#~ "out.flush();\n"
+#~ "out.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void printEventForm(PrintWriter out) {\n"
+#~ "        out.println(\"<h2>Add new event:</h2>\");\n"
+#~ "        out.println(\"<form>\");\n"
+#~ "        out.println(\"Title: <input name='eventTitle' length='50'/><br/>"
+#~ "\");\n"
+#~ "        out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' "
+#~ "length='10'/><br/>\");\n"
+#~ "        out.println(\"<input type='submit' name='action' value='store'/>"
+#~ "\");\n"
+#~ "        out.println(\"</form>\");\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void printEventForm(PrintWriter out) {\n"
+#~ "    out.println(\"&lt;h2&gt;Add new event:&lt;/h2&gt;\");\n"
+#~ "    out.println(\"&lt;form&gt;\");\n"
+#~ "    out.println(\"Title: &lt;input name='eventTitle' length='50'/&gt;&lt;"
+#~ "br/&gt;\");\n"
+#~ "    out.println(\"Date (e.g. 24.12.2009): &lt;input name='eventDate' "
+#~ "length='10'/&gt;&lt;br/&gt;\");\n"
+#~ "    out.println(\"&lt;input type='submit' name='action' value='store'/&gt;"
+#~ "\");\n"
+#~ "    out.println(\"&lt;/form&gt;\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void listEvents(PrintWriter out, SimpleDateFormat "
+#~ "dateFormatter) {\n"
+#~ "\n"
+#~ "        List result = HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().createCriteria(Event.class).list();\n"
+#~ "        if (result.size() > 0) {\n"
+#~ "            out.println(\"<h2>Events in database:</h2>\");\n"
+#~ "            out.println(\"<table border='1'>\");\n"
+#~ "            out.println(\"<tr>\");\n"
+#~ "            out.println(\"<th>Event title</th>\");\n"
+#~ "            out.println(\"<th>Event date</th>\");\n"
+#~ "            out.println(\"</tr>\");\n"
+#~ "            Iterator it = result.iterator();\n"
+#~ "            while (it.hasNext()) {\n"
+#~ "                Event event = (Event) it.next();\n"
+#~ "                out.println(\"<tr>\");\n"
+#~ "                out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
+#~ "                out.println(\"<td>\" + dateFormatter.format(event.getDate"
+#~ "()) + \"</td>\");\n"
+#~ "                out.println(\"</tr>\");\n"
+#~ "            }\n"
+#~ "            out.println(\"</table>\");\n"
+#~ "        }\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) "
+#~ "{\n"
+#~ "\n"
+#~ "    List result = HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().createCriteria(Event.class).list"
+#~ "();\n"
+#~ "    if (result.size() &gt; 0) {\n"
+#~ "        out.println(\"&lt;h2&gt;Events in database:&lt;/h2&gt;\");\n"
+#~ "        out.println(\"&lt;table border='1'&gt;\");\n"
+#~ "        out.println(\"&lt;tr&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event title&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event date&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;/tr&gt;\");\n"
+#~ "        for (Iterator it = result.iterator(); it.hasNext();) {\n"
+#~ "            Event event = (Event) it.next();\n"
+#~ "            out.println(\"&lt;tr&gt;\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + event.getTitle() + \"&lt;/td&gt;"
+#~ "\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + dateFormatter.format(event."
+#~ "getDate()) + \"&lt;/td&gt;\");\n"
+#~ "            out.println(\"&lt;/tr&gt;\");\n"
+#~ "        }\n"
+#~ "        out.println(\"&lt;/table&gt;\");\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected void createAndStoreEvent(String title, Date "
+#~ "theDate) {\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().save(theEvent);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "    Event theEvent = new Event();\n"
+#~ "    theEvent.setTitle(title);\n"
+#~ "    theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "    HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().save(theEvent);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+#~ "<web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun."
+#~ "com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
+#~ "\n"
+#~ "    <servlet>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <servlet-class>org.hibernate.tutorial.web.EventManagerServlet</"
+#~ "servlet-class>\n"
+#~ "    </servlet>\n"
+#~ "\n"
+#~ "    <servlet-mapping>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <url-pattern>/eventmanager</url-pattern>\n"
+#~ "    </servlet-mapping>\n"
+#~ "</web-app>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+#~ "&lt;web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n"
+#~ "        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\"&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;servlet-class&gt;events.EventManagerServlet&lt;/servlet-"
+#~ "class&gt;\n"
+#~ "    &lt;/servlet&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet-mapping&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;url-pattern&gt;/eventmanager&lt;/url-pattern&gt;\n"
+#~ "    &lt;/servlet-mapping&gt;\n"
+#~ "&lt;/web-app&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,822 @@
+# translation of Collection_Mapping.po to 
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# Language /mnt/hgfs/base/Hibernate/Reference translations for PACKAGE package.
+# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Automatically generated, 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2007-02-26 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "XML-Mapping"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is "
+"currently under active development. </emphasis>"
+msgstr ""
+"Bitte beachten Sie, dass es sich hierbei um ein experimentelles Feature in "
+"Hibernate 3.0 handelt, an dem aktuell noch eine rege Entwicklungstätigkeit "
+"stattfindet."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "Das Arbeiten mit XML-Daten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate allows you to work with persistent XML data in much the same way "
+"you work with persistent POJOs. A parsed XML tree can be thought of as "
+"another way of representing the relational data at the object level, instead "
+"of POJOs."
+msgstr ""
+"Hibernate ermöglicht Ihnen die Arbeit mit persistenten XML-Daten auf "
+"ähnliche Weise wie dies bei persistenten POJOs der Fall ist. Man kann sich "
+"einen auf seine Syntax geprüften XML-Baum einfach als andere Weise der "
+"Repräsentation relationaler Daten auf Objektebene anstelle von POJOs "
+"vorstellen."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate unterstützt dom4j als API zur Verarbeitung von XML-Bäumen. Sie "
+"können Anfragen, die dom4j-Bäume von der Datenbank abrufen, schreiben, wobei "
+"alle Modifikationen am Baum automatisch mit der Datenbank synchronisiert "
+"werden. Sie können sogar ein XML-Dokument unter Verwendung von dom4j auf die "
+"Syntax prüfen und mittels Hibernates Grundvorgängen: <literal>persist(), "
+"saveOrUpdate(), merge(), delete(), replicate()</literal> (\"Merging\" wird "
+"noch nicht unterstützt) in die Datenbank schreiben."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"Dieses Feature bietet zahlreiche Anwendungen einschließlich des Imports/"
+"Exports von Daten, Externalisierung von Entity-Daten via JMS oder SOAP und "
+"XSLT-basiertem Reporting."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single mapping can be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it can be used to map just the XML."
+msgstr ""
+"Ein einzelnes Mapping kann für das gleichzeitige Mappen von Properties einer "
+"Klasse und Knoten (\"Nodes\") eines XML-Dokuments zu einer Datenbank "
+"verwendet werden. Falls keine zu mappende Klasse existiert, kann auch nur "
+"das XML gemappt werden."
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "Spezifizierung des gemeinsamen Mappens von XML und Klasse"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "Hier ist ein Beispiel für das gleichzeitige Mappen eines POJO und XML:"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "Spezifizierung des Mappens von nur XML"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "Dieses ist ein Beispiel ohne POJO-Klasse:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs or java <literal>Map</literal>s. The property "
+"names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+"Dieses Mapping erlaubt es Ihnen, auf Daten als dom4j-Baum oder als Graph von "
+"Property-Name/Wertepaaren zuzugreifen (Java <literal>Map</literal>s). Die "
+"Property-Namen sind rein logische Konstrukte, auf die in HQL-Anfragen "
+"verwiesen werden kann."
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "XML-Mapping Metadaten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A range of Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This lets you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"Zahlreiche Hibernate Mapping-Elemente akzeptieren das <literal>node</"
+"literal>-Attribut. Mit diesem können Sie den Namen eines XML-Attributs oder "
+"Elements festlegen, das die Property oder Entity-Daten enthält. Das Format "
+"des <literal>node</literal>-Attributs muss wie folgt aussehen:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr "<literal>\"element-name\"</literal> - mappt zum benannten XML-Element"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr ""
+"<literal>\"@attribute-name\"</literal> - mappt zum benannten XML-Attribut"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal> - mappt zum übergeordneten Element"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal>: map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal> - mappt zum benannten "
+"Attribut des benannten Elements"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will not appear at all."
+msgstr ""
+"Für Datenerfassung und einwertige Assoziationen gibt es ein zusätzliches "
+"<literal>embed-xml</literal>-Attribut. Falls <literal>embed-xml=\"true\"</"
+"literal> der Standard, so wird der XML-Baum für die zugehörige Entity (oder "
+"Collection vom Wertetyp) direkt im XML-Baum der Entity, zu der die "
+"Assoziation gehört, eingebettet. Im anderen Fall, falls <literal>embed-xml="
+"\"false\"</literal>, erscheint nur der referenzierte Bezeichnerwert in der "
+"XML für \"Single-Point\"-Assoziationen während Collections gar nicht "
+"erscheinen."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not leave <literal>embed-xml=\"true\"</literal> for too many "
+"associations, since XML does not deal well with circularity."
+msgstr ""
+"Sie sollten die Einstellung <literal>embed-xml=\"true\"</literal> nicht für "
+"zu viele Assoziationen anwenden, da XML Schwierigkeiten mit Zirkularität "
+"haben kann!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this case, the collection of account ids is embedded, but not the actual "
+"account data. The following HQL query:"
+msgstr ""
+"in diesem Fall haben wir die Collection von Konten-IDs einzubetten, nicht "
+"jedoch die eigentlichen Kontodaten. Die folgende HQL-Anfrage:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "would return datasets such as this:"
+msgstr "Würde Datensätze wie die Folgenden wiedergeben:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
+"many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+"Wenn Sie die Einstellung <literal>embed-xml=\"true\"</literal> im "
+"<literal>&lt;one-to-many&gt;</literal>-Mapping vornehmen, so sehen die Daten "
+"eher wie folgt aus:"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "Manipulation von XML-Daten"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also re-read and update XML documents in the application. You can do "
+"this by obtaining a dom4j session:"
+msgstr ""
+"Wir wollen nun XML-Dokumente in der Anwendung nochmals lesen und "
+"aktualisieren. Dies erfolgt durch Erhalt einer dom4j-Session:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When implementing XML-based data import/export, it is useful to combine this "
+"feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+"Es ist sehr hilfreich, dieses Feature mit Hibernates <literal>replicate()</"
+"literal>-Vorgang zu kombinieren, um XML-basierten Datenimport/-export zu "
+"implementieren."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/&gt;\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/&gt;\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\">\n"
+#~ "        <key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/>\n"
+#~ "        <map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/>\n"
+#~ "        <one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/>\n"
+#~ "    </map>\n"
+#~ "    \n"
+#~ "    <component name=\"name\" \n"
+#~ "            node=\"name\">\n"
+#~ "        <property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/>\n"
+#~ "        <property name=\"initial\" \n"
+#~ "                node=\"initial\"/>\n"
+#~ "        <property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\"&gt;\n"
+#~ "        &lt;key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/&gt;\n"
+#~ "        &lt;map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "    \n"
+#~ "    &lt;component name=\"name\" \n"
+#~ "            node=\"name\"&gt;\n"
+#~ "        &lt;property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/&gt;\n"
+#~ "        &lt;property name=\"initial\" \n"
+#~ "                node=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Customer c left join fetch c.accounts where c.lastName "
+#~ "like :lastName]]>"
+#~ msgstr ""
+#~ "from Customer c left join fetch c.accounts where c.lastName like :lastName"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account short-desc=\"Savings\">987632567</account>\n"
+#~ "    <account short-desc=\"Credit Card\">985612323</account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "&lt;customer id=\"123456789\"&gt;\n"
+#~ "    &lt;account short-desc=\"Savings\"&gt;987632567&lt;/account&gt;\n"
+#~ "    &lt;account short-desc=\"Credit Card\"&gt;985612323&lt;/account&gt;\n"
+#~ "    &lt;name&gt;\n"
+#~ "        &lt;first-name&gt;Gavin&lt;/first-name&gt;\n"
+#~ "        &lt;initial&gt;A&lt;/initial&gt;\n"
+#~ "        &lt;last-name&gt;King&lt;/last-name&gt;\n"
+#~ "    &lt;/name&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/customer&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account id=\"987632567\" short-desc=\"Savings\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>100.29</balance>\n"
+#~ "    </account>\n"
+#~ "    <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>-2370.34</balance>\n"
+#~ "    </account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "&lt;customer id=\"123456789\"&gt;\n"
+#~ "    &lt;account id=\"987632567\" short-desc=\"Savings\"&gt;\n"
+#~ "        &lt;customer id=\"123456789\"/&gt;\n"
+#~ "        &lt;balance&gt;100.29&lt;/balance&gt;\n"
+#~ "    &lt;/account&gt;\n"
+#~ "    &lt;account id=\"985612323\" short-desc=\"Credit Card\"&gt;\n"
+#~ "        &lt;customer id=\"123456789\"/&gt;\n"
+#~ "        &lt;balance&gt;-2370.34&lt;/balance&gt;\n"
+#~ "    &lt;/account&gt;\n"
+#~ "    &lt;name&gt;\n"
+#~ "        &lt;first-name&gt;Gavin&lt;/first-name&gt;\n"
+#~ "        &lt;initial&gt;A&lt;/initial&gt;\n"
+#~ "        &lt;last-name&gt;King&lt;/last-name&gt;\n"
+#~ "    &lt;/name&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/customer&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i&lt;results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i&lt;results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,301 @@
+# translation of Conventions.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Conventions\n"
+"POT-Creation-Date: 2009-12-11T05:07:40\n"
+"PO-Revision-Date: 2010-01-13 22:31+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr "Dokumentkonventionen"
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr ""
+"Dieses Handbuch verwendet mehrere Konventionen, um bestimmte Wörter und Ausdrücke "
+"zu betonen und bestimmte Teile von Informationen hervorzuheben."
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr ""
+"In PDF- und Papierausgaben verwendet dieses Handbuch Schriftarten aus dem <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink>-Satz. "
+"Der \"Liberation Fonts\"-Satz wird auch in HTML-Editionen verwendet, wenn er auf Ihrem "
+"System installiert ist. Falls nicht, so werden alternative aber gleichwertige Schriftarten "
+"angezeigt. Hinweis: Red Hat Enterprise Linux 5 und spätere Versionen enthalten den "
+"\"Liberation Fonts\"-Satz an Schrifttypen standardmäßig."
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr "Typografische Konventionen"
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr ""
+"Vier typografische Konventionen werden verwendet, um bestimmte Wörter und "
+"Ausdrücke hervorzuheben. Diese Konventionen und die Umstände, in denen sie "
+"angewendet werden, sind wie folgt."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr "<literal>Mono-spaced Bold</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr ""
+"Zur Betonung der Systemeingabe einschließlich Shell-Befehle, Dateinamen "
+"und Pfaden verwendet. Auch zur Betonung von Tastenkappen und Tastenkombinationen "
+"verwendet. Zum Beispiel:"
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+"Um die Inhalte der Datei <filename>my_next_bestselling_novel</filename> in Ihrem "
+"aktuellen Arbeitsverzeichnis zu sehen, geben Sie den "
+"<command>cat my_next_bestselling_novel</command>-Befehl im Shell-Prompt ein, "
+"und drücken Sie <keycap>Enter</keycap>, um den Befehl auszuführen."
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr ""
+"Obiges enthält einen Dateinamen, einen Shell-Befehl und eine Tastenkappe, alle "
+"in einzeiligem Fettdruck und aufgrund des Kontexts leicht zu unterscheiden."
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr ""
+"Tastenkombinationen können von Tastenkappen durch den jeden Teil der Tastenkombination "
+"mit anderen Teilen verbindenden Bindestrich unterschieden werden. Zum Beispiel:"
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr "Drücken Sie <keycap>Enter</keycap>, um den Befehl auszuführen."
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr ""
+"Drücken Sie <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>, "
+"um ins erste virtuelle Terminal zu wechseln. Drücken Sie <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo>, "
+"um zu Ihrer X-Windows Session zurückzukehren."
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr ""
+"Der erste Abschnitt markiert die zu drückende Tastenkappe. Der zweite markiert zwei "
+"Tastenkombinationen (jede ein Satz von drei Tastenkappen, wobei jeder Satz simultan "
+"gedrückt wird)."
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr ""
+"Wird Quellcode erläutert, so erscheinen Klassenname, Methoden, Funktionen, "
+"Variablennamen und wiedergegebene Werte, die in einem Abschnitt wie oben "
+"erwähnt werden in <literal>mono-spaced bold</literal> (einzeiligem Fettdruck). "
+"Zum Beispiel:"
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr ""
+"Datei-bezogene Klassen beinhalten <classname>filesystem</classname> für Dateisysteme, <classname>file</classname> für Dateien und <classname>dir</classname> "
+"für Verzeichnisse. Jede Klasse besitzt ihren eigenen assoziierten Satz an Genehmigungen. "
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr "<application>Proportional Bold</application>"
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr ""
+"Dies kennzeichnet Wörter oder Ausdrücke, auf die man in einem System trifft, darunter "
+"Namen von Anwendungen; Dialog-Box Text; benannte Optionsschaltflächen; "
+"Menütitel und Untermenü-Titel. Zum Beispiel:"
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr "Wählen Sie <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> aus dem Hauptmenü-Balken, um <application>Mouse Preferences</application> zu starten. Im <guilabel>Buttons</guilabel>-Reiter, klicken Sie das <guilabel>Left-handed mouse</guilabel>-Kontrollkästchen, und klicken Sie <guibutton>Close</guibutton>, um die Schaltfläche der Primärmaus von links nach rechts umzustellen (wodurch die Maus für Linkshänder nutzbar wird)."
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr ""
+"Um ein Sonderzeichen in eine <application>gedit</application>-Datei einzufügen, "
+"wählen Sie <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> aus dem Hauptmenübalken. Anschließend wählen Sie <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> aus dem <application>Character Map</application>-Menübalken, geben SIe den Namen des Sonderzeichens im <guilabel>Search</guilabel>-Feld ein und klicken Sie auf <guibutton>Next</guibutton>. Das von Ihnen gesuchte Zeichen wird in der <guilabel>Character Table</guilabel> hervorgehoben. "
+"Doppelklicken Sie auf dieses hervorgehobene Zeichen, um es im <guilabel>Text to copy</guilabel>-Feld zu platzieren und klicken Sie auf die <guibutton>Copy</guibutton>-Schaltfläche. Wechseln Sie zurück in Ihr Dokument, und wählen Sie <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> aus dem <application>gedit</application>-Menübalken."
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr ""
+"Der obige Text enthält Anwendungsnamen; System-weite Menünamen und Posten; "
+"Anwendungsspezifische Menünamen sowie innerhalb eines GUI-Interface vorkommende "
+"Schaltflächen und Text, allesamt in proportinalem Fettdruck und leicht vom "
+"Kontext zu unterscheiden."
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr ""
+"<command><replaceable>Mono-spaced Bold Italic</replaceable></command> "
+"oder <application><replaceable>Proportional Bold Italic</replaceable></application>"
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr ""
+"Ob \"mono-spaced bold\" oder \"proportional bold\", Kursivschrift steht für ersetzbaren "
+"oder variablen Text. Kursivschrift denotiert Text, den Sie nicht wörtlich eingeben oder "
+"angezeigten Text, der sich je nach Umständen ändert. Zum Beispiel:"
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr ""
+"Um eine Verbindung mit einer Remote-Maschine mittels ssh herzustellen, "
+"geben Sie <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> "
+"in einem Shell-Prompt ein. Ist die Remote-Maschine <filename>example.com</filename> "
+"und Ihr Benutzername an dieser Maschine ist \"john\", so geben Sie "
+"<command>ssh john at example.com</command> ein."
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr ""
+"Der <command>mount -o remount <replaceable>file-system</replaceable></command>-Befehl "
+"hängt das benannte Dateisystem wieder ein. Um zum Beispiel das "
+"<filename>/home</filename>-Dateisystem wieder einzuhängen, lautet der Befehl "
+"<command>mount -o remount /home</command>."
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr ""
+"Um die Version eines aktuell installierten Pakets einzusehen, verwenden Sie den "
+"<command>rpm -q <replaceable>package</replaceable></command>-Befehl. "
+"Er gibt das Ergebnis wie folgt wieder: <command><replaceable>package-version-release</replaceable></command>."
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr ""
+"Beachten Sie die Wörter in kursivem Fettdruck oben &mdash; username, domain.name, file-system, package, version und release. Bei jedem Wort handelt es sich um einen Platzhalter für entweder "
+"durch Sie bei Eingabe eines Befehls geschriebenen Text oder für vom System angezeigten "
+"Text."
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr ""
+"Außer dem Standardgebrauch zur Darestellung des Titels einer Arbeit, wird "
+"Kursivschrift bei der erstmaligen Erwähnung eines neuen und wichtigen Begriffs "
+"verwendet. Zum Beispiel: "
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr "Publican ist <firstterm>DocBook</firstterm> Publishing-System."
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr "Pull-Quote Konventionen"
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr ""
+"Terminal-Ausgabe und Quellcode-Auflistungen sind visuell vom umgebenden Text "
+"abgesetzt."
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr ""
+"An ein Terminal gesendete Ausgaben sind <computeroutput>mono-spaced roman</computeroutput> "
+"und werden wie folgt dargestellt:"
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr ""
+"Quellcode-Auflistungen sind auch <computeroutput>mono-spaced roman</computeroutput> "
+"fügen aber Syntax-Hervorhebungen hinzu wie folgt:"
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr "Hinweise und Warnungen"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr ""
+"Es werden drei visuelle Stile zur Hervorhebung von andernfalls möglicherweise "
+"übersehener Informationen verwendet. "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Hinweis"
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr ""
+"Anmerkungen sind Tipps, Tastaturbefehle oder alternative Herangehensweisen an die aktuelle "
+"Aufgabe. Das Ignorieren einer Anmerkung hat in der Regel keine negativen Auswirkungen, aber "
+"Sie verpassen vielleicht einen nützlichen Hinweis, der Ihnen das Leben leichter machen kann."
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr "Wichtig"
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr ""
+"Wichtige Kästchen heben Informationen hervor, die andernfalls möglicherweise "
+"übersehen werden: Konfigurationsänderungen, die nur die aktuelle Session betreffen "
+"oder Dienste, die erneut gestartet werden müssen, ehe eine Aktualisierung stattfindet. "
+"Das Nichtbeachten eines als 'Important' ('Wichtig') gekennzeichneten Kästchens "
+"führt zwar nicht zu Datenverlust, kann aber zu unerwünschten "
+"Ergebnissen führen."
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr "Warnung"
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr ""
+"Warnungen sollten nicht ignoriert werden. Das Ignorieren von Nachrichten führt mit "
+"großer Wahrscheinlichkeit zu Datenverlust."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,37 @@
+# translation of Feedback.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-01-11 17:47+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr "Wir brauchen Feedback!"
+
+#. Tag: primary
+#, no-c-format
+msgid "feedback"
+msgstr "Feedback"
+
+#. Tag: secondary
+#, no-c-format
+msgid "contact information for this manual"
+msgstr "Kontaktinformationen für dieses Handbuch"
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr ""
+"Sie sollte dies außer Kraft setzen, indem Sie Ihre eigene lokale Feedback."
+"xml-Datei erstellen."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,26 @@
+# translation of Legal_Notice.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Legal_Notice\n"
+"POT-Creation-Date: 2009-12-11T05:07:40\n"
+"PO-Revision-Date: 2010-01-11 18:12+1100\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ""
+"Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; "
+"Dieses Material kann nur gemäß den in den Allgemeinen Geschäftsbedingungen der "
+"GNU Free Documentation License (GFDL), V1.2 oder später distribuiert werden "
+"(die aktuellste Version ist derzeit unter <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>) "
+"verfügbar."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/de-DE/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, <state>NC</state><postcode>27709</postcode><country>USA</country> </address>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red Hat, Inc. in the United States and other countries."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All other trademarks referenced herein are the property of their respective owners."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,32 @@
+# translation of Book_Info.po to
+#
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-12 11:22+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Persistencia relacional para Java idiomático"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Documentación de referencia de Hibernate"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr "&version;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#~ msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+#~ msgstr "HIBERNATE - Persistencia Relacional para Java Idiom&#x00e1;tico"
+
+#~ msgid "Hibernate Reference Documentation"
+#~ msgstr "Documentaci&#x00f3;n de Referencia de Hibernate"
+
+#~ msgid "&copyrightHolder;"
+#~ msgstr "&copyrightHolder;"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,31 @@
+# translation of Hibernate_Reference.po to
+#
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate_Reference\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-03-12 11:21+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Persistencia relacional para Java idiomático"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Documentación de referencia de Hibernate"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr "&versionNumber;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,153 @@
+# translation of author_group.po to
+# Language es-ES translations for Branch package.
+#
+# Automatically generated, 2009.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: author_group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-12 11:24+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr "Max"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr "Emmanuel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr "Steve"
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr "James"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr "Cheyenne"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr "Vincent"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr "Sebastien"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr "Michael"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr "Baptiste"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr "Anthony"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr "Alvaro"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr "Anderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr "Daniel Vieira"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr "Francisco"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr "Gamarra"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr "Luiz Carlos"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr "Marcel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr "Paulo"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr "Pablo L."
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr "Renato"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr "Rogério"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr "Wanderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr "Cao"
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr "RedSaga"
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr "Líder de traducción"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,625 @@
+# translation of architecture.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: architecture\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-15 10:16+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "Arquitectura"
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "Sinopsis"
+
+#. Tag: para
+#, no-c-format
+msgid "The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr ""
+"El diagrama a continuación brinda una perspectiva a alto nivel de la "
+"arquitectura de Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We do not have the scope in this document to provide a more detailed view of "
+"all the runtime architectures available; Hibernate is flexible and supports "
+"several different approaches. We will, however, show the two extremes: "
+"\"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+"Este documento no incluye una sinopsis detallada de la arquitecturas en "
+"tiempo de ejecución disponibles; Hibernate es flexible y soporta diferentes "
+"enfoques. Sin embargo, mostraremos los dos extremos: la arquitectura \"mínima"
+"\" y la arquitectura \"completa\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This next diagram illustrates how Hibernate utilizes database and "
+"configuration data to provide persistence services, and persistent objects, "
+"to the application."
+msgstr ""
+"Este diagrama ilustra la manera en que Hibernate utiliza la base de datos y "
+"los datos de configuración para proporcionar servicios de persistencia y "
+"objetos persistentes a la aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"minimal\" architecture has the application provide its own JDBC "
+"connections and manage its own transactions. This approach uses a minimal "
+"subset of Hibernate's APIs:"
+msgstr ""
+"La arquitectura \"mínima\" hace que la aplicación proporcione sus propias "
+"conexiones JDBC y que administre sus propias transacciones. Este enfoque "
+"utiliza un subgrupo mínimo de las APIs de Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"comprehensive\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+"La arquitectura \"completa\" abstrae la aplicación de las APIs de JDBC/JTA y "
+"permite que Hibernate se encargue de los detalles."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr "He aquí algunas definiciones de los objetos en los diagramas: "
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A threadsafe, immutable cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can "
+"hold an optional (second-level) cache of data that is reusable between "
+"transactions at a process, or cluster, level."
+msgstr ""
+"Un caché threadsafe (inmutable) de mapeos compilados para una sola base de "
+"datos. Una fábrica de <literal>Session</literal> y un cliente de "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> "
+"puede mantener un caché opcional (de segundo nivel) de datos reusables entre "
+"transacciones a nivel de proceso o de clúster."
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. It wraps a JDBC connection and is "
+"a factory for <literal>Transaction</literal>. <literal>Session</literal> "
+"holds a mandatory first-level cache of persistent objects that are used when "
+"navigating the object graph or looking up objects by identifier."
+msgstr ""
+"Un objeto mono-hebra, de corta vida que representa una conversación entre la "
+"aplicación y el almacenamiento persistente. Envuelve una conexión JDBC y es "
+"una fábrica de <literal>Transaction</literal>. <literal>Session</literal> "
+"mantiene un caché requerido de primer nivel de objetos persistentes, que se "
+"utiliza cuando se navega el gráfico de objetos o mientras se buscan objetos "
+"por identificador."
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "Objetos y colecciones persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These can be ordinary JavaBeans/POJOs. They are "
+"associated with exactly one <literal>Session</literal>. Once the "
+"<literal>Session</literal> is closed, they will be detached and free to use "
+"in any application layer (for example, directly as data transfer objects to "
+"and from presentation)."
+msgstr ""
+"Objetos de corta vida, mono-hebra contienen un estado persistente así como "
+"una funcionalidad empresarial. Estos pueden ser JavaBeans/POJOs normales. "
+"Estos se encuentran asociados con exactamente una <literal>Session</"
+"literal>. Tan pronto como la <literal>Session</literal> se cierre, serán "
+"separados y estarán libres para utilizarlos en cualquier capa de aplicación, "
+"(por ejemplo, directamente como objetos de transferencia de datos hacia y "
+"desde la presentación)."
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "Objetos y colecciones transitorios y separados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not yet persisted, or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"Instancias de clases persistentes que no se encuentran actualmente asociadas "
+"con una <literal>Session</literal>. Pueden haber sido instanciadas por la "
+"aplicación y aún no haber sido persistidas, o pueden haber sido instanciadas "
+"por una <literal>Session</literal> cerrada."
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. It abstracts the application from the "
+"underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> "
+"might span several <literal>Transaction</literal>s in some cases. However, "
+"transaction demarcation, either using the underlying API or "
+"<literal>Transaction</literal>, is never optional."
+msgstr ""
+"(Opcional) Un objeto de corta vida, mono-hebra que la aplicación utiliza "
+"para especificar unidades atómicas de trabajo. Abstrae la aplicación de las "
+"transacciones subyacentes JDBC, JTA o CORBA. En algunos casos, una "
+"<literal>Session</literal> puede extenderse sobre varias "
+"<literal>Transaction</literal>es. Sin embargo, la demarcación de la "
+"transacción, ya sea utilizando la API subyacente o <literal>Transaction</"
+"literal>, nunca es opcional."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for, and pool of, JDBC connections. It abstracts the "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. It is not exposed to application, but it "
+"can be extended and/or implemented by the developer."
+msgstr ""
+"(Opcional) Una fábrica y pool de conexiones JDBC. Abstrae a la aplicación "
+"del <literal>Datasource</literal> o <literal>DriverManager</literal> "
+"subyacente. No se expone a la aplicación, pero puede ser extendido/"
+"implementado por el desarrollador."
+
+#. Tag: term
+#, no-c-format
+msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. It is not "
+"exposed to the application, but it can be extended and/or implemented by the "
+"developer."
+msgstr ""
+"(Opcional) Una fábrica de instancias de <literal>Transaction</literal>. No "
+"se expone a la aplicación pero puede ser extendido/implementado por el "
+"desarrollador. "
+
+#. Tag: term
+#, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "<emphasis>Interfaces de extensión</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers a range of optional extension interfaces you can implement "
+"to customize the behavior of your persistence layer. See the API "
+"documentation for details."
+msgstr ""
+"Hibernate ofrece un rango de interfaces de extensión opcionales que puede "
+"implementar para personalizar el comportamiento de su capa de persistencia. "
+"Para obtener más detalles, vea la documentación de la API."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Given a \"minimal\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC "
+"directly."
+msgstr ""
+"Dada una arquitectura \"sencilla\", la aplicación evita las APIs de "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> y/o "
+"<literal>ConnectionProvider</literal>, para comunicarse directamente con JTA "
+"o JDBC."
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "Estados de instancia"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of a persistent class can be in one of three different states. "
+"These states are defined in relation to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context. The three different states are as follows:"
+msgstr ""
+"Una instancia de una clase persistente puede estar en uno de tres estados "
+"diferentes. Estos estados se definen con respecto a su <emphasis>contexto de "
+"persistencia</emphasis>. El objeto <literal>Session</literal> de Hibernate "
+"es el contexto de persistencia. Los tres estados diferentes son los "
+"siguientes:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "transitorio"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is not associated with any persistence context. It has no "
+"persistent identity or primary key value."
+msgstr ""
+"La instancia no está asociada con un contexto de persistencia. No tiene "
+"identidad persistente o valor de clave principal."
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "persistente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and can have a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity in relation to the in-memory location of the object."
+msgstr ""
+"La instancia se encuentra actualmente asociada con un contexto de "
+"persistencia. Tiene una identidad persistente (valor de clave principal) y "
+"puede tener una fila correspondiente en la base de datos. Para un contexto "
+"de persistencia en particular, Hibernate <emphasis>garantiza</emphasis> que "
+"la identidad persistente es equivalente a la identidad Java en relación con "
+"la ubicación del objeto."
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "separado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and can have a corresponding row in the database. "
+"For detached instances, Hibernate does not guarantee the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"La instancia estuvo alguna vez asociada con un contexto de persistencia, "
+"pero ese contexto se cerró, o la instancia fue serializada a otro proceso. "
+"Tiene una identidad persistente y puede tener una fila correspondiente en la "
+"base de datos. Para las instancias separadas, Hibernate no establece ninguna "
+"garantía sobre la relación entre identidad persistente e identidad Java."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "Integración JMX"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for the management of Java components. Hibernate "
+"can be managed via a JMX standard service. AN MBean implementation is "
+"provided in the distribution: <literal>org.hibernate.jmx.HibernateService</"
+"literal>."
+msgstr ""
+"JMX es el estándar J2EE para la gestión de componentes Java. Hibernate se "
+"puede administrar por medio de un servicio estándar JMX. Brindamos una "
+"implementación de MBean en la distribución: <literal>org.hibernate.jmx."
+"HibernateService</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For an example of how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. JBoss AS also provides "
+"these benefits if you deploy using JMX:"
+msgstr ""
+"Para ver un ejemplo de cómo desplegar Hibernate como un servicio JMX en un "
+"servidor de aplicaciones JBoss, por favor, refiérase al manual del usuario "
+"de JBoss. JBoss AS también proporciona estos beneficios si despliega "
+"utilizando JMX:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means that you no longer have to manually open and close "
+"the <literal>Session</literal>; this becomes the job of a JBoss EJB "
+"interceptor. You also do not have to worry about transaction demarcation in "
+"your code (if you would like to write a portable persistence layer use the "
+"optional Hibernate <literal>Transaction</literal> API for this). You call "
+"the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>Administración de Sesión:</emphasis> El ciclo de vida de la "
+"<literal>Session</literal> de Hibernate puede estar ligado automáticamente "
+"al ámbito de una transacción JTA. Esto significa que ya no tiene que abrir "
+"ni cerrar la <literal>Session</literal> manualmente, esto pasa a ser el "
+"trabajo de un interceptor EJB de JBoss. Además tampoco tiene que preocuparse "
+"más de la demarcación de la transacción en su código (a menos de que quiera "
+"escribir una capa de persitencia portátil, utilice la API de "
+"<literal>Transaction</literal> de Hibernate para hacer esto). Para acceder a "
+"una <literal>Session</literal> llame al <literal>HibernateContext</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed "
+"using a JBoss service deployment descriptor in an EAR and/or SAR file, as it "
+"supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still need to name all your "
+"mapping files in the deployment descriptor. If you use the optional HAR "
+"deployment, JBoss will automatically detect all mapping files in your HAR "
+"file."
+msgstr ""
+"<emphasis>Despliegue HAR:</emphasis>: el servicio JMX de Hibernate se "
+"implementa usando un descriptor de despliegue de servicio de JBoss en un "
+"archivo EAR y/o SAR, que soporta todas las opciones de configuración usuales "
+"de una <literal>SessionFactory</literal> de Hibernate. Sin embargo, todavía "
+"tiene que nombrar todos sus archivos de mapeo en el descriptor de "
+"despliegue. Si utiliza el depliegue HAR opcional, JBoss detectará "
+"automáticamente todos los archivos de mapeo en su archivo HAR."
+
+#. Tag: para
+#, no-c-format
+msgid "Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"Para más información sobre estas opciones, consulte el Manual de Usuario de "
+"JBoss AS."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another feature available as a JMX service is runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\" /> for more "
+"information."
+msgstr ""
+"Otra funcionalidad disponible como un servicio de JMX son las estadísticas "
+"en tiempo de ejecución de Hibernate. Consulte <xref linkend=\"configuration-optional-statistics\" /> para obtener mayor información."
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "Soporte JCA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also be configured as a JCA connector. Please see the website "
+"for more information. Please note, however, that at this stage Hibernate JCA "
+"support is under development."
+msgstr ""
+"Hibernate también puede ser configurado como un conector JCA. Por favor "
+"refiérase al sitio web para encontrar más detalles. Sin embargo, tenga en "
+"cuenta que el soporte de JCA de Hibernate aún está bajo desarrollo."
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr "Sesiones contextuales"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" session, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks, such as Spring or Pico, which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"La mayoría de las aplicaciones que utilizan Hibernate necesitan alguna forma "
+"de sesiones \"contextuales\", en donde una sesión dada se encuentra en "
+"efecto en todo el campo de acción de un contexto dado. Sin embargo, a través "
+"de las aplicaciones la definición de lo que constituye un contexto es "
+"usualmente diferente y diferentes contextos definen diferentes campos de "
+"acción para la noción de actual. Las aplicaciones que utiliza Hibernate "
+"antes de la version 3.0 tienden a utilizar ya sea sesiones contextuales con "
+"base <literal>ThreadLocal</literal> desarrollados en casa, las clases "
+"ayudantes tales como <literal>HibernateUtil</literal>, o enfoques de "
+"terceros utilizados, como Spring o Pico, los cuales brindaban sesiones "
+"contextuales con base proxy/intercepción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. Given "
+"the maturity of the numerous stand-alone <literal>JTA TransactionManager</"
+"literal> implementations, most, if not all, applications should be using "
+"<literal>JTA</literal> transaction management, whether or not they are "
+"deployed into a <literal>J2EE</literal> container. Based on that, the "
+"<literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+"Comenzando con la version 3.0.1, Hibernate agregó el método "
+"<literal>SessionFactory.getCurrentSession()</literal>. Inicialmente, este "
+"asumió la utilización de las transacciones <literal>JTA</literal>, en donde "
+"la transacción <literal>JTA</literal> definia tanto el contexto como el "
+"campo de acción de una sesión actual. Dada la madurez de númerosas "
+"implementaciones <literal>JTA TransactionManager</literal> autónomas "
+"existentes, la mayoría, si no es que todas, las aplicaciones deberían "
+"utilizar la administración de transacciones <literal>JTA</literal> en el "
+"caso de que se deplieguen o no en un contenedor <literal>J2EE</literal>. Con "
+"base en esto, las sesiones contextuales basadas en <literal>JTA</literal> es "
+"todo lo que usted necesita utilizar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, "
+"and a new configuration parameter, <literal>hibernate."
+"current_session_context_class</literal>, have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"Sin embargo, desde la versión 3.1, el procesamiento detrás de "
+"<literal>SessionFactory.getCurrentSession()</literal> ahora es conectable. "
+"Para ese fin, se ha añadido una nueva interfaz de extensión, <literal>org."
+"hibernate.context.CurrentSessionContext</literal>, y un nuevo parámetro de "
+"configuración, <literal>hibernate.current_session_context_class</literal> "
+"para permitir la conexión del campo de acción y el contexto de definición de "
+"las sesiones actuales."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface:"
+msgstr ""
+"Refiérase a los Javadocs para la interfaz <literal>org.hibernate.context."
+"CurrentSessionContext</literal> para poder ver una discusión detallada de su "
+"contrato. Define un método único, <literal>currentSession()</literal>, por "
+"medio del cual la implementación es responsable de rastrear la sesión "
+"contextual actual. Tal como viene empacada, Hibernate incluye tres "
+"implementaciones de esta interfaz:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: current sessions "
+"are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: una transacción "
+"<literal>JTA</literal> rastrea y asume las sesiones actuales. Aquí el "
+"procesamiento es exactamente el mismo que en el enfoque más antiguo de JTA-"
+"sólamente. Refiérase a los Javadocs para obtener más información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current "
+"sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>: las "
+"sesiones actuales son rastreadas por un hilo de ejecución. Consulte los "
+"Javadocs para obtener más detalles."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: las sesiones "
+"actuales son rastreadas por un hilo de ejecución. Sin embargo, usted es "
+"responsable de vincular y desvincular una instancia <literal>Session</"
+"literal> con métodos estáticos en esta clase: no abre, vacia o cierra una "
+"<literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model. This is also known and used as "
+"<emphasis>session-per-request</emphasis>. The beginning and end of a "
+"Hibernate session is defined by the duration of a database transaction. If "
+"you use programmatic transaction demarcation in plain JSE without JTA, you "
+"are advised to use the Hibernate <literal>Transaction</literal> API to hide "
+"the underlying transaction system from your code. If you use JTA, you can "
+"utilize the JTA interfaces to demarcate transactions. If you execute in an "
+"EJB container that supports CMT, transaction boundaries are defined "
+"declaratively and you do not need any transaction or session demarcation "
+"operations in your code. Refer to <xref linkend=\"transactions\" /> for more "
+"information and code examples."
+msgstr ""
+"Las primeras dos implementaciones brindan un modelo de programación \"una "
+"sesión - una transacción de la base de datos\". También conocido y utilizado "
+"como una <emphasis>sesión-por-petición</emphasis>. El inicio y el final de "
+"una sesión Hibernate se define por la duración de una transacción de una "
+"base de datos. Si utiliza la demarcación de transacción programática en JSE "
+"sencillo sin JTA, se le aconseja que utilice el API <literal>Transaction</"
+"literal> de Hibernate para esconder el sistema de transacción subyacente de "
+"su código. Si utiliza JTA, utilice las interfaces JTA para demarcar "
+"transacciones. Si utiliza JTA, puede utilizar las interfaces JTA para "
+"demarcar transacciones. Si ejecuta en un contenedor EJB que soporta CMT, los "
+"límites de la transacción están definidos declarativamente y no necesita "
+"ninguna operación de demarcación de sesión o transacción en su código. "
+"Consulte <xref linkend=\"transactions\" /> para obtener más información y "
+"ejemplos de código."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. For backwards "
+"compatibility, if this configuration parameter is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use. For the three out-of-the-box implementations, "
+"however, there are three corresponding short names: \"jta\", \"thread\", and "
+"\"managed\"."
+msgstr ""
+"El parámetro de configuración <literal>hibernate."
+"current_session_context_class</literal> define cuales implementaciones "
+"<literal>org.hibernate.context.CurrentSessionContext</literal> deben "
+"utilizarse. Para compatibilidad con versiones anteriores, si este parámetro "
+"de configuración no está establecido pero si tiene configurado un "
+"<literal>org.hibernate.transaction.TransactionManagerLookup</literal>, "
+"Hibernate utilizará el <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Usualmente el valor de este parámetro sólamente nombraría la clase "
+"de implementación a utilizar. Sin embargo, para las tres implementaciones "
+"incluídas existen tress nombres cortos: \"jta\", \"thread\" y \"managed\"."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1145 @@
+# translation of association_mapping.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: association_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-11-09 12:44+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "Mapeos de asociación"
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"Los mapeos de asociación son frecuentemente lo más difícil de implementar "
+"correctamente. En esta sección revisaremos algunos casos canónicos uno por "
+"uno, comenzando con los mapeos unidireccionales y luego considerando los "
+"casos bidireccionales. Vamos a utilizar <literal>Person</literal> y "
+"<literal>Address</literal> en todos los ejemplos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"Vamos a clasificar las asociaciones en cuanto su multiplicidad y a si mapean "
+"o no a una tabla de unión interviniente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"Las claves foráneas que aceptan valores nulos no se consideran como una "
+"buena práctica en el modelado tradicional de datos, así que todos nuestros "
+"ejemplos utilizan claves foráneas no nulas. Esto no es un requisito de "
+"Hibernate y todos los mapeos funcionarán si quita las restricciones de "
+"nulabilidad."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "Asociaciones Unidireccionales"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "Many-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"Una <emphasis>asociación unidireccional muchos-a-uno</emphasis> es el tipo "
+"de asociación unidireccional más común."
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "Uno-a-uno"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-uno en una clave foránea</"
+"emphasis> es casi idéntica. La única diferencia es la restricción de "
+"unicidad de la columna."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"Usualmente, una <emphasis>asociación unidireccional uno-a-uno en una clave "
+"principal</emphasis> utiliza un generador de id especial. Sin embargo, hemos "
+"invertido la dirección de la asociación:"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many"
+msgstr "Uno-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-muchos en una clave foránea</"
+"emphasis> es un caso muy inusual y no se recomienda."
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr ""
+"En lugar debe utilizar una tabla de unión para esta clase de asociación."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "Asociaciones unidireccionales con tablas de unión"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"Se prefiere una <emphasis>asociación unidireccional uno-a-muchos en una "
+"tabla de unión</emphasis> . El especificar <literal>unique=\"true\"</"
+"literal>, cambia la multiplicidad de muchos-a-muchos a uno-a-muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"Una <emphasis>asociación unidireccional muchos-a-uno en una tabla de unión</"
+"emphasis> es común cuando la asociación es opcional. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-uno en una tabla de unión</"
+"emphasis> es extremadamente inusual, pero es posible. "
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many"
+msgstr "Muchos-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr ""
+"Finalmente, este es un ejemplo de una <emphasis>asociación unidireccional "
+"muchos-a-muchos</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Asociaciones bidireccionales"
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "uno-a-muchos / muchos-a-uno"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"Una <emphasis>asociación bidireccional muchos-a-uno</emphasis> es el tipo de "
+"asociación más común. El siguiente ejemplo ilustra la relación estándar "
+"padre/hijo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"Si utiliza un <literal>List</literal>, u otra colección con índice, "
+"configure la columna <literal>key</literal> de la clave foránea como "
+"<literal>not null</literal>. Hibernate administrará la asociación del lado "
+"de las colecciones para mantener el índice de cada elemento, haciendo del "
+"otro lado virtualmente inverso al establecer <literal>update=\"false\"</"
+"literal> y <literal>insert=\"false\"</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Es importante que defina <literal>not-null=\"true\"</literal> en el elemento "
+"<literal>&lt;key&gt;</literal> del mapeo de la colección si la columna de la "
+"clave foránea es <literal>NOT NULL</literal>. No declare sólamente "
+"<literal>not-null=\"true\"</literal> en un elemento <literal>&lt;column&gt;</"
+"literal> posiblemente anidado sino en el elemento <literal>&lt;key&gt;</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr ""
+"Una <emphasis>asociación bidireccional uno-a-uno en una clave foránea</"
+"emphasis> es común:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"Una <emphasis>asociación bidireccional uno-a-uno en una clave primaria</"
+"emphasis> utiliza el generador de id especial:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "Asociaciones bidireccionales con tablas de unión"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"El siguiente es un ejemplo de una <emphasis>asociación bidireccional uno-a-"
+"muchos en una tabla de unión</emphasis>. El <literal>inverse=\"true\"</"
+"literal> puede ir en cualquier lado de la asociación, en la colección, o en "
+"la unión."
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "uno a uno"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Una <emphasis>asociación bidireccional uno-a-uno en una tabla de unión</"
+"emphasis> es extremadamente inusual, pero es posible. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"Este es un ejemplo de una <emphasis>asociación bidireccional muchos-a-"
+"muchos</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "Mapeos de asociación más complejos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"Uniones de asociación más complejas son <emphasis>extremadamente</emphasis> "
+"raras. Hibernate maneja situaciones más complejas utilizando fragmentos SQL "
+"incluidos en el documento de mapeo. Por ejemplo, si una tabla con datos "
+"históricos de información de cuenta define las columnas "
+"<literal>accountNumber</literal>, <literal>effectiveEndDate</literal> y "
+"<literal>effectiveStartDate</literal>, se mapearían así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"Entonces puede mapear una asociación a la instancia <emphasis>actual</"
+"emphasis>, la que tiene <literal>effectiveEndDate</literal> nulo, utilizando:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"En un ejemplo más complejo, imagínese que la asociación entre "
+"<literal>Employee</literal> y <literal>Organization</literal> se mantienen "
+"en una tabla <literal>Employment</literal> llena de datos históricos de "
+"empleo. Entonces se puede mapear una asociación al empleador <emphasis>más "
+"reciente</emphasis> del empleado, el que tiene la <literal>startDate</"
+"literal> más reciente, de esta manera:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"Esta funcionalidad le permite cierto grado de creatividad y flexibilidad, "
+"pero usualmente es más práctico manejar esta clase de casos utilizando HQL o "
+"una petición de criterio."
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,4313 @@
+# translation of basic_mapping.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: basic_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 12:49+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "Mapeo O/R Básico"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "Declaración de mapeo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations and not table declarations."
+msgstr ""
+"Los mapeos objeto/relacional usualmente se definen en un documento XML. El "
+"documento de mapeo está diseñado para que se pueda leer y editar a mano. El "
+"lenguaje de mapeo está centrado en Java, lo que significa que los mapeos se "
+"construyen alrededor de declaraciones de clases persistentes y no alrededor "
+"de declaraciones de tablas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that even though many Hibernate users choose to write the XML by "
+"hand, a number of tools exist to generate the mapping document. These "
+"include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+"Observe que, incluso aunque muchos de los usuarios de Hibernate eligen "
+"escribir el XML a mano, existe un número de herramientas para generar el "
+"documento de mapeo, incluyendo XDoclet, Middlegen y AndroMDA. "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example mapping:"
+msgstr "Este es un ejemplo de mapeo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe, however, the document elements and attributes that are used by "
+"Hibernate at runtime. The mapping document also contains some extra optional "
+"attributes and elements that affect the database schemas exported by the "
+"schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+"Ahora vamos a discutir el contenido del documento de mapeo. Sólamente "
+"describiremos los elementos y atributos del documento que Hibernate utiliza "
+"en tiempo de ejecución. El documento de mapeo también comprende algunos "
+"atributos y elementos extra opcionales que afectan los esquemas de la base "
+"de datos exportados por la herramienta de exportación de esquemas (por "
+"ejemplo, el atributo <literal>not-null</literal>)."
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD can be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate "
+"will always look for the DTD in its classpath first. If you experience "
+"lookups of the DTD using an Internet connection, check the DTD declaration "
+"against the contents of your classpath."
+msgstr ""
+"Todos los mapeos XML deben declarar el tipo de documento que se muestra. El "
+"DTD en sí se puede encontrar en la URL mencionada anteriormente, en el "
+"directorio <literal>hibernate-x.x.x/src/org/hibernate </literal>, o en "
+"<literal>hibernate3.jar</literal>. Hibernate siempre buscará el DTD primero "
+"en la ruta de clase. Si el DTD realiza búsquedas utilizando una conexión de "
+"Internet, verifique que su declaración DTD frente al contenido de su ruta de "
+"clase."
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "EntityResolver"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will first attempt to resolve DTDs in its classpath. It does this "
+"is by registering a custom <literal>org.xml.sax.EntityResolver</literal> "
+"implementation with the SAXReader it uses to read in the xml files. This "
+"custom <literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces:"
+msgstr ""
+"Hibernate tratará primero de resolver los DTDs en su ruta de clase. La "
+"manera en que lo hace es registrando una implementación <literal>org.xml.sax."
+"EntityResolver</literal> personalizada con el SAXReader que utiliza para "
+"leer los archivos xml. Este <literal>EntityResolver</literal> personalizado "
+"reconoce dos diferentes espacios de nombre del identificador del sistema."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounters a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>. The resolver attempts to resolve these entities via the "
+"classloader which loaded the Hibernate classes."
+msgstr ""
+"un <literal>hibernate namespace</literal> se reconoce cuando el resolvedor "
+"se encuentra con un identificador de sistema que inicia por <literal>http://"
+"hibernate.sourceforge.net/</literal>. El resolvedor intenta resolver estas "
+"entidades por medio del cargador de clases, el cual cargó las clases de "
+"Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounters a systemId using a <literal>classpath://</literal> URL protocol. "
+"The resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"un <literal>user namespace</literal> se reconoce cuando el resolvedor se "
+"encuentra con un identificador del sistema utilizando un protocolo URL "
+"<literal>classpath://</literal>. El resolvedor intentará resolver estas "
+"entidades por medio de (1) el cargador de clase del contexto del hilo actual "
+"y (2) el cargador de clase, el cual cargó las clases de Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "Este es un ejemplo de la utilización de los espacios de nombre del usuario: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"En donde <literal>types.xml</literal> es un recurso en el paquete "
+"<literal>your.domain</literal> y comprende un <link linkend=\"mapping-types-"
+"custom\">typedef</link> personalizado."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate-mapping"
+msgstr "Mapeo de Hibernate "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If they are "
+"specified, tablenames will be qualified by the given schema and catalog "
+"names. If they are missing, tablenames will be unqualified. The "
+"<literal>default-cascade</literal> attribute specifies what cascade style "
+"should be assumed for properties and collections that do not specify a "
+"<literal>cascade</literal> attribute. By default, the <literal>auto-import</"
+"literal> attribute allows you to use unqualified class names in the query "
+"language."
+msgstr ""
+"Este elemento tiene varios atributos opcionales. Los atributos "
+"<literal>schema</literal> y <literal>catalog</literal> especifican que las "
+"tablas a las que se refiere en este mapeo pertenecen al esquema y/o catálogo "
+"mencionado(s). De especificarse, los nombres de tablas serán calificados por "
+"el nombre del esquema y del catálogo dados. De omitirse, los nombres de las "
+"tablas no serán calificados. El atributo <literal>default-cascade</literal> "
+"especifica qué estilo de cascada se debe asumir para las propiedades y "
+"colecciones que no especifican un atributo <literal>cascade</literal>. Por "
+"defecto, el atributo <literal>auto-import</literal> nos permite utilizar "
+"nombres de clase sin calificar en el lenguaje de consulta."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr ""
+"<literal>schema</literal> (opcional): El nombre de un esquema de la base de "
+"datos. "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr ""
+"<literal>catalog</literal> (opcional): El nombre de un catálogo de la base "
+"de datos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): a default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (opcional - por defecto es <literal>none</"
+"literal>): Un estilo de cascada por defecto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing all properties. "
+"It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (opcional - por defecto es "
+"<literal>property</literal>): La estrategia que Hibernate debe utilizar para "
+"acceder a todas las propiedades. Puede ser una implementación personalizada "
+"de <literal>PropertyAccessor</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): the default value for unspecified <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (opcional - por defecto es <literal>true</"
+"literal>): El valor por defecto para los atributos <literal>lazy</literal> "
+"no especificados de mapeos de clase y de colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): specifies whether we can use unqualified class names of classes "
+"in this mapping in the query language."
+msgstr ""
+"<literal>auto-import</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica si podemos utilizar nombres de clases no calificados "
+"de clases en este mapeo en el lenguaje de consulta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>package</literal> (optional): specifies a package prefix to use for "
+"unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (opcional): Especifica un prefijo de paquete que "
+"se debe utilizar para los nombres de clase no calificados en el documento de "
+"mapeo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have two persistent classes with the same unqualified name, you "
+"should set <literal>auto-import=\"false\"</literal>. An exception will "
+"result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"Si tiene dos clases persistentes con el mismo nombre (sin calificar), debe "
+"establecer <literal>auto-import=\"false\"</literal>. Se presentará una "
+"excepción si usted intenta asignar dos clases al mismo nombre \"importado\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate-mapping</literal> element allows you to nest several "
+"persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, "
+"however, good practice (and expected by some tools) to map only a single "
+"persistent class, or a single class hierarchy, in one mapping file and name "
+"it after the persistent superclass. For example, <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"El elemento <literal>hibernate-mapping</literal> le permite anidar varios "
+"mapeos <literal>&lt;class&gt;</literal> persistentes, como se mostró "
+"anteriormente. Sin embargo, es una buena práctica (y algunas herramientas "
+"esperan) que mapee sólamente una clase persistente, o a una sóla jerarquía "
+"de clases, en un archivo de mapeo y nombrarlo como la superclase "
+"persistente. Por ejemplo, <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm."
+"xml</literal>, o si utiliza herencia, <literal>Animal.hbm.xml</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Class"
+msgstr "Clase"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can declare a persistent class using the <literal>class</literal> "
+"element. For example:"
+msgstr ""
+"Puede declarar una clase persistente utilizando el elemento <literal>class</"
+"literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the fully qualified Java class name of "
+"the persistent class or interface. If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (opcional): El nombre completamente calificado de la "
+"clase Java persistente (o interfaz). Si se omite este atributo, se asume que "
+"el mapeo es para una entidad que no es POJO."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): the name of its database table."
+msgstr ""
+"<literal>table</literal> (opcional - por defecto es el nombre de la clase no "
+"calificado): El nombre de su tabla en la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses that is used for "
+"polymorphic behavior. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional - predeterminado al nombre "
+"de la clase): Un valor que distingue subclases individuales, usado para el "
+"comportamiento polimórfico. Los valores aceptables incluyen <literal>null</"
+"literal> y <literal>not null</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (opcional, por defecto es <literal>true</"
+"literal>): Especifica que las instancias de la clase (no) son mutables. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): overrides the schema name specified by "
+"the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>schema</literal> (opcional): Sobrescribe el nombre del esquema "
+"especificado por el elemento raíz <literal>&lt;hibernate-mapping&gt;</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): overrides the catalog name specified "
+"by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>catalog</literal> (opcional): Sobrescribe el nombre del catálogo "
+"especificado por el elemento raíz <literal>&lt;hibernate-mapping&gt;</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies an interface to use for lazy "
+"initializing proxies. You can specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica una interfaz a utilizar para "
+"los proxies de inicialización perezosa. Puede especificar el nombre mismo de "
+"la clase. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and can contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (opcional, por defecto es <literal>false</"
+"literal>): Especifica que el SQL <literal>UPDATE</literal> debe ser generado "
+"en tiempo de ejecución y puede contener sólamente aquellas columnas cuyos "
+"valores hayan cambiado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (opcional, por defecto es <literal>false</"
+"literal>): Especifica que el SQL <literal>INSERT</literal> debe ser generado "
+"en tiempo de ejecución y debe contener sólamente aquellas columnas cuyos "
+"valores no son nulos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional - defaults to "
+"<literal>false</literal>): specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. Only when a transient object has been "
+"associated with a new session using <literal>update()</literal>, will "
+"Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an "
+"<literal>UPDATE</literal> is actually required."
+msgstr ""
+"<literal>select-before-update</literal> (opcional, por defecto es "
+"<literal>false</literal>): Especifica que Hibernate <emphasis>nunca</"
+"emphasis> debe realizar un <literal>UPDATE</literal> SQL a menos de que se "
+"tenga certeza de que realmente se haya modificado un objeto. Sólo cuando un "
+"objeto transitorio ha sido asociado con una sesión nueva utilizando "
+"<literal>update()</literal>), Hibernate realizará una SQL <literal>SELECT</"
+"literal> extra para determinar si realmente se necesita un <literal>UPDATE</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional - defaults to <literal>implicit</"
+"literal>): determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (opcional, por defecto es <literal>implicit</"
+"literal>): Determina si se utiliza polimorfismo de consulta implícito o "
+"explícito. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition to be used when retrieving objects of "
+"this class."
+msgstr ""
+"<literal>where</literal> (opcional) especifica una condición SQL "
+"<literal>WHERE</literal> arbitraria para utilizarla en la recuperación de "
+"objetos de esta clase. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (opcional): Especifica un "
+"<literal>ClassPersister</literal> personalizado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for fetching instances of this class by "
+"identifier."
+msgstr ""
+"<literal>batch-size</literal> (opcional, por defecto es <literal>1</"
+"literal>) especifica un \"tamaño de lote\" para buscar instancias de esta "
+"clase por identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>version</"
+"literal>): determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional, por defecto es "
+"<literal>version</literal>): Determina la estrategia optimista de bloqueo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): lazy fetching can be disabled by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (opcional): La recuperación perezosa se puede "
+"deshabilitar por completo al establecer <literal>lazy=\"false\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional - defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times, potentially to "
+"different tables. It also allows entity mappings that are represented by "
+"Maps or XML at the Java level. In these cases, you should provide an "
+"explicit arbitrary name for the entity. See <xref linkend=\"persistent-"
+"classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+"<literal>entity-name</literal> (opcional - por defecto es el nombre de la "
+"clase): Hibernate3 permite mapear una clase varias veces, potencialmente a "
+"tablas diferentes. También permite que los mapeos de entidad sean "
+"representados por Maps o XML al nivel de Java. En estos casos, debe "
+"proporcionar un nombre explícito arbitrario para la entidad. Para obtener "
+"más información consulte <xref linkend=\"persistent-classes-dynamicmodels\" /"
+"> y <xref linkend=\"xml\" />."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>check</literal> (optional): an SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (opcional): Una expresión SQL utilizada para "
+"generar una restricción <emphasis>check</emphasis> multi-filas para la "
+"generación automática de esquemas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. "
+"On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra "
+"column for fast updates once this option has been set to <literal>rowid</"
+"literal>. A ROWID is an implementation detail and represents the physical "
+"location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (opcional): Hibernate puede utilizar los llamados "
+"ROWIDs en las bases de datos. Por ejemplo, en Oracle, Hibernate puede "
+"utilizar la columna extra <literal>rowid</literal> para actualizaciones "
+"rápidas si usted establece esta opción como <literal>rowid</literal>. Un "
+"ROWID es un detalle de implementación y representa la posición física de la "
+"tupla almacenada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): maps an immutable and read-only "
+"entity to a database subselect. This is useful if you want to have a view "
+"instead of a base table. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (opcional): Mapea una entidad inmutable y de "
+"sólo lectura a una subselección de base de datos. Es útil si quiere tener "
+"una vista en vez de una tabla base. Vea a continuación para obtener más "
+"información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): is used to mark abstract "
+"superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (opcional): Utilizado para marcar superclases "
+"abstractas en las jerarquías <literal>&lt;union-subclass&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is acceptable for the named persistent class to be an interface. You can "
+"declare implementing classes of that interface using the <literal>&lt;"
+"subclass&gt;</literal> element. You can persist any <emphasis>static</"
+"emphasis> inner class. Specify the class name using the standard form i.e. "
+"<literal>e.g.Foo$Bar</literal>."
+msgstr ""
+"Es perfectamente aceptable que la clase persistente mencionada sea una "
+"interfaz. Puede declarar clases que implementan esa interfaz utilizando el "
+"elemento <literal>&lt;subclass&gt;</literal>. Puede persistir cualquier "
+"clase interna <emphasis>estática</emphasis>. Debe especificar el nombre de "
+"la clase utilizando la forma estándar, por ejemplo, <literal>e.g.Foo$Bar</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"Las clases inmutables, <literal>mutable=\"false\"</literal>, no pueden ser "
+"actualizadas o borradas por la aplicación. Esto le permite a Hibernate "
+"realizar ciertas optimizaciones menores de rendimiento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies that implement the named interface. The persistent object will load "
+"when a method of the proxy is invoked. See \"Initializing collections and "
+"proxies\" below."
+msgstr ""
+"El atributo opcional <literal>proxy</literal> activa la inicialización "
+"perezosa de instancias persistentes de la clase. Hibernate inicialmente "
+"retornará proxies CGLIB que implementan la interfaz mencionada. El objeto "
+"persistente real será cargado cuando se invoque un método del proxy. Vea "
+"\"Inicialización de colecciones y proxies\" a continuación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or class, and that instances of any subclass of the class will be "
+"returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class. Queries that name the class will "
+"return only instances of subclasses mapped inside this <literal>&lt;class&gt;"
+"</literal> declaration as a <literal>&lt;subclass&gt;</literal> or "
+"<literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default "
+"<literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table This allows a \"lightweight\" class that contains a subset of the "
+"table columns."
+msgstr ""
+"Por polimorfismo <emphasis>implícito</emphasis> se entiende que las "
+"instancias de la clase serán devueltas por una consulta que mencione "
+"cualquier superclase, o interfaz implementada, o la clase misma; y que las "
+"instancias de cualquier subclase de la clase serán retornadas por una "
+"petición que nombra a la clase misma. Por polimorfismo <emphasis>explícito</"
+"emphasis> se entiende que las instancias de la clase serán devueltas sólo "
+"por consultas que mencionen explícitamente la clase. Las consultas que "
+"mencionen la clase retornarán sólo instancias de subclases mapeadas dentro "
+"de esta declaración <literal>&lt;class&gt;</literal> como una <literal>&lt;"
+"subclass&gt;</literal> o <literal>&lt;joined-subclass&gt;</literal>. Para la "
+"mayoría de los propósitos el valor por defecto, <literal>polymorphism="
+"\"implicit\"</literal>, resulta apropiado. El polimorfismo explícito es útil "
+"cuando dos clases diferentes se encuentran mapeadas a la misma tabla. Esto "
+"permite tener una clase \"liviana\" que contenga un subconjunto de columnas "
+"de la tabla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You can, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, "
+"or you can even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements, "
+"for example, persistence via stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+"El atributo <literal>persister</literal> le permite personalizar la "
+"estrategia de persistencia para la clase. Por ejemplo, puede especificar su "
+"propia subclase de <literal>org.hibernate.persister.EntityPersister</"
+"literal>, o incluso puede proporcionar una implementación completamente "
+"nueva de la interfaz <literal>org.hibernate.persister.ClassPersister</"
+"literal> que implemente, por ejemplo, la persistencia por medio de llamadas "
+"a procedimientos almacenados, serialización a archivos planos o LDAP. Para "
+"ver un ejemplo simple (de \"persistencia\" a una <literal>Hashtable</"
+"literal>) consulte <literal>org.hibernate.test.CustomPersister</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> "
+"settings are not inherited by subclasses, so they can also be specified on "
+"the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</"
+"literal> elements. Although these settings can increase performance in some "
+"cases, they can actually decrease performance in others."
+msgstr ""
+"Los valores de <literal>dynamic-update</literal> y <literal>dynamic-insert</"
+"literal> no son heredados por las subclases y por lo tanto deben "
+"especificarse en los elementos <literal>&lt;subclass&gt;</literal> o "
+"<literal>&lt;joined-subclass&gt;</literal>. Aunque en algunos casos, estos "
+"ajustes pueden incrementar el rendimiento, de hecho en otros casos, podrían "
+"disminuirlo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is useful to prevent a database update trigger being called "
+"unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"El uso de <literal>select-before-update</literal> disminuirá el rendimiento. "
+"Es muy útil prevenir que se llame innecesariamente a un disparador de "
+"actualización de la base de datos al volver a unir un gráfico de instancias "
+"separadas a una <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"Si activa <literal>dynamic-update</literal>, usted tendrá la opción de "
+"estrategias de bloqueo optimistas:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr "<literal>version</literal>: chequea las columnas de versión/sello de fecha"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all</literal>: chequea todas las columnas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dirty</literal>: check the changed columns, allowing some "
+"concurrent updates"
+msgstr ""
+"<literal>dirty</literal>: chequea las columnas modificadas permitiendo "
+"algunas actualizaciones concurrentes"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none</literal>: no utilice bloqueo optimista"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is <emphasis>strongly</emphasis> recommended that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This strategy "
+"optimizes performance and correctly handles modifications made to detached "
+"instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+"Le recomendamos <emphasis>mucho</emphasis> que utilice columnas de versión/"
+"sello de fecha para el bloqueo optimista con Hibernate. Esta estrategia "
+"optimiza el rendimiento y maneja correctamente las modificaciones realizadas "
+"a las instancias separadas, (por ejemplo, cuando se utiliza <literal>Session."
+"merge()</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping. This is transparent at the database level, although some DBMS do "
+"not support views properly, especially with updates. Sometimes you want to "
+"use a view, but you cannot create one in the database (i.e. with a legacy "
+"schema). In this case, you can map an immutable and read-only entity to a "
+"given SQL subselect expression:"
+msgstr ""
+"Para un mapeo de Hibernate, no hay diferencia entre una vista y una tabla "
+"base. Esto es transparente a nivel de base de datos, aunque algunos DBMS no "
+"soportan correctamente las vistas, especialmente con las actualizaciones. A "
+"veces usted quiere utilizar una vista, pero no puede crear una en la base de "
+"datos (por ejemplo, con un esquema heredado). En este caso, usted puede "
+"mapear una entidad inmutable de sólo lectura a una expresión de subconsulta "
+"SQL dada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly and that queries against the derived entity do not return "
+"stale data. The <literal>&lt;subselect&gt;</literal> is available both as an "
+"attribute and a nested mapping element."
+msgstr ""
+"Declara las tablas con las cuales se debe sincronizar esta entidad, "
+"asegurándose de que el auto-vaciado ocurra correctamente y que las consultas "
+"frente a la entidad derivada no devuelvan datos desactualizados. El "
+"<literal>&lt;subselect&gt;</literal> se encuentra disponible tanto como un "
+"atributo y como un elemento anidado de mapeo."
+
+#. Tag: title
+#, no-c-format
+msgid "id"
+msgstr "id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal>&lt;id&gt;</"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"Las clases mapeadas <emphasis>tienen</emphasis> que declarar la columna de "
+"clave primaria de la tabla de la base de datos. La mayoría de las clases "
+"también tendrán una propiedad de estilo Javabeans que tenga el identificador "
+"único de una instancia. El elemento <literal>&lt;id&gt;</literal> define el "
+"mapeo de esa propiedad a la columna de clave primaria."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the name of the identifier property."
+msgstr ""
+"<literal>name</literal> (opcional): El nombre de la propiedad del "
+"identificador. s"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr ""
+"<literal>type</literal> (opcional): un nombre que indica el tipo de "
+"Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto es el nombre de la "
+"propiedad): El nombre de la columna de la clave principal."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): an identifier property value that indicates an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - por defecto es un valor "
+"\"sensible\"): Un valor de la propiedad identificadora que indica que una "
+"instancia está recién instanciada (sin guardar), distinguiéndola de las "
+"instancias separadas que fueron guardadas o cargadas en una sesión previa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"<literal>access</literal> (opcional - por defecto es <literal>property</"
+"literal>): La estrategia que Hibernate debe utilizar para acceder al valor "
+"de la propiedad. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"Si se omite el atributo <literal>name</literal>, se asume que la clase no "
+"tiene propiedad identificadora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"El atributo <literal>unsaved-value</literal> casi nunca se necesita en "
+"Hibernate3."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is an alternative <literal>&lt;composite-id&gt;</literal> declaration "
+"that allows access to legacy data with composite keys. Its use is strongly "
+"discouraged for anything else."
+msgstr ""
+"Hay una declaración <literal>&lt;composite-id&gt;</literal> opcional para "
+"permitir acceso a los datos heredados con claves compuestas. Le disuadimos "
+"seriamente de su utilización para cualquier otra cosa."
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "Generador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;generator&gt;</literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal>&lt;param&gt;</"
+"literal> element."
+msgstr ""
+"El elemento hijo opcional <literal>&lt;generator&gt;</literal> nombra una "
+"clase Java utilizada para generar identificadores únicos para instancias de "
+"la clase persistente. De requerirse algún parámetro para configurar o "
+"inicializar la instancia del generador, se pasa utilizando el elemento "
+"<literal>&lt;param&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface. Some "
+"applications can choose to provide their own specialized implementations, "
+"however, Hibernate provides a range of built-in implementations. The "
+"shortcut names for the built-in generators are as follows:"
+msgstr ""
+"Todos los generadores implementan la interfaz <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. Esta es una interfaz muy simple. Algunas "
+"aplicaciones pueden decidir brindar sus propias implementaciones "
+"especializadas. Sin embargo, Hibernate provee un rango de implementaciones "
+"ya incorporadas. Los nombres de atajo para los generadores incorporados son "
+"los siguientes:"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>increment</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"genera indentificadores de tipo <literal>long</literal>, <literal>short</"
+"literal> o <literal>int</literal> que sólamente son únicos cuando ningún "
+"otro proceso está insertando datos en la misma tabla. <emphasis>No lo "
+"utilice en un clúster.</emphasis>"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"soporta columnas de identidad en DB2, MySQL, MS SQL Server, Sybase y "
+"HypersonicSQL. El identificador devuelto es de tipo <literal>long</literal>, "
+"<literal>short</literal> o <literal>int</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>sequence</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"usa una secuencia en DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generador "
+"en Interbase. El identificador devuelto es de tipo <literal>long</literal>, "
+"<literal>short</literal> o <literal>int</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>hilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"utiliza un algoritmo alto/bajo para generar eficientemente identificadores "
+"de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</"
+"literal>, dada una tabla y columna como fuente de valores altos (por defecto "
+"<literal>hibernate_unique_key</literal> y <literal>next_hi</literal> "
+"respectivamente). El algoritmo alto/bajo genera identificadores que son "
+"únicos sólamente para una base de datos particular."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>seqhilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"utiliza un algoritmo alto/bajo para generar eficientemente identificadores "
+"de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</"
+"literal>, dada una secuencia de base de datos."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>uuid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string that "
+"are unique within a network (the IP address is used). The UUID is encoded as "
+"a string of 32 hexadecimal digits in length."
+msgstr ""
+"utiliza un algoritmo UUID de 128 bits para generar identificadores de tipo "
+"cadena, únicos dentro de una red (se utiliza la direccón IP). El UUID se "
+"codifica como una cadena hexadecimal de 32 dígitos de largo."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>guid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr "utiliza una cadena GUID generada por base de datos en MS SQL Server y MySQL."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>native</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"selects <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"selecciona <literal>identity</literal>, <literal>sequence</literal> o "
+"<literal>hilo</literal> dependiendo de las capacidades de la base de datos "
+"subyacente. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>assigned</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"lets the application assign an identifier to the object before <literal>save"
+"()</literal> is called. This is the default strategy if no <literal>&lt;"
+"generator&gt;</literal> element is specified."
+msgstr ""
+"deja a la aplicación asignar un identificador al objeto antes de que se "
+"llame a <literal>save()</literal>. Esta es la estrategia por defecto si no "
+"se especifica un elemento <literal>&lt;generator&gt;</literal>. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>select</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"retrieves a primary key, assigned by a database trigger, by selecting the "
+"row by some unique key and retrieving the primary key value."
+msgstr ""
+"recupera una clave principal asignada por un disparador de base de datos "
+"seleccionando la fila por alguna clave única y recuperando el valor de la "
+"clave principal."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>foreign</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses the identifier of another associated object. It is usually used in "
+"conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key "
+"association."
+msgstr ""
+"utiliza el identificador de otro objeto asociado. Generalmente se usa en "
+"conjunto cón a una asociación de clave principal <literal>&lt;one-to-one&gt;"
+"</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a specialized sequence generation strategy that utilizes a database sequence "
+"for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to return the generated identifier value as part of the "
+"insert statement execution. This strategy is only supported on Oracle 10g "
+"drivers targeted for JDK 1.4. Comments on these insert statements are "
+"disabled due to a bug in the Oracle drivers."
+msgstr ""
+"una estrategia de generación de secuencias especilizadas que utiliza una "
+"secuencia de base de datos para el valor real de la generación, pero combina "
+"esto junto con JDBC3 getGeneratedKeys para devolver el valor del "
+"identificador generado como parte de la ejecución de la declaración de "
+"inserción. Esta estrategia está soportada sólamente en los controladores 10g "
+"de Oracle destinados para JDK1.4. Los comentarios en estas declaraciones de "
+"inserción están desactivados debido a un error en los controladores de "
+"Oracle."
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "Algoritmo alto/bajo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm. The first "
+"implementation requires a \"special\" database table to hold the next "
+"available \"hi\" value. Where supported, the second uses an Oracle-style "
+"sequence."
+msgstr ""
+"Los generadores <literal>hilo</literal> y <literal>seqhilo</literal> brindan "
+"dos implementaciones opcionales del algoritmo alto/bajo. La primera "
+"implementación necesita de una tabla \"especial\" de base de datos para "
+"tener el siguiente valor \"alto\" disponible. La segunda utiliza una "
+"secuencia del estilo de Oracle, donde se encuentre soportada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, you cannot use <literal>hilo</literal> when supplying your "
+"own <literal>Connection</literal> to Hibernate. When Hibernate uses an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must configure the <literal>hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+"Desafortunadamente, no puede utilizar <literal>hilo</literal> cuando le "
+"provea su propia <literal>Connection</literal> a Hibernate. Cuando Hibernate "
+"está utilizando una fuente de datos del servidor de aplicaciones para "
+"obtener conexiones alistadas con JTA, usted tiene que configurar el "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "Algoritmo UUID"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM that is accurate to a "
+"quarter second, system time and a counter value that is unique within the "
+"JVM. It is not possible to obtain a MAC address or memory address from Java "
+"code, so this is the best option without using JNI."
+msgstr ""
+"El UUID contiene: la dirección IP, el tiempo de iniciación de la MVJ, con "
+"una precisión de un cuarto de segundo, el tiempo de sistema y un valor de "
+"contador (único en la MVJ). No es posible obtener una dirección MAC o una "
+"dirección de memoria desde el código Java, así que esto es la mejor opción "
+"sin tener que utilizar JNI."
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "Columnas de identidad y secuencias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you can use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"can use <literal>sequence</literal> style key generation. Both of these "
+"strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+"Para las bases de datos que soportan columnas de identidad (DB2, MySQL, "
+"Sybase, MS SQL), puede utilizar generación de claves <literal>identity</"
+"literal>. Para las bases de datos que soportan las secuencias (DB2, Oracle, "
+"PostgreSQL, Interbase, McKoi, SAP DB) puede utilizar la generación de claves "
+"del estilo <literal>sequence</literal>. Ambas estrategias requieren dos "
+"consultas SQL para insertar un nuevo objeto. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will, "
+"depending on the capabilities of the underlying database, choose from the "
+"<literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</"
+"literal> strategies."
+msgstr ""
+"Para desarrollos a través de plataformas, la estrategia <literal>native</"
+"literal> eligirá entre las estrategias <literal>identity</literal>, "
+"<literal>sequence</literal> e <literal>hilo</literal>, dependiendo de las "
+"capacidades de la base de datos subyacente."
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "Identificadores asignados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the application to assign identifiers, as opposed to having "
+"Hibernate generate them, you can use the <literal>assigned</literal> "
+"generator. This special generator uses the identifier value already assigned "
+"to the object's identifier property. The generator is used when the primary "
+"key is a natural key instead of a surrogate key. This is the default "
+"behavior if you do not specify a <literal>&lt;generator&gt;</literal> "
+"element."
+msgstr ""
+"Si quiere que la aplicación asigne los identificadores, en contraposición a "
+"que los genere Hibernate, puede utilizar el generador <literal>assigned</"
+"literal>. Este generador especial utilizará el valor identificador ya "
+"asignado a la propiedad identificadora del objeto. Este generador se utiliza "
+"cuando la clave principal es una clave natural en vez de una clave "
+"sustituta. Este es el comportamiento por defecto si no especifica un "
+"elemento <literal>&lt;generator&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go "
+"to the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"El generador <literal>assigned</literal> hace que Hibernate utilice "
+"<literal>unsaved-value=\"undefined\"</literal>. Esto fuerza a Hibernate a ir "
+"a la base de datos para determinar si una instancia es transitoria o "
+"separada, a menos de que haya una propiedad de versión o sello de fecha, o "
+"que usted defina <literal>Interceptor.isUnsaved()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "Claves primarias asignadas por disparadores"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr ""
+"Hibernate no genera DDL con disparadores. Es para los esquemas heredados "
+"sólamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal>. It is defined by the class, as a "
+"natural key and a surrogate key named <literal>person_id</literal>, whose "
+"value is generated by a trigger."
+msgstr ""
+"En el ejemplo anterior, hay una propiedad única llamada "
+"<literal>socialSecurityNumber</literal>, Esta está definida por la clase, "
+"como una clave natural y una clave sustituta llamada <literal>person_id</"
+"literal>, cuyo valor es generado por un disparador."
+
+#. Tag: title
+#, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "Generadores mejorados del identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization Optimization means that "
+"you do not have to query the database for every request for a new identifier "
+"value. These two new generators are intended to take the place of some of "
+"the named generators described above, starting in 3.3.x. However, they are "
+"included in the current releases and can be referenced by FQN."
+msgstr ""
+"Desde el lanzamiento 3.2.3, hay 2 nuevos generadores, los cuales representan "
+"una nueva reflexión sobre dos aspectos diferentes de la generación del "
+"identificador. El primer aspecto es qúe tan portátil es la base de datos; el "
+"segudno es la optimización. La optimización significa que no tiene que "
+"preguntarle a la base de datos por toda petición de un nuevo valor "
+"identificador. Estos dos nuevos generadores tienen el propósito de tomar el "
+"lugar de algunos de los generadores nombrados que describimos anteriormente, "
+"empezando por 3.3.x. Sin embargo, están incluídos en los lanzamientos "
+"actuales y puede ser referenciados por FQN."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended, firstly, as a "
+"replacement for the <literal>sequence</literal> generator and, secondly, as "
+"a better portability generator than <literal>native</literal>. This is "
+"because <literal>native</literal> generally chooses between "
+"<literal>identity</literal> and <literal>sequence</literal> which have "
+"largely different semantics that can cause subtle issues in applications "
+"eyeing portability. <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, however, achieves portability in a "
+"different manner. It chooses between a table or a sequence in the database "
+"to store its incrementing values, depending on the capabilities of the "
+"dialect being used. The difference between this and <literal>native</"
+"literal> is that table-based and sequence-based storage have the same exact "
+"semantic. In fact, sequences are exactly what Hibernate tries to emulate "
+"with its table-based generators. This generator has a number of "
+"configuration parameters:"
+msgstr ""
+"El primero de estos nuevos generadores es <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, el cual tiene el propósito, primero, de "
+"ser el reemplazo para el generador <literal>sequence</literal> y segundo, de "
+"ser un generador de portabilidad mejor que <literal>native</literal>. Esto "
+"se debe a que <literal>native</literal> generalmente escoge entre "
+"<literal>identity</literal> y <literal>sequence</literal>, los cuales tienen "
+"una gran diferencia semántica que puede crear problemas sutiles en las "
+"aplicaciones mirando la portabilidad. Sin embargo, <literal>org.hibernate.id."
+"enhanced.SequenceStyleGenerator</literal>, logra la portabilidad de una "
+"manera diferente. Escoge entre una tabla o una secuencia en la base de datos "
+"para almacenar sus valores en subida, dependiendo de las capacidades del "
+"dialecto que se está utilizando. La diferencia enter esto y <literal>native</"
+"literal> es que el almacenamiento basado en tablas y secuencias tienen la "
+"misma semántica. De hecho, las secuencias son exactamente lo que Hibernate "
+"trata de emular con sus generadores basados en tablas. Este generador tiene "
+"un número de parámetros de configuración:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): the name of the sequence or table to "
+"be used."
+msgstr ""
+"<literal>sequence_name</literal> (opcional, por defecto es "
+"<literal>hibernate_sequence</literal>): el nombre de la secuencia o la tabla "
+"a utilizar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): the initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typically named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>initial_value</literal> (opcional, por defecto es <literal>1</"
+"literal>): el valor inicial a recuperarse de la secuencia/tabla. En términos "
+"de creación de secuencias, esto es análogo a la cláusula que usualmente se "
+"llama \"STARTS WITH\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): the value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause "
+"typically named \"INCREMENT BY\"."
+msgstr ""
+"<literal>increment_size</literal> (opcional - por defecto es <literal>1</"
+"literal>): el valor por el cual las llamadas subsecuentes a la secuencia/"
+"tabla deben diferir. En términos de creación de secuencias, esto es análogo "
+"a la cláusula que usualmente se llama \"INCREMENT BY\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional - defaults to <literal>false</"
+"literal>): should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force_table_use</literal> (opcional - por defecto es "
+"<literal>false</literal>): ¿debemos forzar el uso de una tabla como la "
+"estructura de respaldo aunque puede que el dialecto soporte la secuencia?"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional - defaults to <literal>next_val</"
+"literal>): only relevant for table structures, it is the name of the column "
+"on the table which is used to hold the value."
+msgstr ""
+"<literal>value_column</literal> (opcional - por defecto es "
+"<literal>next_val</literal>): solo es relevante para estructuras de tablas, "
+"es el nombre de la columna en la tabla, la cual se usa para mantener el "
+"valor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" /"
+">"
+msgstr ""
+"<literal>optimizer</literal> (opcional - por defecto es <literal>none</"
+"literal>): Consulte <xref linkend=\"mapping-declaration-id-enhanced-"
+"optimizers\" />"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, which is intended, firstly, as a replacement for "
+"the <literal>table</literal> generator, even though it actually functions "
+"much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</"
+"literal>, and secondly, as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> that utilizes the notion of "
+"pluggable optimizers. Essentially this generator defines a table capable of "
+"holding a number of different increment values simultaneously by using "
+"multiple distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+"El segundo de estos nuevos generadores es <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, el cual tiene el propósito, primero, de reemplazar "
+"el generador <literal>table</literal>, auqnue de hecho funciona como "
+"<literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>, y "
+"segundo, como una re-implementación de <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> que utiliza la noción de los "
+"optimizadores enchufables. Esencialmente, este generador define una tabla "
+"capaz de mantener un número de valores de incremento diferentes de manera "
+"simultánea usando múltiples filas tecleadas claramente. Este generador tiene "
+"un número de parámetros de configuración:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional - defaults to "
+"<literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+"<literal>table_name</literal> (opcional - por defecto es "
+"<literal>hibernate_sequences</literal>): el nombre de la tabla a utilizar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional - defaults to "
+"<literal>next_val</literal>): the name of the column on the table that is "
+"used to hold the value."
+msgstr ""
+"<literal>value_column_name</literal> (opcional - por defecto es "
+"<literal>next_val</literal>): el nombre de la columna en la tabla que se "
+"utiliza para mantener el valor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional - defaults to "
+"<literal>sequence_name</literal>): the name of the column on the table that "
+"is used to hold the \"segment key\". This is the value which identifies "
+"which increment value to use."
+msgstr ""
+"<literal>segment_column_name</literal> (opcional - por defecto es "
+"<literal>sequence_name</literal>): el nombre de la columna en la tabla que "
+"se utiliza para mantener la \"llave segmento\". Este es el valor que "
+"identifica que valor de incremento utilizar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional - defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>segment_value</literal> (opcional - por defecto es "
+"<literal>default</literal>): El valor \"llave segmento\" para el segmento "
+"desde el cual queremos sacar los valores de incremento para este generador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional - defaults to "
+"<literal>255</literal>): Used for schema generation; the column size to "
+"create this segment key column."
+msgstr ""
+"<literal>segment_value_length</literal> (opcional - por defecto es "
+"<literal>255</literal>): Se utiliza para la generación de esquemas; el "
+"tamaño de la columna a crear esta columna de llave de segmento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional - defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>initial_value</literal> (opcional - por defecto es <literal>1</"
+"literal>): El valor inicial a recuperar de la tabla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>increment_size</literal> (opcional - por defecto es <literal>1</"
+"literal>): El valor por el cual deben diferir las llamadas subsecuentes a la "
+"tabla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal></literal>): "
+"See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+"<literal>optimizer</literal> (opcional - por defecto es <literal></"
+"literal>): Consulte <xref linkend=\"mapping-declaration-id-enhanced-"
+"optimizers\" />"
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generator optimization"
+msgstr "Optimización del generador del identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For identifier generators that store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you can group a bunch of them in memory and "
+"only hit the database when you have exhausted your in-memory value group. "
+"This is the role of the pluggable optimizers. Currently only the two "
+"enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> "
+"support this operation."
+msgstr ""
+"Para los generadores del identificador que almacenan valores en la base de "
+"datos, es ineficiente el acceder a la base de datos en toda llamada para "
+"generar un nuevo valor identificador. En lugar, puede agrupar una serie de "
+"ellos en la memoria y solo acceder a la base de datos cuando haya acabado su "
+"grupo de valores en memoria. Este es el papel de los optimizadores "
+"enchufables. Actualmente solo los dos generadores mejorados (<xref linkend="
+"\"mapping-declaration-id-enhanced\" />) soportan esta operación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): this will not perform any optimizations and hit the database for "
+"each and every request."
+msgstr ""
+"<literal>none</literal> (generalmente este el es valor predeterminado si no "
+"se especifica un optimizador): esto no realizará ninguna optimización y "
+"accederá a la base de datos para toda petición."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\". The "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+"<literal>hilo</literal>: aplica un algoritmo hi/lo a los valores recuperados "
+"de la base de datos. Se espera que los valores de la base de datos para este "
+"optimizador sean secuenciales. Los valores recuperados de la estructura de "
+"la base de datos para este optimizador indican el \"número del grupo\". El "
+"<literal>increment_size</literal> se multiplica por ese valor en la memoria "
+"para definir un grupo \"hi value\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this "
+"optimizer attempts to minimize the number of hits to the database. Here, "
+"however, we simply store the starting value for the \"next group\" into the "
+"database structure rather than a sequential value in combination with an in-"
+"memory grouping algorithm. Here, <literal>increment_size</literal> refers to "
+"the values coming from the database."
+msgstr ""
+"<literal>pooled</literal>: como en el caso de <literal>hilo</literal>, este "
+"optimizador trata de minimizar el número de hits a la base de datos. Sin "
+"embargo, aquí simplemente almacenamos el valor inicial para el \"siguiente "
+"grupo\" en la estructura de la base de datos en lugar de un valor secuencial "
+"en combinación con un algoritmo de agrupamiento en-memoria. Aquí, "
+"<literal>increment_size</literal> ser refiere a los valores que provienen de "
+"la base de datos."
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "composite-id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A table with a composite key can be mapped with multiple properties of the "
+"class as identifier properties. The <literal>&lt;composite-id&gt;</literal> "
+"element accepts <literal>&lt;key-property&gt;</literal> property mappings "
+"and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+"Una tabla con clave compuesta se puede mapear con múltiples propiedades de "
+"la clase como propiedades identificadoras. El elemento <literal>&lt;"
+"composite-id&gt;</literal> acepta los mapeos de propiedad <literal>&lt;key-"
+"property&gt;</literal> y los mapeos <literal>&lt;key-many-to-one&gt;</"
+"literal> como elementos hijos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+"La clase persistente <emphasis>tiene</emphasis> que sobrescribir "
+"<literal>equals()</literal> y <literal>hashCode()</literal> para implementar "
+"la igualdad del identificador compuesto. También tiene que implementar "
+"<literal>Serializable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, this approach means that a persistent object is its own "
+"identifier. There is no convenient \"handle\" other than the object itself. "
+"You must instantiate an instance of the persistent class itself and populate "
+"its identifier properties before you can <literal>load()</literal> the "
+"persistent state associated with a composite key. We call this approach an "
+"<emphasis>embedded</emphasis> composite identifier, and discourage it for "
+"serious applications."
+msgstr ""
+"Desafortunadamente, este enfoque significa que un objeto persistente es su "
+"propio identificador. No existe otra \"asa\" conveniente más que el objeto "
+"mismo. Debe instanciar una instancia de la clase persistente y poblar sus "
+"propiedades identificadoras antes de que pueda <literal>load()</literal> el "
+"estado persistente asociado a una clave compuesta. Este enfoque lo "
+"denominamos un identificador compuesto <emphasis>incluído</emphasis> y no lo "
+"recomendamos para aplicaciones serias."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal>&lt;"
+"composite-id&gt;</literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"Un segundo enfoque es lo que denominamos un identificador compuesto "
+"<emphasis>mapeado</emphasis>, en donde las propiedades del identificador "
+"nombradas dentro del elemento <literal>&lt;composite-id&gt;</literal> son "
+"duplicadas tanto en la clase persistente como en la clase identificadora "
+"separada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement <literal>Serializable</literal>. "
+"The main disadvantage of this approach is code duplication."
+msgstr ""
+"En este ejemplo, tanto la clase identificadora compuesta "
+"<literal>MedicareId</literal> como la clase de entidad misma tienen "
+"propiedades denominadas <literal>medicareNumber</literal> y "
+"<literal>dependent</literal>. La clase identificadora tiene que sobrescribir "
+"<literal>equals()</literal> y <literal>hashCode()</literal> e implementar "
+"<literal>Serializable</literal>. La desventaja principal de este enfoque es "
+"la duplicación de código."
+
+#. Tag: para
+#, no-c-format
+msgid "The following attributes are used to specify a mapped composite identifier:"
+msgstr ""
+"Los siguientes atributos se utilizan para especificar un identificador "
+"compuesto mapeado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional - defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (opcional, por defecto es <literal>false</"
+"literal>): indica que se utiliza un identificador compuesto mapeado y que "
+"los mapeos de propiedad contenidos se refieren tanto a la clase de entidad "
+"como a la clase identificadora compuesta. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - but required for a mapped composite "
+"identifier): the class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (opcional, pero requerida por un identificador "
+"compuesto mapeado): La clase se utiliza como un identificador compuesto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach, where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\" />. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"Vamos a decribir un tercer enfoque, aún más práctico, en donde se implementa "
+"el identificador compuesto como una clase componente en <xref linkend="
+"\"components-compositeid\"/>. Los atributos descritos a continuación "
+"sólamente aplican a este enfoque alternativo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional - required for this approach): a property "
+"of component type that holds the composite identifier. Please see chapter 9 "
+"for more information."
+msgstr ""
+"<literal>name</literal> (opcional, se necesita para este enfoque): Una "
+"propiedad de tipo componente que tiene el identificador compuesto. Consulte "
+"el capítulo 9 para obtener mayor información. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+"<literal>access</literal> (opcional - por defecto es <literal>property</"
+"literal>): La estrategia que Hibernate utiliza para acceder al valor de la "
+"propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the component class used as a composite "
+"identifier. Please see the next section for more information."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto es el tipo de propiedad "
+"determinado por la reflección): la clase componente utilizada como un "
+"identificador compuesto. Vea la siguiente sección para obtener mayor "
+"información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The third approach, an <emphasis>identifier component</emphasis>, is "
+"recommended for almost all applications."
+msgstr ""
+"Este tercer enfoque, un <emphasis>componente identificador</emphasis> es el "
+"que recomendamos para casi todas las aplicaciones. "
+
+#. Tag: title
+#, no-c-format
+msgid "Discriminator"
+msgstr "Discriminador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;discriminator&gt;</literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping "
+"strategy. It declares a discriminator column of the table. The discriminator "
+"column contains marker values that tell the persistence layer what subclass "
+"to instantiate for a particular row. A restricted set of types can be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"Se necesita el elemento <literal>&lt;discriminator&gt;</literal> para la "
+"persistencia polimórfica utilizando la estrategia de mapeo de tabla-por-"
+"jerarquía-de-clases. Declara una columna discriminadora de la tabla. La "
+"columna discriminidora contiene valores de marca que le dicen a la capa de "
+"persistencia qué subclase instanciar para una fila en particular. Se puede "
+"utilizar un conjunto restringido de tipos: <literal>string</literal>, "
+"<literal>character</literal>, <literal>integer</literal>, <literal>byte</"
+"literal>, <literal>short</literal>, <literal>boolean</literal>, "
+"<literal>yes_no</literal>, <literal>true_false</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>): "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto es <literal>class</"
+"literal>) el nombre de la columna discriminadora. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>): "
+"a name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (opcional - por defecto es <literal>string</"
+"literal>) un nombre que indica el tipo Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>): "
+"\"forces\" Hibernate to specify the allowed discriminator values, even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (opcional - por defecto es <literal>false</"
+"literal>) \"fuerza\" a Hibernate para especificar los valores "
+"discriminadores permitidos incluso cuando se recuperan todas las instancias "
+"de la clase raíz. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. It tells Hibernate not to include the "
+"column in SQL <literal>INSERTs</literal>."
+msgstr ""
+"<literal>insert</literal> (opcional - por defecto es <literal>true</"
+"literal>): establecido como <literal>false</literal> si su columna "
+"discriminadora también es parte de un identificador mapeado compuesto. Lle "
+"dice a Hibernate que no incluya la columna en los SQLs <literal>INSERT</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. It allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (opcional): una expresión SQL arbitraria que se "
+"ejecuta cuando se tenga que evaluar un tipo. Permite la discriminación con "
+"base en el contenido."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal>&lt;"
+"class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+"Los valores reales de la columna discriminadora están especificados por el "
+"atributo <literal>discriminator-value</literal> de los elementos "
+"<literal>&lt;class&gt;</literal> y <literal>&lt;subclass&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is only useful if the table contains "
+"rows with \"extra\" discriminator values that are not mapped to a persistent "
+"class. This will not usually be the case."
+msgstr ""
+"El atributo <literal>force</literal> es sólamente útil si la tabla contiene "
+"filas con valores discriminadores \"extra\" que no estén mapeados a una "
+"clase persistente. Generalmente este no es el caso."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>formula</literal> attribute allows you to declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+"El atributo <literal>formula</literal> le permite declarar una expresión SQL "
+"arbitraria que será utilizada para evaluar el tipo de una fila. Por ejemplo: "
+
+#. Tag: title
+#, no-c-format
+msgid "Version (optional)"
+msgstr "Versión (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;version&gt;</literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis>. See below for more "
+"information:"
+msgstr ""
+"El elemento <literal>&lt;version&gt;</literal> es opcional e indica que la "
+"tabla contiene datos versionados. Esto es particularmente útil si planea "
+"utilizar <emphasis>transacciones largas</emphasis>. Vea a continuación para "
+"obtener mayor información:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto es el nombre de la "
+"propiedad): El nombre de la columna que tiene el número de la versión."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a property of the persistent class."
+msgstr "<literal>name</literal>: El nombre de una propiedad de la clase persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"the type of the version number."
+msgstr ""
+"<literal>type</literal> (opcional - por defecto es <literal>integer</"
+"literal>): El tipo del número de la versión. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+"<literal>access</literal> (opcional - por defecto es <literal>property</"
+"literal>): La estrategia que Hibernate utiliza para acceder al valor de la "
+"propiedad. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - por defecto es "
+"<literal>undefined</literal>): Un valor de la propiedad de versión que "
+"indica que una instancia se encuentra recién instanciada (sin guardar), "
+"distinguiéndola de las instancias separadas que se guardaron o se cargaron "
+"en una sesión previa. <literal>undefined</literal> especifica que se debe "
+"utilizar el valor de la propiedad identificadora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this version property value is generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - por defecto es <literal>never</"
+"literal>): Especifica que este valor de la propiedad de la versión es "
+"generado por la base de datos. Vea la discusión de las <link linkend=\"mapping-generated"
+"\">propiedades generadas</link> para obtener mayor información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"specifies whether the version column should be included in SQL insert "
+"statements. It can be set to <literal>false</literal> if the database column "
+"is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (opcional - por defectos es <literal>true</"
+"literal>): Especifica si la columna de la versión debe incluirse en las "
+"declaraciones de inserción SQL. Se puede configurar como <literal>false</"
+"literal> si la columna de la base de datos se define con un valor "
+"predeterminado de <literal>0</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version numbers can be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"Los números de versión pueden ser de tipo Hibernate <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> o <literal>calendar</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance. Hibernate will detect any instance with a null version or "
+"timestamp as transient, irrespective of what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid problems with transitive "
+"reattachment in Hibernate. It is especially useful for people using assigned "
+"identifiers or composite keys</emphasis>."
+msgstr ""
+"Una propiedad de versión o de sello de fecha nunca debe ser nula para una "
+"instancia separada. Hibernate detectará cualquier instancia con una versión "
+"o sello de fecha nulo como transitoria, sin importar qué otras estrategias "
+"<literal>unsaved-value</literal> se hayan especificado. <emphasis>El "
+"declarar una propiedad de versión o sello de fecha nulable es una forma "
+"fácil de evitar cualquier problema con la re-unión transitiva en Hibernate. "
+"Es especialmente útil para la gente que utiliza identificadores asignados o "
+"claves compuestas</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Timestamp (optional)"
+msgstr "Timestamp (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;timestamp&gt;</literal> element indicates that the "
+"table contains timestamped data. This provides an alternative to versioning. "
+"Timestamps are a less safe implementation of optimistic locking. However, "
+"sometimes the application might use the timestamps in other ways."
+msgstr ""
+"El elemento opcional <literal>&lt;timestamp&gt;</literal> indica que la "
+"tabla contiene datos con sellos de fecha. Esto brinda una alternativa al "
+"versionado. Los sellos de tiempo (timestamps) son por naturaleza una "
+"implementación menos segura del bloqueo optimista. Sin embargo, a veces la "
+"aplicación puede usar los sellos de fecha de otras maneras."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto es el nombre de la "
+"propiedad): El nombre de una columna que tiene el sello de fecha. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: El nombre de una propiedad del estilo JavaBeans de "
+"tipo Java <literal>Date</literal> o <literal>Timestamp</literal> de la clase "
+"persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - por defecto es <literal>null</"
+"literal>): Un valor de propiedad de versión que indica que una instancia "
+"está recién instanciada (sin guardar), distinguiéndola de instancias "
+"separadas que hayan sido guardadas o cargadas en una sesión previa. "
+"<literal>Undefined</literal> especifica que debe utilizarse el valor de la "
+"propiedad identificadora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"Where should Hibernate retrieve the timestamp value from? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\". It "
+"is safer to use in clustered environments. Not all <literal>Dialects</"
+"literal> are known to support the retrieval of the database's current "
+"timestamp. Others may also be unsafe for usage in locking due to lack of "
+"precision (Oracle 8, for example)."
+msgstr ""
+"<literal>source</literal> (opcional - por defecto es <literal>vm</literal>): "
+"¿Desde dónde debe recuperar Hibernate el valor del sello de fecha? ¿Desde la "
+"base de datos o desde la MVJ actual? Los sellos de fecha con base en la base "
+"de datos provocan un gasto general debido a que Hibernate tiene que llegar "
+"hasta la base de datos para poder determinar el \"siguiente valor\". Es más "
+"seguro utilizarlo en entornos con clústers. No todos los <literal>Dialects</"
+"literal> soportan la recuperación del sello de fecha actual de la base de "
+"datos. Los otros pueden ser poco seguros para utilizarlos como bloqueo "
+"debido a la falta de precisión (por ejemplo, Oracle 8)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - por defecto es <literal>never</"
+"literal>): Especifica que este valor de la propiedad del sello de fecha en "
+"realidad es generado por la base de datos. Consulte la discusión de las <link linkend=\"mapping-"
+"generated\">propiedades generadas</link> para obtener mayor información."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db"
+"\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp"
+"\"&gt;</literal>"
+msgstr ""
+"<literal>&lt;Timestamp&gt;</literal> es equivalente a <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. Y <literal>&lt;timestamp source=\"db\"&gt;"
+"</literal> es equivalente a <literal>&lt;version type=\"dbtimestamp\"&gt;</"
+"literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Property"
+msgstr "Propiedad"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;property&gt;</literal> element declares a persistent "
+"JavaBean style property of the class."
+msgstr ""
+"El elemento <literal>&lt;property&gt;</literal> declara una propiedad "
+"persistente estilo JavaBean de la clase. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr ""
+"<literal>name</literal>: el nombre de la propiedad, con la letra inicial en "
+"minúscula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This can also be specified by "
+"nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto es el nombre de la "
+"propiedad): El nombre de la columna de la tabla de base de datos mapeada. "
+"Esto se puede especificar también con los elemento(s) anidado(s) "
+"<literal>&lt;column&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica que las columnas mapeadas deben ser incluídas en las "
+"declaraciones SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal> . "
+"Especificando ambas como <literal>false</literal> permite una propiedad "
+"\"derivada\", cuyo valor se inicia desde alguna otra propiedad que mapee a "
+"la misma columna (o columnas) o por un disparador u otra aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (opcional): una expresión SQL que define el valor "
+"para una propiedad <emphasis>computada</emphasis>. Las propiedades "
+"computadas no tienen una columna mapeada propia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this property should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto es <literal>false</"
+"literal>): Especifica que se debe recuperar perezosamente esta propiedad "
+"cuando se acceda por primera vez la variable de instancia. Requiere "
+"instrumentación de código byte en tiempo de compilación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (opcional): Activa la generación DDL de una "
+"restricción de unicidad para las columnas. Además, permite que ésta sea el "
+"objetivo de una <literal>property-ref</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Activa la generación DDL de una "
+"restricción de nulabilidad para las columnas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, it determines if a "
+"version increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica que las actualizaciones a esta propiedad requieren o "
+"no de la obtención de un bloqueo optimista. En otras palabras, determina si "
+"debe ocurrir un incremento de versión cuando la propiedad se encuentre "
+"desactualizada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - por defecto es <literal>never</"
+"literal>): Especifica que este valor de la propiedad es de hecho generado "
+"por la base de datos. Consulte discusión sobre las <link linkend=\"mapping-"
+"generated\">propiedades generadas</link> para obtener mayor información. "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>escribanombre</emphasis> puede ser:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Hibernate basic type: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+"El nombre de un tipo básico de Hibernate: <literal>integer, string, "
+"character, date, timestamp, float, binary, serializable, object, blob</"
+"literal>, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Java class with a default basic type: <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal> etc."
+msgstr ""
+"El nombre de una clase Java con un tipo básico predeterminado: <literal>int, "
+"float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql."
+"Clob</literal>, etc."
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "El nombre de una clase Java serializable."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class name of a custom type: <literal>com.illflow.type.MyCustomType</"
+"literal> etc."
+msgstr ""
+"El nombre declase de un tipo personalizado: <literal>com.illflow.type."
+"MyCustomType</literal> etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property and guess the correct Hibernate type. Hibernate will attempt to "
+"interpret the name of the return class of the property getter using, in "
+"order, rules 2, 3, and 4. In certain cases you will need the <literal>type</"
+"literal> attribute. For example, to distinguish between <literal>Hibernate."
+"DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a "
+"custom type."
+msgstr ""
+"Si no especifica un tipo, Hibernate utilizará reflección sobre la propiedad "
+"mencionada para deducir el tipo Hibernate correcto. Hibernate intentará "
+"interpretar el nombre de la clase de retorno del getter de la propiedad "
+"utilizando las reglas 2, 3 y 4 en ese mismo orden. En algunos casos "
+"necesitará el atributo <literal>type</literal>. Por ejemplo, para distinguir "
+"entre <literal>Hibernate.DATE</literal> y <literal>Hibernate.TIMESTAMP</"
+"literal>, o especificar un tipo personalizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>access</literal> attribute allows you to control how Hibernate "
+"accesses the property at runtime. By default, Hibernate will call the "
+"property get/set pair. If you specify <literal>access=\"field\"</literal>, "
+"Hibernate will bypass the get/set pair and access the field directly using "
+"reflection. You can specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"El atributo <literal>access</literal> le permite controlar el cómo Hibernate "
+"accederá a la propiedad en tiempo de ejecución. Por defecto, Hibernate "
+"llamará al par de getter/setter de la propiedad. Si usted especifica "
+"<literal>access=\"field\"</literal>, Hibernate se saltará el par get/set y "
+"accederá al campo directamente utilizando reflección. Puede especificar su "
+"propia estrategia de acceso a la propiedad mencionando una clase que "
+"implemente la interfaz <literal>org.hibernate.property.PropertyAccessor</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A powerful feature is derived properties. These properties are by definition "
+"read-only. The property value is computed at load time. You declare the "
+"computation as an SQL expression. This then translates to a <literal>SELECT</"
+"literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+"Una funcionalidad especialmente poderosa son las propiedades derivadas. "
+"Estas propiedades son, por definición, de sólo lectura. El valor de la "
+"propiedad se computa en tiempo de carga. Usted declara la computación como "
+"una expresión SQL y ésta se traduce como una cláusula de subconsulta "
+"<literal>SELECT</literal> en la consulta SQL que carga una instancia:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can reference the entity table by not declaring an alias on a particular "
+"column. This would be <literal>customerId</literal> in the given example. "
+"You can also use the nested <literal>&lt;formula&gt;</literal> mapping "
+"element if you do not want to use the attribute."
+msgstr ""
+"Puede referenciar la tabla de las entidades sin declarar un alias o una "
+"columna particular. En el ejemplo dado sería <literal>customerId</literal>. "
+"También puede utilizar el elemento anidado de mapeo <literal>&lt;formula&gt;"
+"</literal> si no quiere utilizar el atributo."
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "Many-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association; a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"Una asociación ordinaria a otra clase persistente se declara utilizando el "
+"elemento <literal>many-to-one</literal>. El modelo relacional es una "
+"asociación muchos-a-uno; una clave foránea en una tabla referencia la "
+"columna (o columnas) de la clave principal de la tabla destino."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>: El nombre de la propiedad. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column. "
+"This can also be specified by nested <literal>&lt;column&gt;</literal> "
+"element(s)."
+msgstr ""
+"<literal>column</literal> (opcional): El nombre de la columna de la clave "
+"foránea. Esto también se puede especificar por medio de uno o varios "
+"elementos anidados <literal>&lt;column&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the associated class."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto es el tipo de la propiedad "
+"determinado por reflección): El nombre de la clase asociada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (opcional) especifica qué operaciones deben ir en "
+"cascada desde el objeto padre hasta el objeto asociado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"<literal>fetch</literal> (opcional - por defecto es <literal>select</"
+"literal>): Escoge entre la recuperación de unión exterior (outer-join) o la "
+"recuperación por selección secuencial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from another property that maps to "
+"the same column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - por defecto es <literal>true</"
+"literal>) especifica que las columnas mapeadas deben ser incluídas en las "
+"declaraciones SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal>. "
+"El establecer ambas como <literal>false</literal> permite una asociación "
+"puramente \"derivada\" cuyo valor es inicializado desde alguna otra "
+"propiedad que mapea a la misma columna (o columnas), por un disparador o por "
+"otra aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (opcional): El nombre de una propiedad de "
+"la clase asociada que se encuentra unida a su llave foránea. Si no se "
+"especifica, se utiliza la llave principal de la clase asociada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. By allowing this to be the target of "
+"a <literal>property-ref</literal>, you can make the association multiplicity "
+"one-to-one."
+msgstr ""
+"<literal>unique</literal> (opcional): Activa la generación DDL de una "
+"restricción de unicidad para la columna de clave foránea. Además, permite "
+"que éste sea el objetivo de una <literal>property-ref</literal>. puede hacer "
+"que la asociación sea de multiplicidad uno-a-uno."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Activa la generación DDL de una "
+"restricción de nulabilidad para las columnas de clave foránea. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. This requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto es <literal>proxy</"
+"literal>): Por defecto, las asociaciones de punto único van con proxies. "
+"<literal>lazy=\"no-proxy\"</literal> especifica que esta propiedad debe ser "
+"recuperada perezosamente cuando se acceda por primera vez a la variable de "
+"instancia. Requiere instrumentación del código byte en tiempo de "
+"compilación. <literal>lazy=\"false\"</literal> especifica que la asociación "
+"siempre será recuperada tempranamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - por defecto es <literal>exception</"
+"literal>): Especifica cómo se manejarán las claves foráneas que referencian "
+"las filas que hacen falta. <literal>ignore</literal> tratará una fila "
+"perdida como una asociación nula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class."
+msgstr ""
+"<literal>entity-name</literal> (opcional): El nombre de entidad de la clase "
+"asociada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (opcional): una expresión SQL que define el valor "
+"para una clave foránea <emphasis>computada</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are divided into "
+"three categories. First, basic operations, which include: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>; "
+"second, special values: <literal>delete-orphan</literal>; and third,"
+"<literal>all</literal> comma-separated combinations of operation names: "
+"<literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,"
+"delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> "
+"for a full explanation. Note that single valued, many-to-one and one-to-one, "
+"associations do not support orphan delete."
+msgstr ""
+"Establecer el valor del atributo <literal>cascade</literal> con cualquier "
+"valor significativo diferente de <literal>none</literal> propagará ciertas "
+"operaciones al objeto asociado. Los valores significativos están divididos "
+"en tres categorías. Primero, las operaciones básicas, las cuales incluyen: "
+"<literal>persist, merge, delete, save-update, evict, replicate, lock y "
+"refresh</literal>; segundo, los valores especiales <literal>delete-orphan</"
+"literal> y tercero, <literal>all</literal> y las combinaciones de "
+"operaciones separadas por comas: <literal>cascade=\"persist,merge,evict\"</"
+"literal> o <literal>cascade=\"all,delete-orphan\"</literal>. Consulte <xref "
+"linkend=\"objectstate-transitive\" /> y allí encontrará una explicación "
+"completa. Observe que las asociaciones con valores únicos, asociaciones "
+"muchos-a-uno y uno-a-uno no soportan el borrado de huérfanos."
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr "Este es un ejemplo de una declaración típica <literal>muchos-a-uno</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is a complicated and "
+"confusing relational model. For example, if the <literal>Product</literal> "
+"class had a unique serial number that is not the primary key. The "
+"<literal>unique</literal> attribute controls Hibernate's DDL generation with "
+"the SchemaExport tool."
+msgstr ""
+"El atributo <literal>property-ref</literal> se debe utilizar sólamente para "
+"el mapeo de datos heredados donde una clave foránea referencia una clave "
+"única de la tabla asociada, distinta de la clave principal. Este es un "
+"modelo relacional complicado y confuso. Por ejemplo, si la clase "
+"<literal>Product</literal> tuviera un número único serial que no es la clave "
+"principal, el atributo <literal>unique</literal> controla la generación de "
+"DDL de Hibernate con la herramienta SchemaExport."
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr "Entonces el mapeo para <literal>OrderItem</literal> puede utilizar:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not encouraged, however."
+msgstr "Sin embargo, esto ciertamente no se aconseja. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal>&lt;"
+"properties&gt;</literal> element."
+msgstr ""
+"Si la clave única referenciada abarca múltiples propiedades de la entidad "
+"asociada, debe mapear las propiedades dentro de un elemento nombrado "
+"<literal>&lt;properties&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you can specify "
+"a property path:"
+msgstr ""
+"Si la clave única referenciada es propiedad de un componente, usted puede "
+"especificar una ruta de propiedad: "
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "One-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"Una asociación uno-a-uno (one-to-one) a otra clase persistente se declara "
+"utilizando un elemento <literal>one-to-one</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional): specifies that a foreign key "
+"constraint on the primary key of the mapped table and references the table "
+"of the associated class. This option affects the order in which <literal>save"
+"()</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association can be proxied. It is also used by the schema export "
+"tool."
+msgstr ""
+"<literal>constrained</literal> (opcional): especifica que una restricción de "
+"clave foránea en la clave principal de la tabla mapeada referencia la tabla "
+"de la clase asociada. Esta opción afecta el orden en que van en la cascada "
+"<literal>save()</literal> y <literal>delete()</literal> y determina si la "
+"asociación puede ser virtualizada por proxies. La herramienta de exportación "
+"de esquemas también lo utiliza."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal> (opcional): El nombre de una propiedad de la "
+"clase asociada que esté unida a la clave principal de esta clase. Si no se "
+"especifica, se utiliza la clave principal de la clase asociada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): almost all one-to-one associations "
+"map to the primary key of the owning entity. If this is not the case, you "
+"can specify another column, columns or expression to join on using an SQL "
+"formula. See <literal>org.hibernate.test.onetooneformula</literal> for an "
+"example."
+msgstr ""
+"<literal>formula</literal> (opcional): Casi todas las asociaciones uno-a-uno "
+"mapean a la clave principal de la entidad propietaria. Si este no es el "
+"caso, puede especificar otra columna, o columnas, o una expresión para unir "
+"utilizando una fórmula SQL. Para un obtener un ejemplo consulte <literal>org."
+"hibernate.test.onetooneformula</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. It requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto es <literal>proxy</"
+"literal>): Por defecto, las asociaciones de punto único van con proxies. "
+"<literal>lazy=\"no-proxy\"</literal> especifica que esta propiedad debe ser "
+"traída perezosamente cuando se acceda por primera vez la variable de "
+"instancia. Requiere instrumentación del código byte en tiempo de "
+"compilación. <literal>lazy=\"false\"</literal> especifica que la asociación "
+"siempre será recuperada tempranamente. <emphasis>Observe que si "
+"<literal>constrained=\"false\"</literal>, la aplicación de proxies es "
+"imposible e Hibernate recuperará tempranamente la asociación</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "Existen dos variedades de asociaciones uno-a-uno: "
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "asociaciones de clave primaria"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "asociaciones de clave foránea única"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Primary key associations do not need an extra table column. If two rows are "
+"related by the association, then the two table rows share the same primary "
+"key value. To relate two objects by a primary key association, ensure that "
+"they are assigned the same identifier value."
+msgstr ""
+"Las asociaciones de claves principales no necesitan una columna extra de la "
+"tabla. Si dos filas están relacionadas por la asociación entonces las dos "
+"filas de tablas comparten el mismo valor de clave principal. Para que dos "
+"objetos estén relacionados por una asociación de clave principal, asegúrese "
+"de que se les asigne el mismo valor de identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+"Para una asociación de clave principal, agregue los siguientes mapeos a "
+"<literal>Employee</literal> y <literal>Person</literal> respectivamente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE "
+"tables are equal. You use a special Hibernate identifier generation strategy "
+"called <literal>foreign</literal>:"
+msgstr ""
+"Asegúrese de que las claves principales de las filas relacionadas en las "
+"tablas PERSON y EMPLOYEE sean iguales. Utilizamos una estrategia especial de "
+"generación de identificador de Hibernate denominada <literal>foreign</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is assigned the same "
+"primary key value as the <literal>Employee</literal> instance referred with "
+"the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+"A una instancia recién guardada de <literal>Person</literal> se le asigna el "
+"mismo valor de clave principal que se le asignó a la instancia "
+"<literal>Employee</literal> referida por la propiedad <literal>employee</"
+"literal> de esa <literal>Person</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, can be expressed "
+"as:"
+msgstr ""
+"Opcionalmente, una clave foránea con una restricción de unicidad, desde "
+"<literal>Employee</literal> a <literal>Person</literal>, se puede expresar "
+"como:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This association can be made bidirectional by adding the following to the "
+"<literal>Person</literal> mapping:"
+msgstr ""
+"Esta asociación puede hacerse bidireccional agregando lo siguiente al mapeo "
+"de <literal>Person</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Natural-id"
+msgstr "Natural-id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although we recommend the use of surrogate keys as primary keys, you should "
+"try to identify natural keys for all entities. A natural key is a property "
+"or combination of properties that is unique and non-null. It is also "
+"immutable. Map the properties of the natural key inside the <literal>&lt;"
+"natural-id&gt;</literal> element. Hibernate will generate the necessary "
+"unique key and nullability constraints and, as a result, your mapping will "
+"be more self-documenting."
+msgstr ""
+"Aunque recomendamos el uso de claves delegadas como claves principales, debe "
+"tratar de identificar claves naturales para todas las entidades. Una clave "
+"natural es una propiedad o combinación de propiedades que es única y no "
+"nula. También es inmutable. Mapea las propiedades de la clave natural dentro "
+"del elemento <literal>&lt;natural-id&gt;</literal>. Hibernate generará las "
+"restricciones de nulabilidad y de clave única necesarias y su mapeo será más "
+"auto-documentado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"Le recomendamos bastante que implemente <literal>equals()</literal> y "
+"<literal>hashCode()</literal> para comparar las propiedades de clave natural "
+"de la entidad. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping is not intended for use with entities that have natural primary "
+"keys."
+msgstr ""
+"Este mapeo no está concebido para la utilización con entidades que tienen "
+"claves principales naturales."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>false</"
+"literal>): by default, natural identifier properties are assumed to be "
+"immutable (constant)."
+msgstr ""
+"<literal>mutable</literal> (opcional - por defecto es <literal>false</"
+"literal>): Por defecto, se asume que las propiedades de identificadores "
+"naturales son inmutables (constantes)."
+
+#. Tag: title
+#, no-c-format
+msgid "Component and dynamic-component"
+msgstr "Componente y componente dinámico"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components can, in turn, "
+"declare their own properties, components or collections. See the \"Component"
+"\" examples below:"
+msgstr ""
+"El elemento <literal>&lt;component&gt;</literal> mapea propiedades de un "
+"objeto hijo a columnas de la tabla de la clase padre. Los componentes "
+"pueden, a su vez, declarar sus propias propiedades, componentes o "
+"colecciones. Vea a continuación los \"componentes\":"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto es el tipo de la propiedad "
+"determinado por reflección): El nombre de la clase del componente (hijo). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: do the mapped columns appear in SQL "
+"<literal>INSERTs</literal>?"
+msgstr ""
+"<literal>insert</literal>: ¿Las columnas mapeadas aparacen en "
+"<literal>INSERTs</literal> SQL? "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal>: do the mapped columns appear in SQL "
+"<literal>UPDATEs</literal>?"
+msgstr ""
+"<literal>update</literal>: ¿Las columnas mapeadas aparacen en "
+"<literal>UPDATEs</literal> SQL?"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this component should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto es <literal>false</"
+"literal>): Especifica que este componente debe ser recuperado perezosamente "
+"cuando se acceda a la variable de instancia por primera vez. Requiere "
+"instrumentación de código byte en tiempo de compilación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this component either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica que las actualizaciones de este componente requieren o "
+"no la adquisición de un bloqueo optimista. Determina si debe ocurrir un "
+"incremento de versión cuando esta propiedad se encuentra desactualizada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (opcional - por defecto es <literal>false</"
+"literal>): Especifica que existe una restricción de unicidad sobre todas las "
+"columnas mapeadas del componente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The child <literal>&lt;property&gt;</literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"Las etiquetas hijas <literal>&lt;property&gt;</literal> mapean propiedades "
+"de la clase hija a las columnas de la tabla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"El elemento <literal>&lt;component&gt;</literal> permite un subelemento "
+"<literal>&lt;parent&gt;</literal> que mapea una propiedad de la clase del "
+"componente como una referencia a la entidad contenedora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;dynamic-component&gt;</literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for "
+"more information."
+msgstr ""
+"El elemento <literal>&lt;dynamic-component&gt;</literal> permite que un "
+"<literal>Map</literal> sea mapeado como un componente, en donde los nombres "
+"de las propiedades se refieran a las claves del mapeo. Consulte <xref "
+"linkend=\"components-dynamic\" /> para obtener mayor información. "
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Propiedades"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;properties&gt;</literal> element allows the definition of a "
+"named, logical grouping of the properties of a class. The most important use "
+"of the construct is that it allows a combination of properties to be the "
+"target of a <literal>property-ref</literal>. It is also a convenient way to "
+"define a multi-column unique constraint. For example:"
+msgstr ""
+"El elemento <literal>&lt;properties&gt;</literal> permite la definición de "
+"un grupo de propiedades lógico con nombre de una clase. El uso más "
+"importante de la contrucción es que permite que una combinación de "
+"propiedades sea el objetivo de una <literal>property-ref</literal>. También "
+"es una forma práctica de definir una restricción de unicidad multicolumna. "
+"Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the logical name of the grouping. It is "
+"<emphasis>not</emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: El nombre lógico del agrupamiento. <emphasis>No</"
+"emphasis> es un nombre de propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to these properties either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica que las actualizaciones de estas propiedades requieren "
+"o no de la adquisición de un bloqueo optimista. Determina si debe ocurrir un "
+"incremento de versión cuando estas propiedades están desactualizadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal>&lt;properties&gt;</literal> "
+"mapping:"
+msgstr ""
+"Por ejemplo, si tenemos el siguiente mapeo de <literal>&lt;properties&gt;</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You might have some legacy data association that refers to this unique key "
+"of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"Puede que tenga alguna asociación de datos heredados que se refiera a esta "
+"clave única de la tabla de <literal>Person</literal>, en lugar de la clave "
+"principal:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The use of this outside the context of mapping legacy data is not "
+"recommended."
+msgstr ""
+"No recomendamos el uso de este tipo de cosas fuera del contexto del mapeo de "
+"datos heredados. "
+
+#. Tag: title
+#, no-c-format
+msgid "Subclass"
+msgstr "Subclase"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Polymorphic persistence requires the declaration of each subclass of the "
+"root persistent class. For the table-per-class-hierarchy mapping strategy, "
+"the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+"La persistencia polimórfica requiere la declaración de cada subclase de la "
+"clase persistente raíz. Para la estrategia de mapeo tabla-por-jerarquía-de-"
+"clases, se utiliza la declaración <literal>&lt;subclass&gt;</literal>. Por "
+"ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr ""
+"<literal>name</literal>: El nombre de clase completamente calificado de la "
+"subclase. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional - por defecto es el nombre "
+"de la clase): Un valor que distingue subclases individuales. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface used for "
+"lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica una clase o interfaz que se "
+"utiliza para proxies de inicialización perezosa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (opcional, por defecto es <literal>true</literal>): "
+"El establecer <literal>lazy=\"false\"</literal> desactiva el uso de la "
+"recuperación perezosa. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass declares its own persistent properties and subclasses. "
+"<literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a hierarchy must define a unique <literal>discriminator-value</literal>. If "
+"this is not specified, the fully qualified Java class name is used."
+msgstr ""
+"Cada subclase debe declarar sus propias propiedades persistentes y "
+"subclases. Se asume que las propiedades <literal>&lt;version&gt;</literal> y "
+"<literal>&lt;id&gt;</literal> son heredadas de la clase raíz. Cada subclase "
+"en una jerarquía tiene que definir un <literal>discriminator-value</literal> "
+"único. Si no se especifica ninguno entonces se utiliza el nombre "
+"completamente calificado de clase Java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For information about inheritance mappings see <xref linkend=\"inheritance"
+"\" />."
+msgstr ""
+"Para obtener información acerca de los mapeos de herencias consulte <xref "
+"linkend=\"inheritance\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Joined-subclass"
+msgstr "joined-subclass "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass can also be mapped to its own table. This is called the table-"
+"per-subclass mapping strategy. An inherited state is retrieved by joining "
+"with the table of the superclass. To do this you use the <literal>&lt;joined-"
+"subclass&gt;</literal> element. For example:"
+msgstr ""
+"Se puede mapear cada subclase a su propia tabla. Esto se llama una "
+"estrategia de mapeo tabla-por-subclase. El estado heredado se recupera "
+"uniendo con la tabla de la superclase. Para hacer esto utilice elemento "
+"<literal>&lt;joined-subclass&gt;</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal>: El nombre de tabla de la subclase. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica una clase o interfaz que se "
+"debe utilizar para proxies de inicialización perezosa. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (opcional, por defecto es <literal>true</literal>): "
+"El establecer <literal>lazy=\"false\"</literal> desactiva el uso de la "
+"recuperación perezosa. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A discriminator column is not required for this mapping strategy. Each "
+"subclass must, however, declare a table column holding the object identifier "
+"using the <literal>&lt;key&gt;</literal> element. The mapping at the start "
+"of the chapter would then be re-written as:"
+msgstr ""
+"No se necesita una columna discriminadora para esta estrategia de mapeo. Sin "
+"embargo, cada subclase debe declarar una columna de tabla que tenga el "
+"identificador del objeto utilizando el elemento <literal>&lt;key&gt;</"
+"literal>. El mapeo mencionado al comienzo del capítulo se reescribiría así:"
+
+#. Tag: title
+#, no-c-format
+msgid "Union-subclass"
+msgstr "Union-subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables. This is called the table-per-concrete-class strategy. "
+"Each table defines all persistent states of the class, including the "
+"inherited state. In Hibernate, it is not necessary to explicitly map such "
+"inheritance hierarchies. You can map each class with a separate <literal>&lt;"
+"class&gt;</literal> declaration. However, if you wish use polymorphic "
+"associations (e.g. an association to the superclass of your hierarchy), you "
+"need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For "
+"example:"
+msgstr ""
+"Una tercera opción es mapear sólo las clases concretas de una jerarquía de "
+"herencia a tablas. Esta se llama la estrategia clase concreta por tabla). "
+"Cada tabla define todos los estados persistentes de la clase, incluyendo el "
+"estado heredado. En Hibernate, no es necesario mapear dichas jerarquías de "
+"herencia. Puede mapear cada clase con una declaración <literal>&lt;class&gt;"
+"</literal> separada. Sin embargo, si desea utilizar asociaciones "
+"polimórficas (por ejemplo, una asociación a la superclase de su jerarquía), "
+"necesita utilizar el mapeo <literal>&lt;union-subclass&gt;</literal>. Por "
+"ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "No discriminator column or key column is required for this mapping strategy."
+msgstr ""
+"No se necesita una columna o una columna clave discriminadora para esta "
+"estrategia de mapeo."
+
+#. Tag: title
+#, no-c-format
+msgid "Join"
+msgstr "Join"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using the <literal>&lt;join&gt;</literal> element, it is possible to map "
+"properties of one class to several tables that have a one-to-one "
+"relationship. For example:"
+msgstr ""
+"Al utilizar el elemento <literal>&lt;join&gt;</literal>, es posible mapear "
+"las propiedades de una clase a varias tablas que tengan una relación uno-a-"
+"uno. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal>: El nombre de la tabla unida. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"if set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its "
+"superclasses. It will use an outer join for a <literal>&lt;join&gt;</"
+"literal> defined by a subclass. If set to <literal>select</literal> then "
+"Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> "
+"defined on a subclass. This will be issued only if a row represents an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (opcional - por defecto es <literal>join</"
+"literal>): Si se establece como <literal>join</literal>, por defecto, "
+"Hibernate utilizará una unión interior (inner join) para recuperar un "
+"<literal>&lt;join&gt;</literal> definido por una clase o sus superclases. "
+"Utilizará una unión externa (outer join) para un <literal>&lt;join&gt;</"
+"literal> definido por una subclase. Si se establece como <literal>select</"
+"literal>, entonces Hibernate utilizará una selección secuencial para un "
+"<literal>&lt;join&gt;</literal> definido en una subclase. Esto se publicará "
+"sólamente si una fila representa una instancia de la subclase. Las uniones "
+"interiores todavía serán utilizadas para recuperar un <literal>&lt;join&gt;</"
+"literal> definido por la clase y sus superclases."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will not insert or update the properties "
+"defined by this join."
+msgstr ""
+"<literal>inverse</literal> (opcional - por defecto es <literal>false</"
+"literal>): De activarse, Hibernate no tratará de insertar o actualizar las "
+"propiedades definidas por esta unión. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null. It will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (opcional - por defecto es <literal>false</"
+"literal>): De activarse, Hibernate insertará una fila sólo si las "
+"propiedades definidas por esta unión son no-nulas. Siempre utilizará una "
+"unión externa para recuperar las propiedades."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, address information for a person can be mapped to a separate "
+"table while preserving value type semantics for all properties:"
+msgstr ""
+"Por ejemplo, la información domiciliaria de una persona se puede mapear a "
+"una tabla separada, preservando a la vez la semántica de tipo de valor para "
+"todas las propiedades:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models. We recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"Con frecuencia, esta funcionalidad sólamente es útil para los modelos de "
+"datos heredados. Recomendamos menos tablas que clases y un modelo de dominio "
+"más detallado. Sin embargo, es útil para cambiar entre estrategias de mapeo "
+"de herencias en una misma jerarquía, como se explica más adelante."
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr "Key"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;key&gt;</literal> element has featured a few times within "
+"this guide. It appears anywhere the parent mapping element defines a join to "
+"a new table that references the primary key of the original table. It also "
+"defines the foreign key in the joined table:"
+msgstr ""
+"Hasta ahora hemos visto el elemento <literal>&lt;key&gt;</literal> unas "
+"cuantas veces. Aparece en cualquier sitio en que el elemento padre de mapeo "
+"defina una unión a una nueva tabla que referencie la clave principal de la "
+"tabla original. También define la clave foránea en la tabla unida:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional - defaults to <literal>noaction</"
+"literal>): specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (opcional - por defecto es <literal>noaction</"
+"literal>): Especifica si la restricción de clave foránea tiene el borrado en "
+"cascada activado a nivel de base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): specifies that the foreign key "
+"refers to columns that are not the primary key of the original table. It is "
+"provided for legacy data."
+msgstr ""
+"<literal>property-ref</literal> (opcional): Especifica que la clave foránea "
+"referencia columnas que no son la clave principal de la tabla original. Se "
+"proporciona para los datos heredados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): specifies that the foreign key "
+"columns are not nullable. This is implied whenever the foreign key is also "
+"part of the primary key."
+msgstr ""
+"<literal>not-null</literal> (opcional): Especifica que las columnas de la "
+"clave foránea son no nulables. Esto se implica cuando la clave foránea "
+"también es parte de la clave principal."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal> (optional): specifies that the foreign key should "
+"never be updated. This is implied whenever the foreign key is also part of "
+"the primary key."
+msgstr ""
+"<literal>update</literal> (opcional): Especifica que la clave foránea nunca "
+"se debe actualizar. Esto se implica cuando la clave foránea también es parte "
+"de la clave principal."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): specifies that the foreign key should "
+"have a unique constraint. This is implied whenever the foreign key is also "
+"the primary key."
+msgstr ""
+"<literal>unique</literal> (opcional): Especifica que la clave foránea debe "
+"tener una restricción de . Esto se implica cuando la clave foránea también "
+"es la clave principal."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For systems where delete performance is important, we recommend that all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"uses a database-level <literal>ON CASCADE DELETE</literal> constraint, "
+"instead of many individual <literal>DELETE</literal> statements. Be aware "
+"that this feature bypasses Hibernate's usual optimistic locking strategy for "
+"versioned data."
+msgstr ""
+"Para los sistemas en donde el rendimiento es importante, todas las claves "
+"deben ser definidas <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"utiliza una restricción <literal>ON CASCADE DELETE</literal> a nivel de base "
+"de datos, en vez de muchas declaraciones <literal>DELETE</literal> "
+"individuales. Tenga en cuenta que esta funcionalidad evita la estrategia de "
+"bloqueo optimista normal de Hibernate para datos versionados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one-to-many association. If you map a "
+"unidirectional one-to-many association to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>."
+msgstr ""
+"Los atributos <literal>not-null</literal> y <literal>update</literal> son "
+"útiles al mapear una asociación uno a muchos unidireccional. Si mapea una "
+"unidireccional uno a muchos a una clave foránea no nulable, <emphasis>tiene</"
+"emphasis> que declarar la columna clave utilizando <literal>&lt;key not-null="
+"\"true\"&gt;</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Column and formula elements"
+msgstr "Los elementos columna y fórmula"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping elements which accept a <literal>column</literal> attribute will "
+"alternatively accept a <literal>&lt;column&gt;</literal> subelement. "
+"Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the "
+"<literal>formula</literal> attribute. For example:"
+msgstr ""
+"Los elementos de mapeo que acepten un atributo <literal>column</literal> "
+"aceptarán opcionalmente un subelemento <literal>&lt;column&gt;</literal>. De "
+"manera similar, <literal>&lt;formula&gt;</literal> es una alternativa al "
+"atributo <literal>formula</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most of the attributes on <literal>column</literal> provide a means of "
+"tailoring the DDL during automatic schema generation. The <literal>read</"
+"literal> and <literal>write</literal> attributes allow you to specify custom "
+"SQL that Hibernate will use to access the column's value. For more on this, "
+"see the discussion of <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link>."
+msgstr ""
+"La mayoría de los atributos en <literal>column</literal> proporcionan una manera de personalizar el DDL durante la generación del esquema automático. Los atributos <literal>read</"
+"literal> y <literal>write</literal> le permiten especificar SQL personalizado que Hibernate utilizará para acceder el valor de la columna. Para obtener mayor información sobre esto, consulte la discusión sobre <link linkend=\"mapping-column-read-and-write\">expresiones de lectura y escritura de columnas</link>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>column</literal> and <literal>formula</literal> elements can "
+"even be combined within the same property or association mapping to express, "
+"for example, exotic join conditions."
+msgstr ""
+"Los elementos <literal>column</literal> y <literal>formula</literal> incluso "
+"se pueden combinar dentro del mismo mapeo de propiedad o asociación para "
+"expresar, por ejemplo, condiciones de unión exóticas."
+
+#. Tag: title
+#, no-c-format
+msgid "Import"
+msgstr "Import"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application has two persistent classes with the same name, and you "
+"do not want to specify the fully qualified package name in Hibernate "
+"queries, classes can be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You can also import classes and "
+"interfaces that are not explicitly mapped:"
+msgstr ""
+"Si su aplicación tiene dos clases persistentes con el mismo nombre y no "
+"quiere especificar el nombre del paquete completamenta calificado en las "
+"consultas Hibernate, las clases pueden ser \"importadas\" explícitamente, en "
+"lugar de depender de <literal>auto-import=\"true\"</literal>. Incluso puede "
+"importar clases e interfaces que no estén mapeadas explícitamente:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr ""
+"<literal>class</literal>: El nombre de clase completamente calificado de "
+"cualquier clase Java. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): a name that can be used in the query language."
+msgstr ""
+"<literal>rename</literal> (opcional - por defecto es el nombre de clase sin "
+"calificar): Un nombre que se puede utilizar en el lenguaje de consulta."
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr "Any"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is one more type of property mapping. The <literal>&lt;any&gt;</"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping requires more than one column. The "
+"first column contains the type of the associated entity. The remaining "
+"columns contain the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association. This is not the usual way of "
+"mapping polymorphic associations and you should use this only in special "
+"cases. For example, for audit logs, user session data, etc."
+msgstr ""
+"Hay un tipo más de mapeo de propiedad. El elemento de mapeo <literal>&lt;"
+"any&gt;</literal> define una asociación polimórfica a clases desde múltiples "
+"tablas. Este tipo de mapeo necesita más de una columna. La primera columna "
+"contiene el tipo de la entidad asociada. Las columnas restantes contienen el "
+"identificador. Es imposible especificar una restricción de clave foránea "
+"para este tipo de asociación. Esta no es la manera usual de mapear "
+"asociaciones polimórficas y sólamente debe usar esto en casos especiales. "
+"Por ejemplo, para registros de auditoría, datos de sesión de usuario, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute allows the application to specify "
+"a custom type that maps database column values to persistent classes that "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"El atributo <literal>meta-type</literal> le permite especificar a la "
+"aplicación un tipo personalizado que mapea los valores de columnas de la "
+"base de datos a clases persistentes que tengan propiedades identificadoras "
+"del tipo especificado por <literal>id-type</literal>. Tiene que especificar "
+"el mapeo de valores del meta-tipo a nombres de clase."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>: el nombre de la propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>: el tipo del identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal> (opcional - por defecto es <literal>string</"
+"literal>): Cualquier tipo que se permita para un mapeo discriminador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (opcional- por defecto es <literal>none</"
+"literal>): el estilo de cascada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property either do or do not "
+"require acquisition of the optimistic lock. It defines whether a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica si las actualizaciones de esta propiedad requieren o "
+"no de la adquisición del bloqueo optimista. Define si debe ocurrir un "
+"incremento de versión cuando esta propiedad está desactualizada."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate types"
+msgstr "Tipos de Hibernate "
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "Entidades y Valores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In relation to the persistence service, Java language-level objects are "
+"classified into two groups:"
+msgstr ""
+"En relación con el servicio de persistencia, los objetos a nivel de lenguaje "
+"Java se clasifican en dos grupos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model, "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted. Saves and deletions, however, can be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children. This is "
+"different from the ODMG model of object persistence by reachability and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They can "
+"also be versioned."
+msgstr ""
+"Una <emphasis>entidad</emphasis> existe independientemente de cualquier otro "
+"objeto que referencie a la entidad. Compare esto con el modelo habitual de "
+"Java en donde un objeto no referenciado es recolectado como basura. Las "
+"entidades deben ser guardadas y borradas explícitamente. Sin embargo, los "
+"grabados y borrados se pueden <emphasis>tratar en cascada</emphasis> desde "
+"una entidad padre a sus hijos. Esto es diferente al modelo de persistencia "
+"de objetos por alcance (ODMG) y corresponde más a cómo se utilizan "
+"habitualmente los objetos de aplicación en sistemas grandes. Las entidades "
+"soportan referencias circulares y compartidas, que también pueden ser "
+"versionadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives: "
+"collections (not what is inside a collection), components and certain "
+"immutable objects. Unlike entities, values in particular collections and "
+"components, <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects and primitives are persisted and deleted along with "
+"their containing entity, they cannot be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"El estado persistente de una entidad consta de las referencias a otras "
+"entidades e instancias de tipo <emphasis>valor</emphasis>. Los valores son "
+"primitivos: colecciones (no lo que está dentro de la colección), componentes "
+"y ciertos objetos inmutables. A diferencia de las entidades, los valores en "
+"particular las colecciones y los componentes, <emphasis>son</emphasis> "
+"persistidos y borrados por alcance. Como los objetos valor y primitivos son "
+"persistidos y borrados junto con sus entidades contenedoras, no se pueden "
+"versionar independientemente. Los valores no tienen identidad independiente, "
+"por lo que dos entidades o colleciones no los pueden compartir."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, we have been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Not all user-defined classes with a "
+"persistent state, however, are entities. A <emphasis>component</emphasis> is "
+"a user-defined class with value semantics. A Java property of type "
+"<literal>java.lang.String</literal> also has value semantics. Given this "
+"definition, all types (classes) provided by the JDK have value type "
+"semantics in Java, while user-defined types can be mapped with entity or "
+"value type semantics. This decision is up to the application developer. An "
+"entity class in a domain model will normally have shared references to a "
+"single instance of that class, while composition or aggregation usually "
+"translates to a value type."
+msgstr ""
+"Hasta ahora, hemos estado utilizando el término \"clase persistente\" para "
+"referirnos a entidades. Continuaremos haciéndolo así. Sin embargo, no todas "
+"la clases con estado persistente definidas por el usuario son entidades. Un "
+"<emphasis>componente</emphasis> es una clase definida por el usuario con "
+"semántica de valor. Una propiedad Java de tipo <literal>java.lang.String</"
+"literal> también tiene semántica de valor. Dada esta definición, podemos "
+"decir que todos los tipo (clases) provistos por el JDK tienen una semántica "
+"de tipo valor en Java, mientras que los tipos definidos por el usuario se "
+"pueden mapear con semántica de tipo valor o de entidad. La desición corre "
+"por cuenta del desarrollador de la aplicación. Una clase entidad en un "
+"modelo de dominio son las referencias compartidas a una sola instancia de "
+"esa clase, mientras que la composición o agregación usualmente se traducen a "
+"un tipo de valor."
+
+#. Tag: para
+#, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr "Volveremos a revisar ambos conceptos a lo largo de este manual de referencia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge is to map the Java type system, and the developers' definition "
+"of entities and value types, to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate. For entities, <literal>&lt;"
+"class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. "
+"For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;"
+"component&gt;</literal>etc., that usually have a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides a range of mappings "
+"for standard JDK value types out of the box. You can write your own mapping "
+"types and implement your own custom conversion strategies."
+msgstr ""
+"EL desafío es mapear el sistema de tipos de Java ( la definición de "
+"entidades y tipos de valor de los desarrolladores al sistema de tipos de SQL/"
+"la base de datos. El puente entre ambos sistemas lo brinda Hibernate. Para "
+"las entidades utilizamos <literal>&lt;class&gt;</literal>, <literal>&lt;"
+"subclass&gt;</literal>, etc. Para los tipos de valor utilizamos <literal>&lt;"
+"property&gt;</literal>, <literal>&lt;component&gt;</literal>, etc, "
+"usualmente con un atributo <literal>type</literal>. El valor de este "
+"atributo es el nombre de un <emphasis>tipo de mapeo</emphasis> de Hibernate. "
+"Hibernate proporciona un rango de mapeos para tipos de valores del JDK "
+"estándar. Puede escribir sus propios mapeos de tipo e implementar sus "
+"estrategias de conversión personalizadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of collections, all built-in Hibernate types support null "
+"semantics."
+msgstr ""
+"Todos los tipos incorporados de Hibernate soportan la semántica de nulos, a "
+"excepción de las colecciones."
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "Tipos de valores básicos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> can be roughly "
+"categorized into the following:"
+msgstr ""
+"Los <emphasis>tipos de mapeo básicos</emphasis> incorporados se pueden "
+"categorizar así:"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+msgstr ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"Mapeos de tipos de primitivos de Java o de clases de envoltura a los tipos "
+"de columna SQL (específica del vendedor). <literal>boolean, yes_no</literal> "
+"y <literal>true_false</literal> son codificaciones alternativas a "
+"<literal>boolean</literal> de Java o <literal>java.lang.Boolean</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>string</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"Un mapeo del tipo <literal>java.lang.String</literal> a <literal>VARCHAR</"
+"literal> (u Oracle <literal>VAARCHAR2</literal>)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "<literal>date, time, timestamp</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"Mapeos de tipo desde <literal>java.util.Date</literal> y sus subclases a "
+"tipos SQL <literal>DATE</literal>, <literal>TIME</literal> y "
+"<literal>TIMESTAMP</literal> (o equivalente)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "<literal>calendar, calendar_date</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"Mapeos de tipo desde <literal>java.util.Date</literal> y tipos SQL "
+"<literal>TIMESTAMP</literal> y <literal>DATE</literal> (o equivalente)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "<literal>big_decimal, big_integer</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"Mapeos de tipo desde <literal>java.math.BigDecimal</literal> y <literal>java."
+"math.BigInteger</literal> a <literal>NUMERIC</literal> (o <literal>NUMBER</"
+"literal> de Oracle)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "<literal>locale, timezone, currency</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
+msgstr ""
+"Mapeos de tipo desde <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> y <literal>java.util.Currency</literal> a "
+"<literal>VARCHAR</literal> (o <literal>VARCHAR2</literal> de Oracle). Las "
+"instancias de <literal>Locale</literal> y <literal>Currency</literal> son "
+"mapeadas a sus códigos ISO. Las instancias de <literal>TimeZone</literal> "
+"son mapeadas a sus <literal>ID</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>class</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
+msgstr ""
+"Un mapeo de tipo <literal>java.lang.Class</literal> a <literal>VARCHAR</"
+"literal> (o <literal>VARCHAR2</literal> de Oracle). Una <literal>Class</"
+"literal> es mapeada a su nombre completamente calificado."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "Mapea arreglos de bytes a un tipo binario SQL apropiado."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>text</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"Mapea cadenas largas de Java al tipo SQL <literal>CLOB</literal> o "
+"<literal>TEXT</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>serializable</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You can also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+"Mapea tipos serializables Java a un tipo binario SQL apropiado. También "
+"puede indicar el tipo <literal>serializable</literal> de Hibernate con el "
+"nombre de una clase o interfaz serializable Java que no sea por defecto un "
+"tipo básico. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>clob, blob</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types can be inconvenient for some "
+"applications, since the blob or clob object cannot be reused outside of a "
+"transaction. Driver support is patchy and inconsistent."
+msgstr ""
+"Mapeos de tipo para las clases JDBC <literal>java.sql.Clob</literal> y "
+"<literal>java.sql.Blob</literal>. Estos tipos pueden ser inconvenientes para "
+"algunas aplicaciones, pues el objeto blob o clob no pueden ser reusados "
+"fuera de una transacción. Además, el soporte del controlador suele ser malo "
+"e inconsistente."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+msgstr ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for what are considered mutable Java types. This is where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new, "
+"nonidentical, object to the property."
+msgstr ""
+"Los mapeos de tipo para lo que usualmente se considera tipos Java mutables. "
+"Aquí es donde Hibernate realiza ciertas optimizaciones apropiadas sólamente "
+"para tipos Java inmutables y la aplicación trata el objeto como inmutable. "
+"Por ejemplo, no debe llamar <literal>Date.setTime()</literal> para una "
+"instancia mapeada como <literal>imm_timestamp</literal>. Para cambiar el "
+"valor de la propiedad y hacer que ese cambio sea persistente, la aplicación "
+"tiene que asignar un objeto nuevo, no idéntico, a la propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unique identifiers of entities and collections can be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. Composite identifiers are also allowed. See below for more "
+"information."
+msgstr ""
+"Los identificadores únicos de entidades y colecciones pueden ser de "
+"cualquier tipo básico excepto <literal>binary</literal>, <literal>blob</"
+"literal> y <literal>clob</literal>. Los identificadores compuestos también "
+"están permitidos, a continuación encontrará mayor información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"Los tipos de valor básicos tienen sus constantes <literal>Type</literal> "
+"correspondientes definidas en <literal>org.hibernate.Hibernate</literal>. "
+"Por ejemplo, <literal>Hibernate.STRING</literal> representa el tipo "
+"<literal>string</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "Tipos de valor personalizados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. Custom types are not limited to "
+"mapping a property, or collection element, to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"Es relativamente fácil para los desarrolladores crear sus propios tipos de "
+"valor. Por ejemplo, puede que quiera persistir propiedades del tipo "
+"<literal>java.lang.BigInteger</literal> a columnas <literal>VARCHAR</"
+"literal>. Hibernate no provee un tipo incorporado para esto. Los tipos "
+"personalizados no están limitados a mapear una propiedad o elemento de "
+"colección a una sola columna de tabla. Así, por ejemplo, podría tener una "
+"propiedad Java <literal>getName()</literal>/<literal>setName()</literal> de "
+"tipo <literal>java.lang.String</literal> que es persistida a las columnas "
+"<literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. View "
+"<literal>org.hibernate.test.DoubleStringType</literal> to see the kind of "
+"things that are possible."
+msgstr ""
+"Para implementar un tipo personalizado, implemente <literal>org.hibernate."
+"UserType</literal> o <literal>org.hibernate.CompositeUserType</literal> y "
+"declare las propiedades utilizando el nombre de clase completamente "
+"calificado del tipo. Revise <literal>org.hibernate.test.DoubleStringType</"
+"literal> para ver qué clases de cosas son posibles. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice the use of <literal>&lt;column&gt;</literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"Observe el uso de etiquetas <literal>&lt;column&gt;</literal> para mapear "
+"una propiedad a múltiples columnas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"Las interfaces <literal>CompositeUserType</literal>, "
+"<literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, "
+"y <literal>UserVersionType</literal> brindan soporte para usos más "
+"especializados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal>&lt;"
+"type&gt;</literal> element in your mapping files."
+msgstr ""
+"Incluso usted puede proporcionar parámetros a un <literal>UserType</literal> "
+"en el archivo de mapeo. Para hacer esto, su <literal>UserType</literal> "
+"tiene que implementar la interfaz <literal>org.hibernate.usertype."
+"ParameterizedType</literal>. Para brindar parámetros a su tipo "
+"personalizado, puede utilizar el elemento <literal>&lt;type&gt;</literal> en "
+"sus archivos de mapeo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"Ahora el <literal>UserType</literal> puede recuperar el valor del parámetro "
+"denominado <literal>default</literal> del objeto <literal>Properties</"
+"literal> que se le pasa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you regularly use a certain <literal>UserType</literal>, it is useful to "
+"define a shorter name for it. You can do this using the <literal>&lt;"
+"typedef&gt;</literal> element. Typedefs assign a name to a custom type, and "
+"can also contain a list of default parameter values if the type is "
+"parameterized."
+msgstr ""
+"Si utiliza cierto <literal>UserType</literal> muy frecuentemente, puede ser "
+"útil el definir un nombre más corto para este. Puede hacer esto utilizando "
+"el elemento <literal>&lt;typedef&gt;</literal>. Los typedefs asignan un "
+"nombre a un tipo personalizado y también pueden contener una lista de "
+"valores predeterminados de parámetros si el tipo se encuentra parametrizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"También es posible sobrescribir los parámetros provistos en un typedef sobre "
+"una base de caso por caso utilizando parámetros de tipo en el mapeo de la "
+"propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will rarely need to use a custom type, it is considered "
+"good practice to use custom types for non-entity classes that occur "
+"frequently in your application. For example, a <literal>MonetaryAmount</"
+"literal> class is a good candidate for a <literal>CompositeUserType</"
+"literal>, even though it could be mapped as a component. One reason for this "
+"is abstraction. With a custom type, your mapping documents would be "
+"protected against changes to the way monetary values are represented."
+msgstr ""
+"Aunque el amplio espectro de tipos incorporados y de soporte para los "
+"componentes de Hibernate significa que necesitará usar un tipo personalizado "
+"muy raramente, se considera como una buena práctica el utilizar tipos "
+"personalizados para clases no-entidades que aparezcan frecuentemente en su "
+"aplicación. Por ejemplo, una clase <literal>MonetaryAmount</literal> es una "
+"buena candidata para un <literal>CompositeUserType</literal>, incluso cuando "
+"puede ser fácilmente mapeada como un componente. Un razón para esto es la "
+"abstracción. Con un tipo personalizado, sus documentos de mapeo estarán "
+"protegidos contra posibles cambios futuros en la forma de representar "
+"valores monetarios."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "Mapeo de una clase más de una vez"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case, you must specify an <emphasis>entity name</emphasis> to "
+"disambiguate between instances of the two mapped entities. By default, the "
+"entity name is the same as the class name. Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"Es posible proporcionar más de un mapeo para una clase persistente en "
+"particular. En este caso usted debe especificar un <emphasis>nombre de "
+"entidad</emphasis> para aclarar entre las instancias de las dos entidades "
+"mapeadas. Por defecto, el nombre de la entidad es el mismo que el nombre de "
+"la clase. Hibernate le deja especificar el nombre de entidad al trabajar con "
+"objetos persistentes, al escribir consultas, o al mapear asociaciones a la "
+"entidad mencionada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations are now specified using <literal>entity-name</literal> instead "
+"of <literal>class</literal>."
+msgstr ""
+"Las asociaciones ahora se especifican utilizando <literal>entity-name</"
+"literal> en lugar de <literal>class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "Identificadores SQL en comillas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal>. This is usually double quotes, but the SQL Server uses brackets "
+"and MySQL uses backticks."
+msgstr ""
+"Puede forzar a Hibernate a que utilice comillas con un identificador en el "
+"SQL generado encerrando el nombre de tabla o de columna entre comillas "
+"sencillas en el documento de mapeo. Hibernate utilizará el estilo de "
+"comillas para el <literal>Dialect</literal> SQL. Usualmente comillas dobles, "
+"a excepción de corchetes para SQL Server y comillas sencillas para MySQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "Alternativas de metadatos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"XML does not suit all users so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
+msgstr ""
+"XML no es para todo el mundo, así que hay algunas formas opcionales de "
+"definir metadatos de mapeo O/R en Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "Utilización de marcado de XDoclet"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover "
+"this approach in this reference guide since it is considered part of "
+"XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings:"
+msgstr ""
+"Muchos usuarios de Hibernate prefieren incluir la información de mapeo "
+"directamente en el código fuente usando las <literal>@hibernate.tags</"
+"literal> XDoclet. No abordaremos este enfoque en este manual de referencia "
+"ya que se considera como parte de XDoclet. Sin embargo, incluímos el "
+"siguiente ejemplo de la clase <literal>Cat</literal> con los mapeos XDoclet:"
+
+#. Tag: para
+#, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr ""
+"Para obtener más ejemplos de XDoclet e Hibernate consulte el sitio web de "
+"Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "Utlización de Anotaciones JDK 5.0"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level that are "
+"type-safe and checked at compile time. This mechanism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API). Support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+"JDK 5.0 introdujo anotaciones del estilo XDoclet a nivel del lenguaje con "
+"chequeo seguro de tipos en tiempo de compilación. Este mecanismo es más "
+"potente que las anotaciones XDoclet y es mejor soportado por herramientas e "
+"IDEs. IntelliJ IDEA, por ejemplo, soporta auto-completación además de "
+"resalte de sintaxis de las anotaciones JDK 5.0. La nueva revisión de la "
+"especificación de EJB (JSR-220) utiliza anotaciones JDK 5.0 como el "
+"mecanismo principal de metadatos para beans de entidad. Hibernate3 "
+"implementa el <literal>EntityManager</literal> del JSR-220 (la API de "
+"persistencia). El soporte para metadatos de mapeo está disponible por medio "
+"del paquete <emphasis>Anotaciones de Hibernate</emphasis>, como una descarga "
+"separada. Tanto los metadatos de EJB3 (JSR-220) como de Hibernate3 se "
+"encuentran soportados."
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr "Este es un ejemplo de una clase POJO anotada como un bean de entidad EJB:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Support for JDK 5.0 Annotations (and JSR-220) is currently under "
+"development. Please refer to the Hibernate Annotations module for more "
+"details."
+msgstr ""
+"El soporte para las anotaciones JDK 5.0 (y JSR-220) todavía se encuentra en "
+"progreso. Para obtener más información consulte al módulo de anotaciones de "
+"Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Generated properties"
+msgstr "Propiedades generadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Generated properties are properties that have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects that contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. When Hibernate issues "
+"an SQL INSERT or UPDATE for an entity that has defined generated properties, "
+"it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+"Las propiedades generadas son propiedades cuyos valores son generados por la "
+"base de datos. Usualmente, las aplicaciones de Hibernate necesitaban "
+"<literal>refrescar</literal> los objetos que contenian cualquier propiedad "
+"para la cual la base de datos generará valores. Sin embargo, el marcar "
+"propiedades como generadas deja que la aplicación delegue esta "
+"responsabilidad a Hibernate. Cuando Hibernate emite un INSERT or UPDATE SQL "
+"para una entidad la cual ha definido propiedades generadas, inmediatamente "
+"emite un select para recuperar los valores generados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link>, "
+"can be marked as generated."
+msgstr ""
+"Las propiedades marcadas como generadas tienen que ser además no insertables "
+"y no actualizables. Sólamente las <link linkend=\"mapping-declaration-version\">versiones</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">sellos de fecha</link>, "
+"y <link linkend=\"mapping-declaration-property\">propiedades simples</link> se pueden marcar como generadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>never</literal> (the default): the given property value is not "
+"generated within the database."
+msgstr ""
+"<literal>never</literal> (por defecto): el valor dado de la propiedad no es "
+"generado dentro de la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: the given property value is generated on insert, "
+"but is not regenerated on subsequent updates. Properties like created-date "
+"fall into this category. Even though <link linkend=\"mapping-declaration-"
+"version\">version</link> and <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> properties can be marked as generated, this option is "
+"not available."
+msgstr ""
+"<literal>insert</literal>: el valor dado de la propiedad es generado en "
+"insert, pero no es regenerado en las actualizaciones posteriores. Las "
+"propiedades como fecha-creada (created-date) se encuentran dentro de esta "
+"categoría. Aunque las propiedades <link linkend=\"mapping-declaration-"
+"version\">versión</link> y <link linkend=\"mapping-declaration-timestamp"
+"\">sello de fecha</link> se pueden marcar "
+"como generadas, esta opción no se encuentra disponible."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>always</literal>: the property value is generated both on insert "
+"and on update."
+msgstr ""
+"<literal>always</literal>: el valor de la propiedad es generado tanto en "
+"insert como en update."
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr "Expresiones de lectura y escritura de columnas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to customize the SQL it uses to read and write the "
+"values of columns mapped to <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. For example, if your database provides a set of "
+"data encryption functions, you can invoke them for individual columns like "
+"this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+"Hibernate le permite personalizar el SQL que utiliza para leer y escribir los valores de las columnas mapeadas a las <link linkend=\"mapping-declaration-property"
+"\">propiedades simples</link>. Por ejemplo, si su base de datos brinda un grupo de funciones de codificación de "
+"datos, puede invocarlas para columnas individuales como esto: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate applies the custom expressions automatically whenever the property "
+"is referenced in a query. This functionality is similar to a derived-"
+"property <literal>formula</literal> with two differences:"
+msgstr "Hibernate aplica las expresiones personalizadas de manera automática cuando la propiedad se referencia en una petición. Esta funcionalidad es similar a una propiedad derivada <literal>formula</literal> con dos diferencias:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The property is backed by one or more columns that are exported as part of "
+"automatic schema generation."
+msgstr "Esta propiedad está respaldada por una o más columnas que se exportan como parte de la generación automática del esquema. "
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr "La propiedad es de lectura y escritura no de sólo lectura. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>write</literal> expression, if specified, must contain exactly "
+"one '?' placeholder for the value."
+msgstr "Si se especifica la expresión <literal>write</literal> debe contener exactamente un parémetro de sustitución '?' para el valor."
+
+#. Tag: title
+#, no-c-format
+msgid "Auxiliary database objects"
+msgstr "Objetos de bases de datos auxiliares"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Auxiliary database objects allow for the CREATE and DROP of arbitrary "
+"database objects. In conjunction with Hibernate's schema evolution tools, "
+"they have the ability to fully define a user schema within the Hibernate "
+"mapping files. Although designed specifically for creating and dropping "
+"things like triggers or stored procedures, any SQL command that can be run "
+"via a <literal>java.sql.Statement.execute()</literal> method is valid (for "
+"example, ALTERs, INSERTS, etc.). There are essentially two modes for "
+"defining auxiliary database objects:"
+msgstr ""
+"Los objetos de bases de datos auxiliares permiten la creación - CREATE - y "
+"eliminación - DROP - de objetos de bases de datos arbitrarios. Junto con las "
+"herramientas de evolución del esquema de Hibernate, tienen la habilidad de "
+"definir de manera completa el esquema de un usuario dentro de los archivos "
+"de mapeo de Hibernate. Aunque están diseñados específicamente para crear y "
+"eliminar cosas como disparadores - triggers- o procedimientos almacenados, "
+"realmente cualquier comando SQL se puede ejecutar por medio de un método "
+"<literal>java.sql.Statement.execute()</literal> aquí es válido (por ejemplo, "
+"ALTERs, INSERTS, etc). Básicamente, hay dos modos para definir objetos de "
+"bases de datos auxiliares:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands in the "
+"mapping file:"
+msgstr ""
+"El primer modo es para numerar explícitamente los comandos CREATE y DROP en "
+"el archivo de mapeo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second mode is to supply a custom class that constructs the CREATE and "
+"DROP commands. This custom class must implement the <literal>org.hibernate."
+"mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+"El segundo modo es para proporcionar una clase personalizada que construye "
+"los comandos CREATE y DROP. Esta clase personalizada tiene que implementar "
+"la interfaz <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped so that they "
+"only apply when certain dialects are used."
+msgstr ""
+"Adicionalmente, estos objetos de la base de datos se pueden incluir de "
+"manera opcional de forma que aplique sólamente cuando se utilicen ciertos "
+"dialectos. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,484 @@
+# translation of batch.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: batch\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-19 12:57+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "Procesamiento por lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100,000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Un enfoque ingenuo para insertar 100.000 filas en la base de datos "
+"utilizando Hibernate puede verse así: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50,000th row. That is because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+"Esto podría caer dentro de una <literal>OutOfMemoryException</literal> en "
+"algún sitio cerca de la fila 50.000. Esto se debe a que Hibernate tiene en "
+"caché todas las instancias de <literal>Customer</literal> recién insertadas "
+"en el caché de nivel de sesión. En este capítulo le vamos a mostrar cómo "
+"evitar este problema."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are undertaking batch processing you will need to enable the use of "
+"JDBC batching. This is absolutely essential if you want to achieve optimal "
+"performance. Set the JDBC batch size to a reasonable number (10-50, for "
+"example):"
+msgstr ""
+"Si está realizando un procesamiento por lotes (batch processing), es "
+"necesario que habilite el uso del lote JDBC. Esto es esencial si quiere "
+"lograr un rendimiento óptimo. Establezca el tamaño de lote JDBC con un "
+"número razonable (por ejemplo, 10-50):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate disables insert batching at the JDBC level transparently if you "
+"use an <literal>identity</literal> identifier generator."
+msgstr ""
+"Hibernate desactiva el lote de inserción a nivel de JDBC de forma "
+"transparente si usted utiliza un generador de identificador "
+"<literal>identiy</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also do this kind of work in a process where interaction with the "
+"second-level cache is completely disabled:"
+msgstr ""
+"También puede realizar este tipo de trabajo en un proceso en donde la "
+"interacción con el caché de segundo nivel se encuentre completamente "
+"desactivado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"Sin embargo, esto no es absolutamente necesario ya que podemos establecer "
+"explícitamente el <literal>CacheMode</literal> para descativar la "
+"interacción con el caché de segundo nivel."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "Inserciones de lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When making new objects persistent <literal>flush()</literal> and then "
+"<literal>clear()</literal> the session regularly in order to control the "
+"size of the first-level cache."
+msgstr ""
+"Al hacer persistentes los objetos nuevos es necesario que realice "
+"<literal>flush()</literal> y luego <literal>clear()</literal> en la sesión "
+"regularmente para controlar el tamaño del caché de primer nivel."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "Actualizaciones de lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For retrieving and updating data, the same ideas apply. In addition, you "
+"need to use <literal>scroll()</literal> to take advantage of server-side "
+"cursors for queries that return many rows of data."
+msgstr ""
+"Para recuperar y actualizar datos se aplican las mismas ideas. Además, "
+"necesita utilizar <literal>scroll()</literal> para sacar ventaja de los "
+"cursores del lado del servidor en consultas que retornen muchas filas de "
+"datos."
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "La interfaz de Sesión sin Estado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that can be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session never cascade to associated instances. Collections "
+"are ignored by a stateless session. Operations performed via a stateless "
+"session bypass Hibernate's event model and interceptors. Due to the lack of "
+"a first-level cache, Stateless sessions are vulnerable to data aliasing "
+"effects. A stateless session is a lower-level abstraction that is much "
+"closer to the underlying JDBC."
+msgstr ""
+"Opcionalmente, Hibernate proporciona una API orientada a comandos que se "
+"puede utilizar para datos que concurren desde y hacia la base de datos en "
+"forma de objetos separados. Un <literal>StatelessSession</literal> no tiene "
+"un contexto de persistencia asociado con él y no proporciona mucha de la "
+"semántica a un alto nivel de ciclo de vida. En particular, una sesión sin "
+"estado no implementa un caché en primer nivel y tampoco interactúa con "
+"cachés de segundo nivel o de peticiones. No implementa escritura-retrasada "
+"transaccional o chequeo de desactualizaciones automático. Las operaciones "
+"realizadas con la utilización de una sesión sin estado nunca usan cascadas "
+"para las instancias asociadas. La sesión sin estado ignora las colecciones. "
+"Las operaciones llevadas a cabo por una sesión sin estado ignoran el modelo "
+"de evento y los interceptores de Hibernte. Las sesiones sin estado son "
+"vulnerables a efectos de sobrenombamiento de datos debido a la falta de un "
+"caché de primer nivel. Una sesión sin estado es una abstracción en un nivel "
+"más bajo, mucho más cerca del JDBC subyacente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this code example, the <literal>Customer</literal> instances returned by "
+"the query are immediately detached. They are never associated with any "
+"persistence context."
+msgstr ""
+"En este código de ejemplo, las instancias <literal>Customer</literal> "
+"retornadas por la petición se separan inmediatamente. Nunca se asocian con "
+"ningún contexto de persistencia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations. They result in the "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. They have different semantics to the "
+"<literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>Session</literal> interface."
+msgstr ""
+"Las operaciones <literal>insert(), update()</literal> y <literal>delete()</"
+"literal> definidas por la interfaz <literal>StatelessSession</literal> son "
+"consideradas como operaciones directas a nivel de filas de la base de datos. "
+"Esto resulta en una ejecución inmediata de un <literal>INSERT, UPDATE</"
+"literal> SQL o <literal>DELETE</literal> respectivamente. Tienen una "
+"semántica diferente a la de las operaciones <literal>save(), saveOrUpdate()</"
+"literal> y <literal>delete()</literal> definidas por la interfaz "
+"<literal>Session</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "Operaciones de estilo DML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of the object state. The object state is "
+"available in memory. This means that manipulating data directly in the "
+"database (using the SQL <literal>Data Manipulation Language</literal> (DML) "
+"the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) will not affect in-memory state. However, "
+"Hibernate provides methods for bulk SQL-style DML statement execution that "
+"is performed through the Hibernate Query Language (<link linkend=\"queryhql"
+"\">HQL</link>)."
+msgstr ""
+"Como se discutió anteriormente, el mapeo objeto/relacional transparente se "
+"refiere a la administración del estado de objetos. El estado del objeto está "
+"disponible en la memoria. Esto significa que el manipular datos directamente en la "
+"base de datos (utilizando DML (del inglés <literal>Data Manipulation Language</literal>) las declaraciones: <literal>INSERT</literal>, <literal>UPDATE</"
+"literal>, <literal>DELETE</literal>) no afectarán el estado en la memoria. "
+"Sin embargo, Hibernate brinda métodos para la ejecución de declaraciones en "
+"masa DML del estilo de SQL, las cuales se realizan por medio del Lenguaje de "
+"Consulta de Hibernate (<link linkend=\"queryhql"
+"\">HQL</link>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+msgstr ""
+"La pseudo-sintáxis para las declaraciones <literal>UPDATE</literal> y "
+"<literal>DELETE</literal> es: <literal>( UPDATE | DELETE ) FROM? EntityName "
+"(WHERE where_conditions)?</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr "Algunos puntos a observar:"
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "En la cláusula-from, la palabra clave FROM es opcional"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause. It can, however, "
+"be aliased. If the entity name is aliased, then any property references must "
+"be qualified using that alias. If the entity name is not aliased, then it is "
+"illegal for any property references to be qualified."
+msgstr ""
+"Sólamente puede haber una entidad mencionada en la cláusula-from y puede "
+"tener un alias. Si el nombre de la entidad tiene un alias entonces cualquier "
+"referencia a la propiedad tiene que ser calificada utilizando ese alias. Si "
+"el nombre de la entidad no tiene un alias entonces es ilegal calificar "
+"cualquier referencia de la propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or "
+"explicit, can be specified in a bulk HQL query. Sub-queries can be used in "
+"the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+"No se puede especificar ninguna <link linkend=\"queryhql-joins-forms\">unión</link> ya "
+"sea implícita o explícita, en una consulta masiva de HQL. Se pueden utilizar "
+"subconsultas en la cláusula-where y en donde las subconsultas puedan "
+"contener uniones en sí mismas. "
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "La cláusula-where también es opcional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method. The method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>:"
+msgstr ""
+"Como ejemplo, para ejecutar un <literal>UPDATE</literal> de HQL, utilice el "
+"método <literal>Query.executeUpdate()</literal>. El método es nombrado para "
+"aquellos familiarizados con el <literal>PreparedStatement.executeUpdate()</"
+"literal> de JDBC:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> "
+"statements, by default, do not effect the <link linkend=\"mapping-"
+"declaration-version\">version</link> or the <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> property values for the affected "
+"entities. However, you can force Hibernate to reset the <literal>version</"
+"literal> or <literal>timestamp</literal> property values through the use of "
+"a <literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"Para mantenerse de acuerdo con la especificación de EJB3, las declaraciones "
+"<literal>UPDATE</literal> de HQL, por defecto no afectan la <link linkend=\"mapping-"
+"declaration-version\">versión</link> o los valores de la propiedad <link linkend=\"mapping-"
+"declaration-timestamp\">sello de fecha</link> para las entidades afectadas. Sin "
+"embargo, puede obligar a Hibernate a poner en cero apropiadamente los "
+"valores de las propiedades <literal>versión</literal> o <literal>sello de fecha</"
+"literal> por medio de la utilización de una <literal>actualización con versión</"
+"literal>. Esto se logra agregando la palabra clave <literal>VERSIONED</"
+"literal> después de la palabra clave <literal>UPDATE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Custom version types, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>, are not allowed in conjunction with a <literal>update versioned</"
+"literal> statement."
+msgstr ""
+"Observe que los tipos de versiones personalizados (<literal>org.hibernate."
+"usertype.UserVersionType</literal>) no están permitidos en conjunto con una "
+"declaración <literal>update versioned</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"Para ejecutar un <literal>DELETE</literal> HQL, utilice el mismo método "
+"<literal>Query.executeUpdate()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicates the number of entities effected by the "
+"operation. This may or may not correlate to the number of rows effected in "
+"the database. An HQL 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 ""
+"El valor <literal>int</literal> retornado por el método <literal>Query."
+"executeUpdate()</literal> indica el número de entidades afectadas por la "
+"operación. Considere que esto puede estar correlacionado o no con el número "
+"de filas afectadas en la base de datos. Una operación masiva de HQL puede "
+"llegar a causar que se ejecuten múltiples declaraciones SQL reales, por "
+"ejemplo, para una subclase-joined. El número retornado indica el número de "
+"entidades realmente afectadas por la declaración. De vuelta al ejemplo de la "
+"subclase joined, un borrado contra una de las subclases puede resultar, de "
+"hecho, en borrados de no sólamente la tabla a la cual esa subclase esta "
+"mapeada, sino también la tabla \"raíz\" y potencialmente las tablas de "
+"subclases joined hasta la jerarquía de herencia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"La pseudo-sintáxis para las declaraciones <literal>INSERT</literal> es: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Algunos puntos que se deben observar son:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"Sólamente se soporta la forma INSERT INTO ... SELECT ..., no la forma INSERT "
+"INTO ... VALUES ..."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column specification</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritance, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"La lista de propiedades (properties_list) es análoga a la <literal>column "
+"speficiation</literal> en la declaración <literal>INSERT</literal> de SQL. "
+"Para las entidades involucradas en la herencia mapeada, sólamente las "
+"propiedades definidas directamente en ese nivel de clase dado se pueden "
+"utlizar en la lista de propiedades. Las propiedades de la superclase no "
+"están permitidas, y las propiedaeds de la subclase no tienen sentido. Es "
+"decir, las declaraciones <literal>INSERT</literal> son inherentemente no-"
+"polimórficas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. This might, however, cause problems between Hibernate "
+"<literal>Type</literal>s which are <emphasis>equivalent</emphasis> as "
+"opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"select_statement puede ser cualquier consulta select de HQL válida con la "
+"advertencia de que los tipos de retorno coincidan con los tipos esperados "
+"por el insert. Actualmente, esto se verifica durante la compilación de la "
+"consulta en vez de permitir que se relegue la verificación a la base de "
+"datos. Sin embargo, esto puede crear problemas entre los <literal>Type</"
+"literal>s de Hibernate, los cuales son <emphasis>equivalentes</emphasis> y "
+"no <emphasis>iguales</emphasis>. Esto puede crear problemas con las uniones "
+"mal hechas entre una propiedad definida como un <literal>org.hibernate.type."
+"DateType</literal> y una propiedad definida como una <literal>org.hibernate."
+"type.TimestampType</literal>, aunque puede que la base de datos no distinga "
+"o no pueda manejar la conversión."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list, in which "
+"case its value is taken from the corresponding select expression, or omit it "
+"from the properties_list, in which case a generated value is used. This "
+"latter option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. For the purposes of this "
+"discussion, in-database generators are considered to be <literal>org."
+"hibernate.id.SequenceGenerator</literal> (and its subclasses) and any "
+"implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>. The most notable exception here is <literal>org.hibernate.id."
+"TableHiLoGenerator</literal>, which cannot be used because it does not "
+"expose a selectable way to get its values."
+msgstr ""
+"Para la propiedad id, la declaración insert le da dos opciones. Puede "
+"especificar explícitamente la propiedad id en la lista de propiedades "
+"(properties_list ) (en tal caso su valor se toma de la expresión de "
+"selección correspondiente) o se omite de la lista de propiedades (en tal "
+"caso se utiliza un valor generado). Esta última opción sólamente está "
+"disponible cuando se utilizan generadores de id que operan en la base de "
+"datos, intentando utilizar esta opción con cualquier generador de tipo \"en "
+"memoria\" provocará una excepción durante el análisis sintáctico. Note que "
+"para los propósitos de esta discusión, los generadores en la base de datos "
+"son considerados <literal>org.hibernate.id.SequenceGenerator</literal> (y "
+"sus subclases) y cualquier implementador de <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal>. La excepción más importante aquí es "
+"<literal>org.hibernate.id.TableHiLoGenerator</literal>, la cual no se puede "
+"utilizar ya que no expone una manera selectiva de obtener sus valores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list, in which case "
+"its value is taken from the corresponding select expressions, or omit it "
+"from the properties_list, in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+"Para las propiedades mapeadas como <literal>version</literal> o "
+"<literal>timestamp</literal>, la declaración insert le da dos opciones. "
+"Puede especificar la propiedad en la lista de propiedades (en tal caso su "
+"valor se toma de las expresiones de selección correspondientes) o se omite "
+"de la lista de propiedades (en tal caso se utiliza el <literal>seed value</"
+"literal> definido por el <literal>org.hibernate.type.VersionType</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of an HQL <literal>INSERT</literal> statement "
+"execution:"
+msgstr ""
+"Un ejemplo de la ejecución de la declaración <literal>INSERT</literal> de "
+"HQL:"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,436 @@
+# translation of best_practices.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: best_practices\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 12:52+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "Prácticas recomendadas"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
+"literal>:"
+msgstr ""
+"Escriba las clases detalladas y mapéelas utilizando <literal>&lt;"
+"component&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"Utilice una clase <literal>Dirección</literal> para encapsular "
+"<literal>calle</literal>, <literal>distrito</literal>, <literal>estado</"
+"literal>, <literal>código postal</literal>. Esto promueve la reutilización "
+"de código y simplifica la refabricación."
+
+#. Tag: term
+#, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "Declare las propiedades identificadoras en clases persistentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are a range of reasons "
+"why you should use them. We recommend that identifiers be 'synthetic', that "
+"is, generated with no business meaning."
+msgstr ""
+"Las propiedades identificadoras son opcionales en Hibernate. Existe todo "
+"tipo de razones por las que debe usarlas. Recomendamos que los "
+"identificadores sean 'sintéticos', es decir, generados sin ningún "
+"significado empresarial."
+
+#. Tag: term
+#, no-c-format
+msgid "Identify natural keys:"
+msgstr "Identifique las llaves naturales:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal>&lt;"
+"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"Identifique las claves naturales de todas las entidades, y mapéelas usando "
+"<literal>&lt;natural-id&gt;</literal>. Implemente <literal>equals()</"
+"literal> y <literal>hashCode()</literal> para comparar las propiedades que "
+"componen la clave natural."
+
+#. Tag: term
+#, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "Coloque cada mapeo de clase en su propio fichero:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"sense, particularly in a team environment."
+msgstr ""
+"No use un sólo documento monolítico de mapeo. Mapee <literal>com.eg.Foo</"
+"literal> en el archivo <literal>com/eg/Foo.hbm.xml</literal>. Esto tiene "
+"sentido particularmente en un entorno de equipo."
+
+#. Tag: term
+#, no-c-format
+msgid "Load mappings as resources:"
+msgstr "Cargue los mapeos como recursos:"
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "Despliegue los mapeos junto a las clases que mapean."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "Considere el externalizar las cadenas de petición:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is recommended if your queries call non-ANSI-standard SQL functions. "
+"Externalizing the query strings to mapping files will make the application "
+"more portable."
+msgstr ""
+"Esta es una buena práctica si sus consultas llaman a funciones SQL que no "
+"son del estándar ANSI. Externalizar las cadenas de consulta a archivos de "
+"mapeo hará la aplicación más portátil. "
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "Use variables de vinculación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Do not use string "
+"manipulation to bind a non-constant value in a query. You should also "
+"consider using named parameters in queries."
+msgstr ""
+"Al igual que en JDBC, siempre remplace los valores no constantes con \"?\". "
+"No use la manipulación de cadenas para enlazar un valor no constante en una "
+"consulta. También considere utilizar parámetros con nombre en las consultas."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "No administre sus propias conexiones JDBC:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows the application to manage JDBC connections, but his "
+"approach should be considered a last-resort. If you cannot use the built-in "
+"connection providers, consider providing your own implementation of "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate deja a la aplicación administrar las conexiones JDBC, pero este "
+"enfoque debe considerarse como el último recurso. Si no puede utilizar los "
+"provedores de conexión incorporados, considere proveer su propia "
+"implementación de <literal>org.hibernate.connection.ConnectionProvider</"
+"literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider using a custom type:"
+msgstr "Considere utilizar un tipo personalizado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you have a Java type from a library that needs to be persisted but "
+"does not provide the accessors needed to map it as a component. You should "
+"consider implementing <literal>org.hibernate.UserType</literal>. This "
+"approach frees the application code from implementing transformations to/"
+"from a Hibernate type."
+msgstr ""
+"Supónga que tiene un tipo Java de una biblioteca, que necesita hacerse "
+"persistente pero que no provee los métodos de acceso necesarios para "
+"mapearlo como un componente. Debe considerar el implementar <literal>org."
+"hibernate.UserType</literal>. Este enfoque libera al código de aplicación de "
+"implementar transformaciones a/desde un tipo Hibernate."
+
+#. Tag: term
+#, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "Utilice JDBC codificado a mano cuando se encuentre atascado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
+"faster. Please wait until you <emphasis>know</emphasis> something is a "
+"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
+"<literal>Session</literal>, wrap your JDBC operation as a <literal>org."
+"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
+"way you can still use the same transaction strategy and underlying "
+"connection provider."
+msgstr ""
+"En áreas de rendimiento crítico del sistema, algunos tipos de operaciones "
+"podrían beneficiarse del JDBC directo. Sin embargo, no asuma que JDBC es necesariamente más rápido. Por favor, espere hasta que "
+"<emphasis>sepa</emphasis> que se encuentra realmente atascado. Si necesita "
+"utilizar JDBC directo, puede abrir una <literal>Session</literal> de "
+"Hibernate, envuelva su operación JDBC como un objeto <literal>org."
+"hibernate.jdbc.Work</literal> usando esa conexión JDBC. De esta manera puede usar aún la misma estrategia de transacción y el mismo proveedor de conexiones subyacente."
+
+#. Tag: term
+#, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "Comprenda el vaciado de <literal>Session</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the Session synchronizes its persistent state with the database. "
+"Performance will be affected if this process occurs too often. You can "
+"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
+"even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"A veces la sesión sincroniza su estado persistente con la base de datos. El "
+"rendimiento se verá afectado si este proceso ocurre con demasiada "
+"frecuencia. A veces puede minimizar el vaciado innecesario deshabilitando el "
+"vaciado automático o incluso cambiando el orden de las consultas u otras "
+"operaciones en una transacción en particular."
+
+#. Tag: term
+#, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr "En una arquitectura con tres niveles considere el utilizar objetos separados:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When using a servlet/session bean architecture, you can pass persistent "
+"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
+"new session to service each request. Use <literal>Session.merge()</literal> "
+"or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the "
+"database."
+msgstr ""
+"Al usar una arquitectura de servlet/sesión, puede pasar objetos persistentes "
+"en el bean de sesión hacia y desde la capa del servlet/JSP. Use una sesión "
+"nueva para atender el servicio de cada petición. Use <literal>Session.merge()"
+"</literal> o <literal>Session.saveOrUpdate()</literal> para sincronizar los "
+"objetos con la base de datos."
+
+#. Tag: term
+#, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr ""
+"En una arquitectura con dos niveles considere el utilizar contextos largos "
+"de persistencia:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often necessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An appropriate alternative in a two "
+"tiered architecture, is to maintain a single open persistence contact "
+"session for the whole life cycle of the application transaction. Then simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction or you will be working with "
+"stale data."
+msgstr ""
+"Las transacciones de la base de datos tienen que ser tan cortas como sea "
+"posible para obtener una mejor escalabilidad. Sin embargo, con frecuencia es "
+"necesario implementar <emphasis>transacciones de aplicación</emphasis> de "
+"larga ejecución, una sola unidad de trabajo desde el punto de vista de un "
+"usuario. Una transacción de aplicación puede abarcar muchos ciclos de "
+"petición/respuesta del cliente. Es común usar objetos separados para "
+"implementar transacciones de aplicación. Una alternativa apropiada en "
+"arquitecturas de dos niveles, es mantener una sesión de un sólo contacto de "
+"persistencia abierto para todo el ciclo de vida de la transacción de "
+"aplicación. Luego simplemente desconectar de la conexión JDBC al final de "
+"cada petición y reconectar al comienzo de la petición subsecuente. Nunca "
+"comparta una sesión única a través de más de una transacción de aplicación o "
+"estará trabajando con datos desactualizados."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "No trate las excepciones como recuperables:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you do not do this, Hibernate cannot "
+"guarantee that in-memory state accurately represents the persistent state. "
+"For example, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"Esto es más bien una práctica necesaria más que una práctica \"recomendada"
+"\". Cuando ocurra una excepción, deshaga la <literal>Transaction</literal> y "
+"cierre la <literal>Session</literal>. Si no lo hace, Hibernate no puede "
+"garantizar que el estado en memoria representa con exactitud el estado "
+"persistente. Por ejemplo, no utilice <literal>Session.load()</literal> para "
+"determinar si una instancia con el identificador dado existe en la base de "
+"datos; en cambio, use <literal>Session.get()</literal> o una consulta."
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "Prefiera una recuperación perezosa para las asociaciones:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When join fetching is appropriate "
+"to a particular use case, use a query with a <literal>left join fetch</"
+"literal>."
+msgstr ""
+"No utilice con frecuencia la recuperación temprana. Use proxies y "
+"colecciones perezosas para la mayoría de asociaciones a clases que "
+"probablemente no se encuentren en el caché de segundo nivel. Para las "
+"asociaciones a clases en caché, donde hay una probabilidad de acceso a caché "
+"extremadamente alta, deshabilite explícitamente la recuperación temprana "
+"usando <literal>lazy=\"false\"</literal>. Cuando la recuperación por unión "
+"sea apropiada para un caso de uso en particular, utilice una consulta con un "
+"<literal>left join fetch</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+"Use el patrón de <emphasis>sesión abierta en vista</emphasis> o una "
+"<emphasis>fase de ensamblado</emphasis> disciplinada para evitar problemas "
+"con datos no recuperados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. Unless you are prepared to hold the persistence context (the "
+"session) open across the view rendering process, you will still need an "
+"assembly phase. Think of your business methods as having a strict contract "
+"with the presentation tier about what data is available in the detached "
+"objects. This is not a limitation of Hibernate. It is a fundamental "
+"requirement of safe transactional data access."
+msgstr ""
+"Hibernate libera al desarrollador de escribir tediosos <emphasis>objetos de "
+"transferencia de datos (DTO del inglés Data Transfer Objects)</emphasis>. En "
+"una arquitectura tradicional de EJB, los DTOs tienen un propósito doble: "
+"primero, atacan el problema de que los beans de entidad no son "
+"serializables. Segundo, definen implícitamente una fase de ensamblado cuando "
+"se recuperan y se forman (marshalling) todos los datos a usar por la vista "
+"en los DTOs antes de devolver el control al nivel de presentación. Hibernate "
+"elimina el primer propósito. Sin embargo, aún necesita una fase de "
+"ensamblado a menos de que esté preparado para tener el contexto de "
+"persistencia (la sesión) abierto a través del proceso de entrega de la "
+"vista. Piense en sus métodos empresariales como si tuviesen un contrato "
+"estricto con el nivel de presentación sobre qué datos están disponibles en "
+"los objetos separados. Esta no es una limitación de Hibernate. Este es un "
+"requerimiento fundamental de acceso seguro a datos transaccionales."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr "Considere abstraer su lógica empresarial de Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hide Hibernate data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC "
+"associated to Hibernate via a <literal>UserType</literal>. This advice is, "
+"however, intended for \"sufficiently large\" applications. It is not "
+"appropriate for an application with five tables."
+msgstr ""
+"Oculte el código de acceso a datos de Hibernate detrás de una interfaz. "
+"Combine los patrones <emphasis>DAO</emphasis> y <emphasis>sesión local de "
+"hilo</emphasis>. Incluso puede hacer algunas clases persistentes por medio "
+"de JDBC escrito a mano, asociadas a Hibernate por medio de un "
+"<literal>UserType</literal>. Sin embargo, este consejo va para las "
+"aplicaciones \"suficientemente grandes\". No es apropiado para una "
+"aplicación con cinco tablas."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "No utilice mapeos de asociación exóticos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Practical test cases for real many-to-many associations are rare. Most of "
+"the time you need additional information stored in the \"link table\". In "
+"this case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, most associations are one-to-many and many-"
+"to-one. For this reason, you should proceed cautiously when using any other "
+"association style."
+msgstr ""
+"Son raros los casos de uso de asociaciones reales muchos-a-muchos. La mayor "
+"parte del tiempo necesita información adicional almacenada en una \"tabla de "
+"enlace\". En este caso, es mucho mejor usar dos asociaciones uno-a-muchos a "
+"una clase de enlace intermedio. De hecho, la mayoría de las asociaciones son "
+"uno-a-muchos y muchos-a-uno. Por esta razón, debe tener cuidado al utilizar "
+"cualquier otro estilo de asociación."
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "Prefiera las asociaciones bidireccionales:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"Las asociaciones unidireccionales son más difíciles de consultar. En una "
+"aplicación grande, casi todas las asociaciones deben ser navegables en ambas "
+"direcciones en consultas."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,53 @@
+# translation of bibliography.po to
+# Language es-ES translations for Branch package.
+#
+# Automatically generated, 2009.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: bibliography\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-17 08:53+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr "Referencias"
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr "Patrones de la arquitectura de aplicaciones empresariales"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr "Martin"
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr "Persistencia de Java con Hibernate"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr "Segunda edición de Hibernate en acción"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1234 @@
+# translation of collection_mapping.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: collection_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-03-16 10:27+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mapping"
+msgstr "Mapeos de colección "
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "Colecciones persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type. For example:"
+msgstr ""
+"Hibernate requiere que los campos valuados en colección persistente se "
+"declaren como un tipo de interfaz. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or anything you like (\"anything you "
+"like\" means you will have to write an implementation of <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"La interfaz real puede ser <literal>java.util.Set</literal>, <literal>java."
+"util.Collection</literal>, <literal>java.util.List</literal>, <literal>java."
+"util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java."
+"util.SortedMap</literal> o lo que usted quiera (donde \"lo que usted quiera"
+"\" significa que tendrá que escribir una implementación de <literal>org."
+"hibernate.usertype.UserCollectionType</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice how the instance variable was initialized with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent, by calling <literal>persist()</literal> for "
+"example, Hibernate will actually replace the <literal>HashSet</literal> with "
+"an instance of Hibernate's own implementation of <literal>Set</literal>. Be "
+"aware of the following errors:"
+msgstr ""
+"Note cómo se inicializó la variable de instancia con una instancia de "
+"<literal>HashSet</literal>. Esta es la mejor forma de inicializar las "
+"propiedades valuadas en colección de instancias recién instanciadas (no "
+"persistentes). Cuando hace persistente la instancia, llamando a "
+"<literal>persist()</literal>, por ejemplo, Hibernate realmente remplazará el "
+"<literal>HashSet</literal> con una instancia de una implementación de "
+"<literal>Set</literal> propia de Hibernate. Observe los siguientes errores:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending on the interface type."
+msgstr ""
+"Las colecciones persistentes inyectadas por Hibernate se comportan como "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> o <literal>ArrayList</literal>, "
+"dependiendo del tipo de interfaz. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and are "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities cannot share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics. Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"Las instancias de colecciones tienen el comportamiento usual de los tipos de "
+"valor. Son automáticamente persistidas al ser referenciadas por un objeto "
+"persistente y se borran automáticamente al desreferenciarse. Si una "
+"colección se pasa de un objeto persistente a otro, puede que sus elementos "
+"se muevan de una tabla a otra. Dos entidades no pueden compartir una "
+"referencia a la misma instancia de colección. Debido al modelo relacional "
+"subyacente, las propiedades valuadas en colección no soportan la semántica "
+"de valor nulo. Hibernate no distingue entre una referencia de colección nula "
+"y una colección vacía."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use persistent collections the same way you use ordinary Java collections. "
+"However, please ensure you understand the semantics of bidirectional "
+"associations (these are discussed later)."
+msgstr ""
+"Utilice las colecciones persistentes de la misma forma en que utiliza "
+"colecciones de Java ordinarias. Sin embargo, asegúrese de que entiende la "
+"semántica de las asociaciones bidireccionales (se discuten más adelante)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "Mapeos de colección"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections "
+"that cover many common relational models. We suggest you experiment with the "
+"schema generation tool so that you understand how various mapping "
+"declarations translate to database tables."
+msgstr ""
+"Hay bastantes rangos de mapeos que se pueden generar para colecciones que "
+"cubren muchos modelos relacionales comúnes. Le recomendamos que experimente "
+"con la herramienta de generación de esquemas para comprender cómo se "
+"traducen varias declaraciones de mapeo a tablas de bases de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of interface. For example, a <literal>&lt;set&gt;</literal> element is "
+"used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"El elemento de mapeo de Hibernate usado para mapear una colección depende "
+"del tipo de la interfaz. Por ejemplo, un elemento <literal>&lt;set&gt;</"
+"literal> se utiliza para mapear propiedades de tipo <literal>Set</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;"
+"list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</"
+"literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-"
+"array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> "
+"element is representative:"
+msgstr ""
+"Aparte de <literal>&lt;set&gt;</literal>, existen además los elementos de "
+"mapeo <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, "
+"<literal>&lt;bag&gt;</literal>, <literal>&lt;array&gt;</literal> y "
+"<literal>&lt;primitive-array&gt;</literal>. El elemento <literal>&lt;map&gt;"
+"</literal> es representativo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal>: el nombre de la propiedad de colección"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name): the name of "
+"the collection table. It is not used for one-to-many associations."
+msgstr ""
+"<literal>table</literal> (opcional - por defecto es el nombre de la "
+"propiedad): el nombre de la tabla de colección. No se utiliza para "
+"asociaciones uno-a-muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (opcional): el nombre de un esquema de tablas para "
+"sobrescribir el esquema declarado en el elemento raíz"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"disables lazy fetching and specifies that the association is always eagerly "
+"fetched. It can also be used to enable \"extra-lazy\" fetching where most "
+"operations do not initialize the collection. This is suitable for large "
+"collections."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto es <literal>true</literal>): "
+"deshabilita la recuperación perezosa y especifica que la asociación siempre "
+"es recuperada tempranamente. También se puede utilizar para activar una "
+"recuperación \"extra-perezoza\", en donde la mayoría de las operaciones no "
+"inicializan la colección. Esto es apropiado para colecciones grandes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): marks this collection as the \"inverse\" end of a bidirectional "
+"association."
+msgstr ""
+"<literal>inverse</literal> (opcional - por defecto es <literal>false</"
+"literal>): marca esta colección como el extremo \"inverso\" de una "
+"asociación bidireccional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>): "
+"enables operations to cascade to child entities."
+msgstr ""
+"<literal>cascade</literal> (opcional - por defecto es <literal>none</"
+"literal>): habilita operaciones en cascada para entidades hijas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>sort</literal> (optional): specifies a sorted collection with "
+"<literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+"<literal>sort</literal> (opcional): especifica una colección con "
+"ordenamiento <literal>natural</literal>, o una clase comparadora dada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only): specifies a table "
+"column or columns that define the iteration order of the <literal>Map</"
+"literal>, <literal>Set</literal> or bag, together with an optional "
+"<literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+"<literal>order-by</literal> (opcional, sólamente en JDK1.4): especifica una "
+"columna de tabla o columnas que definen el orden de iteración del "
+"<literal>Map</literal>, <literal>Set</literal> o bag junto con un "
+"<literal>asc</literal> o <literal>desc</literal> opcional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition that is used when retrieving or removing "
+"the collection. This is useful if the collection needs to contain only a "
+"subset of the available data."
+msgstr ""
+"<literal>where</literal> (opcional): especifica una condición "
+"<literal>WHERE</literal> de SQL arbitraria que se utiliza al recuperar o "
+"quitar la colección. Esto es útil si la colección debe contener sólamente un "
+"subconjunto de los datos disponibles."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>): "
+"chooses between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (opcional, por defecto es <literal>select</"
+"literal>): Elige entre la recuperación por unión externa (outer-join), la "
+"recuperación por selección secuencial y la recuperación por subselección "
+"secuencial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (opcional, por defecto es <literal>1</"
+"literal>): especifica un \"tamaño de lote\" para recuperar perezosamente "
+"instancias de esta colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the collection property "
+"value."
+msgstr ""
+"<literal>access</literal> (opcional - por defecto es <literal>property</"
+"literal>): La estrategia que Hibernate utiliza para acceder al valor de la "
+"propiedad de colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that changes to the state of the collection results in "
+"increments of the owning entity's version. For one-to-many associations you "
+"may want to disable this setting."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto es <literal>true</"
+"literal>): Especifica que los cambios de estado de la colección causan "
+"incrementos de la versión de la entidad dueña. Para asociaciones uno a "
+"muchos, es posible que quiera deshabilitar esta opción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"a value of <literal>false</literal> specifies that the elements of the "
+"collection never change. This allows for minor performance optimization in "
+"some cases."
+msgstr ""
+"<literal>mutable</literal> (opcional - por defectos es <literal>true</"
+"literal>): Un valor <literal>false</literal> especifica que los elementos de "
+"la colección nunca cambian. En algunos casos, esto permite una pequeña "
+"optimización de rendimiento."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "Claves foráneas de colección"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis>, or columns, of the collection "
+"table. The collection key column is mapped by the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Las instancias de colección se distinguen en la base de datos por la clave "
+"foránea de la entidad que posee la colección. Se hace referencia a esta "
+"clave foránea como la <emphasis>columna clave de colección</emphasis> o "
+"columnas de la tabla de colección. El elemento <literal>&lt;key&gt;</"
+"literal> mapea la columna clave de la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one-to-many associations, "
+"the foreign key column is nullable by default, so you may need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"Puede haber una restricción de nulabilidad sobre la columna de clave "
+"foránea. Para la mayoría de las colecciones, esto es implícito. Para "
+"asociaciones unidireccionales uno-a-muchos, la columna de clave foránea es "
+"nulable por defecto, de modo que puede que necesite especificar <literal>not-"
+"null=\"true\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"La restricción de clave foránea puede utilizar <literal>ON DELETE CASCADE</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Vea el capítulo anterior para obtener una definición completa del elemento "
+"<literal>&lt;key&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "Elementos de collección"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections can contain almost any other Hibernate type, including: basic "
+"types, custom types, components and references to other entities. This is an "
+"important distinction. An object in a collection might be handled with "
+"\"value\" semantics (its life cycle fully depends on the collection owner), "
+"or it might be a reference to another entity with its own life cycle. In the "
+"latter case, only the \"link\" between the two objects is considered to be a "
+"state held by the collection."
+msgstr ""
+"Las colecciones pueden contener casi cualquier tipo de Hibernate, "
+"incluyendo: los tipos básicos, personalizados, componentes y referencias a "
+"otras entidades. Esta es una diferencia importante. Un objeto en una "
+"colección puede ser manejado con una semántica de \"valor\" (su ciclo de "
+"vida depende completamente del propietario de la colección) o podría ser una "
+"referencia a otra entidad, con su propio ciclo de vida. En el último caso, "
+"sólamente el \"enlace\" entre los dos objetos se considera como un estado "
+"mantenido por la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</"
+"literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of "
+"entity references, with <literal>&lt;one-to-many&gt;</literal> or "
+"<literal>&lt;many-to-many&gt;</literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"Se hace referencia al tipo contenido como el <emphasis>tipo de elemento de "
+"la colección</emphasis>. Los elementos de colección son mapeados por "
+"<literal>&lt;element&gt;</literal> o <literal>&lt;composite-element&gt;</"
+"literal>, o en el caso de referencias de entidades, con <literal>&lt;one-to-"
+"many&gt;</literal> o <literal>&lt;many-to-many&gt;</literal>. Las dos "
+"primeras mapean elementos con semántica de valor, los dos siguientes se "
+"utilizan para mapear asociaciones de entidades."
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "Colecciones indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table. An index column "
+"is a column that maps to an array index, or <literal>List</literal> index, "
+"or <literal>Map</literal> key. The index of a <literal>Map</literal> may be "
+"of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be "
+"an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</"
+"literal>, or it can be a composite type mapped with <literal>&lt;composite-"
+"map-key&gt;</literal>. The index of an array or list is always of type "
+"<literal>integer</literal> and is mapped using the <literal>&lt;list-"
+"index&gt;</literal> element. The mapped column contains sequential integers "
+"that are numbered from zero by default."
+msgstr ""
+"Todos los mapeos de colección, excepto aquellos con semántica de set o bag, "
+"necesitan una <emphasis>columna índice</emphasis> en la tabla de colección. "
+"Una columna índice es una columna que mapea a un índice de array o índice de "
+"<literal>List</literal> o llave de <literal>Map</literal>. El índice de un "
+"<literal>Map</literal> puede ser de cualquier tipo básico, mapeado con "
+"<literal>&lt;map-key&gt;</literal>. Puede ser una referencia de entidad "
+"mapeada con <literal>&lt;map-key-many-to-many&gt;</literal>, o puede ser un "
+"tipo compuesto mapeado con <literal>&lt;composite-map-key&gt;</literal>. El "
+"índice de un array o lista es siempre de tipo <literal>integer</literal> y "
+"se mapea utilizando el elemento <literal>&lt;list-index&gt;</literal>. La "
+"columna mapeada contiene enteros secuenciales numerados desde cero, por "
+"defecto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column_name</literal> (required): the name of the column holding "
+"the collection index values."
+msgstr ""
+"<literal>column_name</literal> (requerido): el nombre de la columna que "
+"tiene los valores del índice de la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>base</literal> (optional - defaults to <literal>0</literal>): the "
+"value of the index column that corresponds to the first element of the list "
+"or array."
+msgstr ""
+"<literal>base</literal> (opcional - por defecto es <literal>0</literal>): el "
+"valor de la columna índice que corresponde al primer elemento de la lista o "
+"el array."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection index values."
+msgstr ""
+"<literal>column</literal> (opcional): el nombre de la columna que tiene los "
+"valores del índice de colecciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQL formula used to evaluate the "
+"key of the map."
+msgstr ""
+"<literal>formula</literal> (opcional): una fórmula SQL que se usa para "
+"evaluar la clave del mapa."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr "<literal>type</literal> (requerido): el tipo de las claves del mapa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column for "
+"the collection index values."
+msgstr ""
+"<literal>column</literal> (opcional): el nombre de la columna de la clave "
+"foránea para los valores del índice de la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQ formula used to evaluate the "
+"foreign key of the map key."
+msgstr ""
+"<literal>formula</literal> (opcional): una fórmula SQ utilizada para evaluar "
+"la clave foránea de la clave de mapeos."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the entity class used as the map key."
+msgstr ""
+"<literal>class</literal> (requerido): La clase de entidad que se usa como la "
+"clave mapeada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your table does not have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you can map the property as a "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order "
+"when it is retrieved from the database, but it can be optionally sorted or "
+"ordered."
+msgstr ""
+"Si su tabla no tiene una columna índice y todavía desea utilizar "
+"<literal>List</literal> como tipo de propiedad, puede mapear la propiedad "
+"como un <emphasis>&lt;bag&gt;</emphasis> de Hibernate. Un bag (bolsa) no "
+"retiene su orden al ser recuperado de la base de datos, pero puede ser "
+"ordenado o clasificado de manera opcional."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "Colecciones de valores y asociaciones muchos-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any collection of values or many-to-many associations requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns, and possibly an "
+"index column or columns."
+msgstr ""
+"Cualquier colección de valores o asociación muchos-a-muchos requiere una "
+"<emphasis>tabla de colección</emphasis> dedicada con una columna o columnas "
+"de clave foránea, <emphasis>columna de elemento de colección</emphasis> o "
+"columnas y posiblemente una columna o columnas índices."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a collection of values use the <literal>&lt;element&gt;</literal> tag. "
+"For example:"
+msgstr ""
+"Para una colección de valores utilice la etiqueta <literal>&lt;element&gt;</"
+"literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection element values."
+msgstr ""
+"<literal>column</literal> (opcional): el nombre de la columna que tiene los "
+"valores de los elementos de la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element."
+msgstr ""
+"<literal>formula</literal> (opcional): una fórmula SQL utilizada para "
+"evaluar el elemento."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr "<literal>type</literal> (requerido): el tipo del elemento de colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>many-to-many association</emphasis> is specified using the "
+"<literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+"Una <emphasis>asociación muchos-a-muchos</emphasis> se especifica usando el "
+"elemento <literal>&lt;many-to-many&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the element foreign key "
+"column."
+msgstr ""
+"<literal>column</literal> (opcional): el nombre de la columna de clave "
+"foránea elemento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element foreign key value."
+msgstr ""
+"<literal>formula</literal> (opcional): una fórmula SQL utilizada para "
+"evaluar el valor de la clave foránea elemento."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr "<literal>class</literal> (requerido): El nombre de la clase asociada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching in a single <literal>SELECT</"
+"literal> of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching,not only of the collection "
+"itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</"
+"literal> nested element."
+msgstr ""
+"<literal>fetch</literal> (opcional - por defecto es <literal>join</"
+"literal>): habilita la búsqueda de selects secuenciales o de unión externa "
+"para esta asociación. Este es un caso especial; para búsqueda temprana "
+"completa en un solo <literal>SELECT</literal> de una entidad y sus "
+"relaciones muchos-a-muchos con otras entidades, habilitaría la búsqueda "
+"<literal>join</literal>,no solo de la colección misma, si no también con "
+"este atributo en el elemento anidado <literal>&lt;many-to-many&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. This makes the association "
+"multiplicity effectively one-to-many."
+msgstr ""
+"<literal>unique</literal> (opcional): habilita la generación DDL de una "
+"restricción única para la columna de la clave foránea. Esto hace la "
+"multiplicidad de la asociación efectivamente uno-a-muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - por defecto es <literal>exception</"
+"literal>): Especifica cómo serán manejadas las claves foráneas que hacen "
+"referencia a filas que falten: <literal>ignore</literal> tratará una fila "
+"que falte como una asociación nula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"<literal>entity-name</literal> (opcional): El nombre de entidad de la clase "
+"asociada como una alternativa para <literal>class</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal> (opcional): el nombre de una propiedad de la "
+"clase asociada que está unida a esta clave foránea. Si no se especifica "
+"entonces se utiliza la clave principal de la clase asociada."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr "Aquí tiene algunos ejemplos:"
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr "Un grupo de cadenas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bag containing integers with an iteration order determined by the "
+"<literal>order-by</literal> attribute:"
+msgstr ""
+"Un bag que contiene enteros con un orden de iteración determinado por el "
+"atributo <literal>order-by</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr "Una lista de entidades, en este caso, una asociación muchos-a-muchos:"
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "Un mapeo de índices de cadenas a fechas:"
+
+#. Tag: para
+#, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr "Una lista de componentes (se discuten en el siguiente capítulo):"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "Asociaciones uno-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>one-to-many association</emphasis> links the tables of two "
+"classes via a foreign key with no intervening collection table. This mapping "
+"loses certain semantics of normal Java collections:"
+msgstr ""
+"Una <emphasis>asociación uno-a-muchos</emphasis> enlaza las tablas de dos "
+"clases por medio de una clave foránea, sin intervención de tabla de "
+"colección alguna. Este mapeo pierde cierta semántica de colecciones Java "
+"normales: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot belong to more than one "
+"instance of the collection."
+msgstr ""
+"Una instancia de la clase entidad contenida no puede pertenecer a más de una "
+"instancia de la colección. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot appear at more than one "
+"value of the collection index."
+msgstr ""
+"Una instancia de la clase entidad contenida no puede aparecer en más de un "
+"valor del índice de colección. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires the existence of a foreign key column and possibly an index column "
+"to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</"
+"literal> tag indicates that this is a one-to-many association."
+msgstr ""
+"Una asociación de <literal>Product</literal> a <literal>Part</literal> "
+"requiere la existencia de una columna clave foránea y posiblemente una "
+"columna índice a la tabla <literal>Part</literal>. Una etiqueta <literal>&lt;"
+"one-to-many&gt;</literal> indica que ésta es una asociación uno-a-muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how cached identifiers that reference missing rows will "
+"be handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - por defecto es <literal>exception</"
+"literal>): Especifica cómo serán manejados los identificadores en caché que "
+"referencien filas perdidas. <literal>ignore</literal> tratará una fila "
+"perdida como una asociación nula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;one-to-many&gt;</literal> element does not need to declare "
+"any columns. Nor is it necessary to specify the <literal>table</literal> "
+"name anywhere."
+msgstr ""
+"El elemento <literal>&lt;one-to-many&gt;</literal> no necesita declarar "
+"ninguna columna. Ni es necesario especificar el nombre de <literal>table</"
+"literal> en ningún sitio."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> "
+"association is declared <literal>NOT NULL</literal>, you must declare the "
+"<literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> "
+"or <emphasis>use a bidirectional association</emphasis> with the collection "
+"mapping marked <literal>inverse=\"true\"</literal>. See the discussion of "
+"bidirectional associations later in this chapter for more information."
+msgstr ""
+"Si la columna de la clave foránea de una asociación <literal>&lt;one-to-"
+"many&gt;</literal> se declara <literal>NOT NULL</literal>, debe declarar el "
+"mapeo de <literal>&lt;key&gt;</literal><literal>not-null=\"true\"</literal> "
+"o <emphasis> utilizar una asociación bidireccional</emphasis> con el mapeo "
+"de colección marcado <literal>inverse=\"true\"</literal>. Vea la discusión "
+"sobre asociaciones bidireccionales más adelante en este capítulo para "
+"obtener mayor información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following example shows a map of <literal>Part</literal> entities by "
+"name, where <literal>partName</literal> is a persistent property of "
+"<literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+"El siguiente ejemplo muestra un mapeo de entidades <literal>Part</literal> "
+"por nombre, en donde <literal>partName</literal> es una propiedad "
+"persistente de <literal>Part</literal>. Observe el uso de un índice basado "
+"en fórmula:"
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "Mapeos de colección avanzados"
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "Colecciones ordenadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"Hibernate soporta colecciones implementando <literal>java.util.SortedMap</"
+"literal> y <literal>java.util.SortedSet</literal>. Tiene que especificar un "
+"comparador en el archivo de mapeo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"Los valores permitidos del atributo <literal>sort</literal> son "
+"<literal>unsorted</literal>, <literal>natural</literal> y el nombre de una "
+"clase que implemente <literal>java.util.Comparator</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Las colecciones ordenadas realmente se comportan como <literal>java.util."
+"TreeSet</literal> o <literal>java.util.TreeMap</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements, use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher and is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This "
+"performs the ordering in the SQL query and not in the memory."
+msgstr ""
+"Si quiere que la misma base de datos ordene los elementos de la colección, "
+"utilice el atributo <literal>order-by</literal> de los mapeos <literal>set</"
+"literal>, <literal>bag</literal> o <literal>map</literal>. Esta solución "
+"está disponible sólamente bajo el JDK 1.4 o superior y se implementa "
+"utilizando <literal>LinkedHashSet</literal> o <literal>LinkedHashMap</"
+"literal>. Este realiza la ordenación en la consulta SQL y no en memoria."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The value of the <literal>order-by</literal> attribute is an SQL ordering, "
+"not an HQL ordering."
+msgstr ""
+"El valor del atributo <literal>order-by</literal> es una ordenación SQL, no "
+"una ordenación HQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations can even be sorted by arbitrary criteria at runtime using a "
+"collection <literal>filter()</literal>:"
+msgstr ""
+"Las asociaciones pueden incluso ser ordenadas por algún criterio arbitrario "
+"en tiempo de ejecución utilizando un <literal>filter()</literal> de "
+"colección:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Asociaciones bidireccionales"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"Una <emphasis>asociación bidireccional</emphasis> permite la navegación "
+"desde ambos \"extremos\" de la asociación. Se soportan dos tipos de "
+"asociación bidireccional:"
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "uno-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr "conjunto o bag valorados en un lado, monovaluados en el otro"
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "muchos-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "set o bag valorados en ambos extremos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a bidirectional many-to-many association by mapping two many-"
+"to-many associations to the same database table and declaring one end as "
+"<emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+"Puede especificar una asociación bidireccional muchos-a-muchos simplemente "
+"mapeando dos asociaciones muchos-a-muchos a la misma tabla de base de datos "
+"y declarando un extremo como <emphasis>inverso</emphasis> (cuál de ellos, "
+"usted escoge, pero no puede ser una colección indexada)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a bidirectional many-to-many association that "
+"illustrates how each category can have many items and each item can be in "
+"many categories:"
+msgstr ""
+"He aquí un ejemplo de una asociación bidireccional muchos-a-muchos que "
+"ilustra la manera en que cada categoría puede tener muchos ítems y cada ítem "
+"puede estar en muchas categorías:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association: one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+"Los cambios realizados sólamente al extremo inverso de la asociación "
+"<emphasis>no</emphasis> son persistidos. Esto significa que Hibernate tiene "
+"dos representaciones en memoria para cada asociación bidireccional: un "
+"enlace de A a B y otro enlace de B a A. Esto es más fácil de entender si "
+"piensa en el modelo de objetos de Java y cómo creamos una relación muchos-a-"
+"muchos en Java:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr ""
+"El lado no-inverso se utiliza para guardar la representación en memoria a la "
+"base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"Puede definir una asociación bidireccional uno-a-muchos mapeando una "
+"asociación uno-a-muchos a la misma columna (o columnas) de tabla como una "
+"asociación muchos-a-uno y declarando el extremo multivaluado "
+"<literal>inverse=\"true\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+"Mapear un extremo de una asociación con <literal>inverse=\"true\"</literal> "
+"no afecta la operación de cascadas ay que éstos son conceptos ortogonales."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "Asociaciones bidireccionales con colecciones indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal>&lt;"
+"list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special "
+"consideration. If there is a property of the child class that maps to the "
+"index column you can use <literal>inverse=\"true\"</literal> on the "
+"collection mapping:"
+msgstr ""
+"Requiere especial atención una asociación bidireccional en donde un extremo "
+"esté representado como una <literal>&lt;list&gt;</literal> o <literal>&lt;"
+"map&gt;</literal>. Si hay una propiedad de la clase hija que mapee a la "
+"columna índice, puede utilizar <literal>inverse=\"true\"</literal> en el "
+"mapeo de la colección:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If there is no such property on the child class, the association cannot be "
+"considered truly bidirectional. That is, there is information available at "
+"one end of the association that is not available at the other end. In this "
+"case, you cannot map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, you could use the following mapping:"
+msgstr ""
+"Si no existe tal propiedad en la clase hija, no podemos considerar la "
+"asociación como verdaderamente bidireccional. Es decir, hay información en "
+"un extremo de la asociación que no está disponible en el otro extremo. En "
+"este caso, no puede mapear la colección con <literal>inverse=\"true\"</"
+"literal>. En cambio, puede usar el siguiente mapeo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key."
+msgstr ""
+"Note que en este mapeo, el extremo de la asociación valuado en colección es "
+"responsable de las actualizaciones de la clave foránea. "
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "Asociaciones ternarias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One "
+"approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"Hay tres enfoques posibles para mapear una asociación ternaria. Una es "
+"utilizar un <literal>Map</literal> con una asociación como su índice: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is to remodel the association as an entity class. This is "
+"the most common approach."
+msgstr ""
+"Un segundo enfoque es remodelar la asociación como una clase de entidad. "
+"Este es el enfoque más común."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which will be discussed "
+"later."
+msgstr ""
+"La última opción es utilizar elementos compuestos que discutiremos más "
+"adelante."
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "<literal>Utilización de un &lt;idbag&gt;</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The majority of the many-to-many associations and collections of values "
+"shown previously all map to tables with composite keys, even though it has "
+"been have suggested that entities should have synthetic identifiers "
+"(surrogate keys). A pure association table does not seem to benefit much "
+"from a surrogate key, although a collection of composite values "
+"<emphasis>might</emphasis>. It is for this reason that Hibernate provides a "
+"feature that allows you to map many-to-many associations and collections of "
+"values to a table with a surrogate key."
+msgstr ""
+"La mayoría de las asociaciones muchos-a-muchos y las colecciones de valores "
+"que hemos mostrado hasta ahora mapean a tablas con claves compuestas, aunque "
+"se ha sugerido que las entidades deben tener identificadores sintéticos "
+"(llaves sustitutas). Una tabla de pura asociación no parece beneficiarse "
+"mucho de una llave sustituta, aunque sí <emphasis>podría</emphasis> "
+"beneficiarse una colección de valores compuestos. Es por esto que Hibernate "
+"brinda una funcionalidad que le permite mapear asociaciones muchos a muchos "
+"y colecciones de valores a una tabla con una llave sustituta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+"El elemento <literal>&lt;idbag&gt;</literal> le permite mapear una "
+"<literal>List</literal> (o <literal>Collection</literal>) con semántica de "
+"bag. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like "
+"an entity class. A different surrogate key is assigned to each collection "
+"row. Hibernate does not, however, provide any mechanism for discovering the "
+"surrogate key value of a particular row."
+msgstr ""
+"Un <literal>&lt;idbag&gt;</literal> tiene un generador de id sintético, al "
+"igual que una clase de entidad. Se asigna una clave delegada diferente a "
+"cada fila de la colección. Sin embargo, Hibernate no proporciona ningún "
+"mecanismo para descubrir el valor de la clave delegada de una fila en "
+"particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a "
+"regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows "
+"efficiently and update or delete them individually, similar to a list, map "
+"or set."
+msgstr ""
+"El rendimiento de actualización de un <literal>&lt;idbag&gt;</literal> es "
+"mucho mejor que el de un <literal>&lt;bag&gt;</literal> normal. Hibernate "
+"puede localizar filas individuales eficientemente y actualizarlas o "
+"borrarlas individualmente, al igual que si fuese una lista, mapa o conjunto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal>&lt;idbag&gt;</literal> "
+"collection identifiers."
+msgstr ""
+"En la implementación actual, la estrategia de generación de identificador "
+"<literal>native</literal> no se encuentra soportada para identificadores de "
+"colecciones <literal>&lt;idbag&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "Ejemplos de colección"
+
+#. Tag: para
+#, no-c-format
+msgid "This section covers collection examples."
+msgstr "Esta sección cubre los ejemplos de colección. "
+
+#. Tag: para
+#, no-c-format
+msgid "The following class has a collection of <literal>Child</literal> instances:"
+msgstr ""
+"La siguiente clase tiene una colección de instancias <literal>Child</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If each child has, at most, one parent, the most natural mapping is a one-to-"
+"many association:"
+msgstr ""
+"Si cada hijo tiene como mucho un padre, el mapeo más natural es una "
+"asociación uno-a-muchos:"
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "Esto mapea a las siguientes definiciones de tabla:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"Si el padre es <emphasis>requerido</emphasis>, utilice una asociación "
+"bidireccional uno-a-muchos:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "Observe la restricción <literal>NOT NULL</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, if this association must be unidirectional you can declare "
+"the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</"
+"literal> mapping:"
+msgstr ""
+"Opcionalmente, si esta asociación debe ser unidireccional, puede declarar la "
+"restricción <literal>NOT NULL</literal> en el mapeo de <literal>&lt;key&gt;</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, if a child has multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"Por otro lado, si un hijo tiene múltiples padres, una asociación muchos-a-"
+"muchos es apropiada:"
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "Definiciones de tabla:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For more examples and a complete explanation of a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+"Para ver más ejemplos y encontrar una explicación completa sobre el mapeo de "
+"relaciones padre/hijo, consulte el <xref linkend=\"example-parentchild\" />."
+
+#. Tag: para
+#, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr "En el próximo capítulo abordaremos los mapeos de asociaciones más complejas."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,417 @@
+# translation of component_mapping.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: component_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 12:54+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "Mapeo de componentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts and purposes throughout Hibernate."
+msgstr ""
+"La noción de un <emphasis>componente</emphasis> se reutiliza en muchos "
+"contextos diferentes, para propósitos diferentes a través de Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "Objetos dependientes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type and not "
+"an entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition and not to architecture-level components. For example, "
+"you can model a person like this:"
+msgstr ""
+"Un componente es un objeto contenido que es persistido como un tipo de "
+"valor, no una referencia de entidad. El término \"componente\" hace "
+"referencia a la noción orientada a objetos de composición y no a componentes "
+"a nivel de arquitectura. Por ejemplo, puede modelar una persona así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now <literal>Name</literal> can be persisted as a component of "
+"<literal>Person</literal>. <literal>Name</literal> defines getter and setter "
+"methods for its persistent properties, but it does not need to declare any "
+"interfaces or identifier properties."
+msgstr ""
+"Ahora <literal>Name</literal> puede ser persistido como un componente de "
+"<literal>Person</literal>. <literal>Name</literal> define métodos getter y "
+"setter para sus propiedades persistentes, pero no necesita declarar ninguna "
+"interfaz ni propiedades identificadoras."
+
+#. Tag: para
+#, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "Nuestro mapeo de Hibernate se vería así: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"La tabla person tendría las columnas <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> y <literal>last</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Like value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name objects that were only \"the same\" by "
+"value. The null value semantics of a component are <emphasis>ad hoc</"
+"emphasis>. When reloading the containing object, Hibernate will assume that "
+"if all component columns are null, then the entire component is null. This "
+"is suitable for most purposes."
+msgstr ""
+"Como todos los tipos de valor, los componentes no soportan referencias "
+"compartidas. En otras palabras, dos personas pueden tener el mismo nombre, "
+"pero los dos objetos persona contendrían dos objetos nombre independientes, "
+"sólamente \"iguales\" en valor. La semántica de valor nulo de un componente "
+"es <emphasis>ad hoc</emphasis>. Cuando se recargue el objeto contenedor, "
+"Hibernate asumirá que si todas las columnas del componente son nulas, el "
+"componente entero es nulo. Esto es apropiado para la mayoría de propósitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties of a component can be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a fine-grained object model."
+msgstr ""
+"Las propiedades de un componente pueden ser de cualquier tipo de Hibernate "
+"(colecciones, asociaciones muchos-a-uno, otros componentes, etc). Los "
+"componentes anidados <emphasis>no</emphasis> deben ser considerados como un "
+"uso exótico. Hibernate está concebido para soportar un modelo de objetos muy "
+"detallado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"El elemento <literal>&lt;component&gt;</literal> permite un subelemento "
+"<literal>&lt;parent&gt;</literal> que mapea una propiedad de la clase del "
+"componente como una referencia a la entidad contenedora."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "Colecciones de objetos dependientes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections of components are supported (e.g. an array of type "
+"<literal>Name</literal>). Declare your component collection by replacing the "
+"<literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-"
+"element&gt;</literal> tag:"
+msgstr ""
+"Las colecciones de componentes se encuentran soportadas (por ejemplo, un "
+"array de tipo <literal>Name</literal>). Declare su colección de componentes "
+"remplazando la etiqueta <literal>&lt;element&gt;</literal> por una etiqueta "
+"<literal>&lt;composite-element&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you define a <literal>Set</literal> of composite elements, it is "
+"important to implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> correctly."
+msgstr ""
+"Si define un <literal>Set</literal> de elementos compuestos, es muy "
+"importante implementar <literal>equals()</literal> y <literal>hashCode()</"
+"literal> de manera correcta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can contain components but not collections. If your "
+"composite element contains components, use the <literal>&lt;nested-composite-"
+"element&gt;</literal> tag. This case is a collection of components which "
+"themselves have components. You may want to consider if a one-to-many "
+"association is more appropriate. Remodel the composite element as an entity, "
+"but be aware that even though the Java model is the same, the relational "
+"model and persistence semantics are still slightly different."
+msgstr ""
+"Los elementos compuestos pueden contener componentes pero no colecciones. Si "
+"su elemento compuesto contiene a su vez componentes, use la etiqueta "
+"<literal>&lt;nested-composite-element&gt;</literal>. Este es un caso de una "
+"colección de componentes que a su vez tienen componentes. Se debe estar "
+"preguntando si una asociación uno-a-muchos es más apropiada. Remodele el "
+"elemento compuesto como una entidad - pero observe que aunque el modelo Java "
+"es el mismo, el modelo relacional y la semántica de persistencia siguen "
+"siendo ligeramente diferentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A composite element mapping does not support null-able properties if you are "
+"using a <literal>&lt;set&gt;</literal>. There is no separate primary key "
+"column in the composite element table. Hibernate uses each column's value to "
+"identify a record when deleting objects, which is not possible with null "
+"values. You have to either use only not-null properties in a composite-"
+"element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+"Un mapeo de elemento compuesto no soporta propiedades nulables si está "
+"utilizando un <literal>&lt;set&gt;</literal>. No hay una columna clave "
+"principal separada en la tabla del elemento compuesto. Hibernate utiliza el "
+"valor de cada columna para identificar un registro al borrar objetos, lo "
+"cual es imposible con valores nulos. Tiene que usar sólo propiedades no "
+"nulas en un elemento compuesto o elegir un <literal>&lt;list&gt;</literal>, "
+"<literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal> o "
+"<literal>&lt;idbag&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to "
+"map extra columns of a many-to-many association table to the composite "
+"element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal>, where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"Un caso especial de un elemento compuesto es un elemento compuesto con un "
+"elemento anidado <literal>&lt;many-to-one&gt;</literal>. Este mapeo le "
+"permite mapear columnas extra de una tabla de asociación muchos-a-muchos a "
+"la clase del elemento compuesto. La siguiente es una asociación muchos-a-"
+"muchos de <literal>Order</literal> a <literal>Item</literal>, donde "
+"<literal>purchaseDate</literal>, <literal>price</literal> y "
+"<literal>quantity</literal> son propiedades de la asociación:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There cannot be a reference to the purchase on the other side for "
+"bidirectional association navigation. Components are value types and do not "
+"allow shared references. A single <literal>Purchase</literal> can be in the "
+"set of an <literal>Order</literal>, but it cannot be referenced by the "
+"<literal>Item</literal> at the same time."
+msgstr ""
+"No puede haber una referencia a la compra del otro lado para la navegación "
+"bidireccional de la asociación. Los componentes son tipos de valor y no "
+"permiten referencias compartidas. Una sola <literal>Purchase</literal> puede "
+"estar en el conjunto de una <literal>Order</literal>, pero no puede ser "
+"referenciada por el <literal>Item</literal> al mismo tiempo."
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "Incluso son posibles las asociaciones ternarias (o cuaternarias, etc):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"Los elementos compuestos pueden aparecer en consultas usando la misma "
+"sintáxis que las asociaciones a otras entidades. "
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "Componentes como índices de Mapeo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a "
+"component class as the key of a <literal>Map</literal>. Ensure that you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"El elemento <literal>&lt;composite-map-key&gt;</literal> le permite mapear "
+"una clase componente como la clave de un <literal>Map</literal>. Asegúrese "
+"de sobrescribir <literal>hashCode()</literal> y <literal>equals()</literal> "
+"correctamente en la clase componente. "
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "Componentes como identificadores compuestos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"Puede utilizar un componente como un identidicador de una clase entidad. Su "
+"clase componente tiene que satisfacer ciertos requerimientos: "
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "Tiene que implementar <literal>java.io.Serializable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> consistently with the database's notion of composite key equality."
+msgstr ""
+"Tiene que re-implementar <literal>equals()</literal> y <literal>hashCode()</"
+"literal>, consistentemente con la noción de la base de datos de igualdad de "
+"clave compuesta."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In Hibernate3, although the second requirement is not an absolutely hard "
+"requirement of Hibernate, it is recommended."
+msgstr ""
+"En Hibernate3, aunque el segundo requerimiento no es un requerimiento "
+"absolutamente rígido de Hibernate, en todo caso se recomienda."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"No puede utilizar un <literal>IdentifierGenerator</literal> para generar "
+"claves compuestas. En cambio, la aplicación debe asignar sus propios "
+"identificadores. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use the <literal>&lt;composite-id&gt;</literal> tag, with nested "
+"<literal>&lt;key-property&gt;</literal> elements, in place of the usual "
+"<literal>&lt;id&gt;</literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"Use la etiqueta <literal>&lt;composite-id&gt;</literal>, con elementos "
+"anidados <literal>&lt;key-property&gt;</literal>, en lugar de la declaración "
+"usual <literal>&lt;id&gt;</literal>. Por ejemplo, la clase "
+"<literal>OrderLine</literal> tiene una clave principal que depende de la "
+"clave principal (compuesta) de <literal>Order</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any foreign keys referencing the <literal>OrderLine</literal> table are now "
+"composite. Declare this in your mappings for other classes. An association "
+"to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+"Cualquier clave foránea que referencie la tabla de <literal>OrderLine</"
+"literal> también es compuesta. Declare esto en sus mapeos de otras clases. "
+"Una asociación a <literal>OrderLine</literal> se mapea así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>column</literal> element is an alternative to the "
+"<literal>column</literal> attribute everywhere. Using the <literal>column</"
+"literal> element just gives more declaration options, which are mostly "
+"useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+"El elemento <literal>column</literal> es una alternativa al atributo <literal>column</literal> en cualquier lugar. El uso del elemento <literal>column</"
+"literal> simplemente le da más opciones de declaración, las cuales son útiles al utilizar <literal>hbm2ddl</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"Una asociación <literal>muchos-a-muchos</literal> a <literal>OrderLine</"
+"literal> también usa la clave foránea compuesta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"La colección de <literal>OrderLine</literal>s en <literal>Order</literal> "
+"utilizaría: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr "El elemento <literal>&lt;one-to-many&gt;</literal> declara ninguna columna."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"Si <literal>OrderLine</literal> posee una colección por sí misma, tiene "
+"también una clave foránea compuesta."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "Componentes dinámicos"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "También puede mapear una propiedad del tipo <literal>Map</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
+"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"You can also access, and change, Hibernate's configuration-time metamodel "
+"via the <literal>Configuration</literal> object."
+msgstr ""
+"La semántica de un mapeo <literal>&lt;dynamic-component&gt;</literal> es "
+"ídentica a la de <literal>&lt;component&gt;</literal>. La ventaja de este "
+"tipo de mapeos es la habilidad para determinar las propiedades reales del "
+"bean en tiempo de despliegue, sólo con editar el documento de mapeo. La "
+"manipulación del documento de mapeo en tiempo de ejecución también es "
+"posible, usando un analizador DOM. También puede acceder y cambiar el "
+"metamodelo de tiempo de configuración de Hibernate por medio del objeto "
+"<literal>Configuration</literal>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2643 @@
+# translation of configuration.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 11:05+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is designed to operate in many different environments and, as "
+"such, there is a broad range of configuration parameters. Fortunately, most "
+"have sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"displays the various options. Simply put the example file in your classpath "
+"and customize it to suit your needs."
+msgstr ""
+"Hibernate está diseñado para operar en muchos entornos diferentes y por lo "
+"tanto hay un gran número de parámetros de configuración. Afortunadamente, la "
+"mayoría tiene valores predeterminados sensibles y Hibernate se distribuye "
+"con un archivo <literal>hibernate.properties</literal> de ejemplo en "
+"<literal>etc/</literal> que muestra las diversas opciones. Simplemente ponga "
+"el fichero de ejemplo en su ruta de clase y personalícelo de acuerdo a sus "
+"necesidades."
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "Configuración programática"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of <classname>org.hibernate.cfg.Configuration</classname> "
+"represents an entire set of mappings of an application's Java types to an "
+"SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is "
+"used to build an immutable <interfacename>org.hibernate.SessionFactory</"
+"interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+"Una instancia de <classname>org.hibernate.cfg.Configuration</classname> "
+"representa un conjunto entero de mapeos de los tipos Java de una aplicación "
+"a una base de datos SQL. La <classname>org.hibernate.cfg.Configuration</"
+"classname> se utiliza para construir una <interfacename>org.hibernate."
+"SessionFactory</interfacename> inmutable. Los mapeos se compilan desde "
+"varios archivos de mapeo XML."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can obtain a <classname>org.hibernate.cfg.Configuration</classname> "
+"instance by instantiating it directly and specifying XML mapping documents. "
+"If the mapping files are in the classpath, use <literal>addResource()</"
+"literal>. For example:"
+msgstr ""
+"Puede obtener una instancia de <classname>org.hibernate.cfg.Configuration</"
+"classname> instanciándola directamente y especificando los documentos de "
+"mapeo XML. Si los archivos de mapeo están en la ruta de clase, utilice "
+"<literal>addResource()</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative way is to specify the mapped class and allow Hibernate to "
+"find the mapping document for you:"
+msgstr ""
+"Una manera opcional es especificar la clase mapeada y dejar que Hibernate "
+"encuentre el documento de mapeo por usted:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will then search for mapping files named <filename>/org/hibernate/"
+"auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm."
+"xml</filename> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"Luego Hibernate buscará los archivos de mapeo llamados <filename>/org/"
+"hibernate/auction/Item.hbm.xml</filename> y <filename>/org/hibernate/auction/"
+"Bid.hbm.xml</filename> en la ruta de clase. Este enfoque elimina cualquier "
+"nombre de archivo establecido manualmente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <classname>org.hibernate.cfg.Configuration</classname> also allows you to "
+"specify configuration properties. For example:"
+msgstr ""
+"Una <classname>org.hibernate.cfg.Configuration</classname> también le "
+"permite especificar las propiedades de configuración. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. Some "
+"alternative options include:"
+msgstr ""
+"Esta no es la única manera de pasar propiedades de configuración a "
+"Hibernate. Algunas opciones incluyen:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Pass an instance of <classname>java.util.Properties</classname> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"Pasar una instancia de <classname>java.util.Properties</classname> a "
+"<literal>Configuration.setProperties()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Place a file named <filename>hibernate.properties</filename> in a root "
+"directory of the classpath."
+msgstr ""
+"Colocar un archivo llamado <literal>hibernate.properties</literal> en un "
+"directorio raíz de la ruta de clase."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"Establecer propiedades <literal>System</literal> utilizando <literal>java -"
+"Dproperty=value</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal> (this is discussed later)."
+msgstr ""
+"Incluir los elementos <literal>&lt;property&gt;</literal> en "
+"<literal>hibernate.cfg.xml</literal> (esto se discute más adelante)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to get started quickly<filename>hibernate.properties</filename> "
+"is the easiest approach."
+msgstr ""
+"Si quiere empezar rápidamente <filename>hibernate.properties</filename> es "
+"el enfoque más fácil."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <classname>org.hibernate.cfg.Configuration</classname> is intended as a "
+"startup-time object that will be discarded once a <literal>SessionFactory</"
+"literal> is created."
+msgstr ""
+"La <classname>org.hibernate.cfg.Configuration</classname> está concebida "
+"como un objeto de tiempo de inicio que se va a descartar una vez se crea una "
+"<literal>SessionFactory</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "Obtención de una SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When all mappings have been parsed by the <classname>org.hibernate.cfg."
+"Configuration</classname>, the application must obtain a factory for "
+"<interfacename>org.hibernate.Session</interfacename> instances. This factory "
+"is intended to be shared by all application threads:"
+msgstr ""
+"Cuando la <classname>org.hibernate.cfg."
+"Configuration</classname> ha "
+"analizado sintácticamente todos los mapeos, la aplicación tiene que obtener "
+"una fábrica para las instancias <interfacename>org.hibernate.Session</interfacename>. Esta fábrica está concebida para que todos los hilos de la "
+"aplicación la compartan:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. This is useful "
+"if you are using more than one database."
+msgstr ""
+"Hibernate permite que su aplicación instancie más de una <interfacename>org.hibernate.SessionFactory</interfacename>. Esto es útil si está utilizando "
+"más de una base de datos."
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "Conexiones JDBC"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is advisable to have the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> create and pool JDBC connections for you. If you take this "
+"approach, opening a <interfacename>org.hibernate.Session</interfacename> is "
+"as simple as:"
+msgstr ""
+"Se aconseja que la <interfacename>org.hibernate.SessionFactory</"
+"interfacename> cree y almacene en pool conexiones JDBC por usted Si adopta "
+"este enfoque, el abrir una <interfacename>org.hibernate.Session</"
+"interfacename> es tan simple como:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you start a task that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"En el momento en que inicie una tarea que requiera acceso a la base de "
+"datos, se obtendrá una conexión JDBC del pool."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Before you can do this, you first need to pass some JDBC connection "
+"properties to Hibernate. All Hibernate property names and semantics are "
+"defined on the class <classname>org.hibernate.cfg.Environment</classname>. "
+"The most important settings for JDBC connection configuration are outlined "
+"below."
+msgstr ""
+"Para que esto funcione, primero necesita pasar algunas las propiedades de "
+"conexión JDBC a Hibernate. Todos los nombres de las propiedades de Hibernate "
+"y su semántica están definidas en la clase <classname>org.hibernate.cfg."
+"Environment</classname>. Ahora describiremos las configuraciones más "
+"importantes para la conexión JDBC."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will obtain and pool connections using <classname>java.sql."
+"DriverManager</classname> if you set the following properties:"
+msgstr ""
+"Hibernate obtendrá y tendrá en pool las conexiones utilizando "
+"<classname>java.sql.DriverManager</classname> si configura las siguientes "
+"propiedades:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Propiedades JDBC de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "Nombre de la propiedad"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "Propósito"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "<property>hibernate.connection.driver_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "<emphasis>clase del controlador JDBC</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "<property>hibernate.connection.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr "<emphasis>URL JDBC</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "<property>hibernate.connection.username</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "<emphasis>usuario de la base de datos</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "<property>hibernate.connection.password</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "<emphasis>contraseña del usuario de la base de datos</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "<property>hibernate.connection.pool_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "<emphasis>número máximo de conexiones en pools</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is, however, quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis>, or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <property>hibernate.connection.pool_size</property> property "
+"with connection pool specific settings. This will turn off Hibernate's "
+"internal pool. For example, you might like to use c3p0."
+msgstr ""
+"Sin embargo, el algoritmo de pooling de la conexión propia de Hibernate es "
+"algo rudimentario. Está concebido para ayudarle a comenzar y <emphasis>no "
+"para utilizarse en un sistema de producción</emphasis> ni siquiera para "
+"pruebas de rendimiento. Para alcanzar un mejor rendimiento y estabilidad "
+"debe utilizar un pool de terceros. Sólo remplace la propiedad "
+"<property>hibernate.connection.pool_size</property> con configuraciones "
+"específicas del pool de conexiones. Esto desactivará el pool interno de "
+"Hibernate. Por ejemplo, es posible utilizar C3P0."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <filename>lib</filename> directory. Hibernate will use its "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for "
+"connection pooling if you set <property>hibernate.c3p0.*</property> "
+"properties. If you would like to use Proxool, refer to the packaged "
+"<filename>hibernate.properties</filename> and the Hibernate web site for "
+"more information."
+msgstr ""
+"C3P0 es un pool de conexiones JDBC de código abierto distribuido junto con "
+"Hibernate en el directorio <literal>lib</literal>. Hibernate utilizará su "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> para "
+"pooling de conexiones si establece propiedades <literal>hibernate.c3p0.*</"
+"literal>. Si quiere utilizar Proxool refiérase a <literal>hibernate."
+"properties</literal> incluído en el paquete y al sitio web de Hibernate para "
+"obtener más información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example <filename>hibernate.properties</filename> file "
+"for c3p0:"
+msgstr ""
+"Aquí hay un archivo <literal>hibernate.properties</literal> de ejemplo para "
+"c3p0:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You "
+"will need to set at least one of the following properties:"
+msgstr ""
+"Para su utilización dentro de un servidor de aplicaciones, casi siempre "
+"usted debe configurar Hibernate para obtener conexiones de un "
+"<interfacename>javax.sql.Datasource</interfacename> del servidor de "
+"aplicaciones registrado en JNDI. Necesitará establecer al menos una de las "
+"siguientes propiedades:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Propiedades de la Fuente de Datos de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "<property>hibernate.connection.datasource</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "<emphasis>nombre JNDI de la fuente de datos</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "<property>hibernate.jndi.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "<emphasis>URL del proveedor JNDI</emphasis> (opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "<property>hibernate.jndi.class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
+"<emphasis>clase del JNDI <literal>InitialContextFactory</literal></emphasis> "
+"(opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr "<emphasis>usuario de la base de datos</emphasis> (opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr "<emphasis>contraseña del usuario de la base de datos</emphasis> (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example <filename>hibernate.properties</filename> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"He aquí un archivo <literal>hibernate.properties</literal> de ejemplo para "
+"una fuente de datos JNDI provisto por un servidor de aplicaciones:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"Las conexiones JDBC obtenidas de una fuente de datos JNDI participarán "
+"automáticamente en las transacciones del servidor de aplicaciones "
+"administradas por el contenedor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Arbitrary connection properties can be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the connection property name. "
+"For example, you can specify a <property>charSet</property> connection "
+"property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+"Pueden darse propiedades de conexión arbitrarias anteponiendo "
+"\"<literal>hibernate.connnection</literal>\" al nombre de propiedad de la "
+"conexión. Por ejemplo, puede especificar una propiedad de conexión "
+"<literal>charSet</literal> usando <property>hibernate.connection.charSet</"
+"property>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, and specifying your custom "
+"implementation via the <property>hibernate.connection.provider_class</"
+"property> property."
+msgstr ""
+"Puede definir su propia estrategia plugin para obtener conexiones JDBC "
+"implementando la interfaz <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> y especificando su propia implementación "
+"personalizada por medio de la propiedad <property>hibernate.connection."
+"provider_class</property>."
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "Parámetros de configuración opcionales"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a number of other properties that control the behavior of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"Hay otras propiedades que controlan el comportamiento de Hibernate en tiempo "
+"de ejecución. Todas son opcionales y tienen valores razonables por defecto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Some of these properties are \"system-level\" only.</emphasis> "
+"System-level properties can be set only via <literal>java -Dproperty=value</"
+"literal> or <filename>hibernate.properties</filename>. They "
+"<emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>Algunas de estas propiedades se encuentran a \"nivel del sistema sólamente\".</emphasis> "
+"Las propiedades a nivel del sistema sólamente se pueden establecer por medio "
+"de <literal>java -Dproperty=value</"
+"literal> o <filename>hibernate.properties</filename>. <emphasis>No</emphasis> se pueden establecer por medio de las "
+"técnicas descritas anteriormente."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Propiedades de Configuración de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "<property>hibernate.dialect</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> which allows Hibernate to generate SQL optimized for a particular "
+"relational database."
+msgstr ""
+"El nombre de clase de un <classname>org.hibernate.dialect.Dialect</"
+"classname> de Hibernate, el cual le permite que genere un SQL optimizado "
+"para una base de datos relacional en particular. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases Hibernate will actually be able to choose the correct "
+"<classname>org.hibernate.dialect.Dialect</classname> implementation based on "
+"the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+"En la mayoría de los casos Hibernate podrá de hecho seleccionar la "
+"implementación <classname>org.hibernate.dialect.Dialect</classname> correcta "
+"con base en los <literal>JDBC metadata</literal> que el controlador JDBC "
+"retorna."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "<property>hibernate.show_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"Escribe todas las declaraciones SQL a la consola. Esta es una alternativa "
+"para establecer la categoria de registro <literal>org.hibernate.SQL</"
+"literal> a <literal>debug</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "<property>hibernate.format_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "Imprime el SQL en el registro y la consola."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "<property>hibernate.default_schema</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"Califica los nombres de tabla sin calificar con el esquema/espacio de tabla "
+"dado en el SQL generado. "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "<property>hibernate.default_catalog</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"Califica los nombres de tabla sin calificar con el catálogo dado en el SQL "
+"generado."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "<property>hibernate.session_factory_name</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.SessionFactory</interfacename> will be "
+"automatically bound to this name in JNDI after it has been created."
+msgstr ""
+"Automáticamente se vinculará el <interfacename>org.hibernate.SessionFactory</"
+"interfacename> a este nombre en JNDI después de que se ha creado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "<property>hibernate.max_fetch_depth</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"Establece una \"profundidad\" máxima del árbol de recuperación por unión "
+"externa (outer join) para asociaciones de un sólo extremo (uno-a-uno, muchos-"
+"a-uno). Un <literal>0</literal> deshabilita la recuperación por unión "
+"externa predeterminada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> los valores recomendados entre "
+"<literal>0</literal> y <literal>3</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "<property>hibernate.default_batch_fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr ""
+"Establece un tamaño por defecto para la recuperación en lote de asociaciones "
+"de Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> valores recomendados <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "<property>hibernate.default_entity_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"Establece un modo predeterminado de representación de entidades para todas "
+"las sesiones abiertas desde esta <literal>SessionFactory</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "<property>hibernate.order_updates</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"Obliga a Hibernate a ordenar las actualizaciones SQL por el valor de la "
+"clave principal de los items a actualizar. Esto resultará en menos bloqueos "
+"de transacción en sistemas altamente concurrentes."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "<property>hibernate.generate_statistics</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"De habilitarse, Hibernate colectará estadísticas útiles para la afinación de "
+"rendimiento. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "<property>hibernate.use_identifier_rollback</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"De habilitarse, cuando se borren los objetos las propiedades identificadoras "
+"generadas se resetearán a losvalores establecidos por defecto."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "<property>hibernate.use_sql_comments</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"De activarse, Hibernate generará comentarios dentro del SQL, para una "
+"depuración más fácil, por defecto es <literal>false</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "Propiedades de JDBC y Conexiones de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "<property>hibernate.jdbc.fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"Un valor distinto de cero que determina el tamaño de recuperación de JDBC "
+"(llama a <literal>Statement.setFetchSize()</literal>)."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "<property>hibernate.jdbc.batch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr ""
+"Un valor distinto de cero habilita que Hibernate utilice las actualizaciones "
+"en lote de JDBC2. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> valores recomendados entre "
+"<literal>5</literal> y <literal>30</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "<property>hibernate.jdbc.batch_versioned_data</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal>. Iit is usually "
+"safe to turn this option on. Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"Establece esta propiedad como <literal>true</literal> si su controlador JDBC "
+"retorna cuentas correctas de filas desde <literal>executeBatch()</literal>. "
+"Usualmente es seguro activar esta opción. Hibernate utilizará un DML en lote "
+"para versionar automáticamente los datos. Por defecto es <literal>false</"
+"literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "<property>hibernate.jdbc.factory_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Most applications will not need this configuration property."
+msgstr ""
+"Selecciona un <interfacename>org.hibernate.jdbc.Batcher</interfacename> "
+"personalizado. La mayoría de las aplicaciones no necesitarán esta propiedad "
+"de configuración. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user-supplied JDBC connections. Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Habilita a Hibernate para utilizar los grupos de resultados deslizables de "
+"JDBC2. Esta propiedad sólamente es necesaria cuando se utilizan conexiones "
+"JDBC provistas por el usuario. En el caso contrario Hibernate utiliza los "
+"metadatos de conexión."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "<property>hibernate.jdbc.use_streams_for_binary</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+msgstr ""
+"Utiliza flujos (streams) al escribir/leer tipos <literal>binary</literal> o "
+"<literal>serializable</literal> a/desde JDBC. <emphasis>Propiedad a nivel de "
+"sistema</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "<property>hibernate.jdbc.use_get_generated_keys</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, it tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"Habilita el uso de <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"de JDBC3 para recuperar claves generadas nativamente después de insertar. "
+"Requiere un controlador JDBC3+ y un JRE1.4+. Establézcalo como falso si su "
+"controlador tiene problemas con los generadores del identificador de "
+"Hibernate. Por defecto, se intenta determinar las capacidades del "
+"controlador utilizando los metadatos de conexión."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "<property>hibernate.connection.provider_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> which provides JDBC connections to "
+"Hibernate."
+msgstr ""
+"EL nombre de clase de un <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> personalizado que proporcione conexiones "
+"JDBC a Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "<property>hibernate.connection.isolation</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets the JDBC transaction isolation level. Check <interfacename>java.sql."
+"Connection</interfacename> for meaningful values, but note that most "
+"databases do not support all isolation levels and some define additional, "
+"non-standard isolations."
+msgstr ""
+"Establece el nivel de aislamiento de la transacción JDBC. Comprueba "
+"<interfacename>java.sql.Connection</interfacename> para valores "
+"significativos pero observe que la mayoría de las bases de datos no soportan "
+"todos los niveles de aislamiento y algunos definen nivekes de aislamiento "
+"adicionales y no estándares."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "<property>hibernate.connection.autocommit</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr ""
+"Habilita un guardado automático (autocommit) para las conexiones JDBC en "
+"pool (no se recomienda)."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "<property>hibernate.connection.release_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Specifies when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, use <literal>after_statement</"
+"literal> to aggressively release connections after every JDBC call. For a "
+"non-JTA connection, it often makes sense to release the connection at the "
+"end of each transaction, by using <literal>after_transaction</literal>. "
+"<literal>auto</literal> will choose <literal>after_statement</literal> for "
+"the JTA and CMT transaction strategies and <literal>after_transaction</"
+"literal> for the JDBC transaction strategy."
+msgstr ""
+"Especifica el momento en que Hibernate debe liberar las conexiones JDBC. Por "
+"defecto, una conexión JDBC es retenida hasta que la sesión se cierra o se "
+"desconecta explícitamente. Para una fuente de datos JTA del servidor de "
+"aplicaciones, debe utilizar <literal>after_statement</literal> para liberar "
+"agresivamente las conexiones después de cada llamada JDBC. Para una conexión "
+"no JTA, frecuentemente tiene sentido el liberar la conexión al final de cada "
+"transacción, el utilizar<literal>after_transaction</literal>. <literal>auto</"
+"literal> escogerá <literal>after_statement</literal> para las estrategias de "
+"transacción JTA y CMT y <literal>after_transaction</literal> para la "
+"estrategia JDBC de transacción. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This setting only affects <literal>Session</literal>s returned from "
+"<literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\" />"
+msgstr ""
+"Esta configuración sólamente afecta las <literal>Session</literal>es "
+"retornadas desde <literal>SessionFactory.openSession</literal>. Para las "
+"<literal>Session</literal>es obtenidas por medio de <literal>SessionFactory."
+"getCurrentSession</literal>, la implementación "
+"<literal>CurrentSessionContext</literal> configurada para utilización "
+"controla el modo de liberación de la conexión para esas <literal>Session</"
+"literal>es. Consulte <xref linkend=\"architecture-current-session\" />."
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+msgstr ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
+"Pasar la propiedad JDBC <emphasis>&lt;propertyName&gt;</emphasis> a "
+"<literal>DriverManager.getConnection()</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
+"Pasar la propiedad <emphasis>&lt;propertyName&gt;</emphasis> al "
+"<literal>InitialContextFactory</literal> JNDI."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Propiedades de Caché de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "<literal>hibernate.cache.provider_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr "El nombre de clase de un <literal>CacheProvider</literal> personalizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "<literal>hibernate.cache.use_minimal_puts</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Optimizes second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"Optimiza la operación del caché de segundo nivel para minimizar escrituras, "
+"con el costo de lecturas más frecuentes. Esta configuración es más útil para "
+"cachés en clúster y en Hibernate3, está habilitado por defecto para "
+"implementaciones de caché en clúster. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "<literal>hibernate.cache.use_query_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+"Habilita el caché de consultas. Las consultas individuales todavía tienen "
+"que establecerse con cachés. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "<literal>hibernate.cache.use_second_level_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Can be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal>&lt;cache&gt;</literal> "
+"mapping."
+msgstr ""
+"Se puede utilizar para deshabilitar por completo el caché de segundo nivel, "
+"que está habilitado por defecto para clases que especifican un mapeo "
+"<literal>&lt;cache&gt;</literal>. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "<literal>hibernate.cache.query_cache_factory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"El nombre de clase de una interfaz <literal>QueryCache</literal> "
+"personalizada, por defecto al <literal>StandardQueryCache</literal> "
+"incorporado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "<literal>hibernate.cache.region_prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr ""
+"Un prefijo que se debe utilizar para los nombres de región del caché de "
+"segundo nivel."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "<literal>hibernate.cache.use_structured_entries</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"Obliga a Hibernate a almacenar los datos en el caché de segundo nivel en un "
+"formato más amigable para personas."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Propiedades de Transacción de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "<literal>hibernate.transaction.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"El nombre de clase de un <literal>TransactionFactory</literal> a utilizar "
+"con la API de <literal>Transaction</literal> de Hibernate (por defecto es "
+"<literal>JDBCTransactionFactory</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "<literal>jta.UserTransaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"Un nombre JNDI utilizado por <literal>JTATransactionFactory</literal> para "
+"obtener la <literal>UserTransaction</literal> de JTA del servidor de "
+"aplicaciones. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "<literal>hibernate.transaction.manager_lookup_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal>. It is "
+"required when JVM-level caching is enabled or when using hilo generator in a "
+"JTA environment."
+msgstr ""
+"El nombre de clase de un <literal>TransactionManagerLookup</literal>. Se "
+"requiere cuando el chaché a nivel de MVJ está habilitado o cuando se utiliza "
+"un generador alto/bajo en un entorno JTA."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "<literal>hibernate.transaction.flush_before_completion</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Si está habilitado, la sesión se vaciará automáticamente durante la fase "
+"previa a la finalización de la transacción. Se prefiere la administración "
+"del contexto de sesión automático e incorporado. Consulte <xref linkend="
+"\"architecture-current-session\" />."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "<literal>hibernate.transaction.auto_close_session</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Si se habilita, la sesión se cerrará automáticamente durante la fase "
+"posterior a la finalización de la transacción. Se prefiere la administración "
+"del contexto de sesión automático e incorporado. Consulte <xref linkend="
+"\"architecture-current-session\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "Propiedades Misceláneas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "<literal>hibernate.current_session_context_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Supply a custom strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\" /> for more information about the built-in strategies."
+msgstr ""
+"Proporciona una estrategia personalizada para el alcance de la "
+"<literal>Session</literal> \"actual\". Consulte <xref linkend=\"architecture-"
+"current-session\" /> para obtener más información sobre las estrategias "
+"incorporadas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "<literal>hibernate.query.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "Elige la implementación de análisis sintáctico HQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> o <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "<literal>hibernate.query.substitutions</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Is used to map from tokens in Hibernate queries to SQL tokens (tokens might "
+"be function or literal names, for example)."
+msgstr ""
+"Se utiliza para mapear desde tokens en consultas Hibernate a tokens SQL. "
+"(por ejemplo, los tokens pueden ser nombres de función o literales). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "<literal>hibernate.hbm2ddl.auto</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Automatically validates or exports schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"Exporta o valida automáticamente DDL de esquema a la base de datos cuando se "
+"crea la <literal>SessionFactory</literal>. Con <literal>create-drop</"
+"literal> se desechará el esquema de la base de datos cuando la "
+"<literal>SessionFactory</literal> se cierre explícitamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables the use of CGLIB instead of runtime reflection (System-level "
+"property). Reflection can sometimes be useful when troubleshooting. "
+"Hibernate always requires CGLIB even if you turn off the optimizer. You "
+"cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Habilita el uso de CGLIB en vez de reflección en tiempo de ejecución "
+"(propiedad a nivel del sistema). La reflección a veces puede ser útil ante "
+"ciertos problemas. Hibernate siempre requiere CGLIB incluso si desactiva el "
+"optimizador. No puede establecer esta propiedad en <literal>hibernate.cfg."
+"xml</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "Dialectos de SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Always set the <literal>hibernate.dialect</literal> property to the correct "
+"<literal>org.hibernate.dialect.Dialect</literal> subclass for your database. "
+"If you specify a dialect, Hibernate will use sensible defaults for some of "
+"the other properties listed above. This means that you will not have to "
+"specify them manually."
+msgstr ""
+"Siempre configure la propiedad <literal>hibernate.dialect</literal> a la "
+"subclase correcta <literal>org.hibernate.dialect.Dialect</literal> para su "
+"base de datos. Si especifica un dialecto, Hibernate utilizará valores "
+"predeterminados de manera sensible para algunas de las otras propiedades "
+"enumeradas anteriormente, ahorrándole el esfuerzo de especificarlas "
+"manualmente."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Dialectos SQL de Hibernate(<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialecto"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr "DB2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "MySQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MySQL con InnoDB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "MySQL con MyISAM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle (cualquier versión)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.OracleDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr "Oracle 9i"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr "Oracle 10g"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Anywhere"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Microsoft SQL Server"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InformixDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.IngresDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progress"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Pointbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "FrontBase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "Recuperación por Unión Externa - Outer Join Fetching"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database. This is, "
+"however, at the cost of possibly more work performed by the database itself. "
+"Outer join fetching allows a whole graph of objects connected by many-to-"
+"one, one-to-many, many-to-many and one-to-one associations to be retrieved "
+"in a single SQL <literal>SELECT</literal>."
+msgstr ""
+"Si su base de datos soporta uniones externas del estilo ANSI, Oracle o "
+"Sybase, frecuentemente la <emphasis>recuperación por unión externa</"
+"emphasis> aumentará el rendimiento limitando el número de llamadas a la base "
+"de datos. La recuperación por unión externa permite que un gráfico completo "
+"de objetos conectados por asociaciones muchos-a-uno, uno-a-muchos, muchos-a-"
+"muchos y uno-a-uno sea recuperado en un sólo <literal>SELECT</literal> SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Outer join fetching can be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations that have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"La recuperación por unión externa puede ser deshabilitada "
+"<emphasis>globalmente</emphasis> estableciendo la propiedad "
+"<literal>hibernate.max_fetch_depth</literal> como <literal>0</literal>. Un "
+"valor de <literal>1</literal> o mayor habilita la recuperación por unión "
+"externa para asociaciones uno-a-uno y muchos-a-uno que hayan sido mapeadas "
+"con <literal>fetch=\"join\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+"Consulte <xref linkend=\"performance-fetching\" /> para obtener más "
+"información."
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "Flujos Binarios"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that can be passed "
+"to and/or from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle limita el tamaño de arrays de <literal>byte</literal> que se puedan "
+"pasar a/desde su controlador JDBC. Si desea utilizar instancias grandes de "
+"tipo <literal>binary</literal> o <literal>serializable</literal>, usted debe "
+"habilitar <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>Esta es una configuración a nivel de sistema sólamente.</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "Caché de segundo nivel y de lectura"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+"Las propiedades prefijadas por <literal>hibernate.cache</literal> le "
+"permiten utilizar un sistema de caché de segundo nivel en el ámbito de un "
+"proceso o clúster con Hibernate. Vea la <xref linkend=\"performance-cache\" /"
+"> para obtener más detalles."
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "Sustitución de Lenguaje de Consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"Puede definir nuevos tokens de consulta de Hibernate utilizando "
+"<literal>hibernate.query.substitutions</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would cause the tokens <literal>true</literal> and <literal>false</"
+"literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+"Esto causaría que los tokens <literal>true</literal> y <literal>false</"
+"literal> sean traducidos a literales enteros en el SQL generado."
+
+#. Tag: para
+#, no-c-format
+msgid "This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr "Esto le permitiría renombrar la función <literal>LOWER</literal> de SQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Estadísticas de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"exposes a number of metrics that are useful when tuning a running system via "
+"<literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"Si habilita <literal>hibernate.generate_statistics</literal>, Hibernate "
+"expondrá un número de métricas que son útiles al afinar un sistema en "
+"ejecución por medio de <literal>SessionFactory.getStatistics()</literal>. "
+"Incluso se puede configurar Hibernate para exponer estas estadísticas por "
+"medio de JMX. Lea el Javadoc de las interfaces en <literal>org.hibernate."
+"stats</literal> para obtener más información."
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "Registros de mensajes (Logging)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J "
+"can direct your logging output to several logging frameworks (NOP, Simple, "
+"log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen "
+"binding. In order to setup logging you will need <filename>slf4j-api.jar</"
+"filename> in your classpath together with the jar file for your preferred "
+"binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See "
+"the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</"
+"ulink> for more detail. To use Log4j you will also need to place a "
+"<filename>log4j.properties</filename> file in your classpath. An example "
+"properties file is distributed with Hibernate in the <literal>src/</literal> "
+"directory."
+msgstr ""
+"Hibernate utiliza <ulink url=\"http://www.slf4j.org/\">Simple Logging Facade "
+"for Java</ulink> (SLF4J) con el fin de registrar varios eventos del sistema. "
+"SLF4J puede direccionar su salida de registro a varios marcos de trabajo de "
+"registro (NOP, Simple, log4j versión 1.2, JDK 1.4 logging, JCL o logback) "
+"dependiendo de su enlace escogido. Con el fin de configurar el registro "
+"necesitará <filename>slf4j-api.jar</filename> en su ruta de clase junto con "
+"el archivo jar para su enlace preferido - <filename>slf4j-log4j12.jar</"
+"filename> en el caso de Log4J. Consulte la <ulink url=\"http://www.slf4j.org/"
+"manual.html\">documentación</ulink> SLF4J para obtener mayores detalles. "
+"Para usar Log4j también necesitará poner un archivo <filename>log4j."
+"properties</filename> en su ruta de clase. Un archivo de propiedades de "
+"ejemplo se distribuye junto con Hibernate en el directorio <literal>src/</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"Le recomendamos bastante que se familiarice con los mensajes de registro de "
+"Hibernate. Se ha trabajado bastante para hacer que los registros de "
+"Hibernate sean tan detallados como sea posible, sin hacerlos ilegibles. Es "
+"un dispositivo esencial en la resolución de problemas. Las categorías de "
+"registro más interesantes son las siguientes: "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Categorías de Registro de Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "Categoría"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "Función"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "<literal>org.hibernate.SQL</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "Registra todas las declaraciones DML de SQL a medida que se ejecutan"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "<literal>org.hibernate.type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "Registra todos los parámetros JDBC"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "<literal>org.hibernate.tool.hbm2ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "Registra todas las declaraciones DDL de SQL a medida que se ejecutan"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "<literal>org.hibernate.pretty</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"Registra el estado de todas las entidades (máximo 20 entidades) asociadas "
+"con la sesión en tiempo de limpieza (flush)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "<literal>org.hibernate.cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "Registra toda la actividad del caché de segundo nivel"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "<literal>org.hibernate.transaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "Registra la actividad relacionada con la transacción"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "<literal>org.hibernate.jdbc</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "Registra toda adquisición de recursos JDBC"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "<literal>org.hibernate.hql.ast.AST</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "Regista los ASTs de HQL y SQL, durante análisis de consultas."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "<literal>org.hibernate.secure</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "Registra todas las peticiones de autorización JAAS"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "<literal>org.hibernate</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log everything. This is a lot of information but it is useful for "
+"troubleshooting"
+msgstr ""
+"Registra todo. Hay mucha información, pero es útil para la resolución de "
+"problemas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Al desarrollar aplicaciones con Hibernate, casi siempre debe trabajar con "
+"<literal>debug</literal> habilitado para la categoría <literal>org.hibernate."
+"SQL</literal> o, alternativamente, la propiedad <literal>hibernate.show_sql</"
+"literal> habilitada."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "Implementación de una <literal>NamingStrategy</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"La interfaz <literal>org.hibernate.cfg.NamingStrategy</literal> le permite "
+"especificar un \"estándar de nombrado\" para objetos de la base de datos y "
+"los elementos del esquema."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"Puede proveer reglas para generar automáticamente identificadores de la base "
+"de datos a partir de identificadores JDBC o para procesar nombres \"lógicos"
+"\" de columnas y tablas dadas en el archivo de mapeo en nombres \"físicos\" "
+"de columnas y tablas. Esta funcionalidad ayuda a reducir la verborragia del "
+"documento de mapeo, eliminando ruidos repetitivos (por ejemplo, prefijos "
+"<literal>TBL_</literal>). Hibernate utiliza una estrategia por defecto "
+"bastante mínima."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"Puede especificar una estrategia diferente llamando a <literal>Configuration."
+"setNamingStrategy()</literal> antes de agregar los mapeos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> es una "
+"estrategia incorporada que puede ser un punto de partida útil para algunas "
+"aplicaciones."
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "Archivo de configuración XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"Un enfoque alternativo de configuración es especificar una configuración "
+"completa en un archivo llamado <literal>hibernate.cfg.xml</literal>. Este "
+"archivo se puede utilizar como un remplazo del archivo <literal>hibernate."
+"properties</literal> o en el caso de que ambos se encuentren presentes, para "
+"sobrescribir propiedades."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root of your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"El archivo de configuración XML por defecto se espera en la raíz de su "
+"<literal>CLASSPATH</literal>. Este es un ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The advantage of this approach is the externalization of the mapping file "
+"names to configuration. The <literal>hibernate.cfg.xml</literal> is also "
+"more convenient once you have to tune the Hibernate cache. It is your choice "
+"to use either <literal>hibernate.properties</literal> or <literal>hibernate."
+"cfg.xml</literal>. Both are equivalent, except for the above mentioned "
+"benefits of using the XML syntax."
+msgstr ""
+"La ventaja de este enfoque es la externalización de los nombres de los "
+"archivos de mapeo a la configuración. El <literal>hibernate.cfg.xml</"
+"literal> también es más práctico una vez que haya afinado el caché de "
+"Hibernate. Puede escoger ya sea <literal>hibernate.properties</literal> o "
+"<literal>hibernate.cfg.xml</literal>. Ambos son equivalentes, excepto por "
+"los beneficios de utilizar la sintaxis XML que mencionados anteriormente."
+
+#. Tag: para
+#, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr "Con la configuración XML, iniciar Hibernate es tan simple como:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "Puede seleccionar un fichero de configuración XML diferente utilizando:"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "Integración con Servidores de Aplicaciones J2EE"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr ""
+"Hibernate tiene los siguientes puntos de integración con la infraestructura "
+"J2EE:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), especially distributed transaction handling across several "
+"datasources. You can also demarcate transaction boundaries programmatically "
+"(BMT), or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>Fuentes de datos administrados por el contenedor</emphasis>: "
+"Hibernate puede utilizar conexiones JDBC administradas por el contenedor y "
+"provistas a través de JNDI. Usualmente, un <literal>TransactionManager</"
+"literal> compatible con JTA y un <literal>ResourceManager</literal> se "
+"ocupan de la administración de transacciones (CMT), especialmente del manejo "
+"de transacciones distribuídas a través de varias fuentes de datos. También "
+"puede demarcar los límites de las transacciones programáticamente (BMT) o "
+"puede que quiera utilizar para esto la API opcional de <literal>Transaction</"
+"literal> de Hibernate para mantener portátil su código."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>Vinculación Automática JNDI</emphasis>: Hibernate puede vincular "
+"sus <literal>SessionFactory</literal> a JNDI después del inicio."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</"
+"literal> can be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate manage flushing and closing the "
+"<literal>Session</literal> when your JTA transaction completes. Transaction "
+"demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>Vinculación de Sesión JTA:</emphasis> La <literal>Session</"
+"literal> de Hibernate se puede vincular automáticamente al ámbito de "
+"transacciones JTA. Simplemente busque la <literal>SessionFactory</literal> "
+"de JNDI y obténga la <literal>Session</literal> actual. Deje que Hibernate "
+"se ocupe de vaciar y cerrar la <literal>Session</literal> cuando se complete "
+"su transacción JTA. La demarcación de transacción puede ser declarativa "
+"(CMT) o programática (BMT/UserTransaction)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> if you have a JMX capable application "
+"server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal> and also "
+"take care of service dependencies (datasource has to be available before "
+"Hibernate starts, etc)."
+msgstr ""
+"<emphasis>Despliegue JMX:</emphasis> Si tiene un servidor de aplicaciones "
+"con capacidad para JMX (por ejemplo, JBoss AS), puede escoger el desplegar "
+"Hibernate como un MBean administrado. Esto le ahorra el código de una línea "
+"de inicio para construir su <literal>SessionFactory</literal> desde una "
+"<literal>Configuration</literal>. El contenedor iniciará su "
+"<literal>HibernateService</literal>, e idealmente también cuidará de las "
+"dependencias entre servicios (la fuente de datos debe estar disponible antes "
+"de que Hibernate inicie, etc)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"Dependiendo de su entorno, podría tener que establecer la opción de "
+"configuración <literal>hibernate.connection.aggressive_release</literal> "
+"como true si su servidor de aplicaciones muestra excepciones \"contención de "
+"conexión\"."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "Configuración de la estrategia de transacción"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly through a connection pool, you can begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"La API de <literal>Session</literal> de Hibernate es independiente de "
+"cualquier demarcación de transacción en su arquitectura. Si deja que "
+"Hibernate utilice JDBC directamente, a través de un pool de conexiones, "
+"puede comenzar y acabar sus transacciones llamando la API de JDBC. Si "
+"ejecuta en un servidor de aplicaciones J2EE, puede que quiera utilizar "
+"transacciones administradas por bean y llamar la API de JTA y "
+"<literal>UserTransaction</literal> cuando sea necesario."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"Para mantener su código portable entre estos dos (y otros) entornos le "
+"recomendamos la API de <literal>Transaction</literal> de Hibernate, que "
+"envuelve y oculta el sistema subyacente. Tiene que especificar una clase "
+"fábrica para las instancias de <literal>Transaction</literal> estableciendo "
+"la propiedad de configuración <literal>hibernate.transaction.factory_class</"
+"literal> de Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "Existen tres opciones estándares o incorporadas:"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "delega a transacciones de bases de datos (JDBC) (por defecto)"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"delegates to container-managed transactions if an existing transaction is "
+"underway in this context (for example, EJB session bean method). Otherwise, "
+"a new transaction is started and bean-managed transactions are used."
+msgstr ""
+"delega a transacciones administradas por el contenedor si una transacción "
+"existente se encuentra en proceso en este contexto (por ejemplo, un método "
+"de bean de sesión EJB). De otra manera, se inicia una nueva transacción y se "
+"utilizan las transacciones administradas por bean."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "delega a transacciones JTA administradas por el contenedor"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"También puede definir sus propias estrategias de transacción (por ejemplo, "
+"para un servicio de transacción CORBA)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some features in Hibernate (i.e., the second level cache, Contextual "
+"Sessions with JTA, etc.) require access to the JTA "
+"<literal>TransactionManager</literal> in a managed environment. In an "
+"application server, since J2EE does not standardize a single mechanism, you "
+"have to specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>:"
+msgstr ""
+"Algunas funcionalidades en Hibernate (por ejemplo, el caché de segundo "
+"nivel, las sesiones contextuales, etc.) requieren acceso al "
+"<literal>TransactionManager</literal> de JTA en un entorno administrado. En "
+"un servidor de aplicaciones tiene que especificar cómo Hibernate debe "
+"obtener una referencia al <literal>TransactionManager</literal>, ya que J2EE "
+"no estandariza un sólo mecanismo:"
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "TransactionManagers de JTA"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "Transaction Factory"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "Servidor de Aplicaciones"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "<literal>SessionFactory</literal> enlazado a JNDI"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup function of the factory and create new <literal>Session</literal>s. "
+"This is not, however, related to a JNDI bound <literal>Datasource</literal>; "
+"both simply use the same registry."
+msgstr ""
+"Una <literal>SessionFactory</literal> de Hibernate vinculada a JNDI puede "
+"simplificar la búsqueda de la fábrica y la creación de nuevas "
+"<literal>Session</literal>es. Sin embargo, esto no se relaciona con un "
+"<literal>Datasource</literal> vinculado a JNDI; simplemente que ambos "
+"utilizan el mismo registro."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. This is especially useful in environments with a "
+"read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+"Si desea tener la <literal>SessionFactory</literal> vinculada a un espacio "
+"de nombres de JNDI, especifique un nombre (por ejemplo, <literal>java:"
+"hibernate/SessionFactory</literal>) utilizando la propiedad "
+"<literal>hibernate.session_factory_name</literal>. Si se omite esta "
+"propiedad, la <literal>SessionFactory</literal> no será vinculada a JNDI. "
+"Esto es particularmente útil en entornos con una implementación JNDI de sólo "
+"lectura por defecto (por ejemplo, en Tomcat)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"Al vincular la <literal>SessionFactory</literal> a JNDI, Hibernate utilizará "
+"los valores de <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> para instanciar un contexto inicial. Si éstos no se "
+"especifican, se utilizará el <literal>InitialContext</literal> por defecto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will have this call in some startup code, or utility class in your "
+"application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (this is discussed later in greater "
+"detail)."
+msgstr ""
+"Hibernate colocará automáticamente la <literal>SessionFactory</literal> en "
+"JNDI después de que llame a <literal>cfg.buildSessionFactory()</literal>. "
+"Esto significa que tendrá al menos esta llamada en algún código de inicio o "
+"clase de utilidad en su aplicación, a menos de que utilice el despliegue JMX "
+"con el <literal>HibernateService</literal> (esto se discute más adelante en "
+"mayor detalle)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class, you can obtain the <literal>SessionFactory</literal> using a JNDI "
+"lookup."
+msgstr ""
+"Si utiliza una <literal>SessionFactory</literal> JNDI, un EJB or cualquier "
+"otra clase puede llegar a obtener el <literal>SessionFactory</literal> "
+"utilizando una búsqueda JNDI."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you bind the <literal>SessionFactory</literal> to "
+"JNDI in a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate&mdash;see chapter 1."
+msgstr ""
+"Le recomendamos que vincule el <literal>SessionFactory</literal> a JNDI en "
+"un entorno administrado y que de otra manera, use un singleton "
+"<literal>static</literal>. Para proteger su código de aplicación de estos "
+"detalles, también le recomendamos que esconda el código de búsqueda real "
+"para una <literal>SessionFactory</literal> en una clase de ayuda como "
+"<literal>HibernateUtil.getSessionFactory()</literal>. Note que dicha clase "
+"también es una manera práctica de iniciar Hibernate&mdash; vea el capítulo 1."
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "Administración de contexto de Sesión Actual con JTA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The easiest way to handle <literal>Sessions</literal> and transactions is "
+"Hibernate's automatic \"current\" <literal>Session</literal> management. For "
+"a discussion of contextual sessions see <xref linkend=\"architecture-current-"
+"session\" />. Using the <literal>\"jta\"</literal> session context, if there "
+"is no Hibernate <literal>Session</literal> associated with the current JTA "
+"transaction, one will be started and associated with that JTA transaction "
+"the first time you call <literal>sessionFactory.getCurrentSession()</"
+"literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> "
+"context are set to automatically flush before the transaction completes, "
+"close after the transaction completes, and aggressively release JDBC "
+"connections after each statement. This allows the <literal>Session</"
+"literal>s to be managed by the life cycle of the JTA transaction to which it "
+"is associated, keeping user code clean of such management concerns. Your "
+"code can either use JTA programmatically through <literal>UserTransaction</"
+"literal>, or (recommended for portable code) use the Hibernate "
+"<literal>Transaction</literal> API to set transaction boundaries. If you run "
+"in an EJB container, declarative transaction demarcation with CMT is "
+"preferred."
+msgstr ""
+"La manera más fácil de manejar <literal>Session</literal>es y transacciones "
+"es la administración de <literal>Session</literal> \"actual\" automática de "
+"Hibernate. Vea la discusión sobre las sesiones contextuales en <xref linkend="
+"\"architecture-current-session\"/>. Al utilizar el contexto de sesión de "
+"<literal>\"jta\"</literal>, si no hay una <literal>Session</literal> de "
+"Hibernate asociada con la transacción JTA actual, se iniciará y se asociará "
+"una con esa transacción JTA la primera vez que llame a "
+"<literal>sessionFactory.getCurrentSession()</literal>. Las <literal>Session</"
+"literal>es recuperadas por medio de <literal>getCurrentSession()</literal> "
+"en el contexto <literal>\"jta\"</literal> se configurarán con un vaciado "
+"automático antes de que la transacción se complete, se cerrará después de "
+"completar la transacción y liberará conexiones JDBC agresivamente para cada "
+"declaración. Esto permite que las <literal>Session</literal>es sean "
+"administradas por el ciclo de vida de la transacción JTA a la cual se "
+"encuentra asociada, manteniendo el código del usuario limpio de esas "
+"preocupaciones de administración. Su código puede utilizar JTA "
+"programáticamente por medio de <literal>UserTransaction</literal>, o "
+"(recomendable para el código portable) utilizar el API <literal>Transaction</"
+"literal> de Hibernate para establecer límites de transacciones. Si ejecuta "
+"un contenedor EJB, se prefiere una demarcación de transacción declarativa "
+"con CTM."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "Despliegue JMX"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block, like "
+"the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as "
+"a <emphasis>managed service</emphasis>."
+msgstr ""
+"La línea <literal>cfg.buildSessionFactory()</literal> todavía se tiene que "
+"ejecutar en algún sitio para obtener una <literal>SessionFactory</literal> "
+"en JNDI. Puede hacer esto ya sea en un bloque inicializador <literal>static</"
+"literal> (como aquel en <literal>HibernateUtil</literal>) o bien puede "
+"desplegar Hibernate como un <emphasis>servicio administrado</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor-specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"Hibernate se distribuye con <literal>org.hibernate.jmx.HibernateService</"
+"literal> para desplegar en un servidor de aplicaciones con capacidades JMX, "
+"como JBoss AS. El despliegue y la configuracón reales son específicos del "
+"vendedor. He aquí un ejemplo de <literal>jboss-service.xml</literal> para "
+"JBoss 4.0.x: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) can be "
+"kept in their own JAR file, but you can include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"Este archivo se implementa en un directorio llamado <literal>META-INF</"
+"literal> y se encuentra empacado en un archivo JAR con la extensión "
+"<literal>.sar</literal> (archivo de servicio). También necesita empacar "
+"Hibernate, sus bibliotecas de terceros requeridas, sus clases persistentes "
+"compiladas, así como sus archivos de mapeo en el mismo archivo. Sus beans "
+"empresariales (usualmente beans de sesión) se pueden dejar en su propio "
+"archivo JAR, pero puede incluir este archivo EJB JAR en el archivo de "
+"servicio principal para obtener una unidad desplegable en vivo (sin "
+"apagarlo). Consulte la documentación de JBoss AS para obtener más "
+"información sobre el servicio JMX y la implementación de EJB."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,570 @@
+# translation of events.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-11-12 09:03+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "Interceptores y eventos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"Es útil para la aplicación reaccionar a ciertos eventos que ocurren dentro "
+"de Hibernate. Esto permite la implementación de funcionalidades genéricas y "
+"la extensión de la funcionalidad de Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "Interceptores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"La interfaz <literal>Interceptor</literal> brinda callbacks desde la sesión "
+"a la aplicación, permitiendole a ésta última inspeccionar y/o manipular las "
+"propiedades de un objeto persistente antes de que sea guardado, actualizado, "
+"borrado o cargado. Un uso posible de esto es seguir la pista de la "
+"información de auditoría. Por ejemplo, el siguiente <literal>Interceptor</"
+"literal> establece automáticamente el <literal>createTimestamp</literal> "
+"cuando se crea un <literal>Auditable</literal> y se actualiza la propiedad "
+"<literal>lastUpdateTimestamp</literal> cuando se actualiza un "
+"<literal>Auditable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"Puede implementar el <literal>Interceptor</literal> directamente o extender "
+"el <literal>EmptyInterceptor</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"Hay dos clases de interceptores: incluído en <literal>Session</literal>- e "
+"incluído en <literal>SessionFactory</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"Se especifica un interceptor incluído <literal>Session</literal> cuando se "
+"abre una sesión utilizando uno de los métodos SessionFactory.openSession() "
+"sobrecargados aceptando un <literal>Interceptor</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"Un interceptor incluido en <literal>SessionFactory</literal> se encuentra "
+"registrado con el objeto <literal>Configuration</literal> antes de construir "
+"el <literal>SessionFactory</literal>. En este caso, el interceptor proveido "
+"será aplicado a todas las sesiones abiertas desde ese "
+"<literal>SessionFactory</literal>; a menos de que se abra una sesión "
+"especificando explícitamente el interceptor a utilizar. Los interceptores "
+"<literal>SessionFactory</literal> incluidos deben ser a prueba de hilos. "
+"Asegúrese de no almacenar un estado especifico a la sesión ya que múltiples "
+"sesiones utilizarán este interceptor potencialmente de manera concurrente."
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "Sistema de eventos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"Si tiene que reaccionar a eventos particulares en su capa de persistencia, "
+"también puede utilizar la arquitectura de <emphasis>eventos</emphasis> de "
+"Hibernate3. El sistema de eventos se puede ser utilizar además de o como un "
+"remplazo para los interceptores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"Todos los métodos de la interfaz <literal>Session</literal> se correlacionan "
+"con un evento. Tiene un <literal>LoadEvent</literal>, un "
+"<literal>FlushEvent</literal>, etc. Consulte el DTD del archivo de "
+"configuración XML o el paquete <literal>org.hibernate.event</literal> para "
+"ver la lista completa de los tipos de eventos definidos. Cuando se realiza "
+"una petición de uno de estos métodos, la <literal>Session</literal> de "
+"Hibernate genera un evento apropiado y se lo pasa al escucha (listener) de "
+"eventos configurado para ese tipo. Tal como vienen, estos escuchas "
+"implementan el mismo procesamiento en aquellos métodos donde siempre "
+"resultan . Sin embargo, usted es libre de implementar una personalización de "
+"una de las interfaces escuchas (por ejemplo, el <literal>LoadEvent</literal> "
+"es procesado por la implementación registrada de la interfaz "
+"<literal>LoadEventListener</literal>), en cuyo caso su implementación sería "
+"responsable de procesar cualquier petición <literal>load()</literal> "
+"realizada a la <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"Los escuchas se deben considerar como singletons. Esto significa que son "
+"compartidos entre las peticiones y por lo tanto, no deben guardar ningún "
+"estado como variables de instancia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"Un escucha personalizado implementa la interfaz apropiada para el evento que "
+"quiere procesar y/o extender una de las clases base de conveniencia (o "
+"incluso los escuchas de eventos predeterminados utilizados por Hibernate de "
+"fábrica al declararlos como no-finales para este propósito). Los escuchas "
+"personalizados pueden ser registrados programáticamente a través del objeto "
+"<literal>Configuration</literal>, o especificados en el XML de configuración "
+"de Hibernate. No se soporta la configuración declarativa a través del "
+"archivo de propiedades. Este es un ejemplo de un escucha personalizado de "
+"eventos load:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"También necesita una entrada de configuración diciéndole a Hibernate que "
+"utilice el oyente en vez del oyente por defecto:"
+
+#. Tag: para
+#, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "En cambio, puede registrarlo programáticamente: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"Los oyentes registrados declarativamente no pueden compartir instancias. Si "
+"se utiliza el mismo nombre de clase en múltiples elementos <literal>&lt;"
+"listener/&gt;</literal>, cada referencia resultará en una instancia separada "
+"de esa clase. Si necesita compartir instancias de oyentes entre tipos de "
+"oyentes debe usar el enfoque de registración programática."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"¿Por qué implementar una interfaz y definir el tipo específico durante la "
+"configuración? Una implementación de escucha podría implementar múltiples "
+"interfaces de escucha de eventos. Teniendo el tipo definido adicionalmente "
+"durante la registración hace más fácil activar o desactivar escuchas "
+"personalizados durante la configuración."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Seguridad declarativa de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"Usualmente, la seguridad declarativa en aplicaciones Hibernate se administra "
+"en una capa de fachada de sesión. Hibernate3 permite que ciertas acciones se "
+"permitan por medio de JACC y las autoriza por medio de JAAS. Esta es una "
+"funcionalidad opcional construída encima de la arquitectura de eventos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"Primero, tiene que configurar los oyentes de eventos apropiados, para "
+"habilitar la utilización de autorización JAAS."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"Note que <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> es "
+"la abreviatura para <literal>&lt;event type=\"...\"&gt;&lt;listener class="
+"\"...\"/&gt;&lt;/event&gt;</literal> cuando hay exactamente un escucha para "
+"un tipo de evento en particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"A continuación, todavía en <literal>hibernate.cfg.xml</literal>, enlace los "
+"permisos a los roles:"
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr "Los nombres de los roles son comprendidos por su proveedor de JACC."
+
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1275 @@
+# translation of example_mappings.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: example_mappings\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-03 12:36+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "Ejemplo: mapeos varios"
+
+#. Tag: para
+#, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr ""
+"Este capítulo explora algunos de los mapeos de asociaciones más complejos."
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "Empleador/Empleado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"El siguiente modelo de la relación entre <literal>Employer</literal> y "
+"<literal>Employee</literal> utiliza una clase de entidad "
+"(<literal>Employment</literal>) para representar la asociación. Puede hacer "
+"esto cuando podría haber más de un período de empleo para los dos mismos "
+"participantes. Se utilizan componentes para modelar los valores monetarios y "
+"los nombres de los empleados."
+
+#. Tag: para
+#, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "He aquí un posible documento de mapeo: "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"Este es el esquema de tablas generado por <literal>SchemaExport</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "Autor/Obra"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"Considere el siguiente modelo de las relaciones entre <literal>Work</"
+"literal>, <literal>Author</literal> y <literal>Person</literal>. En el "
+"ejemplo representamos la relación entre <literal>Work</literal> y "
+"<literal>Author</literal> como una asociación muchos-a-muchos y la relación "
+"entre <literal>Author</literal> y <literal>Person</literal> como una "
+"asociación uno-a-uno. Otra posibilidad sería que <literal>Author</literal> "
+"extendiera <literal>Person</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr ""
+"El siguiente documento de mapeo representa estas relaciones de manera "
+"correcta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"Hay cuatro tablas en este mapeo: <literal>works</literal>, <literal>authors</"
+"literal> y <literal>persons</literal> tienen los datos de obra, autor y "
+"persona respectivamente. <literal>author_work</literal> es una tabla de "
+"asociación enlazando los autores a las obras. Este es el esquema de tablas, "
+"tal como fue generado por <literal>SchemaExport</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "Cliente/Orden/Producto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"En esta sección consideramos un modelo de las relaciones entre "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> y <literal>Product</literal>. Hay una asociación uno-a-muchos entre "
+"<literal>Customer</literal> y <literal>Order</literal>, pero, ¿cómo "
+"deberíamos representar <literal>Order</literal> / <literal>LineItem</"
+"literal> / <literal>Product</literal>? En el ejemplo, <literal>LineItem</"
+"literal> se mapea como una clase de asociación representando la asociación "
+"muchos-a-muchos entre <literal>Order</literal> y <literal>Product</literal>. "
+"En Hibernate, esto se llama un elemento compuesto."
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "El documento de mapeo se verá así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> y <literal>products</literal> tienen los datos "
+"de cliente, orden, ítem de línea de orden y producto respectivamente. Además "
+"<literal>line_items</literal> también actúa como una tabla de asociación "
+"enlazando órdenes con productos."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "Mapeos varios de ejemplo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"Estos ejemplos están disponibles en la suite de pruebas de Hibernate. Allí "
+"encontrará muchos otros mapeos de ejemplos útiles en la carpeta "
+"<literal>test</literal> de la distribución de Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "Asociación uno-a-uno \"Tipificada\""
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "Ejemplo de clave compuesta"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr "Muchos-a-muchos con atributo compartido de clave compuesta"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "Discriminación basada en contenido"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "Asociaciones sobre claves alternativas"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+#~ msgstr ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,426 @@
+# translation of example_parentchild.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: example_parentchild\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-15 12:56+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "Ejemplo: Padre/Hijo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the first things that new users want to do with Hibernate is to model "
+"a parent/child type relationship. There are two different approaches to "
+"this. The most convenient approach, especially for new users, is to model "
+"both <literal>Parent</literal> and <literal>Child</literal> as entity "
+"classes with a <literal>&lt;one-to-many&gt;</literal> association from "
+"<literal>Parent</literal> to <literal>Child</literal>. The alternative "
+"approach is to declare the <literal>Child</literal> as a <literal>&lt;"
+"composite-element&gt;</literal>. The default semantics of a one-to-many "
+"association in Hibernate are much less close to the usual semantics of a "
+"parent/child relationship than those of a composite element mapping. We will "
+"explain how to use a <emphasis>bidirectional one-to-many association with "
+"cascades</emphasis> to model a parent/child relationship efficiently and "
+"elegantly."
+msgstr ""
+"Una de las primeras cosas que los usuarios nuevos intentan hacer con "
+"Hibernate es modelar una relación de tipo padre / hijo. Para esto existen "
+"dos enfoques diferentes. El enfoque más conveniente, especialmente para los "
+"usuarios nuevos, es modelar tanto <literal>Parent</literal> como "
+"<literal>Child</literal> como clases de entidad con una asociación "
+"<literal>&lt;one-to-many&gt;</literal> desde <literal>Parent</literal> a "
+"<literal>Child</literal>. El enfoque opcional es declarar el <literal>Child</"
+"literal> como un <literal>&lt;composite-element&gt;</literal>. La semántica "
+"prederterminada de una asociación uno-a-muchos en Hibernate es mucho menos "
+"cercana a la semántica usual de una relación padre / hijo que la de un mapeo "
+"de elementos compuestos. Explicaremos cómo utilizar una <emphasis>asociación "
+"uno-a-muchos bidireccional con tratamiento en cascada</emphasis> para "
+"modelar una relación padre / hijo de manera eficiente y elegante."
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "Nota sobre las colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity and not of the contained entities. Be aware that this is a critical "
+"distinction that has the following consequences:"
+msgstr ""
+"Se considera que las colecciones de Hibernate son una parte lógica de la "
+"entidad que las posee y no de las entidades contenidas. Note que esta es una "
+"diferencia crucial y que esto tiene las siguientes consecuencias:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When you remove/add an object from/to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"Cuando se elimina/agrega un objeto desde/a una colección, se incrementa el "
+"número de la versión del dueño de la colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (e.g. a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"Si un objeto que fue eliminado de una colección es una instancia de un tipo "
+"de valor (por ejemplo, un elemento compuesto), ese objeto cesará de ser "
+"persistente y su estado será completamente eliminado de la base de datos. "
+"Asimismo, añadir una instancia de tipo de valor a la colección causará que "
+"su estado sea persistente inmediatamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Conversely, if an entity is removed from a collection (a one-to-many or many-"
+"to-many association), it will not be deleted by default. This behavior is "
+"completely consistent; a change to the internal state of another entity "
+"should not cause the associated entity to vanish. Likewise, adding an entity "
+"to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+"Por otro lado, si se elimina una entidad de una colección (una asociación "
+"uno-a-muchos o muchos-a-muchos), no se borrará por defecto. Este "
+"comportamiento es completamente consistente; un cambio en el estado interno "
+"de otra entidad no hace desaparecer la entidad asociada. Asimismo, el "
+"agregar una entidad a una colección no causa que la entidad se vuelva "
+"persistente por defecto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Adding an entity to a collection, by default, merely creates a link between "
+"the two entities. Removing the entity will remove the link. This is "
+"appropriate for all sorts of cases. However, it is not appropriate in the "
+"case of a parent/child relationship. In this case, the life of the child is "
+"bound to the life cycle of the parent."
+msgstr ""
+"El comportamiento por defecto es que al agregar una entidad a una colección "
+"se crea un enlace entre las dos entidades. Al eliminar la entidad se "
+"eliminará el enlace. Esto es muy apropiado para todos los tipos de casos. "
+"Sin embargo, no apropiado en el caso de una relación padre / hijo. En este "
+"caso la vida del hijo se encuentra vinculada al ciclo de vida del padre."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "Uno-a-muchos bidireccional"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"Supónga que empezamos con una asociación simple <literal>&lt;one-to-many&gt;"
+"</literal> desde <literal>Parent</literal> a <literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "Si ejecutásemos el siguiente código:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "Hibernate publicaría dos declaraciones SQL:"
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr "un <literal>INSERT</literal> para crear el registro de <literal>c</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"un <literal>UPDATE</literal> para crear el enlace desde <literal>p</literal> "
+"a <literal>c</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. You can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"Esto no es sólo ineficiente, sino que además viola cualquier restricción "
+"<literal>NOT NULL</literal> en la columna <literal>parent_id</literal>. "
+"Puede arreglar la violación de restricción de nulabilidad especificando "
+"<literal>not-null=\"true\"</literal> en el mapeo de la colección:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "Sin embargo, esta no es la solución recomendada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The underlying cause of this behavior is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. The "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"El caso subyacente de este comportamiento es que el enlace (la clave foránea "
+"<literal>parent_id</literal>) de <literal>p</literal> a <literal>c</literal> "
+"no se considera parte del estado del objeto <literal>Child</literal> y por "
+"lo tanto no se crea en el <literal>INSERT</literal>. De modo que la solución "
+"es hacer que el enlace sea parte del mapeo del <literal>Child</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class."
+msgstr ""
+"También necesita agregar la propiedad <literal>parent</literal> a la clase "
+"<literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute to do this:"
+msgstr ""
+"Ahora que la entidad <literal>Child</literal> está administrando el estado "
+"del enlace, le decimos a la colección que no actualice el enlace. Usamos el "
+"atributo <literal>inverse</literal> para hacer esto:"
+
+#. Tag: para
+#, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+"El siguiente código se podría utilizar para agregar un nuevo <literal>Child</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr "Sólo se emitiría un <literal>INSERT</literal> de SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You could also create an <literal>addChild()</literal> method of "
+"<literal>Parent</literal>."
+msgstr ""
+"También podría crear un método <literal>addChild()</literal> de "
+"<literal>Parent</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr "El código para agregar un <literal>Child</literal> se ve así:"
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr "Ciclo de vida en cascada "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can address the frustrations of the explicit call to <literal>save()</"
+"literal> by using cascades."
+msgstr ""
+"Puede abordar las frustraciones de la llamada explícita a <literal>save()</"
+"literal> utilizando cascadas."
+
+#. Tag: para
+#, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "Esto simplifica el código anterior a:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, we do not need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"De manera similar, no necesitamos iterar los hijos al guardar o borrar un "
+"<literal>Parent</literal>. Lo siguiente elimina <literal>p</literal> y todos "
+"sus hijos de la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid "However, the following code:"
+msgstr "Sin embargo, el siguiente código:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database. In this case, it "
+"will only remove the link to <literal>p</literal> and cause a <literal>NOT "
+"NULL</literal> constraint violation. You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"no eliminará <literal>c</literal> de la base de datos. En este caso, sólo "
+"quitará el enlace a <literal>p</literal> y causará una violación a una "
+"restricción <literal>NOT NULL</literal>. Necesita borrar el hijo "
+"explícitamente llamando a <literal>delete()</literal> en <literal>Child</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In our case, a <literal>Child</literal> cannot exist without its parent. So "
+"if we remove a <literal>Child</literal> from the collection, we do want it "
+"to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan"
+"\"</literal>."
+msgstr ""
+"En nuestro caso, un <literal>Child</literal> no puede existir realmente sin "
+"su padre. De modo que si eliminamos un <literal>Child</literal> de la "
+"colección, realmente queremos que sea borrado. Para esto, tenemos que "
+"utilizar <literal>cascade=\"all-delete-orphan\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though the collection mapping specifies <literal>inverse=\"true\"</"
+"literal>, cascades are still processed by iterating the collection elements. "
+"If you need an object be saved, deleted or updated by cascade, you must add "
+"it to the collection. It is not enough to simply call <literal>setParent()</"
+"literal>."
+msgstr ""
+"Aunque el mapeo de la colección especifique <literal>inverse=\"true\"</"
+"literal>, el tratamiento en cascada se procesa aún al iterar los elementos "
+"de la colección. De modo que si necesita que un objeto se guarde, borre o "
+"actualice en cascada, debe añadirlo a la colección. No es suficiente con "
+"simplemente llamar a <literal>setParent()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "Cascadas y <literal>unsaved-value</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wanted to persist these "
+"changes in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of children and, since "
+"the cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. We "
+"will also assume that both <literal>Parent</literal> and <literal>Child</"
+"literal> have generated identifier properties of type <literal>Long</"
+"literal>. Hibernate will use the identifier and version/timestamp property "
+"value to determine which of the children are new. (See <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer "
+"necessary to specify an <literal>unsaved-value</literal> explicitly.</"
+"emphasis>"
+msgstr ""
+"Supónga que hemos cargado un <literal>Parent</literal> en una "
+"<literal>Session</literal>, hemos realizado algunos cambios en una acción UI "
+"y deseamos hacer persistentes estos cambios en una nueva sesión llamando a "
+"<literal>update()</literal>. El <literal>Parent</literal> contendrá una "
+"colección de hijos y ya que está habilitado el tratamiento en cascada, "
+"Hibernate necesita saber qué hijos están recién instanciados y cuáles "
+"representan filas existentes en la base de datos. También vamos a asumir que "
+"tanto <literal>Parent</literal> como <literal>Child</literal> tienen "
+"propiedades identificadoras generadas de tipo <literal>Long</literal>. "
+"Hibernate usará el identificador y el valor de la propiedad de versión/sello "
+"de fecha para determinar cuáles de los hijos son nuevos, (consulte la <xref linkend="
+"\"objectstate-saveorupdate\" />). <emphasis>En Hibernate3, ya no es "
+"necesario especificar un <literal>unsaved-value</literal> explícitamente.</"
+"emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>:"
+msgstr ""
+"El siguiente código actualizará <literal>parent</literal> y <literal>child</"
+"literal> e insertará <literal>newChild</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This may be suitable for the case of a generated identifier, but what about "
+"assigned identifiers and composite identifiers? This is more difficult, "
+"since Hibernate cannot use the identifier property to distinguish between a "
+"newly instantiated object, with an identifier assigned by the user, and an "
+"object loaded in a previous session. In this case, Hibernate will either use "
+"the timestamp or version property, or will actually query the second-level "
+"cache or, worst case, the database, to see if the row exists."
+msgstr ""
+"Todo eso es apropiado para el caso de un identificador generado, pero ¿qué "
+"de los identificadores asignados y de los identificadores compuestos? Esto "
+"es más difícil, ya que Hibernate no puede usar la propiedad identificadora "
+"para distinguir entre un objeto recién instanciado, con un identificador "
+"asignado por el usuario y un objeto cargado en una sesión previa. En este "
+"caso, Hibernate utilizará la propiedad de versión o sello de fecha, o bien "
+"consultará realmente el caché de segundo nivel, o bien, en el peor de los "
+"casos, consultará la base de datos, para ver si la fila existe."
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "Conclusión"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The sections we have just covered can be a bit confusing. However, in "
+"practice, it all works out nicely. Most Hibernate applications use the "
+"parent/child pattern in many places."
+msgstr ""
+"Las secciones que acabamos de cubrir pueden parecer un poco confusas. Sin "
+"embargo, en la práctica, todo funciona muy bien. La mayoría de las "
+"aplicaciones de Hibernate utilizan el patrón padre / hijo en muchos sitios."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
+"which have exactly the semantics of a parent/child relationship. "
+"Unfortunately, there are two big limitations with composite element classes: "
+"composite elements cannot own collections and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"Mencionamos una opción en el primer párrafo. Ninguno de los temas anteriores "
+"existe en el caso de los mapeos <literal>&lt;composite-element&gt;</"
+"literal>, los cuales tienen exactamente la semántica de una relación padre / "
+"hijo. Desafortunadamente, existen dos grandes limitaciones para las clases "
+"de elementos compuestos: los elementos compuestos no pueden poseer sus "
+"propias colecciones y no deben ser el hijo de cualquier otra entidad que no "
+"sea su padre único."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,868 @@
+# translation of example_weblog.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: example_weblog\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-03 12:25+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "Ejemplo: Aplicación de Weblog"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Clases Persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"Las clases persistentes aquí representan un weblog, y un ítem publicado en "
+"un weblog. Van a ser modelados como una relación padre/hijo estándar, pero "
+"usaremos un bag ordenado, en lugar de un conjunto:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Mapeos de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "Los mapeos XML ahora deben ser bastante sencillos. Por ejemplo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Código Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr ""
+"La siguiente clase demuestra algunos de los tipos de cosas que podemos hacer "
+"con estas clases, utilizando Hibernate:"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,338 @@
+# translation of filters.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: filters\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-11 08:28+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "Filtración de datos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3 proporciona un nuevo enfoque innovador para manejar datos con "
+"reglas de \"visibilidad\". Un <emphasis>filtro Hibernate</emphasis> es un "
+"filtro global, con nombre y parametrizado que puede ser habilitado o "
+"deshabilitado para una sesión de Hibernate especifica."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Filtros de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"Hibernate3 tiene la habilidad de predefinir criterios de filtros y unir esos "
+"filtros tanto a nivel de clase como de colección. Un criterio de filtro le "
+"permite definir una cláusula de restricción muy similar al atributo "
+"existente \"where\" disponible en el elemento class y en varios elementos de "
+"colección. Sin embargo, las condiciones de estos filtros se pueden "
+"parametrizar. La aplicación puede tomar la decisión en tiempo de ejecución "
+"de si los filtros deben estar habilitados y cuáles deben ser sus parámetros. "
+"Los filtros se pueden utilizar como vistas de la base de datos, pero "
+"parametrizados dentro de la aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"Para utilizar los filtros, éstos se deben definir primero y luego se unen a "
+"los elementos de mapeo apropiados. Para definir un filtro, utilice el "
+"elemento <literal>&lt;filter-def/&gt;</literal> dentro de un elemento "
+"<literal>&lt;hibernate-mapping/&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "Luego este filtro se puede adjuntar a una clase:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to a collection:"
+msgstr "O a una colección:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "O incluso a ambos o múltiples de cada uno al mismo tiempo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"Los métodos en <literal>Session</literal> son: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal> y <literal>disableFilter(String filterName)</literal>. Por defecto, "
+"los filtros <emphasis>no</emphasis> están habilitados para una sesión dada. "
+"Los filtros deben ser habilitados explícitamente por medio del uso del "
+"método <literal>Session.enableFilter()</literal>, el cual retorna una "
+"instancia de la interfaz <literal>Filter</literal>. Si se utiliza el filtro "
+"simple definido anteriormente, esto se vería así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"Los métodos en la interfaz org.hibernate.Filter permiten el encadenamiento "
+"de métodos, lo cual es bastante común en gran parte de Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr ""
+"Este es un ejemplo completo, utilizando datos temporales con un patrón "
+"efectivo de fechas de registro: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"Con el fin de asegurarse de que siempre recibirá los registros efectivos "
+"actualmente, habilite el filtro en la sesión antes de recuperar los datos de "
+"los empleados:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"En el HQL anterior, aunque sólo mencionamos explícitamente una restricción "
+"de salario en los resultados, debido al filtro habilitado la consulta sólo "
+"retornará empleados actualmente activos que tengan un salario mayor a un "
+"millón de dólares."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"Si quiere utilizar filtros con unión externa, ya sea a través de HQL, o bien "
+"de recuperación de carga, tenga cuidado en la dirección de expresión de la "
+"condición. Lo más seguro es configurar esto para una unión externa "
+"izquierda. Coloque el parámetro primero seguido del nombre(s) de la(s) "
+"columna(s) después del operador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"Después de definir un filtro, este se puede unir a múltiples entidades y/o "
+"colecciones cada una con su propia condición. Esto puede llegar a ser "
+"problemático cuando las condiciones son las mismas. Así que el usar "
+"<literal>&lt;filter-def/&gt;</literal> le permite definir una condición por "
+"defecto, ya sea como atributo o como CDATA:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"Esta condición predeterminada se utilizará cuando se una el filtro a algo "
+"sin especificar una condición. Esto significa que usted le puede dar una "
+"condición especifica como parte del anexo del filtro, el cual substituye la "
+"condición por defecto en ese caso en particular."
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+#~ msgstr ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,536 @@
+# translation of inheritance_mapping.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: inheritance_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 15:51+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Inheritance mapping"
+msgstr "Mapeo de herencias"
+
+#. Tag: title
+#, no-c-format
+msgid "The three strategies"
+msgstr "Las tres estrategias"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr "Hibernate soporta las tres estrategias básicas de mapeo de herencia:"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "tabla por jerarquía de clases"
+
+#. Tag: para
+#, no-c-format
+msgid "table per subclass"
+msgstr "Tabla por subclase "
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "tabla por clase concreta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr ""
+"Además, Hibernate soporta un cuarto, un tipo ligeramente diferente de "
+"polimorfismo:"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "polimorfismo implícito"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy. You can then make use of implicit "
+"polymorphism to achieve polymorphism across the whole hierarchy. However, "
+"Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, "
+"<literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-"
+"subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</"
+"literal> element. It is possible to mix together the table per hierarchy and "
+"table per subclass strategies under the the same <literal>&lt;class&gt;</"
+"literal> element, by combining the <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+"Es posible utilizar estrategias de mapeo diferentes para diferentes "
+"ramificaciones de la misma jerarquía de herencia. Luego puede usar un "
+"polimorfismo implícito para conseguir polimorfismo a través de toda la "
+"jerarquía. Sin embargo, Hibernate no soporta la mezcla de mapeos "
+"<literal>&lt;subclass&gt;</literal>, <literal>&lt;joined-subclass&gt;</"
+"literal> y <literal>&lt;union-subclass&gt;</literal> bajo el mismo elemento "
+"<literal>&lt;class&gt;</literal> raíz. Es posible mezclar las estrategias de "
+"tabla por jerarquía y tabla por subclase bajo el mismo elemento <literal>&lt;"
+"class&gt;</literal>, combinando los elementos <literal>&lt;subclass&gt;</"
+"literal> y <literal>&lt;join&gt;</literal> (a continuación encontrará un "
+"ejemplo)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierarchy by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Previously this "
+"feature made the ordering of the mapping documents important. Since "
+"Hibernate3, the ordering of mapping files is irrelevant when using the "
+"extends keyword. The ordering inside a single mapping file still needs to be "
+"defined as superclasses before subclasses."
+msgstr ""
+"Es posible definir los mapeos <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, y <literal>joined-subclass</literal> en documentos de "
+"mapeo separados, directamente debajo de <literal>hibernate-mapping</"
+"literal>. Esto le permite extender une jerarquía de clase sólamente "
+"añadiendo un nuevo archivo de mapeo. Tiene que especificar un atributo "
+"<literal>extends</literal> en la subclase de mapeo, nombrando una superclase "
+"mapeada previamente. Nota: Anteriormente esta característica hacia que el "
+"orden de los documentos de mapeo fuera importante. Desde Hibernate3, el "
+"orden de los archivos de mapeo no tiene relevancia cuando se utiliza la "
+"palabra clave extends. El orden dentro de un sólo archivo de mapeo todavía "
+"necesita ser definido como superclases antes de subclases."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "Tabla por jerarquía de clases"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal> with the "
+"implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, and <literal>ChequePayment</literal>. The table per hierarchy "
+"mapping would display in the following way:"
+msgstr ""
+"Suponga que tenemos una interfaz <literal>Payment</literal>, con los "
+"implementadores <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, <literal>ChequePayment</literal>. El mapeo de tabla por jerarquía "
+"se vería así: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Exactly one table is required. There is a limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"Se requiere exactamente una tabla. Hay una limitación de esta estrategia de "
+"mapeo: las columnas declaradas por las subclases tal como <literal>CCTYPE</"
+"literal>, no pueden tener restricciones <literal>NOT NULL</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "Tabla por subclase"
+
+#. Tag: para
+#, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr "Un mapeo de tabla por subclase se vería así: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table so the relational model is actually a "
+"one-to-one association."
+msgstr ""
+"Se necesitan cuatro tablas. Las tres tablas de subclase tienen asociaciones "
+"de clave principal a la tabla de superclase de modo que en el modelo "
+"relacional es realmente una asociación uno-a-uno."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "Tabla por subclase: utilizando un discriminador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's implementation of table per subclass does not require a "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass that requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement, but arguably more correct from a relational point of "
+"view. If you want to use a discriminator column with the table per subclass "
+"strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+"La implementación de Hibernate de tabla por subclase no requiere ninguna "
+"columna discriminadora. Otros mapeadores objeto/relacional usan una "
+"implementación diferente de tabla por subclase que necesita una columna "
+"discriminadora de tipo en la tabla de superclase. Este enfoque es mucho más "
+"difícil de implementar pero discutiblemente más correcto desde un punto de "
+"vista relacional. Si quisiere utilizar una columna discriminadora con la "
+"estrategia de tabla por subclase, puede combinar el uso de <literal>&lt;"
+"subclass&gt;</literal> y <literal>&lt;join&gt;</literal>, así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"La declaración opcional <literal>fetch=\"select\"</literal> le dice a "
+"Hibernate que no recupere los datos de la subclase <literal>ChequePayment</"
+"literal> utilizando una unión externa (outer join) al consultar la "
+"superclase."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "Mezcla de tabla por jerarquía de clases con tabla por subclase"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even mix the table per hierarchy and table per subclass strategies "
+"using the following approach:"
+msgstr ""
+"Incluso puede mezclar las estrategias de tabla por jerarquía y tabla por "
+"subclase utilizando este enfoque: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;"
+"</literal>."
+msgstr ""
+"Para cualquiera de estas estrategias de mapeo, una asociación polimórfica a "
+"la clase raíz <literal>Payment</literal> es mapeada usando <literal>&lt;many-"
+"to-one&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "Tabla por clase concreta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two ways we can map the table per concrete class strategy. First, "
+"you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+"Hay dos maneras de mapear la tabla por estrategia de clase concreta. La "
+"primera es utilizar <literal>&lt;union-subclass&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"Hay tres tablas involucradas. Cada tabla define columnas para todas las "
+"propiedades de la clase, incluyendo las propiedades heredadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. The "
+"identity generator strategy is not allowed in union subclass inheritance. "
+"The primary key seed has to be shared across all unioned subclasses of a "
+"hierarchy."
+msgstr ""
+"La limitación de este enfoque es que si una propiedad se mapea en la "
+"superclase, el nombre de la columna debe ser el mismo en todas las tablas de "
+"subclase. La estrategia del generador de identidad no está permitida en la "
+"herencia de unión de subclase. La semilla de la clave principal tiene que "
+"compartirse a través de todas las subclases unidas de una jerarquía."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. If it is not abstract, an additional table (it defaults to "
+"<literal>PAYMENT</literal> in the example above), is needed to hold "
+"instances of the superclass."
+msgstr ""
+"Si su superclase es abstracta, mapeéla con <literal>abstract=\"true\"</"
+"literal>. Si no es abstracta, se necesita una tabla adicional (en el ejemplo "
+"anterior, por defecto es <literal>PAYMENT</literal>) para mantener las "
+"instancias de la superclase."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr "Tabla por clase concreta utilizando polimorfismo implícito"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "Un enfoque alternativo es para hacer uso del polimorfismo implícito:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice that the <literal>Payment</literal> interface is not mentioned "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> "
+"declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+"Observe que la interfaz <literal>Payment</literal> no se menciona "
+"explícitamente. También note que las propiedades de <literal>Payment</"
+"literal> se mapean en cada una de las subclases. Si quiere evitar la "
+"duplicación, considere el usar entidades XML (por ejemplo, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> en la "
+"declaración <literal>DOCTYPE</literal> y <literal>&amp;allproperties&semi;</"
+"literal> en el mapeo). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"La desventaja de este enfoque es que Hibernate no genera <literal>UNION</"
+"literal>es de SQL al realizar consultas polimórficas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+"Para esta estrategia de mapeo, una asociación polimórfica a "
+"<literal>Payment</literal> es mapeada generalmente utilizando <literal>&lt;"
+"any&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "Mezcla de polimorfismo implícito con otros mapeos de herencia"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the subclasses are each mapped in their own <literal>&lt;class&gt;</"
+"literal> element, and since <literal>Payment</literal> is just an "
+"interface), each of the subclasses could easily be part of another "
+"inheritance hierarchy. You can still use polymorphic queries against the "
+"<literal>Payment</literal> interface."
+msgstr ""
+"Ya que las subclases se mapean cada una en su propio elemento <literal>&lt;"
+"class&gt;</literal> y debido a que <literal>Payment</literal> es sólo una "
+"interfaz, cada una de las subclases podría ser fácilmente parte de otra "
+"jerarquía de herencia. Todavía puede seguir usando consultas polimórficas "
+"contra la interfaz <literal>Payment</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once again, <literal>Payment</literal> is not mentioned explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface, for "
+"example <literal>from Payment</literal>, Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal>, but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"Una vez más, no mencionamos a <literal>Payment</literal> explícitamente. Si "
+"ejecutamos una consulta frente a la interfaz <literal>Payment</literal> - "
+"por ejemplo, <literal>from Payment</literal>, Hibernate retorna "
+"automáticamente instancias de <literal>CreditCardPayment</literal> (y sus "
+"subclases, ya que ellas también implementan <literal>Payment</literal>), "
+"<literal>CashPayment</literal> y <literal>ChequePayment</literal> pero no "
+"las instancias de <literal>NonelectronicTransaction</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "Limitaciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are limitations to the \"implicit polymorphism\" approach to the table "
+"per concrete-class mapping strategy. There are somewhat less restrictive "
+"limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+"Existen ciertas limitaciones al enfoque de \"polimorfismo implícito\" en la "
+"estrategia de mapeo de tabla por clase concreta. Existen limitaciones un "
+"poco menos restrictivas a los mapeos <literal>&lt;union-subclass&gt;</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"La siguiente tabla muestra las limitaciones de los mapeos de tabla por clase "
+"concreta y del polimorfismo implícito en Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "Funcionalidades de los mapeos de herencia"
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "Estrategia de herencia"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "Polimórfico muchos-a-uno"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "Polimórfico uno-a-uno"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "Polimórfico uno-a-muchos"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "Polimórfico muchos-a-muchos"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr "Polimórfico <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Consultas polimórficas"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "Uniones polimórficas"
+
+#. Tag: entry
+#, no-c-format
+msgid "Outer join fetching"
+msgstr "Recuperación por unión externa"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per class-hierarchy"
+msgstr "tabla por jerarquía de clases "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "<literal>&lt;many-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "<literal>&lt;one-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "<literal>&lt;one-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "<literal>&lt;many-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "<literal>s.get(Payment.class, id)</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr "<literal>from Payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr "<literal>from Order o join o.payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr "<emphasis>soportado</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "tabla por clase concreta (union-subclass)"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> (solo para "
+"<literal>inverse=\"true\"</"
+"literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "tabla por clase concreta (polimorfismo implícito)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr "<literal>&lt;any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr "<emphasis>no soportado</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "<literal>&lt;many-to-any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+msgstr ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2270 @@
+# translation of performance.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: performance\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 10:28+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "Mejoramiento del rendimiento"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "Estrategias de recuperación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"Hibernate utiliza una <emphasis>estrategia de recuperación</emphasis> para "
+"recuperar los objetos asociados cuando la aplicación necesita navegar la "
+"asociación. Las estrategias de recuperación se pueden declarar en los "
+"metadatos de mapeo O/R, o se pueden sobrescribir por medio de una HQL "
+"particular o una petición <literal>Criteria</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3 define las siguientes estrategias de recuperación:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>Recuperación por unión (join fetching)</emphasis>: Hibernate "
+"recupera la instancia asociada o la colección en el mismo <literal>SELECT</"
+"literal>, utilizando un <literal>OUTER JOIN</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>Recuperación por selección (select fetching)</emphasis>: se "
+"utiliza un segundo <literal>SELECT</literal> para recuperar la entidad o "
+"colección asocidas. A menos que deshabilite explícitamente la recuperación "
+"perezosa especificando <literal>lazy=\"false\"</literal>, la segunda "
+"selección sólo será ejecutada cuando acceda a la asociación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>Recuperación por subselección (subselect fetching)</emphasis>: se "
+"utiliza un segundo <literal>SELECT</literal> para recuperar las colecciones "
+"asociadas de todas las entidades recuperadas en una consulta o recuperación "
+"previa. A menos de que deshabilite explícitamente la recuperación perezosa "
+"especificando <literal>lazy=\"false\"</literal>, esta segunda selección sólo "
+"se ejecutará cuando acceda a la asociación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>Recuperación en lote</emphasis>: una estrategia de optimización "
+"para la recuperación por selección. Hibernate recupera un lote de instancias "
+"de entidad o colecciones en un solo <literal>SELECT</literal>, especificando "
+"una lista de claves principales o de claves foráneas."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "Hibernate también distingue entre:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>Recuperación inmediata</emphasis>: una asociación, colección o "
+"atributo se recupera inmediatamente cuando se carga el dueño."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>Recuperación perezosa de colecciones</emphasis>: una colección se "
+"recupera cuando la aplicación invoca una operación sobre esa colección. Este "
+"es el valor predeterminado para las colecciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>Recuperación de colección \"extra-perezoza\" </emphasis>: se "
+"accede a elementos individuales desde la base de datos cuando se necesita. "
+"Hibernate intenta no recuperar toda la colección en la memoria a menos de "
+"que sea absolutamente necesario. Esto es apropiado para colecciones muy "
+"grandes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>Recuperación por proxy</emphasis>: una asociación monovaluada se "
+"recupera cuando se invoca un método que no sea el getter del identificador "
+"sobre el objeto asociado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis> Recuperación \"no-proxy\" </emphasis>: una asociación monovaluada "
+"se recupera cuando se accede a la variable de la instancia. Comparado con la "
+"recuperación por proxy, este enfoque es menos perezozo; la asociación se "
+"recupera cuando se accede sólamente al identificador. También es más "
+"transparente ya que para la aplicación no hay proxies visibles. Este enfoque "
+"requiere instrumentación del código byte del tiempo estimado de construcción "
+"y se necesita muy raramente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Recuperación perezosa de atributos</emphasis>: un atributo o una "
+"asociación monovaluada se recuperan cuando se accede a la variable de la "
+"instancia. Este enfoque requiere instrumentación del código byte en tiempo "
+"estimado de construcción y se necesita muy raramente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"Aquí tenemos dos nociones ortogonales: <emphasis>cuándo</emphasis> se "
+"recupera la aplicación, y <emphasis>cómo</emphasis> se recupera. Es "
+"importante que no las confunda. Utilizamos <literal>fetch</literal> para "
+"afinar el rendimiento. Podemos usar <literal>lazy</literal> para definir un "
+"contrato sobre qué datos están siempre disponibles en cualquier instancia "
+"separada de una clase en particular."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "Trabajo con asociaciones perezosas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"Por defecto, Hibernate3 usa una recuperación perezosa por selección para "
+"colecciones y una recuperación por proxy perezosa para asociaciones "
+"monovaluadas. Estas políticas predeterminadas tienen sentido para casi todas "
+"las asociaciones en la mayoría de las aplicaciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"Si configura <literal>hibernate.default_batch_fetch_size</literal>, "
+"Hibernate utilizará la optimización de recuperación en lotes para "
+"recuperación perezosa. Esta optimización también se puede habilitar en un "
+"nivel más detallado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"Note que el acceder a una asociación perezosa fuera del contexto de una "
+"sesión de Hibernate abierta resultará en una excepción. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"Ya que la colección de permisos no fue inicializada cuando se cerró la "
+"<literal>Session</literal>, la colección no será capaz de cargar su estado. "
+"<emphasis>Hibernate no soporta la inicialización perezosa de objetos "
+"separados</emphasis>. La solución es mover el código que lee de la colección "
+"a justo antes de que se guarde la transacción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"Opcionalmente puede utilizar una colección no perezosa o asociación, "
+"especificando <literal>lazy=\"false\"</literal> para el mapeo de asociación. "
+"Sin embargo, el propósito de la inicialización perezosa es que se utilice "
+"para casi todas las colecciones y asociaciones. ¡Si define demasiadas "
+"asociaciones no perezosas en su modelo de objetos, Hibernate recuperará la "
+"base de datos entera en toda transacción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"Por otro lado, puede utilizar la recuperación por unión, la cual no es "
+"perezosa por naturaleza, en lugar de la recuperación por selección en una "
+"transacción en particular. Veremos ahora cómo personalizar la estrategia de "
+"recuperación. En Hibernate3, los mecanismos para elegir una estrategia de "
+"recuperación son idénticas para las de las asociaciones monovaluadas y las "
+"colecciones."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "Afinación de las estrategias de recuperación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"La recuperación por selección (la preestablecida) es extremadamente "
+"vulnerable a problemas de selección N+1, de modo que puede que queramos "
+"habilitar la recuperación por unión (join fetching) en el documento de mapeo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"La estrategia de <literal>recuperación</literal> definida en el documento de "
+"mapeo afecta a:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr ""
+"las recuperaciones por medio de <literal>get()</literal> o <literal>load()</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr ""
+"las recuperaciones que ocurren implícitamente cuando se navega una "
+"asociación (recuperación perezosa)"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "las consultas de <literal>Criteria</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr ""
+"las consultas HQL si se utiliza la recuperación <literal>subselect</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"Sin importar que estrategia de recuperación utilice, se garantiza que la "
+"gráfica no-perezoza definida será cargada en la memoria. Sin embargo, esto "
+"puede causar la utilización de varias selecciones inmediatas para ejecutar "
+"una consulta HQL en particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"Usualmente, no utilizamos el documento de mapeo para personalizar la "
+"recuperación. En cambio, mantenemos el comportamiento por defecto y lo "
+"sobrescribimos para una transacción en particular, utilizando <literal>left "
+"join fetch</literal> en HQL. Esto le dice a Hibernate que recupere la "
+"asociación tempranamente en la primera selección, usando una unión externa. "
+"En la API de consulta de <literal>Criteria</literal>, usted utilizaría "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"Si quiere cambiar la estrategia de recuperación utilizada por <literal>get()"
+"</literal> o <literal>load()</literal>; utilice una consulta "
+"<literal>Criteria</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"Esto es el equivalente de Hibernate de lo que otras soluciones ORM denominan "
+"un \"plan de recuperación\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"Un enfoque completamente diferente de evitar problemas con selecciones N+1 "
+"es usar el caché de segundo nivel."
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "Proxies de asociaciones de un sólo extremo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"La recuperación perezosa de colecciones está implementada utilizando la "
+"implementación de colecciones persistentes propia de Hibernate. Sin embargo, "
+"se necesita un mecanismo diferente para un comportamiento perezoso en las "
+"asociaciones de un sólo extremo. La entidad destino de la asociación se debe "
+"tratar con proxies. Hibernate implementa proxies de inicialización perezosa "
+"para objetos persistentes utilizando la mejora del código byte en tiempo de "
+"ejecución por medio de la biblioteca CGLIB)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"En el arranque, Hibernate3 genera proxies por defecto para todas las clases "
+"persistentes y los usa para habilitar la recuperación perezosa de "
+"asociaciones <literal>muchos-a-uno</literal> y <literal>uno-a-uno</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"El archivo de mapeo puede declarar una interfaz a utilizar como interfaz de "
+"proxy para esa clase, con el atributo <literal>proxy</literal>. Por defecto, "
+"Hibernate usa una subclase de la clase. <emphasis>La clase tratada con "
+"proxies debe implementar un constructor por defecto con al menos visibilidad "
+"de paquete. Recomendamos este constructor para todas las clases "
+"persistentes</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr ""
+"Hay problemas potenciales que se deben tener en cuenta al extender este "
+"enfoque a las clases polimórficas. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"Primero, las instancias de <literal>Cat</literal> nunca serán objeto de un "
+"cast a <literal>DomesticCat</literal>, incluso aunque la instancia "
+"subyacente sea una instancia de <literal>DomesticCat</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "Segundo, es posible romper el proxy <literal>==</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"Sin embargo, la situación no es en absoluto tan mala como parece. Aunque "
+"tenemos ahora dos referencias a objetos proxy diferentes, la instancia "
+"subyacente será aún el mismo objeto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"Tercero, no puede usar un proxy CGLIB para una clase <literal>final</"
+"literal> o una clase con algún método <literal>final</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"Finalmente, si su objeto persistente adquiere cualquier recurso bajo "
+"instanciación (por ejemplo, en inicializadores o constructores por defecto), "
+"entonces esos recursos serán adquiridos también por el proxy. La clase del "
+"proxy es una subclase real de la clase persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"Estos problemas se deben a limitaciones fundamentales en el modelo de "
+"herencia única de Java. Si desea evitar estos problemas cada una de sus "
+"clases persistentes deben implementar una interfaz que declare sus métodos "
+"de negocio. Debe especificar estas interfaces en el archivo de mapeo en "
+"donde <literal>CatImpl</literal> implementa la interfaz <literal>Cat</"
+"literal> y <literal>DomesticCatImpl</literal> implementa la interfaz "
+"<literal>DomesticCat</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"Entonces los proxies para las instancias de <literal>Cat</literal> y "
+"<literal>DomesticCat</literal> pueden ser retornadas por <literal>load()</"
+"literal> o <literal>iterate()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>list()</literal> usualmente no retorna proxies."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"Las relaciones también son inicializadas perezosamente. Esto significa que "
+"debe declarar cualquier propiedad como de tipo <literal>Cat</literal>, no "
+"<literal>CatImpl</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+"Ciertas operaciones <emphasis>no</emphasis> requieren inicialización de "
+"proxies:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>, si la clase persistente no sobrescribe "
+"<literal>equals()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>, si la clase persistente no sobrescribe "
+"<literal>hashCode()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "El método getter del identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate detectará las clases persistentes que sobrescriban <literal>equals"
+"()</literal> o <literal>hashCode()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"Al escoger <literal>lazy=\"no-proxy\"</literal> en vez del <literal>lazy="
+"\"proxy\"</literal> predeterminado, podemos evitar los problemas asociados "
+"con conversión de tipos (typecasting). Sin embargo, requiere la "
+"instrumentación de código byte en tiempo estimado de construcción y todas "
+"las operaciones resultarán en una inicialización de proxies inmediata."
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "Inicialización de colecciones y proxies"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"Hibernate lanzará una <literal>LazyInitializationException</literal> si se "
+"accede a una colección o proxy sin acceder fuera del ámbito de la "
+"<literal>Session</literal>, por ejemplo, cuando la entidad que posee la "
+"colección o que tiene la referencia al proxy esté en el estado separado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"A veces es necesario inicializar un proxy o una colección antes de cerrar la "
+"<literal>Session</literal>. Puede forzar la inicialización llamando a "
+"<literal>cat.getSex()</literal> o <literal>cat.getKittens().size()</"
+"literal>, por ejemplo. Sin embargo, esto puede ser confuso para los lectores "
+"del código y no es conveniente para el código genérico."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"Los métodos estáticos <literal>Hibernate.initialize()</literal> y "
+"<literal>Hibernate.isInitialized()</literal> proporcionan a la aplicación "
+"una forma conveniente de trabajar con colecciones o proxies inicializados "
+"perezosamente. <literal>Hibernate.initialize(cat)</literal> forzará la "
+"inicialización de un proxy, <literal>cat</literal>, en tanto su "
+"<literal>Session</literal> esté todavía abierta. <literal>Hibernate."
+"initialize( cat.getKittens() )</literal> tiene un efecto similar para la "
+"colección de gatitos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"Otra opción es mantener la <literal>Session</literal> abierta hasta que "
+"todas las colecciones y proxies necesarios hayan sido cargados. En algunas "
+"arquitecturas de aplicación, particularmente en aquellas donde el código que "
+"accede a los datos usando Hibernate, y el código que los utiliza están en "
+"capas de aplicación diferentes o procesos físicos diferentes, puede ser un "
+"problema asegurar que la <literal>Session</literal> esté abierta cuando se "
+"inicializa una colección. Existen dos formas básicas para abordar este tema: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"En una aplicación basada en la web se puede utilizar un filtro de servlets "
+"para cerrar la <literal>Session</literal> sólamente al final de una petición "
+"del usuario, una vez que la entrega de la vista esté completa (el patrón "
+"<emphasis>sesión abierta en vista (open session in view)</emphasis>). Por "
+"supuesto, estos sitios requieren una fuerte demanda de corrección del manejo "
+"de excepciones de la infraestructura de su aplicación. Es de una vital "
+"importancia que la <literal>Session</literal> esté cerrada y la transacción "
+"terminada antes de volver al usuario, incluso cuando ocurra una excepción "
+"durante le entrega de la vista. Refiérase a la Wiki de Hibernate para ver "
+"ejemplos de este patrón \"Open Session in View\" (sesión abierta en vista). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"En una aplicación con una capa de negocios separada, la lógica empresarial "
+"tiene que \"preparar\" todas las colecciones que la capa web va a necesitar "
+"antes de retornar. Esto significa que la capa empresarial debe cargar todos "
+"los datos y devolver a la capa web/presentación todos los datos ya "
+"inicializados que se requieran para un caso de uso en particular. "
+"Usualmente, la aplicación llama a <literal>Hibernate.initialize()</literal> "
+"para cada colección que se necesitará en la capa web (esta llamada debe "
+"tener lugar antes de que se cierre la sesión) o recupera la colección "
+"tempranamente utilizando una consulta de Hibernate con una cláusula "
+"<literal>FETCH</literal> o una <literal>FetchMode.JOIN</literal> en "
+"<literal>Criteria</literal>. Usualmente, esto es más fácil si adopta el "
+"patrón <emphasis>Comando</emphasis> en vez de una <emphasis>Fachada de "
+"Sesión</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"También puede adjuntar un objeto cargado previamente a una nueva "
+"<literal>Session</literal> con <literal>merge()</literal> o <literal>lock()</"
+"literal> antes de acceder a colecciones no inicializadas u otros proxies. "
+"Hibernate no y ciertamente <emphasis>no debe</emphasis> hacer esto "
+"automáticamente ya que introduciría semánticas de transacción improvisadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"A veces no quiere inicializar una colección grande, pero todavía necesita "
+"alguna información sobre ella como por ejemplo, su tamaño o un subconjunto "
+"de los datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"Puede utilizar un filtro de colecciones para obtener el tamaño de una "
+"colección sin inicializarla:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"El método <literal>createFilter()</literal> también se utiliza para "
+"recuperar eficientemente subconjuntos de una colección sin necesidad de "
+"inicializar toda la colección:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "Utilización de recuperación de lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"Usando la recuperación por lotes, Hibernate puede cargar varios proxies sin "
+"inicializar si se accede a un proxy. La recuperación en lotes es una "
+"optimización de la estrategia de recuperación por selección perezosa. Hay "
+"dos formas en que puede configurar la recuperación en lotes: a nivel de la "
+"clase y a nivel de colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"La recuperación en lotes para clases/entidades es más fácil de entender. "
+"Considere el siguiente ejemplo: en tiempo de ejecución tiene 25 instancias "
+"de <literal>Cat</literal> cargadas en una <literal>Session</literal> y cada "
+"<literal>Cat</literal> tiene una referencia a su <literal>owner</literal>, "
+"una <literal>Person</literal>. La clase <literal>Person</literal> está "
+"mapeada con un proxy, <literal>lazy=\"true\"</literal>. Si ahora itera a "
+"través de todos los cats y llama a <literal>getOwner()</literal> para cada "
+"uno, Hibernate por defecto, ejecutará 25 declaraciones <literal>SELECT</"
+"literal> para recuperar los dueños proxies. Puede afinar este comportamiento "
+"especificando un <literal>batch-size</literal> en el mapeo de "
+"<literal>Person</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+"Hibernate ahora ejecutará sólamente tres consultas: el patrón es 10, 10, 5."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"También puede habilitar la recuperación en lotes para colecciones. Por "
+"ejemplo, si cada <literal>Person</literal> tiene una colección perezosa de "
+"<literal>Cat</literal>s y hay 10 personas actualmente cargadas en la "
+"<literal>Session</literal>, iterar a través de las 10 personas generará 10 "
+"<literal>SELECT</literal>s, uno para cada llamada a <literal>getCats()</"
+"literal>. Si habilita la recuperación en lotes para la colección de "
+"<literal>cats</literal> en el mapeo de <literal>Person</literal>, Hibernate "
+"puede recuperar por adelantado las colecciones: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"Con un <literal>batch-size</literal> de 3, Hibernate cargará las colecciones "
+"3, 3, 3, 1 en cuatro <literal>SELECT</literal>s. Una vez más, el valor del "
+"atributo depende del número esperado de colecciones sin inicializar en una "
+"<literal>Session</literal> en particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"La recuperación de colecciones en lotes es particularmente útil si tiene un "
+"árbol anidado de ítems, por ejemplo, el típico patrón de cuenta de "
+"materiales. Sin embargo, un <emphasis>conjunto anidado</emphasis> o una "
+"<emphasis>ruta materializada</emphasis> podría ser una mejor opción para "
+"árboles que sean de lectura en la mayoría de los casos."
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "Utilización de la recuperación por subselección"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"Si una colección perezosa o proxy monovaluado tiene que ser recuperado, "
+"Hibernate los carga a todos, volviendo a ejecutar la consulta original en "
+"una subselección. Esto funciona de la misma forma que la recuperación en "
+"lotes, sin carga fragmentaria. "
+
+#. Tag: title
+#, no-c-format
+msgid "Fetch profiles"
+msgstr "Perfiles de recuperación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+"Otra manera de modificar la estrategia de recuperación para cargar objetos "
+"asociados es por medio de algo llamado un perfil de recuperación, el cual es "
+"una configuración nombrada asociada con la <interfacename>org.hibernate."
+"SessionFactory</interfacename> pero habilitada por nombre en la "
+"<interfacename>org.hibernate.Session</interfacename>. Una vez habilitada en "
+"una <interfacename>org.hibernate.Session</interfacename>, el perfil de "
+"recuperación estará en efecto para esa <interfacename>org.hibernate.Session</"
+"interfacename> hasta que se deshabilite explícitamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr ""
+"¿Entonces qué significa? Vamos a explicarlo por medio de un ejemplo. Digamos "
+"que tenemos los siguientes mapeos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+"Ahora normalmente cuando reciba una referencia a un cliente en particular, "
+"el grupo de pedidos será perezoso lo que significa que aún no habremos "
+"cargado esos pedidos de la base de datos. Usualmente esto está bien. Ahora "
+"digamos que tiene un ejemplo en donde es más eficiente el cargar el cliente "
+"y sus pedidos juntos. Una manera es utilizar las estrategias de "
+"\"recuperación dinámica\" por medio de peticiones de criterio o un HQL. Pero "
+"otra opción es utilizar un perfi de recuperación para lograr esto. "
+"Simplemente agregue lo siguiente a su mapeo:"
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr "o incluso:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr ""
+"Ahora el siguiente código de hecho cargará el cliente <emphasis>y sus "
+"órdenes</emphasis>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+"Actualmente solo se soportan los perfiles de recuperación de estilo unido "
+"pero se planear soportar estilos adicionales. Consulte <ulink url=\"http://"
+"opensource.atlassian.com/projects/hibernate/browse/HHH-3414\">HHH-3414</"
+"ulink> para obtener mayores detalles."
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "Utilización de la recuperación perezosa de propiedades"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"Hibernate3 soporta la recuperación perezosa de propiedades individuales. "
+"Esta técnica de optimización también es conocida como <emphasis>grupos de "
+"recuperación (fetch groups)</emphasis>. Por favor, note que éste es "
+"principalmente un aspecto de marketing, ya que en la práctica, optimizar las "
+"lecturas de filas es mucho más importante que la optimización de lectura de "
+"columnas. Sin embargo, cargar sólo algunas propiedades de una clase podría "
+"ser útil en casos extremos. Por ejemplo, cuando las tablas heredadas tienen "
+"cientos de columnas y el modelo de datos no puede ser mejorado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"Para habilitar la carga perezosa de propiedades, establezca el atributo "
+"<literal>lazy</literal> en sus mapeos de propiedades:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"La carga perezosa de propiedades requiere la instrumentación del código byte "
+"en tiempo de construcción. Si sus clases persistentes no se mejoran, "
+"Hibernate ignorará la configuración perezosa de propiedades y retornará a la "
+"recuperación inmediata."
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr ""
+"Para la instrumentación del código byte, utilice la siguiente tarea Ant:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"Una forma diferente de evitar lecturas innecesarias de columnas, al menos "
+"para transacciones de sólo lectura es utilizar las funcionalidades de "
+"proyección de consultas HQL o Criteria. Esto evita la necesidad de procesar "
+"el código byte en tiempo de construcción y ciertamente es la solución "
+"preferida."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"Puede forzar la usual recuperación temprana de propiedades utilizando "
+"<literal>fetch all properties</literal> en HQL."
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "El Caché de Segundo Nivel"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Una <literal>Session</literal> de Hibernate es un caché de datos "
+"persistentes a nivel de transacción. Es posible configurar un clúster o "
+"caché a nivel de MVJ (a nivel de <literal>SessionFactory</literal>) sobre "
+"una base de clase-por-clase o colección-por-colección. Incluso puede "
+"enchufar un caché en clúster. Tenga en cuenta de que los cachés nunca están "
+"al tanto de los cambios que otra aplicación haya realizado al almacén "
+"persistente. Sin embargo, se pueden configurar para que los datos en caché "
+"expiren regularmente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"Tiene la opción de decirle a Hibernate cual implementación de caché utilizar "
+"al especificar el nombre de una clase que implemente <literal>org.hibernate."
+"cache.CacheProvider</literal> utilizando la propiedad <literal>hibernate."
+"cache.provider_class</literal>. Hibernate viene vinculada con un número de "
+"integraciones incorporadas con los proveedores caché de código abierto "
+"enumerados a continuación. Además puede implementar el suyo y enchufarlo "
+"como se explicó anteriormente. Observe que las versiones anteriores a 3.2 "
+"por defecto utilizan EhCache como proveedor de caché."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "Proveedores de Caché"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "Caché"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "Clase del Provedor"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "Tipo"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "Clúster Seguro"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "Caché de Consultas Soportado"
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr "Hashtable (no fue pensado para la utilización en producción)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "memoria"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr "si"
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "memoria, disco"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "en clúster (ip multicast)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "sí (invalidación en clúster)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr "JBoss Cache 1.x"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "en clúster (ip multicast), transaccional"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "sí (replicación)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "sí (requiere sincronización de reloj)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 2"
+msgstr "JBoss Cache 2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "sí (replicación o invalidación)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "Mapeos de caché"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"El elemento <literal>&lt;cache&gt;</literal> de un mapeo de clase o "
+"colección tiene la siguiente forma:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal> especifica la estrategia de caché: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> o <literal>read-only</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (opcional: por defecto es el nombre del rol de la "
+"clase o colección): especifica el nombre de la región de caché de segundo "
+"nivel."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (opcional: por defecto es <literal>all</literal>) "
+"<literal>non-lazy</literal>: especifica que las propiedades de la entidad "
+"mapeadas con <literal>lazy=\"true\"</literal> no se pueden poner en caché "
+"cuando se habilita la recuperación perezoza a nivel de atributos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"Opcionalmente, puede especificar los elementos <literal>&lt;class-cache&gt;</"
+"literal> y <literal>&lt;collection-cache&gt;</literal> en <literal>hibernate."
+"cfg.xml</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"El atributo <literal>usage</literal> especifica una <emphasis>estrategia de "
+"concurrencia al caché</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "Estrategia: sólo lectura"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"Si su aplicación necesita leer pero no modificar las instancias de una clase "
+"persistente, puede utilizar un caché <literal>read-only</literal> (de sólo "
+"lectura). Esta es la mejor estrategia y la más simple. Incluso es totalmente "
+"segura para utilizar en un clúster."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "Estrategia: lectura/escritura (read/write)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"Si la aplicación necesita actualizar datos, un caché <literal>read-write</"
+"literal> puede ser apropiado. Esta estrategia de caché nunca se debe "
+"utilizar si se requiere un nivel de aislamiento serializable de "
+"transacciones. Si el caché se usa en un entorno JTA, tiene que especificar "
+"la propiedad <literal>hibernate.transaction.manager_lookup_class</literal>, "
+"mencionando una estrategia para obtener el <literal>TransactionManager</"
+"literal> de JTA. En otros entornos, debe asegurarse de que la transacción "
+"esté completada cuando se llame a <literal>Session.close()</literal> o "
+"<literal>Session.disconnect()</literal>. Si desea utilizar esta estrategia "
+"en un clúster, debe asegurarse de que la implementación de caché subyacente "
+"soporta bloqueos. Los provedores de caché internos <emphasis>no</emphasis> "
+"soportan bloqueos."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "Estrategia: lectura/escritura no estricta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"Si la aplicación necesita sólo ocasionalmente actualizar datos (es decir, es "
+"extremadamente improbable que dos transacciones intenten actualizar el mismo "
+"ítem simultáneamente) y no se requiere de un aislamiento de transacciones "
+"estricto, un caché <literal>nonstrict-read-write</literal> podría ser "
+"apropiado. Si se utiliza el caché en un entorno JTA, tiene que especificar "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. En otros "
+"entornos, debe asegurarse que se haya completado la transacción cuando se "
+"llame a <literal>Session.close()</literal> o <literal>Session.disconnect()</"
+"literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "Estrategia: transaccional"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"La estrategia de caché <literal>transactional</literal> brinda soporte a "
+"provedores de cachés completamente transaccionales como JBoss TreeCache. Un "
+"caché así, sólo se puede utilizar en un entorno JTA y tiene que especificar "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "Compatibilidad de proveedor de caché/estrategia de concurrencia"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"Ninguno de los provedores de caché soporta todas las estrategias de "
+"concurrencia al caché. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"La siguiente tabla muestra qué provedores son compatibles con qué "
+"estrategias de concurrencia."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr "Soporte a Estrategia de Concurrencia a Caché"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "read-only"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "nonstrict-read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transactional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "Gestión de cachés"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"Siempre que pase un objeto a <literal>save()</literal>, <literal>update()</"
+"literal> o <literal>saveOrUpdate()</literal> y siempre que recupere un "
+"objeto utilizando <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> o <literal>scroll()</"
+"literal>, ese objeto se agrega al caché interno de la <literal>Session</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"Cuando luego se llame a <literal>flush()</literal>, el estado de ese objeto "
+"será sincronizado con la base de datos. Si no quiere que ocurra esta "
+"sincronización o si está procesando un número enorme de objetos y necesita "
+"gestionar la memoria eficientemente, puede utilizar el método <literal>evict"
+"()</literal> para quitar el objeto y sus colecciones del caché de primer "
+"nivel. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"La <literal>Session</literal> también proporciona un método <literal>contains"
+"()</literal> para determinar si una instancia pertenece al caché de la "
+"sesión."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"Para expulsar todos los objetos del caché de sesión, llame a "
+"<literal>Session.clear()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"Para el caché de segundo nivel, hay métodos definidos en "
+"<literal>SessionFactory</literal> para explusar el estado en caché de una "
+"instancia, clase entera, instancia de colección o rol entero de colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"El <literal>CacheMode</literal> controla la manera en que interactúa una "
+"sesión en particular con el caché de segundo nivel:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal>: lee ítems desde y escribe ítems hacia "
+"el caché del segundo nivel"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal>: lee ítems del caché del segundo nivel. No "
+"escribe al caché de segundo nivel excepto cuando actualiza datos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal>: escribe ítems al caché de segundo nivel. "
+"No lee del caché de segundo nivel"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal>: escribe ítems al caché de segundo "
+"nivel. No lee del caché de segundo nivel, saltándose el efecto de "
+"<literal>hibernate.cache.use_minimal_puts</literal>, forzando la "
+"actualización del caché de segundo nivel para todos los ítems leídos de la "
+"base de datos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"Para navegar por los contenidos de una región de caché de segundo nivel o de "
+"consultas, use la API de <literal>Statistics</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"Necesitará habilitar las estadísticas y, opcionalmente, forzar a Hibernate "
+"para que guarde las entradas del caché en un formato más fácil de entender "
+"para humanos: "
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "El Caché de Consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"Los conjuntos de resultados de peticiones también pueden ponerse en caché. "
+"Esto sólamente es útil para consultas que se ejecutan frecuentemente con los "
+"mismos parámetros."
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr "Habilitación del caché de peticiones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+"El poner en caché los resultados de una petición introduce algunos "
+"sobrecostos en términos del procesamiento transaccional normal de sus "
+"aplicaciones. Por ejemplo, si pone en caché los resultados de una petición "
+"frente a Person, Hibernate necesitará rastrear cuando se deben invalidar "
+"esos resultados debido a los cambios que se han guardado en Person. Eso más "
+"el hecho de que la mayoría de las aplicaciones simplemente no ganan "
+"beneficio de poner los resultados en caché, lleva a Hibernate a deshabilitar "
+"el caché de los resultados de una petición por defecto. Para utilizar el "
+"caché de peticiones primero necesita habilitar el caché de peticiones:"
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr "Esta configuración crea dos nuevas regiones de caché:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, mantiene los "
+"resultados de la petición en caché"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, mantiene "
+"los sellos de fecha de las actualizaciones más recientes a las tablas de "
+"peticiones. Estas se utilizan para validar los resultados ya que se sirven "
+"desde el caché de peticiones."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+"Si configura su implementación de caché subyacente para utilizar los tiempos "
+"de expiración es muy importante que el tiempo de expiración del caché de la "
+"región de cachésubyacente para el UpdateTimestampsCache se establezca con un "
+"valor mayor que los tiempos de expiración de cualquiera de los cachés de "
+"resultados. De hecho, recomendamos que la región UpdateTimestampsCache no se "
+"configure con ninguna expiración. Observe en particular que nunca es "
+"apropiado una política de expiración de caché LRU. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"Como lo mencionamos anteriormente, la mayoría de las consultas no se "
+"benefician del caché o de sus resultados; de modo que por defecto las "
+"consultas individuales no se ponen en caché incluso después de habilitar el "
+"caché para peticiones. Para habilitar el caché de resultados para una "
+"petición en particular, llame a <literal>org.hibernate.Query.setCacheable"
+"(true)</literal>. Esta llamada permite que la consulta busque resultados "
+"existentes en caché o que agregue sus resultados al caché cuando se ejecuta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+"El caché de peticiones no pone en caché el estado real de las entidades en "
+"el caché; pone en caché solo los valores del identificador y los resultados "
+"de tipo valor. Por esta razón, el caché de peticiones siempre se debe "
+"utilizar en conjunto con el caché de segundo nivel para aquellas entidades "
+"que se esperan poner en caché como parte de un caché de resultados de una "
+"petición (así como con el caché de colección). "
+
+#. Tag: title
+#, no-c-format
+msgid "Query cache regions"
+msgstr "Regiones de caché de consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"Si necesita un control muy detallado sobre las políticas de expiración del "
+"caché de consultas, puede especificar una región de caché con nombre para "
+"una consulta en particular llamando a <literal>Query.setCacheRegion()</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"Si quiere forzar que el caché de peticiones actualice una de sus regiones "
+"(olvídese de cualquier resultado en caché que se encuentre allí) puede "
+"utilizar <literal>org.hibernate.Query.setCacheMode(CacheMode.REFRESH)</"
+"literal>. Junto con la región que ha definido para la petición dada, "
+"Hibernate forzará selectivamente los resultados en caché en esa región en "
+"particular que se va a actualizar. Esto es particularmente útil en casos "
+"donde los datos subyacentes pueden haber sido actualizados por medio de un "
+"proceso separado y esta es una alternativa más eficiente que la expulsión en "
+"masa de una región por medio de <literal>org.hibernate.SessionFactory."
+"evictQueries()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "Comprensión del rendimiento de Colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+"En las secciones anteriores hemos abordado las colecciones y sus "
+"aplicaciones. En esta sección exploramos algunos puntos en relación con las "
+"colecciones en tiempo de ejecución. "
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "Taxonomía"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "Hibernate define tres tipos básicos de colecciones:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "colecciones de valores"
+
+#. Tag: para
+#, no-c-format
+msgid "one-to-many associations"
+msgstr "Asociaciones uno-a-muchos "
+
+#. Tag: para
+#, no-c-format
+msgid "many-to-many associations"
+msgstr "Aociaciones muchos-a-muchos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"Esta clasificación distingue las varias tablas y relaciones de clave foránea "
+"pero no nos dice absolutamente todo lo que necesitamos saber sobre el modelo "
+"relacional. Para entender completamente la estructura relacional y las "
+"características de rendimiento, debemos considerar la estructura de la clave "
+"primaria que Hibernate utiliza para actualizar o borrar filas de colección. "
+"Esto sugiere la siguiente clasificación:"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "colecciones indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "conjuntos (sets)"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "bolsas (bags)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"Todas las colecciones indexadas (mapas, listas y arrays) tienen una clave "
+"principal que consiste de las columnas <literal>&lt;key&gt;</literal> e "
+"<literal>&lt;index&gt;</literal>. En este caso las actualizaciones de "
+"colecciones son extremadamente eficientes. La clave principal puede ser "
+"indexada eficientemente y una fila en particular puede ser localizada cuando "
+"Hibernate intenta actualizarla o borrarla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"Los conjuntos tienen una clave principal que consiste de <literal>&lt;key&gt;"
+"</literal> y columnas de elementos. Esto puede ser menos eficiente para "
+"algunos tipos de elementos de colección, particularmente elementos "
+"compuestos o texto largo o campos binarios ya que la base de datos puede no "
+"ser capaz de indexar una clave principal compleja eficientemente. Sin "
+"embargo, para asociaciones uno a muchos o muchos a muchos, particularmente "
+"en el caso de los identificadores sintéticos, es probable que sólo sea igual "
+"de eficiente. Si quiere que <literal>SchemaExport</literal> realmente cree "
+"la clave principal de un <literal>&lt;set&gt;</literal>, tiene que declarar "
+"todas las columnas como <literal>not-null=\"true\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"Los mapeos de <literal>&lt;idbag&gt;</literal> definen una clave delegada, "
+"de modo que siempre resulten eficientes de actualizar. De hecho, son el "
+"mejor caso."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"Los bags son el peor caso ya que un bag permite valores de elementos "
+"duplicados y no tiene ninguna columna índice, no puede definirse ninguna "
+"clave principal. Hibernate no tiene forma de distinguir entre filas "
+"duplicadas. Hibernate resuelve este problema quitando por completo con un "
+"sólo <literal>DELETE</literal> y recreando la colección siempre que cambia. "
+"Esto puede ser muy ineficiente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"Para una asociación uno-a-muchos, la \"clave principal\" puede no ser la "
+"clave principal física de la tabla de la base de datos. Incluso en este "
+"caso, la clasificación anterior es útil todavía. Refleja cómo Hibernate "
+"\"localiza\" filas individuales de la colección."
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr ""
+"Las listas, mapas, idbags y conjuntos son las colecciones más eficientes de "
+"actualizar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"De la discusión anterior, debe quedar claro que las colecciones indexadas y "
+"los conjuntos permiten una operación más eficiente en términos de agregar, "
+"quitar y actualizar elementos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"Discutiblemente, hay una ventaja más de las colecciones indexadas sobre "
+"otros conjuntos para las asociaciones muchos a muchos o colecciones de "
+"valores. Debido a la estructura de un <literal>Set</literal>, Hibernate ni "
+"siquiera actualiza una fila con <literal>UPDATE</literal> cuando se \"cambia"
+"\" un elemento. Los cambios a un <literal>Set</literal> siempre funcionan "
+"por medio de <literal>INSERT</literal> y <literal>DELETE</literal> de filas "
+"individuales. Una vez más, esta consideración no se aplica a las "
+"asociaciones uno a muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"Después de observar que los arrays no pueden ser perezosos, podríamos "
+"concluir que las listas, mapas e idbags son los tipos más eficientes de "
+"colecciones (no inversas), con los conjuntos (sets) no muy atrás. Se espera "
+"que los sets sean el tipo más común de colección en las aplicaciones de "
+"Hibernate. Esto se debe a que la semántica de los sets es la más natural en "
+"el modelo relacional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"Sin embargo, en modelos de dominio de Hibernate bien dieñados, usualmente "
+"vemos que la mayoría de las colecciones son de hecho asociaciones uno-a-"
+"muchos con <literal>inverse=\"true\"</literal>. Para estas asociaciones, la "
+"actualización es manejada por el extremo muchos-a-uno de la asociación, y "
+"las consideraciones de este tipo sobre el rendimiento de la actualización de "
+"las colecciones simplemente no se aplican."
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "Los Bags y las listas son las colecciones inversas más eficientes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"Hay un caso en particular en el que los bags y también las listas son mucho "
+"más eficientes que los conjuntos. Para una colección con <literal>inverse="
+"\"true\"</literal>, por ejemplo, el idioma estándar de relaciones uno-a-"
+"muchos bidireccionales, podemos agregar elementos a un bag o lista sin "
+"necesidad de inicializar (recuperar) los elementos del bag. Esto se debe a "
+"que, a manera opuesta de <literal>Collection.add()</literal> o "
+"<literal>Collection.addAll()</literal> siempre deben retornar verdadero para "
+"un bag o <literal>List</literal> (no como un <literal>Set</literal>). Esto "
+"puede hacer el siguiente código común mucho más rápido:"
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "Borrado de un sólo tiro"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"Borrar los elementos de una colección uno por uno a veces puede ser "
+"extremadamente ineficiente. Hibernate sabe que no debe hacer eso, en el caso "
+"de una colección nueva-vacía (si ha llamado a <literal>list.clear()</"
+"literal>, por ejemplo). En este caso, Hibernate publicará un sólo "
+"<literal>DELETE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"Suponga que agrega un solo elemento a una colección de tamaño veinte y luego "
+"quitamos dos elementos. Hibernate publicará una declaración <literal>INSERT</"
+"literal> y dos declaraciones <literal>DELETE</literal> a menos que la "
+"colección sea un bag. Esto ciertamente es deseable."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"Sin embargo, supónga que quitamos dieciocho elementos, dejando dos y luego "
+"añadimos tres elementos nuevos. Hay dos formas posibles de proceder"
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr "borrar dieciocho filas una a una y luego insertar tres filas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr ""
+"quitar toda la colección en un sólo <literal>DELETE</literal> de SQL e "
+"insertar todos los cinco elementos actuales uno por uno"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"Hibernate no sabe que la segunda opción es probablemente la más rápida. "
+"Probablemente no sería deseable que Hibernate fuese tan intuitivo ya que tal "
+"comportamiento podría confundir a disparadores de la base de datos, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"Afortunadamente, puede forzar este comportamiento (por ejemplo, la segunda "
+"estrategia) en cualquier momento descartando (por ejemplo, desreferenciando) "
+"la colección original y retornando una colección nuevamente instanciada con "
+"todos los elementos actuales."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"El borrado-de-un-sólo-tiro no se aplica a las colecciones mapeadas "
+"<literal>inverse=\"true\"</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "Control del rendimiento"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"La optimización no es de mucho uso sin el monitoreo y el acceso a números de "
+"rendimiento. Hibernate brinda un rango completo de números sobre sus "
+"operaciones internas. Las estadísticas en Hibernate están disponibles por "
+"<literal>SessionFactory</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "Control de una SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"Puede acceder a las métricas de <literal>SessionFactory</literal> de dos "
+"formas. Su primera opción es llamar a <literal>sessionFactory.getStatistics()"
+"</literal> y leer o mostrar por pantalla la <literal>Statistics</literal> "
+"por sí mismo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"Hibernate también puede utilizar JMX para publicar las métricas si habilita "
+"el MBean <literal>StatisticsService</literal>. Puede habilitar un sólo MBean "
+"para todas sus <literal>SessionFactory</literal> o una por fábrica. Véa el "
+"siguiente código para ver ejemplos de configuración minimalistas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"Puede activar y desactivar el monitoreo de una <literal>SessionFactory</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"en tiempo de configuración, establezca <literal>hibernate."
+"generate_statistics</literal> como <literal>false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"en tiempo de ejecución: <literal>sf.getStatistics().setStatisticsEnabled"
+"(true)</literal> o <literal>hibernateStatsBean.setStatisticsEnabled(true)</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"Las estadísticas pueden ser reajustadas programáticamente utilizando el "
+"método <literal>clear()</literal>. Puede enviarse un resumen a un registro "
+"(a nivel de información) utilizando el método <literal>logSummary()</"
+"literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "Métricas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"Hibernate proporciona un número de métricas, desde información muy básica "
+"hasta la más especializada sólamente relevante en ciertos escenarios. Todos "
+"los contadores disponibles se describen en la API de la interfaz "
+"<literal>Statistics</literal>, en tres categorías:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"Métricas relacionadas al uso general de <literal>Session</literal> usage, "
+"tales como número de sesiones abiertas, conexiones JDBC recuperadas, etc,"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr ""
+"Métricas relacionadas con las entidades, colecciones, consultas y cachés "
+"como un todo (también conocidas como métricas globales)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr ""
+"Métricas detalladas relacionadas con una entidad, colección, consulta o "
+"región de caché en particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"Por ejemplo, puede comprobar el acceso, pérdida y radio de colecciones de "
+"entidades y consultas en el caché, y el tiempo promedio que necesita una "
+"consulta. Tenga en cuenta que el número de milisegundos está sujeto a una "
+"aproximación en Java. Hibernate está vinculado a la precisión de la MVJ, en "
+"algunas plataformas esto podría tener incluso una exactitud de 10 segundos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"Se usan getters simples para acceder a la métrica global (por ejemplo, no "
+"vinculadas en particular a una entidad, colección, región de caché, etc). "
+"Puede acceder a las métricas de una entidad, colección, región de caché en "
+"particular a través de su nombre y a través de su representación HQL o SQL "
+"para las consultas. Por favor refiérase al Javadoc de la API de "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, y <literal>QueryStatistics</"
+"literal> para obtener más información. El siguiente código es un ejemplo "
+"sencillo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"Para trabajar sobre todas las entidades, colecciones, consultas y regiones "
+"de cachés, recuperando la lista de nombres de entidades, colecciones, "
+"consultas y regiones de cachés con los siguientes métodos: "
+"<literal>getQueries()</literal>, <literal>getEntityNames()</literal>, "
+"<literal>getCollectionRoleNames()</literal> y "
+"<literal>getSecondLevelCacheRegionNames()</literal>."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,662 @@
+# translation of persistent_classes.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: persistent_classes\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 11:10+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Clases persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state. For example, an instance can instead be transient "
+"or detached."
+msgstr ""
+"Las clases presistentes son clases en una aplicación que implementan las "
+"entidades del problema empresarial (por ejemplo, Customer y Order en una "
+"aplicación de comercio electrónico). No se considera que todas las "
+"instancias de una clase persistente estén en estado persistente. Por "
+"ejemplo, una instancia puede ser transitoria o separada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You can express a domain model "
+"in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+"Hibernate funciona mejor si estas clases siguen algunas reglas simples, "
+"también conocidas como el modelo de programación POJO (Plain Old Java "
+"Object). Sin embargo, ninguna de estas reglas son requerimientos rígidos. De "
+"hecho, Hibernate3 asume muy poco acerca de la naturaleza de sus objetos "
+"persistentes. Puede expresar un modelo de dominio en otras formas (por "
+"ejemplo, utilizando árboles de instancias de <literal>Map</literal>)."
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "Ejemplo simple de POJO"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most Java applications require a persistent class representing felines. For "
+"example:"
+msgstr ""
+"La mayoría de aplicaciones Java requieren una clase persistente que "
+"represente a los felinos. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The four main rules of persistent classes are explored in more detail in the "
+"following sections."
+msgstr ""
+"En las siguientes secciones vamos a explorar en mayor detalle las cuatro "
+"reglas principales de las clases persistentes. "
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "Implemente un constructor sin argumentos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which can be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. It "
+"is recommended that you have a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal> tiene un contructor sin argumentos. Todas las clases "
+"persistentes deben tener un constructor predeterminado (el cual puede ser no-"
+"público) de modo que Hibernate pueda instanciarlas usando "
+"<literal>Constructor.newInstance()</literal>. Le recomendamos contar con un "
+"constructor por defecto con al menos una visibilidad de <emphasis>paquete</"
+"emphasis> para la generación de proxies en tiempo de ejecución en Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "Proporcione una propiedad identificadora (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. If your legacy database table has "
+"composite keys, you can use a user-defined class with properties of these "
+"types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+"<literal>Cat</literal> tiene una propiedad llamada <literal>id</literal>. "
+"Esta propiedad mapea a la columna de la llave principal de la tabla de la "
+"base de datos. La propiedad podría llamarse de cualquier manera y su tipo "
+"podría haber sido cualquier tipo primitivo, cualquier tipo de \"wrapper\" "
+"primitivo, <literal>java.lang.String</literal> o <literal>java.util.Date</"
+"literal>. Si su tabla de base de datos heredada tiene claves compuestas, "
+"puede utilizar una clase definida por el usuario con propiedades de estos "
+"tipos (vea la sección sobre identificadores compuestos más adelante en este "
+"capítulo)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"La propiedad identificadora es estrictamente opcional. Puede olvidarla y "
+"dejar que Hibernate siga internamente la pista de los identificadores del "
+"objeto. Sin embargo, no recomendamos que esto suceda."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes that declare an "
+"identifier property:"
+msgstr ""
+"De hecho, algunas funcionalidades se encuentran disponibles sólamente para "
+"clases que declaran una propiedad identificadora: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+"Reasociación transitiva de objetos separados (actualizaciones o fusiones en "
+"cascada) - consulte <xref linkend=\"objectstate-transitive\" />"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "<literal>Session.saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "<literal>Session.merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We recommend that you declare consistently-named identifier properties on "
+"persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+"Le recomendamos que declare propiedades identificadoras nombradas-"
+"consistentemente en clases persistentes. y que utilice un tipo nulable (por "
+"ejemplo, no primitivo)."
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "Prefiera las clases no finales (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Un aspecto central de Hibernate, los <emphasis>proxies</emphasis>, dependen "
+"de que las clases persistentes sean no finales o de la implementación de una "
+"interfaz que declare todos los métodos públicos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate. You will not, however, be able to use proxies for "
+"lazy association fetching which will ultimately limit your options for "
+"performance tuning."
+msgstr ""
+"Con Hibernate puede persistir las clases <literal>final</literal>es que no "
+"implementen una interfaz. Sin embargo, no podrá utilizar proxies para "
+"recuperación perezosa de asociaciones, lo cual limitará sus opciones para "
+"afinar el rendimiento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"También debe evitar el declarar métodos <literal>public final</literal> en "
+"las clases no-finales. Si quiere utilizar una clase con un método "
+"<literal>public final</literal>, debe deshabilitar explícitamente el uso de "
+"proxies estableciendo <literal>lazy=\"false\"</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr ""
+"Declare métodos de acceso y de modificación para los campos persistentes "
+"(opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. It is "
+"better to provide an indirection between the relational schema and internal "
+"data structures of the class. By default, Hibernate persists JavaBeans style "
+"properties and recognizes method names of the form <literal>getFoo</"
+"literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If "
+"required, you can switch to direct field access for particular properties."
+msgstr ""
+"<literal>Cat</literal> declara métodos de acceso para todos sus campos "
+"persistentes. Muchas otras herramientas ORM persisten directamente variables "
+"de instancia. Es mejor proporcionar una indirección entre el esquema "
+"relacional y las estructuras de datos internos de la clase. Por defecto, "
+"Hibernate persiste las propiedades del estilo JavaBeans, y reconoce los "
+"nombres de método de la forma <literal>getFoo</literal>, <literal>isFoo</"
+"literal> y <literal>setFoo</literal>. De ser necesario, puede cambiarse al "
+"acceso directo a campos para propiedades específicas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"<emphasis>No</emphasis> es necesario declarar públicas las propiedades. "
+"Hibernate puede persistir una propiedad con un par get / set "
+"<literal>protected</literal> o <literal>private</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "Implementación de herencia"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+"Una subclase también tiene que cumplir con la primera y la segunda regla. "
+"Hereda su propiedad identificadora de la superclase <literal>Cat</literal>. "
+"Por ejemplo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr "Implementando <literal>equals()</literal> y <literal>hashCode()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you:"
+msgstr ""
+"Tiene que sobrescribir los métodos <literal>equals()</literal> y "
+"<literal>hashCode()</literal> si:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations); <emphasis>and</"
+"emphasis>"
+msgstr ""
+"piensa poner instancias de clases persistentes en un <literal>Set</literal> "
+"(la forma recomendada de representar asociaciones multivaluadas); "
+"<emphasis>y</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "piensa utilizar reasociación de instancias separadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. When you mix instances "
+"retrieved in different sessions, you must implement <literal>equals()</"
+"literal> and <literal>hashCode()</literal> if you wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate garantiza la equivalencia de identidad persistente (fila de base "
+"de datos) y de identidad Java sólamente dentro del ámbito de una sesión en "
+"particular. De modo que en el momento en que mezcla instancias recuperadas "
+"en sesiones diferentes, tiene que implementar <literal>equals()</literal> y "
+"<literal>hashCode()</literal> si desea tener una semántica significativa "
+"para <literal>Set</literal>s."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, "
+"because they are equal. If both are added to a <literal>Set</literal>, you "
+"will only have one element in the <literal>Set</literal>). Unfortunately, "
+"you cannot use that approach with generated identifiers. Hibernate will only "
+"assign identifier values to objects that are persistent; a newly created "
+"instance will not have any identifier value. Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. This is not a "
+"Hibernate issue, but normal Java semantics of object identity and equality."
+msgstr ""
+"La forma más obvia es implementar <literal>equals()</literal>/"
+"<literal>hashCode()</literal> comparando el valor identificador de ambos "
+"objetos. Si el valor es el mismo, ambos deben ser la misma fila de la base "
+"de datos ya que son iguales. Si ambos son agregados a un <literal>Set</"
+"literal>, sólo tendremos un elemento en el <literal>Set</literal>). "
+"Desafortunadamente, no puede utilizar este enfoque con identificadores "
+"generados. Hibernate sólo asignará valores identificadores a objetos que son "
+"persistentes; una instancia recién creada no tendrá ningún valor "
+"identificador. Además, si una instancia no se encuentra guardada y está "
+"actualmente en un <literal>Set</literal>, al guardarla se asignará un valor "
+"identificador al objeto. Si <literal>equals()</literal> y <literal>hashCode()"
+"</literal> están basados en el valor identificador, el código hash podría "
+"cambiar, rompiendo el contrato del <literal>Set</literal>. Consulte el sitio "
+"web de Hibernate y allí encontrará una discusión completa sobre este "
+"problema. Este no es un problema de Hibernate, sino de la semántica normal "
+"de Java de identidad de objeto e igualdad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> using <emphasis>Business key equality</"
+"emphasis>. Business key equality means that the <literal>equals()</literal> "
+"method compares only the properties that form the business key. It is a key "
+"that would identify our instance in the real world (a <emphasis>natural</"
+"emphasis> candidate key):"
+msgstr ""
+"Le recomendamos implementar <literal>equals()</literal> y <literal>hashCode()"
+"</literal> utilizando <emphasis>igualdad de clave empresarial (Business key "
+"equality)</emphasis>. Igualdad de clave empresarial significa que el método "
+"<literal>equals()</literal> sólamente compara las propiedades que forman la "
+"clave empresarial. Esta es una clave que podría identificar nuestra "
+"instancia en el mundo real (una clave candidata <emphasis>natural</"
+"emphasis>):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A business key does not have to be as solid as a database primary key "
+"candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable "
+"or unique properties are usually good candidates for a business key."
+msgstr ""
+"Una clave empresarial no tiene que ser tan sólida como una clave principal "
+"candidata (consulte la <xref linkend=\"transactions-basics-identity\" />). Las propiedades inmutables o únicas usualmente son "
+"buenas candidatas para una clave empresarial."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "Modelos dinámicos"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>The following features are currently considered experimental and "
+"may change in the near future.</emphasis>"
+msgstr ""
+"<emphasis>Las siguientes funcionalidades se consideran como "
+"experimentales actualmente y es posible que cambien pronto.</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent entities do not necessarily have to be represented as POJO "
+"classes or as JavaBean objects at runtime. Hibernate also supports dynamic "
+"models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) "
+"and the representation of entities as DOM4J trees. With this approach, you "
+"do not write persistent classes, only mapping files."
+msgstr ""
+"Las entidades persistentes no necesariamente tienen que estar representadas "
+"como clases POJO o como objetos JavaBean en tiempo de ejecución. Hibernate "
+"también soporta modelos dinámicos (utilizando <literal>Map</literal>eos de "
+"<literal>Map</literal>eos en tiempo de ejecución) y la representación de "
+"entidades como árboles de DOM4J. No escriba clases persistentes con este "
+"enfoque, sólamente archivos de mapeo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You can set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+"Por defecto, Hibernate funciona en modo POJO normal. Puede establecer un "
+"modo de representación de entidad predeterminado para una "
+"<literal>SessionFactory</literal> en particular utilizando la opción de "
+"configuración <literal>default_entity_mode</literal> (consulte <xref linkend=\"configuration-optional-properties\" />)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following examples demonstrate the representation using <literal>Map</"
+"literal>s. First, in the mapping file an <literal>entity-name</literal> has "
+"to be declared instead of, or in addition to, a class name:"
+msgstr ""
+"Los siguientes ejemplos demuestran la representación utilizando "
+"<literal>Map</literal>eos. Primero, en el archivo de mapeo tiene que "
+"declararse un <literal>entity-name</literal> en lugar de, o además de un "
+"nombre de clase:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though associations are declared using target class names, the target "
+"type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+"Aunque las asociaciones se declaran utilizando nombres de clase destino, el "
+"tipo destino de una asociación puede ser además una entidad dinámica en "
+"lugar de un POJO."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, you can, at runtime, work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"Después de establecer el modo de entidad predeterminado como "
+"<literal>dynamic-map</literal> para la <literal>SessionFactory</literal>, "
+"puede trabajar en tiempo de ejecución con <literal>Map</literal>eos de "
+"<literal>Map</literal>eos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the main advantages of dynamic mapping is quick turnaround time for "
+"prototyping, without the need for entity class implementation. However, you "
+"lose compile-time type checking and will likely deal with many exceptions at "
+"runtime. As a result of the Hibernate mapping, the database schema can "
+"easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"Una de las ventajas principales de un mapeo dinámico es el rápido tiempo de "
+"entrega del prototipado sin la necesidad de implementar clases de entidad. "
+"Sin embargo, pierde el chequeo de tipos en tiempo de compilación y muy "
+"probablemente tendrá que tratar con muchas excepciones en tiempo de "
+"ejecución. Gracias al mapeo de Hibernate, el esquema de base de datos se "
+"puede normalizar y volver sólido, permitiendo añadir una implementación "
+"apropiada del modelo de dominio más adelante."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"Los modos de representación de entidad se pueden establecer por "
+"<literal>Session</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you do not have to call <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"Tenga en cuenta que la llamada a <literal>getSession()</literal> utilizando "
+"un <literal>EntityMode</literal> está en la API de <literal>Session</"
+"literal>, no en la de <literal>SessionFactory</literal>. De esta forma, la "
+"nueva <literal>Session</literal> comparte la conexión JDBC, la transacción y "
+"otra información de contexto. Esto significa que no tiene que llamar a "
+"<literal>flush()</literal> ni a <literal>close()</literal> en la "
+"<literal>Session</literal> secundaria, y también tiene que dejar el manejo "
+"de la transacción y de la conexión a la unidad de trabajo primaria. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\" />."
+msgstr ""
+"Puede encontrar más información sobre las capacidades de representación de "
+"XML en <xref linkend=\"xml\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "Tuplizers"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing that knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the corresponding tuplizer knows how create the POJO "
+"through its constructor. It also knows how to access the POJO properties "
+"using the defined property accessors."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal> y sus subinterfaces son las "
+"responsables de administrar una representación en particular de un dato, "
+"dadas las representaciones de <literal>org.hibernate.EntityMode</literal>. "
+"Si un dato dado se considera como una estructura de datos entonces un "
+"tuplizer es la cosa que sabe como crear tal estructura de datos y sabe como "
+"extraer e insertar valores en dicha estructura de datos. Por ejemplo, para "
+"el modo de entidad POJO, el tuplizer correspondiente sabe como crear el POJO "
+"por medio de su constructor. También sabe como acceder a las propiedades "
+"POJO utilizando los accesores de propiedad definidos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two high-level types of Tuplizers, represented by the <literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> interfaces. "
+"<literal>EntityTuplizer</literal>s are responsible for managing the above "
+"mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+"Hay dos tipos altos de niveles de Tuplizers, representados por las "
+"interfaces <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> y "
+"<literal>org.hibernate.tuple.component.ComponentTuplizer</literal>. Los "
+"<literal>EntityTuplizer</literal>s son los responsables de administrar los "
+"contratos mencionados anteriormente en relación con las entidades mientras "
+"que los <literal>ComponentTuplizer</literal>s hacen lo mismo para los "
+"componentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Users can also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode. Or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizer definitions are attached to the entity or component "
+"mapping they are meant to manage. Going back to the example of our customer "
+"entity:"
+msgstr ""
+"Los usuarios también pueden enchufar sus propios tuplizers. Tal vez necesite "
+"que una implementación <literal>java.util.Map</literal> diferente de "
+"<literal>java.util.HashMap</literal> se utilice en el modo de entidad de "
+"mapeo dinámico. O quizás necesite definir una estrategia de generación proxy "
+"diferente de la que se utiliza por defecto. Se pueden obtener ambas al "
+"definir una implementación tuplizer personalizada. Las definiciones de los "
+"tuplizers se encuentran sujetas a la entidad o componente de mapeo que se "
+"supone que tienen que administrar. Regresando al ejemplo de nuestra entidad "
+"de cliente:"
+
+#. Tag: title
+#, no-c-format
+msgid "EntityNameResolvers"
+msgstr "EntityNameResolvers"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"interface is a contract for resolving the entity name of a given entity "
+"instance. The interface defines a single method "
+"<methodname>resolveEntityName</methodname> which is passed the entity "
+"instance and is expected to return the appropriate entity name (null is "
+"allowed and would indicate that the resolver does not know how to resolve "
+"the entity name of the given entity instance). Generally speaking, an "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> is going to "
+"be most useful in the case of dynamic models. One example might be using "
+"proxied interfaces as your domain model. The hibernate test suite has an "
+"example of this exact style of usage under the <package>org.hibernate.test."
+"dynamicentity.tuplizer2</package>. Here is some of the code from that "
+"package for illustration."
+msgstr ""
+"La interfaz <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"es un contrato para resolver el nombre de la entidad de una instancia de "
+"entidad dada. La interfaz define un solo método "
+"<methodname>resolveEntityName</methodname>, el cual se le pasa la instancia "
+"entidad y se espera que retorne el nombre de entidad apropriado (se permite "
+"nulo e indicaría que el resolvedor no sabe cómo resolver el nombre de la "
+"entidad de la instancia de entidad dada). Generalmente hablando, un "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> será más "
+"útil en el caso de modelos dinámicos. Un ejemplo puede ser el usar "
+"interfaces con proxis como su modelo de dominio. La suite de prueba de "
+"hibernate tiene un ejemplo de este estilo exacto de uso bajo el <package>org."
+"hibernate.test.dynamicentity.tuplizer2</package>. Aquí está algo del código "
+"de ese paquete para su ilustración."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to register an <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> users must either:"
+msgstr ""
+"Con el fin de registrar un <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> los usuarios deben:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link>, implementing the <methodname>getEntityNameResolvers</methodname> "
+"method."
+msgstr ""
+"Implementar un <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link> personalizado, implementando el método <methodname>getEntityNameResolvers</"
+"methodname>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (which is the implementation class for <interfacename>org."
+"hibernate.SessionFactory</interfacename>) using the "
+"<methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+"Registrarlo con el <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (el cual es la clase de implementación para <interfacename>org."
+"hibernate.SessionFactory</interfacename>) usando el método "
+"<methodname>registerEntityNameResolver</methodname>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,388 @@
+# translation of portability.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: portability\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-17 12:19+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: portability.xml:31
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr "Consideraciones de la portabilidad de la base de datos"
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr "Aspectos básicos de la portabilidad"
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+"Uno de los aspectos que más vende de Hibernate (y realmente del mapeo objeto/"
+"relacional en sí) es la noción de portabilidad de la base de datos. Podría "
+"ser el caso de un administrador de sistemas migrando de una base de datos de "
+"un vendedor a otro, o podría ser un marco de trabajo o una aplicación "
+"desplegable consumiendo Hibernate para que apunte simultáneamente a "
+"múltiples productos de bases de datos. Sin importar el escenario exacto, la "
+"idea básica es que quiere que Hibernate le ayude a ejecutar frente a "
+"cualquier número de bases de datos sin cambiar el código e idealmente sin "
+"cambiar los metadatos de mapeo. "
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialecto"
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+"La primera línea de portabilidad para Hibernate es el dialecto, el cual es "
+"una especialización del contrato <classname>org.hibernate.dialect.Dialect</"
+"classname>. Un dialecto encapsula todas las diferencias en la manera en que "
+"Hibernate debe comunicarse con una base de datos en particular para lograr "
+"alguna tarea como el obtener un valor de secuencia o el estructurar una "
+"petición SELECT. Hibernate reune un gran rango de dialectos para muchas de "
+"las bases de datos más populares. Si encuentra que su base de datos en "
+"particular no se encuentra entre estos, no es demasiado dificil es escribir "
+"el propio."
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr "Resolución del dialecto"
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+"Originalmente, Hibernate siempre requería que los usuarios especificaran qué "
+"dialecto utilizar. En el caso de aquellos usuarios que buscaban apuntar a "
+"múltiples bases de datos de manera simultánea con su construcción eso "
+"representaba un problema. Generalmente esto requería que los usuarios "
+"configuraran el dialecto de Hibernate o que definieran su propio método para "
+"establecer ese valor. "
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+"Empezando con la versión 3.2, Hibernate introdujo la noción de detectar "
+"automáticamente el dialecto a utilizar con base en los <interfacename>java."
+"sql.DatabaseMetaData</interfacename> que se obtuvieron de una "
+"<interfacename>java.sql.Connection</interfacename> a esa base de datos. Esto "
+"era mucho mejor pero esta resolución estaba limitada a las bases de datos "
+"que Hibernate conoce por adelantado y de ninguna manera era configurable ni "
+"se podía sobreescribir."
+
+#. Tag: para
+#: portability.xml:77
+#, fuzzy, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException]]></"
+"programlisting>. The basic contract here is that if the resolver "
+"'understands' the given database metadata then it returns the corresponding "
+"Dialect; if not it returns null and the process continues to the next "
+"resolver. The signature also identifies <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname> as possibly being thrown. "
+"A JDBCConnectionException here is interpreted to imply a \"non transient"
+"\" (aka non-recoverable) connection problem and is used to indicate an "
+"immediate stop to resolution attempts. All other exceptions result in a "
+"warning and continuing on to the next resolver."
+msgstr ""
+"Empezando por la versión 3.3, Hibernate cuenta con una manera más poderosa "
+"de determinar automáticamente cuál dialecto se debe utilizar dependiendo de "
+"una serie de delegados, los cuales implementan el <interfacename>org."
+"hibernate.dialect.resolver.DialectResolver</interfacename>. Este define un "
+"método único:<programlisting>public Dialect resolveDialect(DatabaseMetaData "
+"metaData) throws JDBCConnectionException</programlisting>. El contrato "
+"básico aquí es que si el resolvedor 'entiende' los metadatos de la base de "
+"datos dada entonces retorna el dialecto correspondiente; si no entonces "
+"retorna nulo y el proceso continua al siguiente resolvedor. La firma también "
+"identifica <exceptionname>org.hibernate.exception.JDBCConnectionException</"
+"exceptionname> ya que posiblemente se presenta. Una JDBCConnectionException "
+"aquí se interpreta como un problema de conexión \"no transitorio\" (también "
+"conocido como no-recuperable) y se utiliza para indicar que se deben detener "
+"inmediatamente los intentos de resolución. Todas las otras excepciones "
+"resultan en una advertencia y continua al siguiente resolvedor. "
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+"La parte divertida de estos resolvedores es que los usuarios también pueden "
+"registrar sus propios resolvedores personalizados, los cuales se procesarán "
+"antes de los incluídos en Hibernate. Esto puede llegar a ser útil en un "
+"número de situaciones diferentes: permite una fácil integración para la auto-"
+"detección de dialectos más allá de los que se envían junto con Hibernate; le "
+"permite especificar el uso de un dialecto personalizado cuando se reconoce "
+"una base de datos en particular; etc. Para registrar uno o más resolvedores, "
+"simplemente especifiquelos (separados por comas o espacios) usando la "
+"configuración 'hibernate.dialect_resolvers' (consulte la constante "
+"<constant>DIALECT_RESOLVERS</constant> en <classname>org.hibernate.cfg."
+"Environment</classname>)."
+
+#. Tag: title
+#: portability.xml:103
+#, no-c-format
+msgid "Identifier generation"
+msgstr "Generación del identificador"
+
+#. Tag: para
+#: portability.xml:105
+#, fuzzy, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics. <note> <para> Hibernate was changed slightly once the implication "
+"of this was better understood so that the insert is delayed in cases where "
+"that is feasible. </para> </note> The underlying issue is that the actual "
+"semanctics of the application itself changes in these cases."
+msgstr ""
+"Al considerar la portabilidad entre bases de datos, otra decisión importante "
+"es el seleccionar la estrategia de generación del identificador que quiere "
+"utilizar. Originalmente Hibernate brindaba el generador <emphasis>nativo</"
+"emphasis> para este propósito, el cual tenía el objetivo de seleccionar "
+"entre las estrategias <emphasis>sequence</emphasis>, <emphasis>identity</"
+"emphasis> o <emphasis>table</emphasis> dependiendo de la capacidad de la "
+"base de datos subyacente. Sin embargo, una de las implicaciones de este "
+"enfoque se presenta al tener como destino algunas bases de datos que "
+"soportan la generación de <emphasis>identidad</emphasis> y algunas no. La "
+"generación de <emphasis>identidad</emphasis> depende de la definición SQL de "
+"una columna IDENTITY (o auto-incremento) para administrar el valor del "
+"identificador; es lo que se conoce como una estrategia de generación post-"
+"insert ya que el insert de hecho debe tener lugar antes de saber el valor "
+"del identificador. Ya que Hibernate depende de este valor de identificador "
+"para referenciar de manera única a las entidades dentro de un contexto de "
+"persistencia entonces debe emitir el insert inmediatamente cuando los "
+"usuarios solicitan que la entidad se asocie con la sesión (por ejemplo, por "
+"medio de save()) sin importar la semántica transaccional actual."
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way. <note> <para> There are "
+"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
+"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
+"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
+"listitem> </itemizedlist> </para> </note> The idea behind these generators "
+"is to port the actual semantics of the identifer value generation to the "
+"different databases. For example, the <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
+"databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, no-c-format
+msgid "Database functions"
+msgstr "Funciones de la base de datos"
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+"Esta es un área en la que Hibernate necesita mejorar. En términos de qué tan "
+"portatil puede ser, esta función que se maneja actualmente trabaja bastante "
+"bien desde HQL; sin embargo, en otros aspectos le falta mucho. "
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+"Los usuarios pueden referenciar las funciones de SQL de muchas maneras. Sin "
+"embargo, no todas las bases de datos soportan el mismo grupo de funciones. "
+"Hibernate proporciona una manera de mapear un nombre de una función "
+"<emphasis>lógica</emphasis> a un delegado, el cual sabe cómo entregar esa "
+"función en particular, tal vez incluso usando una llamada de función física "
+"totalmente diferente."
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+"Técnicamente este registro de función se maneja por medio de la clase "
+"<classname>org.hibernate.dialect.function.SQLFunctionRegistry</classname>, "
+"la cual tiene el propósito de permitirle a los usuarios el proporcionar "
+"definiciones de funciones personalizadas sin tener que brindar un dialecto "
+"personalizado. Este comportamiento especifico todavía no está del todo "
+"completo."
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+"De cierta manera está implementado para que los usuarios puedan registrar "
+"programáticamente las funciones con la <classname>org.hibernate.cfg."
+"Configuration</classname> y aquellas funciones serán reconocidas por HQL."
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr "Mapeos de tipo"
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr "Esta sección se completará en un futuro cercano..."
+
+#~ msgid ""
+#~ "Hibernate was changed slightly once the implication of this was better "
+#~ "understood so that the insert is delayed in cases where that is feasible."
+#~ msgstr ""
+#~ "Hibernate ha cambiado un poco ya que se comprendió un poco mejor las "
+#~ "implicaciones de esto de manera que el insert se retrasa en los casos en "
+#~ "donde esto posible. "
+
+#~ msgid ""
+#~ "The underlying issue is that the actual semanctics of the application "
+#~ "itself changes in these cases."
+#~ msgstr ""
+#~ "El problema subyacente es que la semántica real de la aplicación misma "
+#~ "cambia en estos casos."
+
+#~ msgid ""
+#~ "Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+#~ "\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier "
+#~ "generators targetting portability in a much different way."
+#~ msgstr ""
+#~ "Desde la versión 3.2.3, Hibernate viene junto con un grupo de generadores "
+#~ "identificadores <ulink url=\"http://in.relation.to/2082.lace\">mejorados</"
+#~ "ulink> apuntando a la portabilidad de una manera muy diferente."
+
+#~ msgid ""
+#~ "There are specifically 2 bundled <emphasis>enhanced</emphasis>generators:"
+#~ msgstr ""
+#~ "Hay especificamente 2 paquetes de generadores <emphasis>mejorados</"
+#~ "emphasis>:"
+
+#~ msgid ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+#~ msgstr ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+
+#~ msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+#~ msgstr "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+
+#~ msgid ""
+#~ "The idea behind these generators is to port the actual semantics of the "
+#~ "identifer value generation to the different databases. For example, the "
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> "
+#~ "mimics the behavior of a sequence on databases which do not support "
+#~ "sequences by using a table."
+#~ msgstr ""
+#~ "La idea detrás de estos generadores es el llevar la semántica de la "
+#~ "generación del valor identificador a las diferentes bases de datos. Por "
+#~ "ejemplo, el <classname>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+#~ "classname> asemeja el comportamiento de una secuencia en las bases de "
+#~ "datos que no soportan secuencias usando una tabla."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,206 @@
+# translation of Preface.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of preface.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 15:31+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "Prefacio"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an Object/Relational Mapping tool for Java environments. The term Object/"
+"Relational Mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"El trabajar con software orientado a objetos y con una base de datos "
+"relacional puede llegar a ser engorroso y puede llegar a tomar bastante "
+"tiempo en los entornos empresariales de hoy en día. Hibernate es una "
+"herramienta de mapeo objeto/relacional para entornos Java. El término de mapeo "
+"objeto/relacional (ORM) se refiere a la técnica de mapear una representación "
+"de datos desde un modelo de objeto a un modelo de datos relacionales con un "
+"esquema basado en SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities. It can also significantly reduce development "
+"time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate no sólamente se ocupa del mapeo desde las clases Java a las tablas "
+"de las bases de datos (y desde los tipos de datos de Java a los tipos de "
+"datos de SQL), sino que también facilita la consulta y recuperación de "
+"datos. Esto puede reducir de manera importante el tiempo de desarrollo que "
+"se tomaría con el manejo de datos de forma manual en SQL y JDBC."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"La meta de Hibernate es aliviar el trabajo del desarrollador en 95% de la "
+"persistencia de datos comunes relacionados con tareas de programación. Es "
+"posible que Hibernate no sea la mejor solución para aquellas aplicaciones "
+"centralizadas en datos que sólamente utilizan los procedimientos almacenados "
+"para implementar la lógica empresarial en la base de datos, Hibernate es "
+"mucho más útil con modelos de dominio orientados a objetos y con lógica "
+"empresarial middle-tier con base en Java. Sin embargo, Hibernate ciertamente "
+"le puede ayudar a eliminar o a encapsular código SQL específico del vendedor "
+"y le ayudará con la tarea común de traducción del grupo de resultados desde "
+"una representación tabular a un grafo de objetos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"Si usted es nuevo en el tema de Hibernate y del Mapeo Objeto/Relacional o "
+"inclusive en Java por favor siga los siguientes pasos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"Consulte el <xref linkend=\"tutorial\"/>, el cual es un tutorial con "
+"instrucciones paso por paso. El código fuente para el tutorial se encuentra "
+"incluído en la distribución en el directorio <literal>doc/reference/tutorial/</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\" /> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Consulte el <xref linkend=\"architecture\" /> para comprender los entornos "
+"en donde se puede utilizar Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"View the <literal>eg/</literal> directory in the Hibernate distribution. It "
+"contains a simple standalone application. Copy your JDBC driver to the "
+"<literal>lib/</literal> directory and edit <literal>etc/hibernate."
+"properties</literal>, specifying correct values for your database. From a "
+"command prompt in the distribution directory, type <literal>ant eg</literal> "
+"(using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Déle un vistazo al directorio <literal>eg/</literal> en la distribución de "
+"Hibernate. Este comprende una aplicación autónoma simple. Copie su "
+"compilador JDBC al directorio <literal>lib/</literal> y edite <literal>etc/"
+"hibernate.properties</literal>, especificando los valores correctos para su "
+"base de datos. Desde un intérprete de comandos en el directorio de la "
+"distribución, escriba <literal>ant eg</literal> (utilizando Ant), o bajo "
+"Windows, escriba <literal>build eg</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need "
+"more help with application design, or if you prefer a step-by-step tutorial. "
+"Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download "
+"the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+"Utilice esta documentación de referencia como su fuente principal de "
+"información. Considere el leer <biblioref linkend=\"biblio-JPwH\"></biblioref> si necesita más ayuda con el "
+"diseño de la aplicación o si prefiere un tutorial paso por paso. También "
+"visite <ulink url=\"http://caveatemptor.hibernate.org\" /> y descargue la aplicación "
+"de ejemplo de <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr ""
+"En el sitio web de Hibernate encontrará las respuestas a las preguntas más "
+"frecuentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Links to third party demos, examples, and tutorials are maintained on the "
+"Hibernate website."
+msgstr ""
+"En el sitio web de Hibernate encontrará los enlaces a las demostraciones de "
+"terceros, ejemplos y tutoriales."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"El área de la comunidad en el sitio web de Hibernate es un buen recurso para "
+"encontrar patrones de diseño y varias soluciones de integración (Tomcat, "
+"JBoss AS, Struts, EJB, etc)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue tracking system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"Si tiene alguna pregunta, diríjase al sitio web de Hibernate en donde "
+"encontrará un enlace al foro de usuarios. También proporcionamos un sistema "
+"de localización para reportes de errores JIRA y solicitud de funciones. Si "
+"está interesado en el desarrollo de Hibernate, únase a la lista de correo de "
+"los desarrolladores. Si le interesa traducir esta documentación a su propio "
+"idioma, contáctenos en la lista de correo de los desarrolladores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"JBoss Inc. proporciona soporte para desarrollo comercial, soporte para "
+"producción y entrenamiento (vea http://www.hibernate.org/SupportTraining/). "
+"Hibernate es un proyecto de Código Abierto Profesional y es un componente "
+"crítico de la suite de productos de JBoss Enterprise Middleware System "
+"(JEMS)."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,415 @@
+# translation of query_criteria.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: query_criteria\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 12:58+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "Consultas por criterios"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr ""
+"Acompaña a Hibernate una API de consultas por criterios intuitiva y "
+"extensible."
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "Creación de una instancia <literal>Criteria</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"La interfaz <literal>org.hibernate.Criteria</literal> representa una "
+"consulta contra una clase persistente en particular. La <literal>Session</"
+"literal> es una fábrica de instancias de <literal>Criteria</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "Límitando el conjunto de resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"Un criterio individual de consulta es una instancia de la interfaz "
+"<literal>org.hibernate.criterion.Criterion</literal>. La clase <literal>org."
+"hibernate.criterion.Restrictions</literal> define métodos de fábrica para "
+"obtener ciertos tipos incorporados de <literal>Criterion</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "Las restricciones se pueden agrupar lógicamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses). One of the most useful allows you to specify SQL "
+"directly."
+msgstr ""
+"Hay un rango de tipos de criterios incorporados (subclases de "
+"<literal>Restrictions</literal>). Uno de los más útiles le permite "
+"especificar SQL directamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"El sitio <literal>{alias}</literal> será remplazado por el alias de fila de "
+"la entidad consultada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also obtain a criterion from a <literal>Property</literal> instance. "
+"You can create a <literal>Property</literal> by calling <literal>Property."
+"forName()</literal>:"
+msgstr ""
+"También puede obtener un criterio de una instancia <literal>Property</"
+"literal>. Puede crear una <literal>Property</literal> llamando a "
+"<literal>Property.forName()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "Orden de los resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"Puede ordenar los resultados usando <literal>org.hibernate.criterion.Order</"
+"literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "Asociaciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By navigating associations using <literal>createCriteria()</literal> you can "
+"specify constraints upon related entities:"
+msgstr ""
+"Al navegar asociaciones usando <literal>createCriteria()</literal> puede "
+"especificar restricciones en entidades relacionadas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second <literal>createCriteria()</literal> returns a new instance of "
+"<literal>Criteria</literal> that refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"El segundo <literal>createCriteria()</literal> retorna una nueva instancia "
+"de <literal>Criteria</literal>, que se refiere a los elementos de la "
+"colección <literal>kittens</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "There is also an alternate form that is useful in certain circumstances:"
+msgstr "Hay una alternativa que es útil en ciertas circunstancias:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal> no crea una nueva instancia de "
+"<literal>Criteria</literal>.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The kittens collections held by the <literal>Cat</literal> instances "
+"returned by the previous two queries are <emphasis>not</emphasis> pre-"
+"filtered by the criteria. If you want to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"Las colecciones de gatitos de las instancias <literal>Cat</literal> "
+"retornadas por las dos consultas previas <emphasis>no</emphasis> están "
+"prefiltradas por los criterios. Si desea recuperar sólo los gatitos que "
+"coincidan con los criterios debe usar un <literal>ResultTransformer</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr "Adicionalmente puede manipular el grupo de resultados utilizando una unión externa izquierda:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return all of the <literal>Cat</literal>s with a mate whose name "
+"starts with \"good\" ordered by their mate's age, and all cats who do not "
+"have a mate. This is useful when there is a need to order or limit in the "
+"database prior to returning complex/large result sets, and removes many "
+"instances where multiple queries would have to be performed and the results "
+"unioned by java in memory."
+msgstr ""
+"Esto retornará todos los <literal>Cat</literal>s -gatos- con una pareja cuyo nombre empiece por "
+"\"good\" ordenado de acuerdo a la edad de la pareja y todos los cats -gatos- que no tengan una pareja. Esto es útil cuando hay necesidad de ordenar o limitar en la base de datos antes de retornar grupos de resultados complejos/grandes y elimina muchas instancias en donde se tendrían que realizar múltiples consultas y unir en memoria los resultados por medio de java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Without this feature, first all of the cats without a mate would need to be "
+"loaded in one query."
+msgstr "Sin esta funcionalidad, primero todos los cats sin una pareja tendrían que cargarse en una petición. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second query would need to retreive the cats with mates who's name started "
+"with \"good\" sorted by the mates age."
+msgstr "Una segunda petición tendría que recuperar los cats -gatos- con las parejas cuyos nombres empiecen por \"good\" ordenado de acuerdo a la edad de las parejas."
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr "Tercero, en memoria sería necesario unir las listas manualmente."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "Recuperación dinámica de asociaciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"Puede especificar la semántica de recuperación de asociaciones en tiempo de "
+"ejecución usando <literal>setFetchMode()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\" /> for "
+"more information."
+msgstr ""
+"Esta consulta recuperará tanto <literal>mate</literal> como "
+"<literal>kittens</literal> por unión exterior (outer join). Consulte la "
+"<xref linkend=\"performance-fetching\" /> para obtener más información."
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "Consultas ejemplo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"La clase <literal>org.hibernate.criterion.Example</literal> le permite "
+"construir un criterio de consulta a partir de una instancia dada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"Las propiedades de versión, los identificadores y las asociaciones se "
+"ignoran. Por defecto, las propiedades valuadas como nulas se excluyen."
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr "Puede modificar la aplicación del <literal>Example</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr "Puede incluso usar ejemplos para colocar criterios sobre objetos asociados."
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "Proyecciones, agregación y agrupamiento"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. You can apply a "
+"projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"La clase <literal>org.hibernate.criterion.Projections</literal> es una "
+"fábrica de instancias de <literal>Projection</literal>. Puede aplicar una "
+"proyección a una consulta llamando a <literal>setProjection()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"No es necesario ningún \"agrupamiento por\" explícito en una consulta por "
+"criterios. Ciertos tipos de proyecciones son definidos para ser "
+"<emphasis>proyecciones agrupadas</emphasis>, que además aparecen en la "
+"cláusula SQL <literal>group by</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alias can be assigned to a projection so that the projected value can be "
+"referred to in restrictions or orderings. Here are two different ways to do "
+"this:"
+msgstr ""
+"Puede asignar un alias a una proyección de modo que el valor proyectado "
+"pueda ser referido en restricciones u ordenamientos. Aquí hay dos formas "
+"diferentes de hacer esto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"Los métodos <literal>alias()</literal> y <literal>as()</literal> simplemente "
+"envuelven una instancia de proyección en otra instancia de "
+"<literal>Projection</literal> con alias. Como atajo, puede asignar un alias "
+"cuando agregue la proyección a una lista de proyecciones:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"También puede usar <literal>Property.forName()</literal> para expresar "
+"proyecciones:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "Consultas y subconsultas separadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class allows you to create a query "
+"outside the scope of a session and then execute it using an arbitrary "
+"<literal>Session</literal>."
+msgstr ""
+"La clase <literal>DetachedCriteria</literal> le permite crear una consulta "
+"fuera del ámbito de una sesión y luego ejecutarla usando una "
+"<literal>Session</literal> arbitraria."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> can also be used to express a "
+"subquery. Criterion instances involving subqueries can be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"También puede utilizar una <literal>DetachedCriteria</literal> para expresar "
+"una subconsulta. Las instancias de Criterion involucrando subconsultas se "
+"pueden obtener por medio de <literal>Subqueries</literal> o "
+"<literal>Property</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "Las subconsultas correlacionadas tambień son posibles:"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "Consultas por identificador natural"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not "
+"efficient because query cache invalidation occurs too frequently. However, "
+"there is a special kind of query where you can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"Para la mayoría de las consultas, incluyendo las consultas por criterios, el "
+"caché de consulta no es muy eficiente debido a que la invalidación del caché "
+"de consulta ocurre con demasiada frecuencia. Sin embargo, hay un tipo "
+"especial de consulta donde podemos optimizar el algoritmo de invalidación de "
+"caché: búsquedas de una clave natural constante. En algunas aplicaciones, "
+"este tipo de consulta, ocurre frecuentemente. La API de criterios brinda una "
+"provisión especial para este caso."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, map the natural key of your entity using <literal>&lt;natural-id&gt;</"
+"literal> and enable use of the second-level cache."
+msgstr ""
+"Primero, mapee la clave natural de su entidad utilizando <literal>&lt;"
+"natural-id&gt;</literal> y habilite el uso del caché de segundo nivel."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"Esta funcionalidad no está pensada para uso con entidades con claves "
+"naturales <emphasis>mutables</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you have enabled the Hibernate query cache, the <literal>Restrictions."
+"naturalId()</literal> allows you to make use of the more efficient cache "
+"algorithm."
+msgstr ""
+"Una vez que haya habilitado el caché de consulta de Hibernate, "
+"<literal>Restrictions.naturalId()</literal> le permite hacer uso del "
+"algoritmo de caché más eficiente."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1439 @@
+# translation of query_hql.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: query_hql\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 14:46+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: El lenguaje de consulta de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a powerful query language (HQL) that is similar in appearance "
+"to SQL. Compared with SQL, however, HQL is fully object-oriented and "
+"understands notions like inheritance, polymorphism and association."
+msgstr ""
+"Hibernate utiliza un lenguaje de consulta potente (HQL) que se parece a SQL. "
+"Sin embargo, comparado con SQL, HQL es completamente orientado a objetos y "
+"comprende nociones como herencia, polimorfismo y asociación."
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "Sensibilidad a mayúsculas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of names of Java classes and properties, queries are case-"
+"insensitive. 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 ""
+"Las consultas no son sensibles a mayúsculas, a excepción de los nombres de "
+"las clases y propiedades Java. De modo que <literal>SeLeCT</literal> es lo "
+"mismo que <literal>sELEct</literal> e igual a <literal>SELECT</literal>, "
+"pero <literal>org.hibernate.eg.FOO</literal> no es lo mismo que <literal>org."
+"hibernate.eg.Foo</literal> y <literal>foo.barSet</literal> no es igual a "
+"<literal>foo.BARSET</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but this convention is unsuitable for "
+"queries embedded in Java code."
+msgstr ""
+"Este manual utiliza palabras clave HQL en minúsculas. Algunos usuarios "
+"encuentran que las consultas con palabras clave en mayúsculas son más "
+"fáciles de leer, pero esta convención no es apropiada para las peticiones "
+"incluidas en código Java."
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "La cláusula from"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "La consulta posible más simple de Hibernate es de esta manera:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This returns all instances of the class <literal>eg.Cat</literal>. You do "
+"not usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. For example:"
+msgstr ""
+"Esto retorna todas las instancias de la clase <literal>eg.Cat</literal>. "
+"Usualmente no es necesario calificar el nombre de la clase ya que "
+"<literal>auto-import</literal> es el valor predeterminado. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to refer to the <literal>Cat</literal> in other parts of the query, "
+"you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+"Con el fin de referirse al <literal>Cat</literal> en otras partes de la "
+"petición, necesitará asignar un <emphasis>alias</emphasis>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so you can use that alias later in the query. The "
+"<literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+"Esta consulta asigna el alias <literal>cat</literal> a las instancias "
+"<literal>Cat</literal>, de modo que puede utilizar ese alias luego en la "
+"consulta. La palabra clave <literal>as</literal> es opcional. También podría "
+"escribir:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Multiple classes can appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"Pueden aparecer múltiples clases, lo que causa un producto cartesiano o una "
+"unión \"cruzada\" (cross join)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is good practice to name query aliases using an initial lowercase as this "
+"is consistent with Java naming standards for local variables (e.g. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"Se considera como una buena práctica el nombrar los alias de consulta "
+"utilizando una inicial en minúsculas, consistente con los estándares de "
+"nombrado de Java para las variables locales (por ejemplo, "
+"<literal>domesticCat</literal>). "
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "Asociaciones y uniones (joins)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also assign aliases to associated entities or to elements of a "
+"collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+"También puede asignar alias a entidades asociadas o a elementos de una "
+"colección de valores utilizando una <literal>join</literal>. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "Los tipos de uniones soportadas se tomaron prestados de ANSI SQL"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "<literal>inner join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>left outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "<literal>right outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>full join</literal> (no es útil usualmente)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"Las construcciones <literal>inner join</literal>, <literal>left outer join</"
+"literal> y <literal>right outer join</literal> se pueden abreviar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"Puede proveer condiciones extras de unión utilizando la palabra clave "
+"<literal>with</literal> de HQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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 outer join and lazy declarations of the mapping file for associations "
+"and collections. See <xref linkend=\"performance-fetching\" /> for more "
+"information."
+msgstr ""
+"Una unión de \"recuperación\" le permite a las asociaciones o colecciones de "
+"valores que se inicialicen junto a sus objetos padres, usando un sólo "
+"select. Esto es útil particularmente en el caso de una colección. "
+"Efectivamente sobrescribe la unión externa y las declaraciones perezosas del "
+"archivo de mapeo para asociaciones y colecciones. Consulte <xref linkend=\"performance-fetching\" /> para obtener más información."
+
+#. Tag: para
+#, 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). The associated objects are also not returned directly "
+"in the query results. Instead, they may be accessed via the parent object. "
+"The only reason you might need an alias is if you are recursively join "
+"fetching a further collection:"
+msgstr ""
+"Usualmente no se necesita asignársele un alias a una unión de recuperación "
+"ya que los objetos asociados no se deben utilizar en la cláusula "
+"<literal>where</literal> (ni en cualquier otra cláusula). Los objetos "
+"asociados no se retornan directamente en los resultados de la consulta. En "
+"cambio, se pueden acceder por medio del objeto padre. La única razón por la "
+"que necesitaríamos un alias es si estamos uniendo recursivamente otra "
+"colección:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> construct cannot be used in queries called "
+"using <literal>iterate()</literal> (though <literal>scroll()</literal> can "
+"be used). <literal>Fetch</literal> should be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, "
+"as these operations are based on the result rows which usually contain "
+"duplicates for eager collection fetching, hence, the number of rows is not "
+"what you would expect. <literal>Fetch</literal> should also not be used "
+"together with impromptu <literal>with</literal> condition. It is possible to "
+"create a cartesian product by join fetching more than one collection in a "
+"query, so take care in this case. Join fetching multiple collection roles "
+"can produce unexpected results for bag mappings, so user discretion is "
+"advised when formulating queries in this case. Finally, note that "
+"<literal>full join fetch</literal> and <literal>right join fetch</literal> "
+"are not meaningful."
+msgstr ""
+"La construcción <literal>fetch</literal> no puede utilizarse en consultas "
+"llamadas que usen <literal>iterate()</literal> (aunque se puede utilizar "
+"<literal>scroll()</literal>). <literal>Fetch</literal> se debe usar junto "
+"con <literal>setMaxResults()</literal> o <literal>setFirstResult()</literal> "
+"ya que estas operaciones se basan en las filas de resultados, las cuales "
+"usualmente contienen duplicados para la recuperación de colección temprana, "
+"por lo tanto, el número de filas no es lo que se esperaría. <literal>Fetch</"
+"literal> no se debe usar junto con una condición <literal>with</literal> "
+"improvisadas. Es posible crear un producto cartesiano por medio de una "
+"recuperación por union más de una colección en una consulta, así que tenga "
+"cuidado en este caso. La recuperación por unión de múltiples roles de "
+"colección también da resultados a veces inesperados para mapeos de bag, así "
+"que tenga cuidado de cómo formular sus consultas en este caso. Finalmente, "
+"observe que <literal>full join fetch</literal> y <literal>right join fetch</"
+"literal> no son significativos."
+
+#. Tag: para
+#, 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 in the first query immediately using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"Si está utilizando una recuperación perezosa a nivel de propiedad (con "
+"instrumentación de código byte), es posible forzar a Hibernate a traer las "
+"propiedades perezosas inmediatamente utilizando <literal>fetch all "
+"properties</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "Formas de sintaxis unida"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL soporta dos formas de unión de asociación: <literal>implicit</literal> y "
+"<literal>explicit</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form, that is, where the join keyword is explicitly used in the "
+"from clause. This is the recommended form."
+msgstr ""
+"Las consultas que se mostraron en la sección anterior todas utilizan la "
+"forma <literal>explicit</literal>, en donde la palabra clave join se utiliza "
+"explícitamente en la claúsula from. Esta es la forma recomendada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"La forma <literal>implicit</literal> no utiliza la palabra clave join. Las "
+"asociaciones se \"desreferencian\" utilizando la notación punto. Uniones "
+"<literal>implicit</literal> pueden aparecer en cualquiera de las cláusulas "
+"HQL. La unión <literal>implicit</literal> causa uniones internas (inner "
+"joins) en la declaración SQL que resulta."
+
+#. Tag: title
+#, no-c-format
+msgid "Referring to identifier property"
+msgstr "Referencia a la propiedad identificadora "
+
+#. Tag: para
+#, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr "Hay dos maneras de referirse a la propiedad identificadora de una entidad:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that the "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"La propiedad especial (en minúsculas) <literal>id</literal> se puede "
+"utilizar para referenciar la propiedad identificadora de una entidad "
+"<emphasis> dado que la entidad no defina un id del nombre de la propiedad no-"
+"identificadora</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you can use that property "
+"name."
+msgstr ""
+"Si la entidad define una propiedad identificadora nombrada, puede utilizar "
+"ese nombre de propiedad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named. Otherwise, "
+"the special <literal>id</literal> property can be used to reference the "
+"identifier property."
+msgstr ""
+"Las referencias a propiedades identificadoras compuestas siguen las mismas "
+"reglas de nombramiento. Si la entidad no tiene un id del nombre de la "
+"propiedad no-identificadora, la propiedad identificadora compuesta sólamente "
+"puede ser referenciada por su nombre definido. De otra manera se puede "
+"utilizar la propiedad <literal>id</literal> especial para referenciar la "
+"propiedad identificadora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that, starting in version 3.2.2, this has changed significantly. "
+"In previous versions, <literal>id</literal> <emphasis>always</emphasis> "
+"referred to the identifier property regardless of its actual name. A "
+"ramification of that decision was that non-identifier properties named "
+"<literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+"Observe que esto ha cambiado bastante desde la version 3.2.2. En versiones "
+"previas, <literal>id</literal><emphasis>siempre</emphasis> se refería a la "
+"propiedad identificadora sin importar su nombre real. Una ramificación de "
+"esa decisión fue que las propiedades no-identificadoras nombradas "
+"<literal>id</literal> nunca podrían ser referenciadas en consultas de "
+"Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "La cláusula select"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider the following:"
+msgstr ""
+"La cláusula <literal>select</literal> escoge qué objetos y propiedades "
+"devolver en el conjunto de resultados de la consulta. Considere lo siguiente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. You can express this query more compactly as:"
+msgstr ""
+"La consulta seleccionará <literal>mate</literal>s de otros <literal>Cat</"
+"literal>s. Puede expresar esta consulta de una manera más compacta así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"Las consultas pueden retornar propiedades de cualquier tipo de valor "
+"incluyendo propiedades del tipo componente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>:"
+msgstr ""
+"Las consultas pueden retornar múltiples objetos y/o propiedades como un "
+"array de tipo <literal>Object[]</literal>,"
+
+#. Tag: para
+#, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "O como una <literal>List</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Or - assuming that the class <literal>Family</literal> has an appropriate "
+"constructor - as an actual typesafe Java object:"
+msgstr ""
+"O asumiendo que la clase <literal>Family</literal> tiene un constructor "
+"apropiado - como un objeto Java de tipo seguro:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"Puede asignar alias para expresiones seleccionadas utilizando <literal>as</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr ""
+"Esto es lo más útil cuando se usa junto con <literal>select new map</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"Esta consulta devuelve un <literal>Map</literal> de alias a valores "
+"seleccionados."
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "Funciones de agregación"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries can even return the results of aggregate functions on properties:"
+msgstr ""
+"Las consultas HQL pueden incluso retornar resultados de funciones de "
+"agregación sobre propiedades:"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "Las funciones de agregación soportadas son:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "<literal>count(*)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "<literal>count(...), count(distinct ...), count(all...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"Puede utilizar operadores aritméticos, concatenación y funciones SQL "
+"reconocidas en la cláusula select:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords can be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"Las palabras clave <literal>distinct</literal> y <literal>all</literal> se "
+"pueden utilizar y tienen las misma semántica que en SQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Consultas polimórficas"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "Una consulta como:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries can name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. 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 ""
+"devuelve instancias no sólamente de <literal>Cat</literal>, sino también de "
+"subclases como <literal>DomesticCat</literal>. Las consultas de Hibernate "
+"pueden nombrar <emphasis>cualquier</emphasis> clase o interfaz Java en la "
+"cláusula <literal>from</literal>. La consulta retornará instancias de todas "
+"las clases persistentes que extiendan esa clase o implementen la interfaz. "
+"La siguiente consulta retornaría todos los objetos persistentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"La interfaz <literal>Named</literal> se podría implementar por varias clases "
+"persistentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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 cannot call these "
+"queries using <literal>Query.scroll()</literal>."
+msgstr ""
+"Las dos últimas consultas requerirán más de un <literal>SELECT</literal> "
+"SQL. Esto significa que la cláusula <literal>order by</literal> no ordenará "
+"correctamente todo el conjunto que resulte. También significa que no puede "
+"llamar estas consulta usando <literal>Query.scroll()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "La cláusula where"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to refine the list of "
+"instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+"La cláusula <literal>where</literal> le permite refinar la lista de "
+"instancias retornadas. Si no existe ningún alias, puede referirse a las "
+"propiedades por nombre:"
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr "Si existe un alias, use un nombre de propiedad calificado:"
+
+#. Tag: para
+#, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "Esto retorna instancias de <literal>Cat</literal> llamadas 'Fritz'."
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr "La siguiente petición:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+"retornará todas las instancias de <literal>Foo</literal> con una instancia "
+"de <literal>bar</literal> con una propiedad <literal>date</literal> igual a "
+"la propiedad <literal>startDate</literal> del <literal>Foo</literal>. Las "
+"expresiones de ruta compuestas hacen la cláusula <literal>where</literal> "
+"extremadamente potente. Tome en consideración lo siguiente:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+"Esta consulta se traduce a una consulta SQL con una unión de tabla "
+"(interna). Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr "terminaría con una consulta que requeriría cuatro uniones de tablas en SQL. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator can be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"El operador <literal>=</literal> se puede utilizar para comparar no "
+"sólamente propiedades sino también instancias:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> can be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\" /> for more information."
+msgstr ""
+"La propiedad especial <literal>id</literal> (en minúsculas) se puede "
+"utilizar para referenciar el identificador único de un objeto. Consulte "
+"<xref linkend=\"queryhql-"
+"identifier-property\" /> para obtener más "
+"información."
+
+#. Tag: para
+#, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "La segunda consulta es eficiente y no se necesita una unión de tablas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties of composite identifiers can also be used. Consider the following "
+"example where <literal>Person</literal> has composite identifiers consisting "
+"of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+"También se pueden utilizar las propiedades de identificadores compuestos. "
+"Considere el siguiente ejemplo en donde <literal>Person</literal> tiene "
+"identificadores compuestos que consisten de <literal>country</literal> y "
+"<literal>medicareNumber</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "Una vez más, la segunda consulta no requiere una unión de tablas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"queryhql-identifier-property\" /> for more information "
+"regarding referencing identifier properties)"
+msgstr ""
+"Consulte <xref linkend=\"queryhql-identifier-property\" /> para obtener "
+"mayor información con relación a la referencia de propiedades del "
+"identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+"La propiedad especial <literal>class</literal> acccede al valor "
+"discriminador de una instancia en el caso de persistencia polimórfica. Un "
+"nombre de clase Java incluído en la cláusula where será traducido a su valor "
+"discriminador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\" /> for more "
+"information."
+msgstr ""
+"También puede utilizar componentes o tipos de usuario compuestos o "
+"propiedades de dichos tipos de componentes. Consulte <xref linkend="
+"\"queryhql-components\" /> para obtener más detalles."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal> that allows you to express a join in the following "
+"way (where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>):"
+msgstr ""
+"Un tipo \"any\" tiene las propiedades especiales <literal>id</literal> y "
+"<literal>class</literal>, permiténdole expresar una unión de la siguiente "
+"forma (en donde <literal>AuditLog.item</literal> es una propiedad mapeada "
+"con <literal>&lt;any&gt;</literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <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 ""
+"La <literal>log.item.class</literal> y <literal>payment.class</literal> "
+"harían referencia a los valores de columnas de la base de datos "
+"completamente diferentes en la consulta anterior."
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "Expresiones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Expressions used in the <literal>where</literal> clause include the "
+"following:"
+msgstr ""
+"Las expresiones utilizadas en la cláusula <literal>where</literal> incluyen "
+"lo siguiente:"
+
+#. Tag: para
+#, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "operadores matemáticos: <literal>+, -, *, /</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr ""
+"operadores de comparación binarios: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, "
+"like</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "operadores lógicos <literal>and, or, not</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "Paréntesis <literal>( )</literal> que indican agrupación"
+
+#. Tag: para
+#, 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 ""
+"<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> y <literal>not member of</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"Caso \"simple\", <literal>case ... when ... then ... else ... end</literal>, "
+"y caso \"buscado\", <literal>case when ... then ... else ... end</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"concatenación de cadenas <literal>...||...</literal> o <literal>concat"
+"(...,...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, and "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal> y "
+"<literal>current_timestamp()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+
+#. Tag: para
+#, 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(), mod()"
+"</literal>"
+msgstr ""
+"Cualquier función u operador definido por EJB-QL 3.0: <literal>substring(), "
+"trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), "
+"mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> y <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"<literal>str()</literal> para convertir valores numéricos o temporales a una "
+"cadena legible."
+
+#. Tag: para
+#, 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 ""
+"<literal>cast(... as ...)</literal>, donde el segundo argumento es el nombre "
+"de un tipo de Hibernate , y <literal>extract(... from ...)</literal> si "
+"<literal>cast()</literal> y <literal>extract()</literal> es soportado por la "
+"base de datos subyacente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"la función <literal>index()</literal> de HQL, que se aplica a alias de una "
+"colección indexada unida."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions that can be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"Las funciones de HQL que tomen expresiones de ruta valuadas en colecciones: "
+"<literal>size(), minelement(), maxelement(), minindex(), maxindex()</"
+"literal>, junto con las funciones especiales <literal>elements()</literal> e "
+"<literal>indices</literal>, las cuales se pueden cuantificar utilizando "
+"<literal>some, all, exists, any, in</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</"
+"literal>"
+msgstr ""
+"Cualquier función escalar SQL soportada por la base de datos como "
+"<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</"
+"literal> y <literal>sin()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "parámetros posicionales JDBC <literal>?</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"and <literal>:x1</literal>"
+msgstr ""
+"parámetros con nombre <literal>:name</literal>, <literal>:start_date</"
+"literal> y <literal>:x1</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"literales SQL <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"constantes Java <literal>public static final</literal><literal>eg.Color."
+"TABBY</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr "<literal>in</literal> y <literal>between</literal> pueden utilizarse así:"
+
+#. Tag: para
+#, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "Las formas negadas se pueden escribir así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, <literal>is null</literal> and <literal>is not null</literal> can "
+"be used to test for null values."
+msgstr ""
+"De manera similar, <literal>is null</literal> y <literal>is not null</"
+"literal> se pueden utilizar para probar valores nulos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Booleans can be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Los valores booleanos se pueden utilizar fácilmente en expresiones "
+"declarando substituciones de consulta HQL en la configuración de Hibernate:"
+
+#. Tag: para
+#, 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 ""
+"Esto remplazará las palabras clave <literal>true</literal> y <literal>false</"
+"literal> con los literales <literal>1</literal> y <literal>0</literal> en el "
+"SQL traducido de este HQL:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can test the size of a collection with the special property "
+"<literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+"Puede comprobar el tamaño de una colección con la propiedad especial "
+"<literal>size</literal> o la función especial <literal>size()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For indexed collections, you can refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you can refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. For example:"
+msgstr ""
+"Para las colecciones indexadas, puede referirse a los índices máximo y "
+"mínimo utilizando las funciones <literal>minindex</literal> y "
+"<literal>maxindex</literal>. De manera similar, se puede referir a los "
+"elementos máximo y mínimo de una colección de tipo básico utilizando las "
+"funciones <literal>minelement</literal> y <literal>maxelement</literal>. Por "
+"ejemplo: "
+
+#. Tag: para
+#, 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):"
+msgstr ""
+"Las funciones SQL <literal>any, some, all, exists, in</literal> están "
+"soportadas cuando se les pasa el conjunto de elementos o índices de una "
+"colección (las funciones <literal>elements</literal> e <literal>indices</"
+"literal>) o el resultado de una subconsulta (vea a continuación):"
+
+#. Tag: para
+#, 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> - can only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"Note que estas construcciones - <literal>size</literal>, <literal>elements</"
+"literal>, <literal>indices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - solo se pueden utilizar en la cláusula where "
+"en Hibernate3."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, and maps) can be referred to "
+"by index in a where clause only:"
+msgstr ""
+"Los elementos de colecciones indexadas (arrays, listas, mapas) se pueden "
+"referir por índice sólamente en una cláusula where:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> can even be an arithmetic "
+"expression:"
+msgstr ""
+"La expresión dentro de <literal>[]</literal> puede incluso ser una expresión "
+"aritmética:"
+
+#. Tag: para
+#, 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 ""
+"HQL también proporciona la función incorporada <literal>index()</literal>, "
+"para los elementos de una asociación uno-a-muchos o una colección de valores."
+
+#. Tag: para
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr ""
+"Se pueden utilizar las funciones SQL escalares soportadas por la base de "
+"datos subyacente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider how much longer and less readable the following query would be in "
+"SQL:"
+msgstr "Considere qué tan larga y menos leíble sería la siguiente consulta en SQL:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>Ayuda:</emphasis> algo como"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "La cláusula order by"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The list returned by a query can be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"La lista retornada por una consulta se puede ordenar por cualquier propiedad "
+"de una clase retornada o componentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"Los <literal>asc</literal> o <literal>desc</literal> opcionales indican "
+"ordenamiento ascendente o descendente respectivamente."
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "La cláusula group by"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query that returns aggregate values can be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"Una consulta que retorna valores agregados  se puede agrupar por cualquier "
+"propiedad de una clase retornada o componentes:"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "Se permite también una cláusula <literal>having</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses if they are supported by "
+"the underlying database (i.e., not in MySQL)."
+msgstr ""
+"Las funciones SQL y las funciones de agregación SQL están permitidas en las "
+"cláusulas <literal>having</literal> y <literal>order by</literal>, si están "
+"soportadas por la base de datos subyacente (por ejemplo, no lo están en "
+"MySQL). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Neither the <literal>group by</literal> clause nor the <literal>order by</"
+"literal> clause can contain arithmetic expressions. Hibernate also does not "
+"currently expand a grouped entity, so you cannot write <literal>group by "
+"cat</literal> if all properties of <literal>cat</literal> are non-"
+"aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+"La cláusula <literal>group by</literal> ni la cláusula <literal>order by</"
+"literal> pueden contener expresiones aritméticas. Hibernate tampocoo expande "
+"una entidad agrupada así que no puede escribir <literal>group by cat</"
+"literal> si todas las propiedades de <literal>cat</literal> son no-"
+"agregadas. Tiene que enumerar todas la propiedades no-agregadas "
+"explícitamente."
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "Subconsultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate 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 ""
+"Para bases de datos que soportan subconsultas, Hibernate soporta "
+"subconsultas dentro de consultas. Una subconsulta se debe encerrar entre "
+"paréntesis (frecuentemente por una llamada a una función de agregación SQL). "
+"Incluso se permiten subconsultas correlacionadas (subconsultas que se "
+"refieren a un alias en la consulta exterior)."
+
+#. Tag: para
+#, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+"Note que las subconsultas HQL pueden ocurrir sólamente en las cláusulas "
+"select o where."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more "
+"information."
+msgstr ""
+"Note que las subconsultas también pueden utilizar la sintaxis <literal>row "
+"value constructor</literal>. Consulte la <xref linkend=\"queryhql-tuple\" /> para obtener más información."
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "Ejemplos de HQL"
+
+#. Tag: para
+#, 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 main strengths. The following "
+"example queries are similar to queries that have been used on recent "
+"projects. Please note that most queries you will write will be much simpler "
+"than the following examples."
+msgstr ""
+"Las consultas de Hibernate pueden ser bastante potentes y complejas. De "
+"hecho, el poder del lenguaje de consulta es uno de las fortalezas "
+"principales de Hibernate. He aquí algunos ejemplos de consultas muy "
+"similares a las consultas de proyectos recientes. Note que la mayoría de las "
+"consultas que escribirá son mucho más simples que los siguientes ejemplos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items, the given minimum "
+"total value and the total value of the order for all unpaid orders for a "
+"particular customer. The results are ordered 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 ""
+"La siguiente consulta retorna el order id, número de items y valor total "
+"mínimo dado y el valor de la orden para todas las órdenes no pagadas de un "
+"cliente en particular. Los resultados se ordenan de acuerdo al valor total. "
+"Al determinar los precios, usa el catálogo actual. La consulta SQL "
+"resultante, contra las tablas <literal>ORDER</literal>, <literal>ORDER_LINE</"
+"literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal> y "
+"<literal>PRICE</literal> tiene cuatro uniones interiores y una subselección "
+"(no correlacionada)."
+
+#. Tag: para
+#, 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 ""
+"¡Qué monstruo! Realmente, en la vida real, no me gustan mucho las "
+"subconsultas, de modo que mi consulta fue realmente algo como esto:"
+
+#. Tag: para
+#, 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 ""
+"La próxima consulta cuenta el número de pagos en cada estado, excluyendo "
+"todos los pagos en el estado <literal>AWAITING_APPROVAL</literal> donde el "
+"cambio más reciente al estado lo hizo el usuario actual. Se traduce en una "
+"consulta SQL con dos uniones interiores y una subselección correlacionada "
+"contra las tablas <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</"
+"literal> y <literal>PAYMENT_STATUS_CHANGE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>statusChanges</literal> collection was mapped as a list, "
+"instead of a set, the query would have been much simpler to write."
+msgstr ""
+"Si la colección <literal>statusChanges</literal> se mapeara como una lista, "
+"en vez de un conjunto, la consulta habría sido mucho más simple de escribir."
+
+#. Tag: para
+#, 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 ""
+"La próxima consulta utiliza la función <literal>isNull()</literal> de MS SQL "
+"Server para devolver todas las cuentas y pagos aún no cancelados de la "
+"organización a la que pertenece el usuario actual. Se traduce como una "
+"consulta SQL con tres uniones interiores, una unión exterior y una "
+"subselección contra las tablas <literal>ACCOUNT</literal>, <literal>PAYMENT</"
+"literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</"
+"literal>, <literal>ORGANIZATION</literal> y <literal>ORG_USER</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"Para algunas bases de datos, necesitaríamos eliminar la subselección "
+"(correlacionada)."
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "Declaraciones UPDATE y DELETE masivas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\" /> for more information."
+msgstr ""
+"HQL ahora soporta declaraciones <literal>update</literal>, <literal>delete</"
+"literal> e <literal>insert ... select ...</literal>. Consulte la <xref linkend="
+"\"batch-direct\" /> para obtener mayor información. "
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "Consejos y Trucos"
+
+#. Tag: para
+#, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr "Puede contar el número de resultados de una consulta sin retornarlos:"
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+"Para ordenar un resultado por el tamaño de una colección, utilice la "
+"siguiente consulta:"
+
+#. Tag: para
+#, 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 ""
+"Si su base de datos soporta subselecciones, puede colocar una condición "
+"sobre el tamaño de selección en la cláusula where de su consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr ""
+"Si su base de datos no soporta subselecciones, utilice la siguiente "
+"consulta: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As this solution cannot return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"Como esta solución no puede retornar un <literal>User</literal> con cero "
+"mensajes debido a la unión interior, la siguiente forma también es útil:"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+"Las propiedades de un JavaBean pueden ser ligadas a los parámetros de "
+"consulta con nombre:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"Las colecciones son paginables usando la interfaz <literal>Query</literal> "
+"con un filtro:"
+
+#. Tag: para
+#, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+"Los elementos de colección se pueden ordenar o agrupar usando un filtro de "
+"consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr "Puede hallar el tamaño de una colección sin inicializarla:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "Componentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Components can be used similarly to the simple value types that are used in "
+"HQL queries. They can appear in the <literal>select</literal> clause as "
+"follows:"
+msgstr ""
+"Los componentes se pueden utilizar de la misma manera en que se pueden "
+"utilizar los tipos de valores simples en consultas HQL. Pueden aparecer en "
+"la cláusula <literal>select</literal> así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"en donde el nombre de la Persona es un componente. Los componentes también "
+"se pueden utilizar en la cláusula <literal>where</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr ""
+"Los componentes también se pueden utilizar en la cláusula <literal>where</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"Otro uso común de los componentes se encuentra en <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "Sintaxis del constructor de valores por fila"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax, sometimes referred to AS <literal>tuple</literal> syntax, even "
+"though the underlying database may not support that notion. Here, we are "
+"generally referring to multi-valued comparisons, typically associated with "
+"components. Consider an entity Person which defines a name component:"
+msgstr ""
+"HQL soporta la utilización de la sintaxis <literal>row value constructor</"
+"literal> de SQL ANSI que a veces se denomina sintaxis <literal>tuple</"
+"literal>, aunque puede que la base de datos subyacentes no soporte esa "
+"noción. Aquí estamos refiriéndonos generalmente a las comparaciones "
+"multivaluadas que se asocian típicamente con los componentes. Considere una "
+"entidad Persona, la cual define un componente de nombre:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"That is valid syntax although it is a little verbose. You can make this more "
+"concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+"Esa es una sintaxis válida aunque un poco verbosa. Puede hacerlo un poco más "
+"conciso utilizando la sintaxis <literal>row value constructor</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr ""
+"También puede ser útil especificar esto en la cláusula <literal>select</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using <literal>row value constructor</literal> syntax can also be beneficial "
+"when using subqueries that need to compare against multiple values:"
+msgstr ""
+"También puede ser beneficioso el utilizar la sintaxis <literal>row value "
+"constructor</literal> cuando se utilizan subconsultas que necesitan "
+"compararse con valores múltiples:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax, is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"Algo que se debe tomar en consideración al decidir si quiere usar esta "
+"sintaxis es que la consulta dependerá del orden de las sub-propiedades "
+"componentes en los metadatos."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1009 @@
+# translation of query_sql.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: query_sql\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:47\n"
+"PO-Revision-Date: 2010-03-17 12:28+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "SQL Nativo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can 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 <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"También puede expresar sus consultas en el dialecto SQL nativo de su base de "
+"datos. Esto es útil si quiere utilizar las características especificas de la "
+"base de datos tales como hints de consulta o la palabra clave "
+"<literal>CONNECT</literal> en Oracle. También proporciona una ruta de "
+"migración limpia desde una aplicación basada en SQL/JDBC a Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL, including stored "
+"procedures, for all create, update, delete, and load operations."
+msgstr ""
+"Hibernate3 le permite especificar SQL escrito a mano, incluyendo "
+"procedimientos almacenados para todas las operaciones create, update, delete "
+"y load."
+
+#. Tag: title
+#, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "Uso de una <literal>SQLQuery</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following sections describe how to use this "
+"API for querying."
+msgstr ""
+"La ejecución de consultas SQL nativas se controla por medio de la interfaz "
+"<literal>SQLQuery</literal>, la cual se obtiene llamando a <literal>Session."
+"createSQLQuery()</literal>. Las siguientes secciones describen cómo utilizar "
+"esta API para consultas."
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "Consultas escalares"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr ""
+"La consulta SQL más básica es para obtener a una lista de escalares "
+"(valores)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These will return a List of Object arrays (Object[]) with scalar values for "
+"each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"Estas retornarán una lista de objetos arrays (Object[]) con valores "
+"escalares para cada columna en la tabla CATS. Hibernate utilizará "
+"ResultSetMetadata para deducir el orden real y los tipos de los valores "
+"escalares retornados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal>, or "
+"simply to be more explicit in what is returned, one can use "
+"<literal>addScalar()</literal>:"
+msgstr ""
+"Para evitar los gastos generales de la utilización de "
+"<literal>ResultSetMetadata</literal> o simplemente para ser más explícito en "
+"lo que se devuelve se puede utilizar <literal>addScalar()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "Se especifica esta consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "la cadena de consulta SQL"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "las columnas y tipos que se devuelven"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return Object arrays, but now it will not use "
+"<literal>ResultSetMetadata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"Esto retornará objetos arrays, pero no utilizará <literal>ResultSetMetdata</"
+"literal> sino que obtendrá explícitamente las columnas de IDENTIFICACION, "
+"NOMBRE y FECHA DE NACIMIENTO respectivamente como Larga, Cadena y Corta del "
+"grupo de resultados subyacente. Esto también significa que sólamente estas "
+"tres columnas serán retornadass aunque la consulta este utilizando "
+"<literal>*</literal> y pueda devolver más de las tres columnas enumeradas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr ""
+"Es posible dejar afuera la información de tipo para todos o algunos de los "
+"escalares."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to determine the type of NAME "
+"and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+"Esto es esencialmente la misma consulta que antes, pero ahora se utiliza "
+"<literal>ResultSetMetaData</literal> para determinar el tipo de NOMBRE y "
+"FECHA DE NACIMIENTO, mientras que el tipo de IDENTIFICACION se especifica "
+"explícitamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped, or does not result in the expected type, it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"El dialecto controla la manera en que los java.sql.Types retornados de "
+"ResultSetMetaData se mapean a los tipos de Hibernate. Si un tipo en especial "
+"no se encuentra mapeado o no resulta en el tipo esperado es posible "
+"personalizarlo por medio de llamadas a <literal>registerHibernateType</"
+"literal> en el dialecto."
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "Consultas de entidades"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"Todas las consultas anteriores eran sobre los valores escalraes devueltos, "
+"basicamente devolviendo los valores \"crudos\" desde el grupo resultado. Lo "
+"siguiente muestra como obtener los objetos entidades desde una consulta sql "
+"nativa por medio de <literal>addEntity()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "la entidad devuelta por la consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Asumiendo que Cat es mapeado como una clase con las columnas IDENTIFICACION, "
+"NOMBRE y FECHA DE NACIMIENTO las consultas anteriores devolverán una Lista "
+"en donde cada elemento es una entidad Cat."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"Si la entidad es mapeada con una <literal>many-to-one</literal> a otra "
+"entidad tambien se necesita que devuelva esto cuando realice una consulta "
+"nativa, de otra manera, aparecerá un error \"no se encontró la columna\" "
+"específico a la base de datos. Se devolverán automáticamente las columnas "
+"adicionales cuando se utiliza la anotación *, pero preferimos ser tan "
+"explícitos así como lo muestra el siguiente ejemplo para una <literal>many-"
+"to-one</literal> a un <literal>Dog</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "Esto permitirá que cat.getDog() funcione apropiadamente."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "Manejo de asociaciones y colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"Es posible unir de manera temprana en el <literal>Dog</literal> para evitar "
+"el posible viaje de ida y vuelta para iniciar el proxy. Esto se hace por "
+"medio del método <literal>addJoin()</literal>, el cual le permite unirse en "
+"una asociación o colección."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that you added an alias name (\"cat\") to "
+"be able to specify the target property path of the join. It is possible to "
+"do the same eager joining for collections, e.g. if the <literal>Cat</"
+"literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"En este ejemplo los <literal>Cat</literal>s retornados tendrán su propiedad "
+"<literal>dog</literal> completamente iniciada sin ningún viaje extra de ida "
+"y vuelta a la base de datos. Observe que agregó un nombre alias (\"cat\") "
+"para poder especificar la ruta de la propiedad de destino de la unión. Es "
+"posible hacer la misma unión temprana para colecciones, por ejemplo, si el "
+"<literal>Cat</literal> tuviese en lugar un <literal>Dog</literal> uno-a-"
+"muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this stage you are reaching the limits of what is possible with native "
+"queries, without starting to enhance the sql queries to make them usable in "
+"Hibernate. Problems can arise when returning multiple entities of the same "
+"type or when the default alias/column names are not enough."
+msgstr ""
+"En este punto estamos alcanzando los límites de lo que es posible con las "
+"consultas nativas sin empezar a mejorar las consultas sql para hacerlas "
+"utilizables en Hibernate. Los problemas empiezan a surgir cuando las "
+"entidades múltiples retornadas son del mismo tipo o cuando no son "
+"suficientes los nombres de las columnas/alias predeterminados."
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "Devolución de entidades múltiples"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries that join multiple tables, since the same column names can "
+"appear in more than one table."
+msgstr ""
+"Hasta ahora se ha asumido que los nombres de las columnas del grupo de "
+"resultados son las mismas que los nombres de columnas especificados en el "
+"documento de mapeo. Esto puede llegar a ser problemático para las consultas "
+"SQL que unen múltiples tablas ya que los mismos nombres de columnas pueden "
+"aparecer en más de una tabla."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr ""
+"Se necesita una inyección de alias en las columnas en la siguiente consulta "
+"(que con mucha probabilidad fallará):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query was intended to return two Cat instances per row: a cat and its "
+"mother. The query will, however, fail because there is a conflict of names; "
+"the instances are mapped to the same column names. Also, on some databases "
+"the returned column aliases will most likely be on the form \"c.ID\", \"c."
+"NAME\", etc. which are not equal to the columns specified in the mappings "
+"(\"ID\" and \"NAME\")."
+msgstr ""
+"La intención de esta consulta es retornar dos instancias Cat por fila: un "
+"gato y su mamá. Sin embargo, esto fallará debido a que hay un conflicto de "
+"nombres;las instancias se encuentran mapeadas a los mismos nombres de "
+"columna. También en algunas bases de datos los alias de las columnas "
+"retornadas serán con mucha probabilidad de la forma \"c.IDENTIFICACION\", "
+"\"c.NOMBRE\", etc, los cuales no son iguales a las columnas especificadas en "
+"los mapeos (\"IDENTIFICACION\" y \"NOMBRE\")."
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr "La siguiente forma no es vulnerable a la duplicación de nombres de columnas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"la cadena de consultas SQL, con un espacio reservado para que Hibernate "
+"inserte alias de columnas"
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "las entidades devueltas por la consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you can list the columns explicitly, but even "
+"in this case Hibernate injects the SQL column aliases for each property. The "
+"placeholder for a column alias is just the property name qualified by the "
+"table alias. In the following example, you retrieve Cats and their mothers "
+"from a different table (cat_log) to the one declared in the mapping "
+"metadata. You can even use the property aliases in the where clause."
+msgstr ""
+"La anotación {cat.*} y {mother.*} que se utilizó anteriormente es la "
+"abreviatura para \"todas las propiedades\". Opcionalmente puede enumerar las "
+"columnas explícitamente, pero inclusive en este caso Hibernate inyecta los "
+"alias de columnas SQL para cada propiedad. El espacio para un alias de "
+"columna es sólamente el nombre calificado de la propiedad del alias de la "
+"tabla. En el siguiente ejemplo, recuperamos Cats y sus madres desde una "
+"tabla diferente (cat_log) a la declarada en los meta datos de mapeo. "
+"Inclusive puede utilizar los alias de propiedad en la cláusula where."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "Referencias de propiedad y alias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases the above alias injection is needed. For queries relating to "
+"more complex mappings, like composite properties, inheritance "
+"discriminators, collections etc., you can use specific aliases that allow "
+"Hibernate to inject the proper aliases."
+msgstr ""
+"Para la mayoría de los casos, se necesita la inyección del alias anterior. "
+"Para las consultas relacionadas con mapeos más complejos como propiedades "
+"compuestas, discriminadores de herencia, colecciones, etc, existen alias "
+"especificos a utilizar para permitir que Hibernate inyecte los alias "
+"apropiados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the different ways you can use the alias "
+"injection. Please note that the alias names in the result are simply "
+"examples; each alias will have a unique and probably different name when "
+"used."
+msgstr ""
+"La siguiente tabla muestra las diferentes maneras de utilizar la inyección "
+"de alias. Note que los nombres alias en el resultado son simplemente "
+"ejemplos; cada alias tendrá un nombre único y probablemente diferente cuando "
+"se utilice."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "Nombres con inyección alias"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Descripción"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "Sintaxis"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "Ejemplo"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "Una propiedad simple"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "<literal>{[aliasname].[propertyname]</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "<literal>A_NAME as {item.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "Una propiedad compuesta"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+msgstr ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "Discriminador de una entidad"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "<literal>{[aliasname].class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "<literal>DISC as {item.class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "Todas las propiedades de una entidad"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "<literal>{[aliasname].*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "Una clave de colección"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "<literal>{[aliasname].key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "<literal>ORGID as {coll.key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "La identificación -id- de una colección"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "<literal>{[aliasname].id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "<literal>EMPID as {coll.id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "El elemento de una colección"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "<literal>{[aliasname].element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "<literal>XID as {coll.element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "property of the element in the collection"
+msgstr "propiedad del elemento en la colección "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].element.[propertyname]}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "<literal>NAME as {coll.element.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "Todas las propiedades del elemeto en la colección"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "<literal>{[aliasname].element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the collection"
+msgstr "Todas las propiedades de la colección "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "Devolución de entidades no-administradas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native SQL queries, allowing "
+"it to return non-managed entities."
+msgstr ""
+"Es posible aplicar un ResultTransformer para consultas SQL nativas, "
+"permitiéndole retornar entidades no-administradas."
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "un transformador de resultado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"La consulta anterior devolverá una lista de <literal>CatDTO</literal> a la "
+"cual se ha instanciado e inyectado los valores de NOMBRE y FECHA DE "
+"NACIMIENTO en su propiedades o campos correspondientes."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "Manejo de herencias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Native SQL queries which query for entities that are mapped as part of an "
+"inheritance must include all properties for the baseclass and all its "
+"subclasses."
+msgstr ""
+"Las consultas SQL nativas, las cuales consultan por entidades que son "
+"mapeadas como parte de una herencia tienen que incluir todas las propiedades "
+"para la clase base y todas sus subclases."
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "Parámetros"
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+"Las consultas SQL nativas soportan parámetros nombrados así como "
+"posicionales:"
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "Consultas SQL nombradas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Named SQL queries can be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, you do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"Las consultas SQL nombradas se pueden definir en el documento de mapeo y se "
+"pueden llamar de la misma manera que una consulta HQL nombrada. En este "
+"caso, <emphasis>no</emphasis> necesitamos llamar a <literal>addEntity()</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;return-join&gt;</literal> element is use to join "
+"associations and the <literal>&lt;load-collection&gt;</literal> element is "
+"used to define queries which initialize collections,"
+msgstr ""
+"El elemento <literal>&lt;return-join&gt;</literal> se utiliza para unir "
+"asociaciones y el elemento <literal>&lt;load-collection&gt;</literal> se usa "
+"para definir consultas, las cuales dan inicio a colecciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> "
+"element:"
+msgstr ""
+"Una consulta SQL nombrada puede devolver un valor escalar. Tiene que "
+"declarar el alias de la columna y el tipo de Hibernate utilizando el "
+"elemento <literal>&lt;return-scalar&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can externalize the resultset mapping information in a <literal>&lt;"
+"resultset&gt;</literal> element which will allow you to either reuse them "
+"across several named queries or through the <literal>setResultSetMapping()</"
+"literal> API."
+msgstr ""
+"Puede externalizar el grupo de resultados mapeando información en un "
+"elemento <literal>&lt;resultset&gt;</literal>, el cual le permitirá "
+"reutilizarlos a través de consultas nombradas o por medio de la API "
+"<literal>setResultSetMapping()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can, alternatively, use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"Opcionalmente, puede utilizar el grupo de resultados mapeando la información "
+"en sus archivos hbm directamente en código java."
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr ""
+"Utilización de la propiedad return para especificar explícitamente los "
+"nombres de columnas/alias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can explicitly tell Hibernate what column aliases to use with "
+"<literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}"
+"</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+"Con <literal>&lt;return-property&gt;</literal> usted puede decirle a "
+"Hibernate explícitamente qué alias de columnas se deben utilizar, en vez de "
+"utilizar la sintaxis <literal>{}</literal> para dejar que Hibernate inyecte "
+"sus propios alias. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;return-property&gt;</literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which cannot "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal>&lt;return-property&gt;</literal> también funciona con columnas "
+"múltiples. Esto resuelve una limitación con la sintaxis <literal>{}</"
+"literal>, la cual no puede permitir control muy detallado de propiedades "
+"multi-columnas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example <literal>&lt;return-property&gt;</literal> was used in "
+"combination with the <literal>{}</literal>-syntax for injection. This allows "
+"users to choose how they want to refer column and properties."
+msgstr ""
+"En este ejemplo utilizamos <literal>&lt;return-property&gt;</literal> en "
+"combinación junto con la sintaxis <literal>{}</literal> para inyección. Esto "
+"le permite a los usuarios escoger cómo quieren referirse a la columna y a "
+"las propiedades."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal>&lt;return-"
+"discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+"Si su mapeo tiene un discriminador usted tiene que utilizar <literal>&lt;"
+"return-discriminator&gt;</literal> para especificar la columna "
+"discriminadora."
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "Utilización de procedimientos para consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides support for queries via stored procedures and functions. "
+"Most of the following documentation is equivalent for both. The stored "
+"procedure/function must return a resultset as the first out-parameter to be "
+"able to work with Hibernate. An example of such a stored function in Oracle "
+"9 and higher is as follows:"
+msgstr ""
+"Hibernate 3 brinda soporte para consultas por medio de procedimientos "
+"almacenados y funciones. La mayoría de la siguiente documentación es igual "
+"para ambos. La función/procedimiento almacenado tiene que retornar un grupo "
+"de resultados como el primer parámetro de salida para poder trabajar con "
+"Hibernate. A continuación hay un ejemplo de tal función almacenada en Oracle "
+"9 y posteriores:"
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+"Para utilizar esta consulta en Hibernate u.d necesita mapearla por medio de "
+"una consulta nombrada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures currently only return scalars and entities. <literal>&lt;"
+"return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are "
+"not supported."
+msgstr ""
+"Los procedimientos almacenados actualmente sólo retornan escalares y "
+"entidades. No se soporta <literal>&lt;return-join&gt;</literal> ni "
+"<literal>&lt;load-collection&gt;</literal> ."
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "Reglas/limitaciones para utilizar procedimientos almacenados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use stored procedures with Hibernate unless you follow some "
+"procedure/function rules. If they do not follow those rules they are not "
+"usable with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Para utilizar procedimientos almacenados con Hibernate, debe seguir ciertas "
+"reglas de funciones/procedimientos. Si no siguen esas reglas entonces no se "
+"pueden utilizar con Hibernate. Si todavía quiere utilizar estos "
+"procedimientos tiene que ejecutarlos por medio de <literal>session.connection"
+"()</literal>. Las reglas son diferentes para cada base de datos debido a que "
+"los vendedores de la base de datos tienen diferentes sintaxis/semántica de "
+"procedimientos almacenados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedure queries cannot be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"Las consultas de procedimientos almacenados no se pueden llamar con "
+"<literal>setFirstResult()/setMaxResults()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+"La forma de la llamada recomendada es SQL92 estándar: <literal>{ ? = call "
+"functionName(&lt;parameters&gt;) }</literal> o <literal>{ ? = call "
+"procedureName(&lt;parameters&gt;}</literal>. No se soporta la sintaxis de "
+"llamadas nativas."
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "Para Oracle aplican las siguientes reglas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type. See Oracle "
+"literature for further information."
+msgstr ""
+"Una función tiene que retornar un grupo de resultados. El primer parámetro "
+"de un procedimiento tiene que ser un <literal>OUT</literal> que retorna un "
+"grupo de resultados. Esto se hace utilizando un tipo <literal>SYS_REFCURSOR</"
+"literal>  en Oracle 9 o 10. En Oracle necesita definir un tipo <literal>REF "
+"CURSOR</literal>. Consulte la documentación de Oracle para obtener mayor "
+"información."
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "Para Sybase o el servidor MS SQL aplican las siguientes reglas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can "
+"return multiple result sets and update counts, Hibernate will iterate the "
+"results and take the first result that is a result set as its return value. "
+"Everything else will be discarded."
+msgstr ""
+"El procedimiento tiene que retornar un grupo de resultados. Observe que "
+"debido a que estos servidores pueden retornar grupos de resultados múltiples "
+"y cuentas actualizadas, Hibernate iterará los resultados y tomará el primer "
+"resultado que sea un grupo resultados como su valor retornado. Todo lo demás "
+"será descartado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"Si puede habilitar <literal>SET NOCOUNT ON</literal> en su procedimiento "
+"probablemente será más eficiente, pero no es un requerimiento."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr "Personalice SQL para crear, actualizar y borrar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL for create, update, and delete operations. The "
+"SQL can be overridden at the statement level or inidividual column level. "
+"This section describes statement overrides. For columns, see <xref linkend="
+"\"mapping-column-read-and-write\" />."
+msgstr ""
+"Hibernate3 puede utilizar SQL personalizado para crear, actualizar y borrar operaciones. El SQL se puede sobreescribir a nivel de declaración o a nivel de columna individual. "
+"Esta sección describe la sobreescritua de declaraciones. Para las columnas consulte <xref linkend="
+"\"mapping-column-read-and-write\" />."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class and collection persisters in Hibernate already contain a set of "
+"configuration time generated strings (insertsql, deletesql, updatesql etc.). "
+"The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-"
+"delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override "
+"these strings:"
+msgstr ""
+"Los persistentes de clase y de colección en "
+"Hibernate ya contienen un grupo de cadenas generadas en tiempo de "
+"configuración (insertsql, deletesql, updatesql, etc.). Las etiquetas de mapeo "
+"<literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-delete&gt;</"
+"literal> y <literal>&lt;sql-update&gt;</literal> sobrescriben estas cadenas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you can use any dialect "
+"you like. This will reduce the portability of your mapping if you use "
+"database specific SQL."
+msgstr ""
+"El SQL se ejecuta directamente en su base de datos asi que usted es libre de "
+"utilizar cualquier dialecto que desee. Esto reducirá la portabilidad de su "
+"mapeo si utiliza una base de datos especifica de SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"Los procedimientos almacenados se encuentran soportados si el atributo "
+"<literal>callable</literal> está configurado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The order of the positional parameters is vital, as they must be in the same "
+"sequence as Hibernate expects them."
+msgstr ""
+"El orden de los parámetros posicionales es vital ya que se deben encontrar "
+"en la misma secuencia en que Hibernate los espera."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can view the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled, Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. To view the expected sequence, do not include "
+"your custom SQL in the mapping files, as this will override the Hibernate "
+"generated static SQL."
+msgstr ""
+"Puede ver el orden esperado habilitando el registro de depuración para el "
+"nivel <literal>org.hibernate.persister.entity</literal>. Con este nivel "
+"habilitado Hibernate imprimirá el SQL estático que se utiliza para crear, "
+"actualizar, borrar, etc, entidades, ( para ver la secuencia esperada, "
+"recuerde no incluir su SQL personalizado en los archivos de mapeo ya que eso "
+"sobrescribirá el sql estático generado por Hibernate)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The stored procedures are in most cases required to return the number of "
+"rows inserted, updated and deleted, as Hibernate has some runtime checks for "
+"the success of the statement. Hibernate always registers the first statement "
+"parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+"En la mayoría de los casos se requiere que los procedimientos almacenados "
+"retornen el número de filas insertadas, actualizadas y borradas ya que "
+"Hibernate tiene algunas verificaciones en tiempo de ejecución para el éxito "
+"de la declaración. Hibernate siempre registra el primer parámetro de la "
+"declaración como un parámetro de la salida numérica para las operaciones CUD:"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "Personalice SQL para cargar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also declare your own SQL (or HQL) queries for entity loading. As "
+"with inserts, updates, and deletes, this can be done at the individual "
+"column level as described in <xref linkend=\"mapping-column-read-and-write"
+"\" /> or at the statement level. Here is an example of a statement level "
+"override:"
+msgstr ""
+"También puede declarar su propias peticiones SQL (o HQL) para cargar entidades. Así como con las inserciones, actualizaciones y los borrados, esto se puede realizar a nivel de columna individual tal como se describe en <xref linkend=\"mapping-column-read-and-write"
+"\" /> o a nivel de declaración. Este es un ejemplo de una sobreescritura a nivel de declaración: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You can "
+"reference this named query in a class mapping:"
+msgstr ""
+"Esta es tan sólo una declaración de consulta nombrada, como se discutió "
+"anteriormente. Puede referenciar esta consulta nombrada en un mapeo de clase:"
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "Esto funciona inclusive con procedimientos almacenados."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr "Puede incluso definir una consulta para la carga de colección:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"También puede definir un cargador de entidad que cargue una colección con "
+"una unión temprana:"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/quickstart.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/quickstart.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/quickstart.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,474 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=utf-8\n"
+#: index.docbook:5
+msgid "appended paragraph 1"
+msgstr "Comienzo r&#x00e1;pido con Tomcat"
+
+#: index.docbook:8
+msgid "appended paragraph 2"
+msgstr "Empezando con Hibernate"
+
+#: index.docbook:10
+msgid "appended paragraph 3"
+msgstr "Este tutorial explica una instalaci&#x00f3;n de Hibernate con el contenedor de servlets Apache Tomcat (hemos usado la versi&#x00f3;n 4.1, las diferencias con la 5.0 deben ser m&#x00ed;nimas) para una aplicaci&#x00f3;n basada en web. Hibernate trabaja bien en un entorno manejado con todos los servidores de aplicaciones J2EE importantes, o incluso en aplicaciones Java independientes. El sistema de base de datos es s&#x00f3;lo una cuesti&#x00f3;n de cambiar la configuraci&#x00f3;n del dialecto SQL de Hibernate y las propiedades de conexi&#x00f3;n."
+
+#: index.docbook:21
+msgid "appended paragraph 4"
+msgstr "Primero, tenemos que copiar todas las bibliotecas requeridas a la instalaci&#x00f3;n de Tomcat. Usamos un contexto web separado (<literal>webapps/quickstart</literal>) para este tutorial, de modo que tenemos que considerar tanto la ruta de b&#x00fa;squeda de bibliotecas global (<literal>TOMCAT/common/lib</literal>) como tambi&#x00e9;n el cargador de clases a nivel de contexto en <literal>webapps/quickstart/WEB-INF/lib</literal> (para ficheros JAR) y <literal>webapps/quickstart/WEB-INF/classes</literal>. Nos referiremos a ambos niveles de cargador de clases como el classpath global y el classpath de contexto, respectivamente."
+
+#: index.docbook:32
+msgid "appended paragraph 5"
+msgstr "Ahora, copia las bibliotecas a los dos classpaths:"
+
+#: index.docbook:38
+msgid "appended paragraph 6"
+msgstr "Copia el driver JDBC para la base de datos al classpath global. Esto se requiere para el software de pool de conexiones DBCP que se distribuye con Tomcat. Hibernate usa conexiones JDBC para ejecutar SQL sobre la base de datos, de modo que, o bien tienes que proveer conexiones JDBC en pool, o bien configurar Hibernate para que use uno de los pools soportados directamente (C3P0, Proxool). Para este tutorial, copia la biblioteca <literal>pg74jdbc3.jar</literal> (para PostgreSQL 7.4 y JDK 1.4) al classpath del cargador global. Si quisieras usar una base de datos diferente, simplemente copia su apropiado driver JDBC."
+
+#: index.docbook:51
+msgid "appended paragraph 7"
+msgstr "Nunca copies nada m&#x00e1;s dentro de la ruta del cargador de clases global en Tomcat, o tendr&#x00e1;s problemas con varias herramientas, incluyendo Log4J, commons-logging y otras. Siempre usa el classpath de contexto para cada aplicaci&#x00f3;n web, esto es, copia las bibliotecas a <literal>WEB-INF/lib</literal> y tus propias clases y ficheros de configuraci&#x00f3;n/propiedades a <literal>WEB-INF/classes</literal>. Ambos directorios est&#x00e1;n a nivel del classpath de contexto por defecto."
+
+#: index.docbook:62
+msgid "appended paragraph 8"
+msgstr "Hibernate est&#x00e1; empaquetado como una biblioteca JAR. El fichero <literal>hibernate3.jar</literal> debe ser copiado en el classpath de contexto junto a las otras clases de la aplicaci&#x00f3;n. Hibernate requiere algunas bibliotecas de terceros en tiempo de ejecuci&#x00f3;n; &#x00e9;stas vienen inclu&#x00ed;das con la distribuci&#x00f3;n de Hibernate en el directorio <literal>lib/</literal>. Ver <xref linkend=\"3rdpartylibs\"/>. Copia las bibliotecas de terceros requeridas al classpath de contexto."
+
+#: index.docbook:75
+msgid "appended paragraph 9"
+msgstr "Bibliotecas de terceros de Hibernate"
+
+#: index.docbook:83
+msgid "appended paragraph 10"
+msgstr "Biblioteca"
+
+#: index.docbook:86
+msgid "appended paragraph 11"
+msgstr "Descripci&#x00f3;n"
+
+#: index.docbook:93
+msgid "appended paragraph 12"
+msgstr "antlr (requerida)"
+
+#: index.docbook:96
+msgid "appended paragraph 13"
+msgstr "Hibernate usa ANTLR para producir analizadores de consultas, esta biblioteca tambi&#x00e9;n se necesita en tiempo de ejecuci&#x00f3;n."
+
+#: index.docbook:102
+msgid "appended paragraph 14"
+msgstr "dom4j (requerida)"
+
+#: index.docbook:105
+msgid "appended paragraph 15"
+msgstr "Hibernate usa dom4j para analizar ficheros de configuraci&#x00f3;n XML y ficheros de metadatos de mapeo XML."
+
+#: index.docbook:111
+msgid "appended paragraph 16"
+msgstr "CGLIB, asm (requerida)"
+
+#: index.docbook:114
+msgid "appended paragraph 17"
+msgstr "Hibernate usa la biblioteca de generaci&#x00f3;n de c&#x00f3;digo para aumentar las clases en tiempo de ejecuci&#x00f3;n (en combinaci&#x00f3;n con reflecci&#x00f3;n Java)."
+
+#: index.docbook:121
+msgid "appended paragraph 18"
+msgstr "Commons Collections, Commons Logging (requeridas)"
+
+#: index.docbook:124
+msgid "appended paragraph 19"
+msgstr "Hibernate usa varias bibliotecas de utilidad del proyecto Jakarta Commons de Apache."
+
+#: index.docbook:130
+msgid "appended paragraph 20"
+msgstr "EHCache (requerida)"
+
+#: index.docbook:133
+msgid "appended paragraph 21"
+msgstr "Hibernate puede usar varios provedores de cach&#x00e9; para el cach&#x00e9; de segundo nivel. EHCache es el provedor de cach&#x00e9; por defecto si no se cambia en la configuraci&#x00f3;n."
+
+#: index.docbook:140
+msgid "appended paragraph 22"
+msgstr "Log4j (opcional)"
+
+#: index.docbook:143
+msgid "appended paragraph 23"
+msgstr "Hibernate usa la API de Commons Logging, que a su vez puede usar Log4J como el mecanismo de logging subyacente. Si la biblioteca Log4J est&#x00e1; disponible en el directorio de bibliotecas del contexto, Commons Logging usar&#x00e1; Log4J y la configuraci&#x00f3;n <literal>log4j.properties</literal> en el classpath de contexto. Un fichero de propiedades de ejemplo para Log4J se incluye con la distribuci&#x00f3;n de Hibernate. As&#x00ed; que copia log4j.jar y el fichero de configuraci&#x00f3;n (de <literal>src/</literal>) a tu classpath de contexto si quieres ver que ocurre tras esc&#x00e9;nas."
+
+#: index.docbook:157
+msgid "appended paragraph 24"
+msgstr "¿Requerida o no?"
+
+#: index.docbook:160
+msgid "appended paragraph 25"
+msgstr "Echa una mirada al fichero <literal>lib/README.txt</literal> en la distribuci&#x00f3;n de Hibernate. Esta es una lista actualizada de bibliotecas de terceros distribu&#x00ed;das con Hibernate. Encontrar&#x00e1;s listadas ah&#x00ed; todas las bibliotecas requeridas y opcionales (Observa que \"buildtame required\" significa aqu&#x00ed; para la construcci&#x00f3;n de Hibernate, no de tu aplicaci&#x00f3;n)."
+
+#: index.docbook:174
+msgid "appended paragraph 26"
+msgstr "Ahora instalamos el pooling y modo compartido de conexiones de base de datos tanto en Tomcat como Hibernate. Esto significa que Tomcat proveer&#x00e1; conexiones JDBC en pool (usando su funcionalidad prefabricada de pooling DBCP). Hibernate pide esas conexiones a trav&#x00e9;s de JNDI. Alternativamente, puedes dejar que Hibernate maneje el pool de conexiones. Tomcat liga su pool de conexiones a JNDI; agregamos una declaraci&#x00f3;n de recurso al fichero de configuraci&#x00f3;n principal de Tomcat, <literal>TOMCAT/conf/server.xml</literal>:"
+
+#: index.docbook:184
+msgid "appended paragraph 27"
+msgstr ""
+      "<![CDATA[<Context path=\"/quickstart\" docBase=\"quickstart\">\n"
+      "    <Resource name=\"jdbc/quickstart\" scope=\"Shareable\" type=\"javax.sql.DataSource\"/>\n"
+      "    <ResourceParams name=\"jdbc/quickstart\">\n"
+      "        <parameter>\n"
+      "            <name>factory</name>\n"
+      "            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>\n"
+      "        </parameter>\n"
+      "\n"
+      "        <!-- DBCP database connection settings -->\n"
+      "        <parameter>\n"
+      "            <name>url</name>\n"
+      "            <value>jdbc:postgresql://localhost/quickstart</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>driverClassName</name><value>org.postgresql.Driver</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>username</name>\n"
+      "            <value>quickstart</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>password</name>\n"
+      "            <value>secret</value>\n"
+      "        </parameter>\n"
+      "\n"
+      "        <!-- DBCP connection pooling options -->\n"
+      "        <parameter>\n"
+      "            <name>maxWait</name>\n"
+      "            <value>3000</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>maxIdle</name>\n"
+      "            <value>100</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>maxActive</name>\n"
+      "            <value>10</value>\n"
+      "        </parameter>\n"
+      "    </ResourceParams>\n"
+      "</Context>]]>"
+
+#: index.docbook:186
+msgid "appended paragraph 28"
+msgstr "El contexto que configuramos en este ejemplo se llama <literal>quickstart</literal>, su base es el directorio <literal>TOMCAT/webapp/quickstart</literal>. Para acceder a cualquier servlet, llama a la ruta <literal>http://localhost:8080/quickstart</literal> en tu navegador (por supuesto, agregando el nombre del servlet como se mapee en tu <literal>web.xml</literal>). Puedes tambi&#x00e9;n ir m&#x00e1;s all&#x00e1; y crear ahora un servlet simple que tenga un m&#x00e9;todo <literal>process()</literal> vac&#x00ed;o."
+
+#: index.docbook:196
+msgid "appended paragraph 29"
+msgstr "Tomcat provee ahora conexiones a trav&#x00e9;s de JNDI en <literal>java:comp/env/jdbc/quickstart</literal>. Si tienes problemas obteniendo el pool de conexiones en ejecuci&#x00f3;n, refi&#x00e9;rete a la documentaci&#x00f3;n de Tomcat. Si obtienes mensajes de excepci&#x00f3;n del driver JDBC, intenta instalar primero el pool de conexiones JDBC sin Hibernate. Hay disponibles en la Web tutoriales de Tomcat y JDBC."
+
+#: index.docbook:205
+msgid "appended paragraph 30"
+msgstr "Tu pr&#x00f3;ximo paso es configurar Hibernate. Hibernate tiene que saber c&#x00f3;mo debe obtener conexiones JDBC. Usamos la configuraci&#x00f3;n de Hibernate basada en XML. El otro enfoque, usando un ficheros de propiedad, es casi equivalente pero pierde unas pocas funcionalidades que s&#x00ed; permite la sintaxis XML. El fichero de configuraci&#x00f3;n XML se ubica en el classpath de contexto (<literal>WEB-INF/classes</literal>), como <literal>hibernate.cfg.xml</literal>:"
+
+#: index.docbook:214
+msgid "appended paragraph 31"
+msgstr ""
+      "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+      "<!DOCTYPE hibernate-configuration PUBLIC\n"
+      "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+      "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
+      "\n"
+      "<hibernate-configuration>\n"
+      "\n"
+      "    <session-factory>\n"
+      "\n"
+      "        <property name=\"connection.datasource\">java:comp/env/jdbc/quickstart</property>\n"
+      "        <property name=\"show_sql\">false</property>\n"
+      "        <property name=\"dialect\">org.hibernate.dialect.PostgreSQLDialect</property>\n"
+      "\n"
+      "        <!-- Mapping files -->\n"
+      "        <mapping resource=\"Cat.hbm.xml\"/>\n"
+      "\n"
+      "    </session-factory>\n"
+      "\n"
+      "</hibernate-configuration>]]>"
+
+#: index.docbook:216
+msgid "appended paragraph 32"
+msgstr "Desactivamos el registro (logging) de comandos SQL y decimos a Hibernate qu&#x00e9; dialecto SQL de base de datos se usa y d&#x00f3;nde obtener conexiones JDBC (declarando la direcci&#x00f3;n JNDI del pool ligado a Tomcat). El dialecto es una configuraci&#x00f3;n requerida, las bases de datos difieren en su interpretaci&#x00f3;n del \"est&#x00e1;ndar\" de SQL. Hibernate cuidar&#x00e1; de las diferencias y viene con dialectos inclu&#x00ed;dos para todas las principales bases de datos comerciales y de c&#x00f3;digo abierto."
+
+#: index.docbook:227
+msgid "appended paragraph 33"
+msgstr "Una <literal>SessionFactory</literal> es el concepto de Hibernate de un almac&#x00e9;n de datos solo. Pueden usarse m&#x00fa;ltiples bases de datos creando m&#x00fa;ltiples ficheros de configuraci&#x00f3;n XML y creando m&#x00fa;ltiples objetos <literal>Configuration</literal> y <literal>SessionFactory</literal> en tu aplicaci&#x00f3;n."
+
+#: index.docbook:235
+msgid "appended paragraph 34"
+msgstr "El &#x00fa;ltimo elemento del <literal>hibernate.cfg.xml</literal> declara <literal>Cat.hbm.xml</literal> como el nombre de un fichero de mapeo XML para la clase persistente <literal>Cat</literal>. Este fichero contiene los metadatos para el mapeo de la clase POJO <literal>Cat</literal> a una tabla (o tablas) de base de datos. Volveremos a este fichero pronto. Escribamos primero la clase POJO y luego declaremos los metadatos de mapeo para ella."
+
+#: index.docbook:248
+msgid "appended paragraph 35"
+msgstr "Primera clase persistente"
+
+#: index.docbook:250
+msgid "appended paragraph 36"
+msgstr "Hibernate trabaja mejor con el modelo de programaci&#x00f3;n de los Viejos Objetos Planos de Java (POJOs, a veces llamados Ordinarios Objetos Planos de Java) para clases persistentes. Un POJO es como un JavaBean, con las propiedades de la clase accesible v&#x00ed;a m&#x00e9;todos getter y setter, encapsulando la representaci&#x00f3;n interna de la interfaz publicamente visible (Hibernate puede tambi&#x00e9;n acceder a los campos directamente, si se necesita):"
+
+#: index.docbook:260
+msgid "appended paragraph 37"
+msgstr ""
+      "<![CDATA[package org.hibernate.examples.quickstart;\n"
+      "\n"
+      "public class Cat {\n"
+      "\n"
+      "    private String id;\n"
+      "    private String name;\n"
+      "    private char sex;\n"
+      "    private float weight;\n"
+      "\n"
+      "    public Cat() {\n"
+      "    }\n"
+      "\n"
+      "    public String getId() {\n"
+      "        return id;\n"
+      "    }\n"
+      "\n"
+      "    private void setId(String id) {\n"
+      "        this.id = id;\n"
+      "    }\n"
+      "\n"
+      "    public String getName() {\n"
+      "        return name;\n"
+      "    }\n"
+      "\n"
+      "    public void setName(String name) {\n"
+      "        this.name = name;\n"
+      "    }\n"
+      "\n"
+      "    public char getSex() {\n"
+      "        return sex;\n"
+      "    }\n"
+      "\n"
+      "    public void setSex(char sex) {\n"
+      "        this.sex = sex;\n"
+      "    }\n"
+      "\n"
+      "    public float getWeight() {\n"
+      "        return weight;\n"
+      "    }\n"
+      "\n"
+      "    public void setWeight(float weight) {\n"
+      "        this.weight = weight;\n"
+      "    }\n"
+      "\n"
+      "}]]>"
+
+#: index.docbook:262
+msgid "appended paragraph 38"
+msgstr "Hibernate no est&#x00e1; restringido en su uso de tipos de propiedad, todos los tipos y tipos primitivos del JDK de Java (como <literal>String</literal>, <literal>char</literal> y <literal>Date</literal>) pueden ser mapeados, incluyendo clases del framework de colecciones de Java. Puedes mapearlos como valores, colecciones de valores, o asociaciones a otras entidades. El <literal>id</literal> es una propiedad especial que representa el identificador de base de datos (clave primaria) de la clase. Es altamente recomendado para entidades como un <literal>Cat</literal>. Hibernate puede usar identificadores s&#x00f3;lo internamente, pero perder&#x00ed;amos algo de la flexibilidad en nuestra arquitectura de aplicaci&#x00f3;n."
+
+#: index.docbook:275
+msgid "appended paragraph 39"
+msgstr "No tiene que implementarse ninguna interface especial para las clases persistentes ni tienes que subclasear de una clase persistente ra&#x00ed;z en especial. Hibernate tampoco requiere ning&#x00fa;n procesamiento en tiempo de construcci&#x00f3;n, como manipulaci&#x00f3;n del byte-code. Se basa solamente en reflecci&#x00f3;n de Java y aumentaci&#x00f3;n de clases en tiempo de ejecuci&#x00f3;n (a trav&#x00e9;s de CGLIB). De modo que, sin ninguna dependencia de la clase POJO en Hibernate, podemos mapearla a una tabla de base de datos."
+
+#: index.docbook:288
+msgid "appended paragraph 40"
+msgstr "Mapeando el gato"
+
+#: index.docbook:290
+msgid "appended paragraph 41"
+msgstr "El fichero de mapeo <literal>Cat.hbm.xml</literal> contiene los metadatos requeridos para el mapeo objeto/relacional. Los metadatos incluyen la declaraci&#x00f3;n de clases persistentes y el mapeo de propiedades (a columnas y relaciones de claves for&#x00e1;neas a otras entidades) a tablas de base de datos."
+
+#: index.docbook:298
+msgid "appended paragraph 42"
+msgstr ""
+      "<![CDATA[<?xml version=\"1.0\"?>\n"
+      "<!DOCTYPE hibernate-mapping PUBLIC\n"
+      "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+      "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+      "\n"
+      "<hibernate-mapping>\n"
+      "\n"
+      "    <class name=\"org.hibernate.examples.quickstart.Cat\" table=\"CAT\">\n"
+      "\n"
+      "        <!-- A 32 hex character is our surrogate key. It's automatically\n"
+      "            generated by Hibernate with the UUID pattern. -->\n"
+      "        <id name=\"id\" type=\"string\" unsaved-value=\"null\" >\n"
+      "            <column name=\"CAT_ID\" sql-type=\"char(32)\" not-null=\"true\"/>\n"
+      "            <generator class=\"uuid.hex\"/>\n"
+      "        </id>\n"
+      "\n"
+      "        <!-- A cat has to have a name, but it shouldn' be too long. -->\n"
+      "        <property name=\"name\">\n"
+      "            <column name=\"NAME\" length=\"16\" not-null=\"true\"/>\n"
+      "        </property>\n"
+      "\n"
+      "        <property name=\"sex\"/>\n"
+      "\n"
+      "        <property name=\"weight\"/>\n"
+      "\n"
+      "    </class>\n"
+      "\n"
+      "</hibernate-mapping>]]>"
+
+#: index.docbook:300
+msgid "appended paragraph 43"
+msgstr "Cada clase persistente debe tener un atributo identificador (realmente, s&#x00f3;lo las clases que representen entidades, no las clases dependientes de tipo-valor, que son mapeadas como componentes de una entidad). Esta propiedad es usada para distinguir los objetos persistentes: Dos gatos son iguales si <literal>catA.getId().equals(catB.getId())</literal> es verdadero. Este concepto se llama <emphasis>identidad de base de datos (database identity)</emphasis>. Hibernate viene empaquetado con varios generadores de identificador para diferentes escenarios (incluyendo generadores nativos para secuencias de base de datos, tablas de identificadores alto/bajo, e identificadores asignados por aplicaci&#x00f3;n). Usamos el generador UUID (recomendado s&#x00f3;lo para pruebas, pues deben preferirse las claves enteras delegadas generadas por la base de datos) y tambi&#x00e9;n especificamos la columna <literal>CAT_ID</literal> de la tabla <literal>CAT</literal> para el valor i!
 dentificador generado por Hibernate (como una clave primaria de la tabla)."
+
+#: index.docbook:317
+msgid "appended paragraph 44"
+msgstr "Todas las dem&#x00e1;s propiedades de <literal>Cat</literal> son mapeadas a la misma tabla. En el caso de la propiedad <literal>name</literal>, la hemos mapeado con una declaraci&#x00f3;n expl&#x00ed;cita de columna de base de datos. Esto es especialmente &#x00fa;til cuando el esquema de base de datos es generado autom&#x00e1;ticamente (como sentencias DDL de SQL) desde la declaraci&#x00f3;n de mapeo con la herramienta <emphasis>SchemaExport</emphasis> de Hibernate. Todas las dem&#x00e1;s propiedades son mapeadas usando la configuraci&#x00f3;n por defecto de Hibernate, que es lo que necesitas la mayor&#x00ed;a del tiempo. La tabla <literal>CAT</literal> en la base de datos se ve as&#x00ed; como:"
+
+#: index.docbook:329
+msgid "appended paragraph 45"
+msgstr ""
+      "<![CDATA[ Columna |         Tipo          | Modificadores\n"
+      "--------+-----------------------+-----------\n"
+      " cat_id | character(32)         | not null\n"
+      " name   | character varying(16) | not null\n"
+      " sex    | character(1)          |\n"
+      " weight | real                  |\n"
+      "Indexes: cat_pkey primary key btree (cat_id)]]>"
+
+#: index.docbook:331
+msgid "appended paragraph 46"
+msgstr "Ahora debes crear esta tabla manualmente en tu base de datos, y luego leer el <xref linkend=\"toolsetguide\"/> si quieres automatizar este paso con la herramienta <literal>hbm2ddl</literal>. Esta herramienta puede crear un DDL SQL completo, incluyendo definici&#x00f3;n de tablas, restricciones personalizadas de tipo de columnas, restricciones de unicidad e &#x00ed;ndices."
+
+#: index.docbook:342
+msgid "appended paragraph 47"
+msgstr "Jugando con gatos"
+
+#: index.docbook:344
+msgid "appended paragraph 48"
+msgstr "Ahora estamos listos para comenzar la <literal>Session</literal> de Hibernate. Es el <emphasis>manejador de persistencia</emphasis> que usamos para almacenar y traer <literal>Cat</literal>s hacia y desde la base de datos. Pero primero, tenemos que obtener una <literal>Session</literal> (unidad de trabajo de Hibernate) de la <literal>SessionFactory</literal>:"
+
+#: index.docbook:352
+msgid "appended paragraph 49"
+msgstr ""
+      "<![CDATA[SessionFactory sessionFactory =\n"
+      "            new Configuration().configure().buildSessionFactory();]]>"
+
+#: index.docbook:354
+msgid "appended paragraph 50"
+msgstr "La llamada a <literal>configure()</literal> carga el fichero de configuraci&#x00f3;n <literal>hibernate.cfg.xml</literal> e inicializa la instancia de <literal>Configuration</literal>. Puedes establecer otras propiedades (e incluso cambiar los metadatos de mapeo) accediendo a la <literal>Configuration</literal> <emphasis>antes</emphasis> que construyas la <literal>SessionFactory</literal> (que es inmutable). ¿D&#x00f3;nde creamos la <literal>SessionFactory</literal> y c&#x00f3;mo accedemos a ella en nuestra aplicaci&#x00f3;n?"
+
+#: index.docbook:365
+msgid "appended paragraph 51"
+msgstr "Una <literal>SessionFactory</literal> usualmente se construye una vez, por ejemplo, al arrancar con un servlet <emphasis>load-on-startup</emphasis>. Esto significa tambi&#x00e9;n que no debes mantenerla en una variable de instancia en tus servlets, sino en alguna otro sitio. Adem&#x00e1;s, necesitamos alg&#x00fa;n tipo de <emphasis>Singleton</emphasis>, de modo que podamos acceder a la <literal>SessionFactory</literal> f&#x00e1;cilmente en el c&#x00f3;digo de aplicaci&#x00f3;n. El siguiente enfoque mostrado resuelve ambos problemas: configuraci&#x00f3;n de arranque y f&#x00e1;cil acceso a una <literal>SessionFactory</literal>."
+
+#: index.docbook:377
+msgid "appended paragraph 52"
+msgstr "Implementamos una clase de ayuda <literal>HibernateUtil</literal>:"
+
+#: index.docbook:381
+msgid "appended paragraph 53"
+msgstr ""
+      "<![CDATA[import org.hibernate.*;\n"
+      "import org.hibernate.cfg.*;\n"
+      "\n"
+      "public class HibernateUtil {\n"
+      "\n"
+      "    private static Logger log = LoggerFactory.getLogger(HibernateUtil.class);\n"
+      "\n"
+      "    private static final SessionFactory sessionFactory;\n"
+      "\n"
+      "    static {\n"
+      "        try {\n"
+      "            // Create the SessionFactory\n"
+      "            sessionFactory = new Configuration().configure().buildSessionFactory();\n"
+      "        } catch (Throwable ex) {\n"
+      "            // Make sure you log the exception, as it might be swallowed\n"
+      "            log.error(\"Initial SessionFactory creation failed.\", ex);\n"
+      "            throw new ExceptionInInitializerError(ex);\n"
+      "        }\n"
+      "    }\n"
+      "\n"
+      "    public static final ThreadLocal session = new ThreadLocal();\n"
+      "\n"
+      "    public static Session currentSession() {\n"
+      "        Session s = (Session) session.get();\n"
+      "        // Open a new Session, if this Thread has none yet\n"
+      "        if (s == null) {\n"
+      "            s = sessionFactory.openSession();\n"
+      "            session.set(s);\n"
+      "        }\n"
+      "        return s;\n"
+      "    }\n"
+      "\n"
+      "    public static void closeSession() {\n"
+      "        Session s = (Session) session.get();\n"
+      "        if (s != null)\n"
+      "            s.close();\n"
+      "        session.set(null);\n"
+      "    }\n"
+      "}]]>"
+
+#: index.docbook:383
+msgid "appended paragraph 54"
+msgstr "Esta clase no s&#x00f3;lo cuida de la <literal>SessionFactory</literal> con su inicializador static, sino que adem&#x00e1;s tiene una variable <literal>ThreadLocal</literal> que tiene la <literal>Session</literal> para la hebra actual. Aseg&#x00fa;rate de entender el concepto Java de una variable local a una hebra antes de intentar usar esta ayuda. Una clase <literal>HibernateUtil</literal> m&#x00e1;s compleja y potente puede encontrarse en <literal>CaveatEmptor</literal>, http://caveatemptor.hibernate.org/"
+
+#: index.docbook:393
+msgid "appended paragraph 55"
+msgstr "Una <literal>SessionFactory</literal> es segura entre hebras, muchas hebras pueden acceder a ella concurrentemente y pedirle <literal>Session</literal>s. Una <literal>Session</literal> no es un objeto seguro entre hebras que representa una sola unidad-de-trabajo con la base de datos. Las <literal>Session</literal>s se abren desde una <literal>SessionFactory</literal> y son cerradas cuando todo el trabajo est&#x00e1; completo. Un ejemplo en el m&#x00e9;todo <literal>process()</literal> de tu servlet podr&#x00ed;a parecerse a esto (sin manejo de excepciones):"
+
+#: index.docbook:404
+msgid "appended paragraph 56"
+msgstr ""
+      "<![CDATA[Session session = HibernateUtil.currentSession();\n"
+      "Transaction tx = session.beginTransaction();\n"
+      "\n"
+      "Cat princess = new Cat();\n"
+      "princess.setName(\"Princess\");\n"
+      "princess.setSex('F');\n"
+      "princess.setWeight(7.4f);\n"
+      "\n"
+      "session.save(princess);\n"
+      "\n"
+      "tx.commit();\n"
+      "HibernateUtil.closeSession();]]>"
+
+#: index.docbook:406
+msgid "appended paragraph 57"
+msgstr "En una <literal>Session</literal>, cada operaci&#x00f3;n de base de datos ocurre dentro de una transacci&#x00f3;n que a&#x00ed;sla las operaciones de base de datos (incluso operaciones de s&#x00f3;lo lectura). Usamos la API de <literal>Transaction</literal> de Hibernate para abstraer de la estrategia de transacciones subyacente (en nuestro caso, transacciones JDBC). Esto permite que nuestro c&#x00f3;digo sea desplegado con transacciones manejadas por contenedor (usando JTA) sin cambio alguno."
+
+#: index.docbook:416
+msgid "appended paragraph 58"
+msgstr "Observa que puedes llamar <literal>HibernateUtil.currentSession();</literal> tantas veces como quieras, siempre obtendr&#x00e1;s la <literal>Session</literal> actual de esta hebra. Tienes que asegurarte que la <literal>Session</literal> sea cerrada despu&#x00e9;s que se complete tu unidad-de-trabajo, ya sea en c&#x00f3;digo de tu servlet o en un filtro de servlet antes que la respuesta HTTP sea enviada. El bonito efecto colateral de la segunda opci&#x00f3;n es la f&#x00e1;cil inicializaci&#x00f3;n perezosa: la <literal>Session</literal> todav&#x00ed;a est&#x00e1; abierta cuando se dibuja la vista, de modo que Hibernate puede cargar objetos no inicializados mientras navegas tu actual grafo de objetos."
+
+#: index.docbook:428
+msgid "appended paragraph 59"
+msgstr "Hibernate tiene varios m&#x00e9;todos que pueden ser usados para traer objetos desde la base de datos. La forma m&#x00e1;s flexible es usando el Lenguaje de Consulta de Hibernate (Hibernate Query Language o HQL), que es una extensi&#x00f3;n orientada a objetos de SQL f&#x00e1;cil de aprender:"
+
+#: index.docbook:436
+msgid "appended paragraph 60"
+msgstr ""
+      "<![CDATA[Transaction tx = session.beginTransaction();\n"
+      "\n"
+      "Query query = session.createQuery(\"select c from Cat as c where c.sex = :sex\");\n"
+      "query.setCharacter(\"sex\", 'F');\n"
+      "for (Iterator it = query.iterate(); it.hasNext();) {\n"
+      "    Cat cat = (Cat) it.next();\n"
+      "    out.println(\"Female Cat: \" + cat.getName() );\n"
+      "}\n"
+      "\n"
+      "tx.commit();]]>"
+
+#: index.docbook:438
+msgid "appended paragraph 61"
+msgstr "Hibernate tambi&#x00e9;n ofrece una API <emphasis>consulta por criterios</emphasis> orientada a objetos que puede ser usada para formular consultas de tipo seguro. Por supuesto, Hibernate usa <literal>PreparedStatement</literal>s y ligado de par&#x00e1;metros para toda la comunicaci&#x00f3;n SQL con la base de datos. Tambi&#x00e9;n puedes usar la funcionalidad de consulta SQL directa de Hibernate u obtener una conexi&#x00f3;n plana de JDBC de una <literal>Session</literal> en casos raros."
+
+#: index.docbook:451
+msgid "appended paragraph 62"
+msgstr "Finalmente"
+
+#: index.docbook:453
+msgid "appended paragraph 63"
+msgstr "Rasgu&#x00f1;amos solamente la superficie de Hibernate en este peque&#x00f1;o tutorial. Por favor, observa que no incluimos ning&#x00fa;n c&#x00f3;digo espec&#x00ed;fico de servlet en nuestros ejemplos. Tienes que crear un servlet por t&#x00ed; mismo e insertar el c&#x00f3;digo de Hibernate como lo veas ubicado."
+
+#: index.docbook:461
+msgid "appended paragraph 64"
+msgstr "Ten en mente que Hibernate, como capa de acceso a datos, est&#x00e1; firmemente integrado dentro de tu aplicaci&#x00f3;n. Usualmente, todas las otras capas dependen del mecanismo de persistencia. Aseg&#x00fa;rate de entender las implicaciones de este dise&#x00f1;o."
+
+#: index.docbook:468
+msgid "appended paragraph 65"
+msgstr "Para un ejemplo de aplicaci&#x00f3;n m&#x00e1;s compleja, ver http://caveatemptor.hibernate.org/ y echa una mirada a los otros tutoriales con links en http://www.hibernate.org/Documentation"
+
+msgid "ROLES_OF_TRANSLATORS"
+msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+msgid "CREDIT_FOR_TRANSLATORS"
+msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/readonly.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/readonly.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/readonly.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1124 @@
+# Language es-ES translations for PACKAGE package.
+# Automatically generated, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-25 06:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid ""
+"Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ "
+"from what you may have encountered elsewhere. Incorrect usage may cause "
+"unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check the entity's simple properties or single-"
+"ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid ""
+"Hibernate will not update simple properties or updatable single-ended "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid ""
+"Hibernate will not update the version of the read-only entity if only simple "
+"properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid ""
+"In some ways, Hibernate treats read-only entities the same as entities that "
+"are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid ""
+"Hibernate cascades operations to associations as defined in the entity "
+"mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid ""
+"Hibernate updates the version if the entity has a collection with changes "
+"that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid ""
+"Even if an entity is not read-only, its collection association can be "
+"affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid ""
+"For details about the affect of read-only entities on different property and "
+"association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid ""
+"It saves execution time by not dirty-checking simple properties or single-"
+"ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid ""
+"Only persistent entities can be made read-only. Transient and detached "
+"entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid ""
+"Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid ""
+"you can map an entity class as <emphasis>immutable</emphasis>; when an "
+"entity of an immutable class is made persistent, Hibernate automatically "
+"makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for "
+"details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid ""
+"you can change a default so that entities loaded into the session by "
+"Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-"
+"loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid ""
+"you can make an HQL query or criteria read-only so that entities loaded when "
+"the query or criteria executes, scrolls, or iterates, are automatically made "
+"read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid ""
+"you can make a persistent entity that is already in the in the session read-"
+"only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid ""
+"When an entity instance of an immutable class is made persistent, Hibernate "
+"automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid ""
+"An entity of an immutable class can created and deleted the same as an "
+"entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid ""
+"Hibernate treats a persistent entity of an immutable class the same way as a "
+"read-only persistent entity of a mutable class. The only exception is that "
+"Hibernate will not allow an entity of an immutable class to be changed so it "
+"is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid ""
+"To change the default behavior so Hibernate loads entity instances of "
+"mutable classes into the session and automatically makes them read-only, "
+"call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid ""
+"To change the default back so entities loaded by Hibernate are not made read-"
+"only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, entities loaded by the "
+"following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid ""
+"executing, scrolling, or iterating HQL queries and criteria; to override "
+"this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid ""
+"persistent entities that are refreshed via Session.refresh(); a refreshed "
+"persistent entity will only be read-only if it was read-only before "
+"refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid ""
+"persistent entities added by the application via Session.persist(), Session."
+"save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns false (the default) when an HQL query "
+"or criteria executes, then entities and proxies of mutable classes loaded by "
+"the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid ""
+"You can override this behavior so that entities and proxies loaded by an HQL "
+"query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid ""
+"<literal>Query.setReadOnly( true )</literal> must be called before "
+"<literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, "
+"<literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid ""
+"<literal>Criteria.setReadOnly( true )</literal> must be called before "
+"<literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</"
+"literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid ""
+"Entities and proxies that exist in the session before being returned by an "
+"HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid ""
+"Uninitialized persistent collections returned by the query are not affected. "
+"Later, when the collection is initialized, entities loaded into the session "
+"will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid ""
+"Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria."
+"setReadOnly( true )</literal> works well when a single HQL query or criteria "
+"loads all the entities and intializes all the proxies and collections that "
+"the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid ""
+"When it is not possible to load and initialize all necessary entities in a "
+"single query or criteria, you can temporarily change the session default to "
+"load entities as read-only before the query is executed. Then you can "
+"explicitly initialize proxies and collections before restoring the session "
+"default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"setDefaultReadOnly( true );\n"
+"Contract contract = \n"
+"   ( Contract ) session.createQuery(\n"
+"           \"from Contract where customerName = 'Sherman'\" )\n"
+"           .uniqueResult();\n"
+"Hibernate.initialize( contract.getPlan() );\n"
+"Hibernate.initialize( contract.getVariations() );\n"
+"Hibernate.initialize( contract.getNotes() );\n"
+"setDefaultReadOnly( false );\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, then you can use Query."
+"setReadOnly( false ) and Criteria.setReadOnly( false ) to override this "
+"session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid ""
+"Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid ""
+"To change a read-only entity or proxy of a mutable class so it is no longer "
+"read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid ""
+"When a read-only entity or proxy is changed so it is no longer read-only, "
+"Hibernate assumes that the current state of the read-only entity is "
+"consistent with its database representation. If this is not true, then any "
+"non-flushed changes made before or while the entity was read-only, will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid ""
+"To throw away non-flushed changes and make the persistent entity consistent "
+"with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid ""
+"To flush changes made before or while the entity was read-only and make the "
+"database representation consistent with the current state of the persistent "
+"entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+"// evict the read-only entity so it is detached\n"
+"session.evict( entity );\n"
+"\n"
+"// make the detached entity (with the non-flushed changes) persistent\n"
+"session.update( entity );\n"
+"\n"
+"// now entity is no longer read-only and its changes can be flushed\n"
+"s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid ""
+"The following table summarizes how different property types are affected by "
+"making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid ""
+"* Behavior is different when the entity having the property/association is "
+"read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid ""
+"When a persistent object is read-only, Hibernate does not dirty-check simple "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid ""
+"Hibernate will not synchronize simple property state changes to the "
+"database. If you have automatic versioning, Hibernate will not increment the "
+"version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"// get a contract and make it read-only\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"\n"
+"// contract.getCustomerName() is \"Sherman\"\n"
+"contract.setCustomerName( \"Yogi\" );\n"
+"tx.commit();\n"
+"\n"
+"tx = session.beginTransaction();\n"
+"\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"// contract.getCustomerName() is still \"Sherman\"\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-one and many-to-one associations in "
+"the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid ""
+"We use the term <emphasis>unidirectional single-ended association</emphasis> "
+"when referring to functionality that is common to unidirectional one-to-one "
+"and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check unidirectional single-ended associations when "
+"the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid ""
+"If you change a read-only entity's reference to a unidirectional single-"
+"ended association to null, or to refer to a different entity, that change "
+"will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, then its references to unidirectional "
+"single-ended associations must be assigned when that entity is first "
+"created. Because the entity is automatically made read-only, these "
+"references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid ""
+"In the following examples, Contract has a unidirectional many-to-one "
+"association with Plan. Contract cascades save and update operations to the "
+"association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid ""
+"The following shows that changing a read-only entity's many-to-one "
+"association reference to null has no effect on the entity's database "
+"representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and set its plan to null \n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"contract.setPlan( null );\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid ""
+"The following shows that, even though an update to a read-only entity's many-"
+"to-one association has no affect on the entity's database representation, "
+"flush still cascades the save-update operation to the locally changed "
+"association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and change to a new plan\n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"Plan newPlan = new Plan( \"new plan\"\n"
+"contract.setPlan( newPlan);\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"// newPlan is non-null because it was persisted when \n"
+"// the previous transaction was committed; \n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-many and many-to-many associations "
+"owned by a read-only entity the same as when owned by an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid ""
+"Hibernate dirty-checks unidirectional one-to-many and many-to-many "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid ""
+"The collection can contain entities that are read-only, as well as entities "
+"that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid ""
+"Entities can be added and removed from the collection; changes are flushed "
+"to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid ""
+"updates that change the association reference to null or to refer to a "
+"different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, and it owns a bidirectional one-to-"
+"one association, then its reference must be assigned when that entity is "
+"first created. Because the entity is automatically made read-only, these "
+"references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid ""
+"When the owner is not read-only, Hibernate treats an association with a read-"
+"only entity the same as when the association is with an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid ""
+"A read-only entity has no impact on a bidirectional one-to-many/many-to-one "
+"association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using a non-inverse "
+"collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid ""
+"the one-to-many side uses a non-inverse collection that contains the read-"
+"only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid ""
+"a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid ""
+"a read-only entity can only be removed from the collection by an orphan "
+"delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid ""
+"Hibernate treats bidirectional many-to-many associations owned by a read-"
+"only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid ""
+"The collection on either side of the association can contain entities that "
+"are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid ""
+"Entities are added and removed from both sides of the collection; changes "
+"are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in both sides of the collection if they dirty the entity owning the "
+"respective collections."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1637 @@
+# translation of session_api.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: session_api\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-15 14:40+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "Trabajo con objetos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a natural object-oriented view of persistence "
+"in Java applications."
+msgstr ""
+"Hibernate es una solución completa de mapeo objeto/relacional que no sólo "
+"proteje al desarrollador de los detalles del sistema de administración de la "
+"base datos subyacente, sino que además ofrece <emphasis>administración de "
+"estado</emphasis> de objetos. Contrario a la administración de "
+"<literal>declaraciones</literal> SQL en capas comunes de persistencia JDBC/"
+"SQL, esta es una vista natural orientada a objetos de la persistencia en "
+"aplicaciones Java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"En otras palabras, los desarrolladores de aplicaciones de Hibernate siempre "
+"deben pensar en el <emphasis>estado</emphasis> de sus objetos, y no "
+"necesariamente en la ejecución de declaraciones SQL. Hibernate se ocupa de "
+"esto y es sólamente relevante para el desarrollador de la aplicación al "
+"afinar el rendimiento del sistema."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Estados de objeto de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr "Hibernate define y soporta los siguientes estados de objeto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application does not hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transitorio</emphasis> - un objeto es transitorio si ha sido "
+"recién instanciado utilizando el operador <literal>new</literal>, y no está "
+"asociado a una <literal>Session</literal> de Hibernate. No tiene una "
+"representación persistente en la base de datos y no se le ha asignado un "
+"valor identificador. Las instancias transitorias serán destruídas por el "
+"recolector de basura si la aplicación no mantiene más una referencia. "
+"Utiliza la <literal>Session</literal> de Hibernate para hacer un objeto "
+"persistente (y deja que Hibernate se ocupe de las declaraciones SQL que "
+"necesitan ejecutarse para esta transición)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers do not execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistente</emphasis> - una instancia persistente tiene una "
+"representación en la base de datos y un valor identificador. Puede haber "
+"sido guardado o cargado, sin embargo, por definición, se encuentra en el "
+"ámbito de una <literal>Session</literal>. Hibernate detectará cualquier "
+"cambio realizado a un objeto en estado persistente y sincronizará el estado "
+"con la base de datos cuando se complete la unidad de trabajo. Los "
+"desarrolladores no ejecutan declaraciones <literal>UPDATE</literal> "
+"manuales, o declaraciones <literal>DELETE</literal> cuando un objeto se debe "
+"poner como transitorio."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e., a unit of work "
+"from the point of view of the user."
+msgstr ""
+"<emphasis>Separado</emphasis> - una instancia separada es un objeto que se "
+"ha hecho persistente, pero su <literal>Session</literal> ha sido cerrada. La "
+"referencia al objeto todavía es válida, por supuesto, y la instancia "
+"separada podría incluso ser modificada en este estado. Una instancia "
+"separada puede ser re-unida a una nueva <literal>Session</literal> más "
+"tarde, haciéndola persistente de nuevo (con todas las modificaciones). Este "
+"aspecto habilita un modelo de programación para unidades de trabajo de "
+"ejecución larga que requieren tiempo-para-pensar por parte del usuario. Las "
+"llamamos <emphasis>transaccciones de aplicación</emphasis>, por ejemplo, una "
+"unidad de trabajo desde el punto de vista del usuario."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"Discutiremos ahora los estados y transiciones de estados (y los métodos de "
+"Hibernate que disparan una transición) en más detalle. "
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "Haciendo los objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Newly instantiated instances of a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"Las instancias recién instanciadas de una clase persistente, Hibernate las considera como <emphasis>transitorias</emphasis>. Podemos hacer una instancia "
+"transitoria <emphasis>persistente</emphasis> asociándola con una sesión:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You can also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"Si <literal>Cat</literal> tiene un identificador generado, el identificador "
+"es generado y asignado al <literal>cat</literal> cuando se llama a "
+"<literal>save()</literal>. Si <literal>Cat</literal> tiene un identificador "
+"<literal>assigned</literal>, o una clave compuesta, el identificador debe "
+"ser asignado a la instancia de <literal>cat</literal> antes de llamar a "
+"<literal>save()</literal>. También puede utilizar <literal>persist()</"
+"literal> en vez de <literal>save()</literal>, con la semántica definida en "
+"el borrador de EJB3. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it does not guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+"<literal>persist()</literal> hace que una instancia transitoria sea "
+"persistente. Sin embargo, no garantiza que el valor identificador sea "
+"asignado a la instancia persistente inmediatamente, la tarea puede tener "
+"lugar durante el vaciado. <literal>persist()</literal> también garantiza que "
+"no ejecutará una declaración <literal>INSERT</literal> si se llama por fuera "
+"de los límites de una transacción. Esto es útil en conversaciones largas con "
+"un contexto extendido sesión/persistencia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+msgstr ""
+"<literal>save()</literal> sí garantiza el retorno de un identificador. Si se "
+"tiene que ejecutar un INSERT para obtener el identificador ( por ejemplo, "
+"generador \"identidad\", no \"secuencia\"), este INSERT tiene lugar "
+"inmediatamente sin importar si se encuentra dentro o fuera de una "
+"transacción. Esto es problemático en una conversación larga con un contexto "
+"extendido sesión/persistencia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"Opcionalmente, puede asignar el identificador utilizando una versión "
+"sobrecargada de <literal>save()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects can be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"Si el objeto que hace persistente tiene objetos asociados (por ejemplo, la "
+"colección <literal>kittens</literal> en el ejemplo anterior), estos objetos "
+"pueden ser hechos persistentes en cualquier orden que quiera a menos de que "
+"tenga una restricción <literal>NOT NULL</literal> sobre una columna clave "
+"foránea. Nunca hay riesgo de violar restricciones de clave foránea. Sin "
+"embargo, puede que usted viole una restricción <literal>NOT NULL</literal> "
+"si llama a <literal>save()</literal> sobre los objetos en el orden "
+"equivocado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually you do not bother with this detail, as you will normally use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations do not occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"Usualmente no se preocupe de este detalle, pues muy probablemente utilizará "
+"la funcionalidad de <emphasis>persistencia transitiva</emphasis> de "
+"Hibernate para guardar los objetos asociados automáticamente. Entonces, ni "
+"siquiera tienen lugar violaciones de restricciones <literal>NOT NULL</"
+"literal> - Hibernate se ocupará de todo. Más adelante en este capítulo se "
+"discute la persistencia transitiva."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "Cargando un objeto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> provide "
+"a way of retrieving a persistent instance if you know its identifier. "
+"<literal>load()</literal> takes a class object and loads the state into a "
+"newly instantiated instance of that class in a persistent state."
+msgstr ""
+"Los métodos <literal>load()</literal> de <literal>Session</literal> le "
+"proporcionan una forma de recuperar una instancia persistente si ya conoce "
+"su identificador. <literal>load()</literal> toma un objeto clase y carga el "
+"estado dentro de una instancia recién instanciada de esa clase, en un estado "
+"persistente."
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr "Alternativamente, puede cargar estado dentro de una instancia dada:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Be aware that <literal>load()</literal> will throw an unrecoverable "
+"exception if there is no matching database row. If the class is mapped with "
+"a proxy, <literal>load()</literal> just returns an uninitialized proxy and "
+"does not actually hit the database until you invoke a method of the proxy. "
+"This is useful if you wish to create an association to an object without "
+"actually loading it from the database. It also allows multiple instances to "
+"be loaded as a batch if <literal>batch-size</literal> is defined for the "
+"class mapping."
+msgstr ""
+"Note que <literal>load()</literal> lanzará una excepción irrecuperable si no "
+"hay una fila correspondiente en la base de datos. Si la clase se mapea con "
+"un proxy, <literal>load()</literal> sólo retorna un proxy no inicializado y "
+"no llamará realmente a la base de datos hasta que invoque un método del "
+"proxy. Este comportamiento es muy útil si desea crear una asociación a un "
+"objeto sin cargarlo realmente de la base de datos. Además permite que "
+"múltiples instancias sean cargadas como un lote si se define <literal>batch-"
+"size</literal> para el mapeo de la clase."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"Si no tiene la certeza de que existe una fila correspondiente, debe utilizar "
+"el método <literal>get()</literal>, que llama a la base de datos "
+"inmediatamente y devuelve nulo si no existe una fila correspondiente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"Incluso puede cargar un objeto utilizando un <literal>SELECT ... FOR UPDATE</"
+"literal> de SQL, usando un <literal>LockMode</literal>. Consulte la "
+"documentación de la API para obtener más información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any associated instances or contained collections will <emphasis>not</"
+"emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to "
+"specify <literal>lock</literal> or <literal>all</literal> as a cascade style "
+"for the association."
+msgstr ""
+"<emphasis>Ninguna</emphasis> instancia asociada o colección contenida es "
+"seleccionada para actualizacion - <literal>FOR UPDATE</literal>, a menos de "
+"que decida especificar <literal>lock</literal> o <literal>all</literal> como "
+"un estilo de cascada para la asociación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"Es posible volver a cargar un objeto y todas sus colecciones en cualquier "
+"momento, utilizando el método <literal>refresh()</literal>. Esto es útil "
+"cuando se usan disparadores de base de datos para inicializar algunas de las "
+"propiedades del objeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"How much does Hibernate load from the database and how many SQL "
+"<literal>SELECT</literal>s will it use? This depends on the "
+"<emphasis>fetching strategy</emphasis>. This is explained in <xref linkend="
+"\"performance-fetching\" />."
+msgstr ""
+"¿Cuánto carga Hibernate de la base de datos y cuántos <literal>SELECT</"
+"literal>s de SQL utilizará? Esto depende de la <emphasis>estrategia de "
+"recuperación</emphasis>. Esto se explica en la <xref linkend="
+"\"performance-fetching\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "Consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You can also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"Si no conoce los identificadores de los objetos que está buscando, necesita "
+"una consulta. Hibernate soporta un lenguaje de consulta orientado a objetos "
+"(HQL) fácil de usar pero potente a la vez. Para la creación de consultas "
+"programáticas, Hibernate soporta una funcionalidad sofisticada de consulta "
+"de Criteria y Example (QBC y QBE). También puede expresar su consulta en el "
+"SQL nativo de su base de datos, con soporte opcional de Hibernate para la "
+"conversión del conjunto de resultados a objetos."
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "Ejecución de consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
+msgstr ""
+"Las consultas HQL y SQL nativas son representadas con una instancia de "
+"<literal>org.hibernate.Query</literal>. Esta interfaz ofrece métodos para "
+"ligar parámetros, manejo del conjunto resultado, y para la ejecución de la "
+"consulta real. Siempre obtiene una <literal>Query</literal> utilizando la "
+"<literal>Session</literal> actual:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query is usually executed by invoking <literal>list()</literal>. The "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in a persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Queries that make use of eager "
+"fetching of collections usually return duplicates of the root objects, but "
+"with their collections initialized. You can filter these duplicates through "
+"a <literal>Set</literal>."
+msgstr ""
+"Una consulta se ejecuta usualmente invocando a <literal>list()</literal>. El "
+"resultado de la consulta será cargado completamente dentro de una colección "
+"en memoria. Las instancias de entidad recuperadas por una consulta se "
+"encuentran en estado persistente. El método <literal>uniqueResult()</"
+"literal> ofrece un atajo si sabe que su consulta retornará sólamente un "
+"objeto. Las consultas que hacen uso de una recuperación temprana de "
+"colecciones usualmente retornan duplicados de los objetos raíz, pero con sus "
+"colecciones inicializadas. Puede filtrar estos duplicados a través de un "
+"<literal>Set</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "Iteración de resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will usually "
+"be the case if you expect that the actual entity instances returned by the "
+"query will already be in the session or second-level cache. If they are not "
+"already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"Ocasionalmente, puede lograr un mejor rendimiento al ejecutar la consulta "
+"utilizando el método <literal>iterate()</literal>. Esto ocurrirá usualmente "
+"si espera que las instancias reales de entidad retornadas por la consulta "
+"estén ya en la sesión o en el caché de segundo nivel. Si todavía no están en "
+"caché, <literal>iterate()</literal> será más lento que <literal>list()</"
+"literal> y podría requerir muchas llamadas a la base de datos para una "
+"consulta simple, usualmente <emphasis>1</emphasis> para la selección inicial "
+"que sólamente retorna identificadores y <emphasis>n</emphasis> selecciones "
+"adicionales para inicializar las instancias reales."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "Consultas que devuelven tuplas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate queries sometimes return tuples of objects. Each tuple is returned "
+"as an array:"
+msgstr ""
+"Las consultas de Hibernate a veces retornan tuplas de objetos. Cada tupla se "
+"retorna como un array:"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "Resultados escalares"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can specify a property of a class in the <literal>select</literal> "
+"clause. They can even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+"Las consultas pueden especificar una propiedad de una clase en la cláusula "
+"<literal>select</literal>. Pueden incluso llamar a funciones de agregación "
+"SQL. Las propiedades o agregaciones son considerados resultados \"escalares"
+"\" y no entidades en estado persistente."
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "Ligado de parámetros"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are as follows:"
+msgstr ""
+"Los métodos en <literal>Query</literal> se proporcionan para enlazar valores "
+"a los parámetros con nombre o parámetros <literal>?</literal> de estilo "
+"JDBC. <emphasis>Al contrario de JDBC, Hibernate numera los parámetros desde "
+"cero.</emphasis> Los parámetros con nombre son identificadores de la forma "
+"<literal>:name</literal> en la cadena de la consulta. Las ventajas de los "
+"parámetros con nombre son las siguientes:"
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters are insensitive to the order they occur in the query string"
+msgstr ""
+"los parámetros con nombre son insensibles al orden en que aparecen en la "
+"cadena de consulta"
+
+#. Tag: para
+#, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "pueden aparecer múltiples veces en la misma petición"
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "son auto-documentados"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "Paginación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set, that is, the maximum "
+"number of rows you want to retrieve and/or the first row you want to "
+"retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"Si necesita especificar enlaces sobre su conjunto de resultados, el número "
+"máximo de filas que quiere recuperar y/o la primera fila que quiere "
+"recuperar, puede utilizar los métodos de la interfaz <literal>Query</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"Hibernate sabe cómo traducir este límite de consulta al SQL nativo de su "
+"DBMS."
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "Iteración deslizable"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface can be used to obtain a "
+"<literal>ScrollableResults</literal> object that allows flexible navigation "
+"of the query results."
+msgstr ""
+"Si su controlador JDBC soporta <literal>ResultSet</literal>s deslizables, la "
+"interfaz <literal>Query</literal> se puede utilizar para obtener un objeto "
+"<literal>ScrollableResults</literal> que permite una navegación flexible de "
+"los resultados de consulta. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that an open database connection and cursor is required for this "
+"functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"Note que se requiere una conexión de base de datos abierta y un cursor para "
+"esta funcionalidad. Utilice <literal>setMaxResult()</literal>/"
+"<literal>setFirstResult()</literal> si necesita la funcionalidad de "
+"paginación fuera de línea."
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "Externalización de consultas con nombre"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define named queries in the mapping document. Remember to use a "
+"<literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup."
+msgstr ""
+"También puede definir consultas con nombre en el documento de mapeo. "
+"Recuerde utilizar una sección <literal>CDATA</literal> si su consulta "
+"contiene caracteres que puedan ser interpretados como etiquetado."
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr "El ligado de parámetros y de ejecución se realiza programáticamente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual program code is independent of the query language that is used. "
+"You can also define native SQL queries in metadata, or migrate existing "
+"queries to Hibernate by placing them in mapping files."
+msgstr ""
+"El código real del programa es independiente del lenguaje de consulta "
+"utilizado. También puede definir consultas SQL nativas en metadatos, o "
+"migrar consultas existentes a Hibernate colocándolas en archivos de mapeo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal>&lt;hibernate-"
+"mapping&gt;</literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal>&lt;class&gt;</literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"Observe además que una declaración de consulta dentro de un elemento "
+"<literal>&lt;hibernate-mapping&gt;</literal> necesita de un nombre único "
+"global para la consulta, mientras que una declaración de consulta dentro de "
+"un elemento <literal>&lt;class&gt;</literal> se hace única automáticamente "
+"al agregar el nombre completamente calificado de la clase. Por ejemplo, "
+"<literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "Filtración de colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that can "
+"be applied to a persistent collection or array. The query string can refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"Un <emphasis>filtro</emphasis> de colección es un tipo especial de consulta "
+"que puede ser aplicado a una colección persistente o array. La cadena de "
+"consulta puede referirse a <literal>this</literal>, lo que quiere decir el "
+"elemento de la colección actual."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The returned collection is considered a bag that is a copy of the given "
+"collection. The original collection is not modified. This is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+"La colección devuelta es considerada un bag, y es una copia de la colección "
+"dada. La colección original no es modificada. Esto es lo opuesto a lo que "
+"implica el nombre \"filtro\", pero es consistente con el comportamiento "
+"esperado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause, "
+"although they can have one if required. Filters are not limited to returning "
+"the collection elements themselves."
+msgstr ""
+"Observe que los filtros no requieren una cláusula <literal>from</literal> "
+"aunque pueden tener una si se necesita. Los filtros no están limitados a "
+"devolver los elementos de colección por sí mismos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"large collection:"
+msgstr ""
+"Incluso una consulta de filtro vacío es útil, por ejemplo, para cargar un "
+"subconjunto de elementos en una colección enorme: "
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "Consultas de criterios"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL is extremely powerful, but some developers prefer to build queries "
+"dynamically using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL es extremadamente potente pero algunos desarrolladores prefieren "
+"construir consultas dinámicamente utilizando una API orientada a objetos, en "
+"vez de construir cadenas de consulta. Hibernate brinda una API intuitiva de "
+"consulta <literal>Criteria</literal> para estos casos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria"
+"\" />."
+msgstr ""
+"Las APIs de <literal>Criteria</literal> y el <literal>Example</literal> "
+"asociado se discuten en más detalle en el <xref linkend=\"querycriteria"
+"\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "Consultas en SQL nativo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate manage the mapping from result sets to objects. You can at "
+"any time call <literal>session.connection()</literal> and use the JDBC "
+"<literal>Connection</literal> directly. If you choose to use the Hibernate "
+"API, you must enclose SQL aliases in braces:"
+msgstr ""
+"Puede expresar una consulta en SQL, utilizando <literal>createSQLQuery()</"
+"literal> y dejar que Hibernate administre el mapeo de los conjuntos de "
+"resultados a objetos. Puede llamar en cualquier momento a <literal>session."
+"connection()</literal> y utilizar la <literal>Connection</literal> JDBC "
+"directamente. Si elige usar la API de Hibernate, tiene que encerrar los "
+"alias de SQL entre llaves:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL queries can contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\" />."
+msgstr ""
+"Las consultas SQL pueden contener parámetros con nombre y posicionados, al "
+"igual que las consultas de Hibernate. Puede encontrar más información sobre "
+"las consultas en SQL nativo en Hibernate en el <xref linkend=\"querysql\" />. "
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "Modificación de objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (i.e. objects "
+"loaded, saved, created or queried by the <literal>Session</literal>) can be "
+"manipulated by the application, and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis>. This is discussed later in this chapter. There is no need to call "
+"a particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. The most straightforward way "
+"to update the state of an object is to <literal>load()</literal> it and then "
+"manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+"Las <emphasis>instancias persistentes transaccionales</emphasis> (por "
+"ejemplo, los objetos cargados, creados o consultados por la "
+"<literal>Session</literal>) pueden ser manipulados por la aplicación y "
+"cualquier cambio al estado persistente será persistido cuando se "
+"<emphasis>vacie</emphasis> la <literal>Session</literal>. Esto se discute "
+"más adelante en este capítulo. No hay necesidad de llamar a un método en "
+"particular (como <literal>update()</literal>, que tiene un propósito "
+"diferente) para hacer persistentes sus modificaciones. De modo que la forma "
+"más directa de actualizar el estado de un objeto es cargarlo con "
+"<literal>load()</literal> y luego manipularlo directamente, mientras la "
+"<literal>Session</literal> está abierta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient, as it requires in the same "
+"session both an SQL <literal>SELECT</literal> to load an object and an SQL "
+"<literal>UPDATE</literal> to persist its updated state. Hibernate offers an "
+"alternate approach by using detached instances."
+msgstr ""
+"A veces este modelo de programación es ineficiente pues requiere un "
+"<literal>SELECT</literal> de SQL para cargar un objeto y un <literal>UPDATE</"
+"literal> de SQL para hacer persistente su estado actualizado en la misma "
+"sesión. Por lo tanto, Hibernate ofrece un enfoque opcional, utilizando "
+"instancias separadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you do not have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate can, however, provide special mass operation functions. See <xref "
+"linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+"Hibernate no ofrece su propia API para ejecución directa de declaraciones "
+"<literal>UPDATE</literal> o <literal>DELETE</literal>. Hibernate es un "
+"servicio de <emphasis>administración de estado</emphasis>, no tiene que "
+"pensar en <emphasis>declaraciones</emphasis> para poder utilizarlo. JDBC es "
+"una API perfecta para ejecutar declaraciones SQL; puede obtener una "
+"<literal>Connection</literal> JDBC en cualquier momento llamando a "
+"<literal>session.connection()</literal>. Además, la noción de operaciones "
+"masivas entra en conflicto con el mapeo objeto/relacional en aplicaciones en "
+"línea orientadas al procesamiento de transacciones. Sin embargo, las "
+"versiones futuras de Hibernate podrán proporcionar funciones de operación "
+"masiva especiales. Consulte <xref linkend=\"batch\"/> para obtener algunos "
+"trucos posibles para la operación en lote. "
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "Modificación de objetos separados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"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 ""
+"Muchas aplicaciones necesitan recuperar un objeto en una transacción, "
+"enviarla a la capa de UI para su manipulación, y entonces guardar los "
+"cambios en una nueva transacción. Las aplicaciones que usan este tipo de "
+"enfoque en un entorno de alta concurrencia usualmente utilizan datos "
+"versionados para asegurar el aislamiento de la unidad de trabajo \"larga\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate soporta este modelo al proveer re-unión de instancias separadas "
+"utilizando los métodos <literal>Session.update()</literal> o "
+"<literal>Session.merge()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"Si el <literal>Cat</literal> con identificador <literal>catId</literal> ya "
+"hubiera sido cargado por <literal>secondSession</literal> cuando la "
+"aplicación intentó volver a unirlo, se habría lanzado una excepción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are certain that the session does not "
+"contain an already persistent instance with the same identifier. Use "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that the reattachment of your detached instances is "
+"the first operation that is executed."
+msgstr ""
+"Utilice <literal>update()</literal> si está seguro de que la sesión no tiene "
+"una instancia ya persistente con el mismo identificador. Utilice "
+"<literal>merge()</literal> si quiere fusionar sus modificaciones en "
+"cualquier momento sin consideración del estado de la sesión. En otras "
+"palabras, <literal>update()</literal> usualmente es el primer método que "
+"usted llamaría en una sesión actualizada, asegurando que la re-unión de sus "
+"instancias separadas es la primera operación que se ejecuta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances that are reachable from the given detached instance "
+"<emphasis>only</emphasis> if it wants their state to be updated. This can be "
+"automated using <emphasis>transitive persistence</emphasis>. See <xref "
+"linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+"La aplicación debe actualizar <literal>update()</literal> individualmente "
+"las instancias separadas alcanzables desde la instancia separada dada "
+"<emphasis>sólo</emphasis> si quiere que su estado se actualice. Esto puede "
+"ser automatizado utilizando la <emphasis>persistencia transitiva</"
+"emphasis>. Consulte la <xref linkend=\"objectstate-transitive\" /> para "
+"obtener mayor información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified."
+msgstr ""
+"El método <literal>lock()</literal> también le permite a una aplicación "
+"reasociar un objeto con una sesión nueva. Sin embargo, la instancia separada "
+"no puede haber sido modificada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s. See the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"Note que <literal>lock()</literal> se puede utilizar con varios "
+"<literal>LockMode</literal>s. Consulte la documentación de la API y el "
+"capítulo sobre el manejo de transacciones para obtener mayor información. La "
+"re-unión no es el único caso de uso para <literal>lock()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\" />."
+msgstr ""
+"Se discuten otros modelos para unidades largas de trabajo en <xref linkend="
+"\"transactions-optimistic\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "Detección automática de estado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Los usuarios de Hibernate han pedido un método de propósito general que bien "
+"guarde una instancia transitoria generando un identificador nuevo, o bien "
+"actualice/reúna las instancias separadas asociadas con su identificador "
+"actual. El método <literal>saveOrUpdate()</literal> implementa esta "
+"funcionalidad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"La utilización y semántica de <literal>saveOrUpdate()</literal> parece ser "
+"confuso para los usuarios nuevos. Primero, en tanto no esté tratando de "
+"utilizar instancias de una sesión en otra sesión nueva, no debe necesitar "
+"usar <literal>update()</literal>, <literal>saveOrUpdate()</literal>, o "
+"<literal>merge()</literal>. Algunas aplicaciones enteras nunca usarán "
+"ninguno de estos métodos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"Usualmente <literal>update()</literal> o <literal>saveOrUpdate()</literal> "
+"se utilizan en el siguiente escenario:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "la aplicación carga un objeto en la primera sesión"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "el objeto se pasa a la capa de UI"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "se realizan algunas modificaciones al objeto"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "el objeto se pasa abajo de regreso a la capa lógica de negocios"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"la aplicación hace estas modificaciones persistentes llamando a "
+"<literal>update()</literal> en una segunda sesión"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal> hace lo siguiente:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr "si el objeto ya es persistente en esta sesión, no haga nada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"si otro objeto asociado con la sesión tiene el mismo identificador, lance "
+"una excepción"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+"si el objeto no tiene ninguna propiedad identificadora, guárdelo llamando a "
+"<literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"si el identificador del objeto tiene el valor asignado a un objeto recién "
+"instanciado, guárdelo llamando a <literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object is versioned by a <literal>&lt;version&gt;</literal> or "
+"<literal>&lt;timestamp&gt;</literal>, and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"si el objeto está versionado por un <literal>&lt;version&gt;</literal> o "
+"<literal>&lt;timestamp&gt;</literal>, y el valor de la propiedad de versión "
+"es el mismo valor asignado a un objeto recién instanciado, guárdelo llamando "
+"a <literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr "de otra manera actualice el objeto llamando a <literal>update()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "y <literal>merge()</literal> es muy diferente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"si existe una instancia persistente con el mismo identificador asignado "
+"actualmente con la sesión, copie el estado del objeto dado en la instancia "
+"persistente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"si no existe ninguna instancia persistente asociada a la sesión actualmente, "
+"intente cargarla desde la base de datos, o cree una nueva instancia "
+"persistente"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "la instancia persistente es devuelta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr "la instancia dada no se asocia a la sesión, permanece separada"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "Borrado de objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Your application, however, can still hold a reference to a deleted "
+"object. It is best to think of <literal>delete()</literal> as making a "
+"persistent instance, transient."
+msgstr ""
+"<literal>Session.delete()</literal> borrará el estado de un objeto de la "
+"base de datos. Sin embargo, su aplicación puede tener todavía una referencia "
+"a un objeto borrado. Lo mejor es pensar en <literal>delete()</literal> al "
+"hacer transitoria una instancia persistente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can delete objects in any order, without risk of foreign key constraint "
+"violations. It is still possible to violate a <literal>NOT NULL</literal> "
+"constraint on a foreign key column by deleting objects in the wrong order, e."
+"g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"Puede borrar objetos en el orden que quiera, sin riesgo de violaciones de "
+"restricción de clave foránea. Aún es posible violar una restricción "
+"<literal>NOT NULL</literal> sobre una columna de clave foránea borrando "
+"objetos en un orden erróneo, por ejemplo, si borra el padre, pero olvida "
+"borrar los hijos."
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "Replicación de objetos entre dos almacenamientos de datos diferentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is sometimes useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"A veces es útil poder tomar un grafo de la instancias persistentes y "
+"hacerlas persistentes en un almacenamiento de datos diferente, sin regenerar "
+"los valores identificadores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+"El <literal>ReplicationMode</literal> determina cómo <literal>replicate()</"
+"literal> tratará los conflictos con filas existentes en la base de datos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal>: ignora el objeto cuando existe "
+"una fila de la base de datos con el mismo identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal>: sobrescribe cualquier fila de "
+"la base de datos existente con el mismo identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal>: lanza una excepción si existe "
+"una fila de la base de datos con el mismo identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: sobrescribe la fila si su "
+"número de versión es anterior al número de versión del objeto, o de lo "
+"contrario ignora el objeto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"Los casos de uso para esta funcionalidad incluyen reconciliar datos "
+"ingresados en instancias diferentes de bases de datos, actualizar "
+"información de configuración del sistema durante actualizaciones de "
+"producto, deshacer cambios realizados durante transacciones no-ACID y más."
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "Limpieza (flushing) de la sesión"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the <literal>Session</literal> will execute the SQL statements "
+"needed to synchronize the JDBC connection's state with the state of objects "
+"held in memory. This process, called <emphasis>flush</emphasis>, occurs by "
+"default at the following points:"
+msgstr ""
+"A veces la <literal>Session</literal> ejecutará las declaraciones SQL "
+"necesarias para sincronizar el estado de la conexión JDBC con el estado de "
+"los objetos en la menoria. Este proceso, denominado <emphasis>vaciado (flush)"
+"</emphasis>, ocurre por defecto en los siguientes puntos:"
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "antes de algunas ejecuciones de consulta"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "desde <literal>org.hibernate.Transaction.commit()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "desde <literal>Session.flush()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "Las declaraciones SQL se emiten en el siguiente orden:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity insertions in the same order the corresponding objects were saved "
+"using <literal>Session.save()</literal>"
+msgstr ""
+"todas las inserciones de entidades, en el mismo orden que los objetos "
+"correspondientes fueron guardados utilizando <literal>Session.save()</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "todas las actualizaciones de entidades"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "todas los borrados de colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr "todos los borrados, actualizaciones e inserciones de elementos de colección"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "todas las inserciones de colecciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity deletions in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"todos los borrados de entidades, en el mismo orden que los objetos "
+"correspondientes fueron borrados usando <literal>Session.delete()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved."
+msgstr ""
+"Una excepción es que los objetos que utilizan generación de ID "
+"<literal>native</literal> se insertan cuando se guardan."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Except when you explicitly <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale or incorrect data."
+msgstr ""
+"Excepto cuando llama explícitamente a <literal>flush()</literal>, no hay en "
+"absoluto garantías sobre <emphasis>cuándo</emphasis> la <literal>Session</"
+"literal> ejecuta las llamadas JDBC, sólamente sobre el <emphasis>orden</"
+"emphasis> en que se ejecutan. Sin embargo, Hibernate garantiza que los "
+"métodos <literal>Query.list(..)</literal> nunca devolverán datos "
+"desactualizados o incorrectos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time when the Hibernate <literal>Transaction</"
+"literal> API is used, flush automatically using the explained routine, or "
+"never flush unless <literal>flush()</literal> is called explicitly. The last "
+"mode is useful for long running units of work, where a <literal>Session</"
+"literal> is kept open and disconnected for a long time (see <xref linkend="
+"\"transactions-optimistic-longsession\" />)."
+msgstr ""
+"Es posible cambiar el comportamiento predeterminado de modo que el vaciado "
+"ocurra con menos frecuencia. La clase <literal>FlushMode</literal> define "
+"tres modos diferentes: sólo en tiempo de guardar los cambios cuando la API "
+"de <literal>Transaction</literal> de Hibernate se utiliza, vaciado "
+"automático utilizando la rutina explicada, o nunca vaciar a menos de que se "
+"llame a <literal>flush()</literal> explícitamente. El último modo es útil "
+"para unidades de trabajo largas, donde se mantiene abierta una "
+"<literal>Session</literal> y es desconectada por largo tiempo (consulte la <xref "
+"linkend=\"transactions-optimistic-longsession\"/>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\" />."
+msgstr ""
+"Durante el vaciado se puede presentar una excepción (por ejemplo, si una "
+"operación DML viola una restricción). Ya que el manejo de excepciones "
+"implica algo de comprensión del comportamiento transaccional de Hibernate, "
+"lo discutimos en <xref linkend=\"transactions\" />. "
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "Persistencia transitiva"
+
+#. Tag: para
+#, 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 ""
+"Es absolutamente incómodo guardar, borrar, o reunir objetos individuales, "
+"especialmente si trata con un grafo de objetos asociados. Un caso común es "
+"una relación padre/hijo. Considere el siguiente ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved and when the parent is deleted, the children will be deleted, etc. "
+"This works for operations such as the removal of a child from the "
+"collection. Since value-typed objects cannot have shared references, "
+"Hibernate will detect this and delete the child from the database."
+msgstr ""
+"Si los hijos en una relación padre/hijo pudieran ser tipificados en valor "
+"(por ejemplo, una colección de direcciones o cadenas), sus ciclos de vida "
+"dependerían del padre y no se requeriría ninguna otra acción para el "
+"tratamiento apropiado en \"cascada\" de los cambios de estado. Cuando se "
+"guarda el padre, los objetos hijo tipificados en valor también se guardan, "
+"cuando se borra el padre, se borran los hijos, etc. Esto funciona incluso "
+"para operaciones tales como el retiro de un hijo de la colección. Hibernate "
+"detectará esto y ya que los objetos tipificados en valor no pueden tener "
+"referencias compartidas entonces borrará el hijo de la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"Ahora considere el mismo escenario con los objetos padre e hijos siendo "
+"entidades, no tipos de valor (por ejemplo, categorías e ítems, o gatos "
+"padres e hijos). Las entidades tienen su propio ciclo de vida y soportan "
+"referencias compartidas. El eliminar una entidad de una colección no "
+"significa que se pueda borrar, y no hay por defecto ningún tratamiento en "
+"\"cascada\" del estado de una entidad a otras entidades asociadas. Hibernate "
+"no implementa por defecto la <emphasis>persistencia por alcance</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"Para cada operación básica de la sesión de Hibernate - incluyendo "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - existe un estilo de cascada "
+"correspondiente. Respectivamente, los estilos de cascada se llaman "
+"<literal>create, merge, save-update, delete, lock, refresh, evict, "
+"replicate</literal>. Si quiere que una operación sea tratada en cascada a lo "
+"largo de una asociación, debe indicar eso en el documento de mapeo. Por "
+"ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr "Los estilos de cascada pueden combinarse:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"Incluso puede utilizar <literal>cascade=\"all\"</literal> para especificar "
+"que <emphasis>todas</emphasis> las operaciones deben ser tratadas en cascada "
+"a lo largo de la asociación. La <literal>cascade=\"none\"</literal> "
+"predeterminada especifica que ninguna operación se tratará en cascada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"Un estilo de cascada especial, <literal>delete-orphan</literal>, se aplica "
+"sólamente a asociaciones uno-a-muchos, e indica que la operación "
+"<literal>delete()</literal> debe aplicarse a cualquier objeto hijo que se "
+"elimine de la asociación."
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "Recomendaciones:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It does not usually make sense to enable cascade on a <literal>&lt;many-to-"
+"one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. "
+"Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and "
+"<literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+"Usualmente no tiene sentido habilitar el tratamiento en cascada en una "
+"asociación <literal>&lt;many-to-one&gt;</literal> o <literal>&lt;many-to-"
+"many&gt;</literal>. El tratamiento en cascada es frecuentemente útil para "
+"las asociaciones <literal>&lt;one-to-one&gt;</literal> y <literal>&lt;one-to-"
+"many&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"Si el periodo de vida de los objetos hijos está ligado al periodo de vida "
+"del objeto padre, hágalo un <emphasis>objeto de ciclo de vida</emphasis> "
+"especificando <literal>cascade=\"all,delete-orphan\"</literal>. "
+
+#. Tag: para
+#, 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 "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"En otro caso, puede que usted no necesite tratamiento en cascada en "
+"absoluto. Pero si piensa que va a estar trabajando frecuentemente con padre "
+"e hijos juntos en la misma transacción, y quiere ahorrarse algo de escritura "
+"en computador, considere el utilizar <literal>cascade=\"persist,merge,save-"
+"update\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"Mapear una asociación (ya sea una asociación monovaluada, o una colección) "
+"con <literal>cascade=\"all\"</literal> marca la asociación como una relación "
+"del estilo <emphasis>padre/hijo</emphasis> en donde guardar/actualizar/"
+"borrar (save/update/delete) el padre causa el guardar/actualizar/borrar del "
+"hijo o hijos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Furthermore, a mere reference to a child from a persistent parent will "
+"result in save/update of the child. This metaphor is incomplete, however. A "
+"child which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"Además, una mera referencia a un hijo desde un padre persistente hará que se "
+"guarde/actualice el hijo. Sin embargo, esta metáfora se encuentra "
+"incompleta. Un hijo que deje de ser referenciado por su padre <emphasis>no</"
+"emphasis> es borrado automáticamente, excepto en el caso de una asociación "
+"<literal>&lt;one-to-many&gt;</literal> mapeada con <literal>cascade=\"delete-"
+"orphan\"</literal>. La semántica precisa de las operaciones en cascada para "
+"una relación padre/hijo es la siguiente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"Si un padre pasa a <literal>persist()</literal>, se pasan todos los hijos a "
+"<literal>persist()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"Si un padre pasa a <literal>merge()</literal>, se pasan todos los hijos a "
+"<literal>merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"Si se pasa un padre a <literal>save()</literal>, <literal>update()</literal> "
+"o <literal>saveOrUpdate()</literal>, todos los hijos pasan a "
+"<literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"Si un hijo transitorio o separado se vuelve referenciado por un padre "
+"persistente, le es pasado a <literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr "Si se borra un padre, se pasan todos los hijos a <literal>delete()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"Si un hijo deja de ser referenciado por un padre persistente, <emphasis>no "
+"ocurre nada especial</emphasis> - la aplicación debe borrar explícitamente "
+"el hijo de ser necesario - a menos que <literal>cascade=\"delete-orphan\"</"
+"literal>, en cuyo caso se borra el hijo \"huérfano\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-update</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"Finalmente, note que las operaciones en cascadas se pueden aplicar a un "
+"grafo de objeto en <emphasis>tiempo de llamada</emphasis> o en "
+"<emphasis>tiempo de vaciado</emphasis>. Todas las operaciones, si se "
+"encuentran activadas se tratan en cascadas en entidades asociadas "
+"alcanzables cuando se ejecuta la operación. Sin embargo, <literal>save-"
+"upate</literal> y <literal>delete-orphan</literal> son transitivos para "
+"todas las entidades asociadas alcanzables durante el vaciado de la "
+"<literal>Session</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "Utilización de metadatos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires a rich meta-level model of all entity and value types. "
+"This model can be useful to the application itself. For example, the "
+"application might use Hibernate's metadata to implement a \"smart\" deep-"
+"copy algorithm that understands which objects should be copied (eg. mutable "
+"value types) and which objects that should not (e.g. immutable value types "
+"and, possibly, associated entities)."
+msgstr ""
+"Hibernate requiere de un modelo de meta-nivel muy rico de todas las "
+"entidades y tipos de valor. Este modelo puede ser útil para la aplicación "
+"misma. Por ejemplo, la aplicación podría utilizar los metadatos de Hibernate "
+"para implementar un algoritmo \"inteligente\" de copia en profundidad que "
+"entienda qué objetos deben ser copiados (por ejemplo, tipos de valor "
+"mutables) y cuáles no (por ejemplo, tipos de valor inmutables y posiblemente "
+"las entidades asociadas)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces can be obtained "
+"from the <literal>SessionFactory</literal>."
+msgstr ""
+"Hibernate expone los metadatos por medio de las interfaces "
+"<literal>ClassMetadata</literal> y <literal>CollectionMetadata</literal> y "
+"la jerarquía <literal>Type</literal>. Las instancias de las interfaces de "
+"metadatos se pueden obtener de la <literal>SessionFactory</literal>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,843 @@
+# translation of toolset_guide.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: toolset_guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-15 13:22+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "Manual del conjunto de herramientas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, and Ant tasks."
+msgstr ""
+"La ingeniería compatible con Hibernate es posible utilizando un conjunto de "
+"plugins de Eclipse, herramientas de la línea de comandos así como tareas Ant."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"Las <emphasis>herramientas de Hibernate</emphasis> actualmente incluyen "
+"plugins la IDE de Eclipse así como tareas Ant para la ingeniería inversa de "
+"bases de datos existentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping "
+"files that supports auto-completion and syntax highlighting. It also "
+"supports semantic auto-completion for class names and property/field names, "
+"making it more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>Editor de Mapeo:</emphasis> Un editor de archivos de mapeo XML que "
+"soporta autocompleción y resaltado de sintáxis. También soporta la "
+"autocompleción semántica de nombres de clases y nombres de campos/"
+"propiedades, haciéndolo mucho más versátil que un editor normal de XML."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> the console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you are also "
+"provided with an interactive view of your persistent classes and their "
+"relationships. The console allows you to execute HQL queries against your "
+"database and browse the result directly in Eclipse."
+msgstr ""
+"<emphasis>Consola:</emphasis> La consola es una nueva vista en Eclipse. "
+"Además de la vista de árbol de sus configuraciones de la consola, también "
+"tiene una vista interactiva de sus clases persistentes y sus relaciones. La "
+"consola le permite ejecutar consultas HQL en su base de datos y navegar el "
+"resultado directamente en Eclipse."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> several wizards are provided with "
+"the Hibernate Eclipse tools. You can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or to reverse engineer an existing "
+"database schema into POJO source files and Hibernate mapping files. The "
+"reverse engineering wizard supports customizable templates."
+msgstr ""
+"<emphasis>Asistentes de desarrollo:</emphasis> Se proporcionan muchos "
+"asistentes junto con las herramientas Eclipse de Hibernate. Puede utilizar "
+"un asistente para generar rápidamente los archivos de configuración de "
+"Hibernate (cfg.xml), o incluso puede realizar una ingeniería inversa "
+"completa de un esquema de la base de datos existente en los archivos de "
+"código fuente de POJO y los archivos de mapeo de Hibernate. El asistente de "
+"ingeniería inversa soporta plantillas personalizables."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package "
+"documentation for more information."
+msgstr ""
+"Por favor refiérase al paquete de documentación de las "
+"<emphasis>Herramientas de Hibernate</emphasis> para obtener más información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool : "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even "
+"be used from \"inside\" Hibernate."
+msgstr ""
+"Sin embargo, el paquete principal de Hibernate viene con una herramienta "
+"integrada: <emphasis>SchemaExport</emphasis> también conocida como "
+"<literal>hbm2ddl</literal>. Incluso se puede utilizar \"dentro\" de "
+"Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "Generación automática de esquemas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"DDL can be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints, primary and "
+"foreign keys, for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"Una de las funciones de Hibernate puede generar DDL desde sus archivos de "
+"mapeo. El esquema generado incluye restricciones de integridad referencial, "
+"claves principales y foráneas, para las tablas de entidades y colecciones. "
+"También se creen tablas y secuencias para los generadores de identificadores "
+"mapeados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor-specific."
+msgstr ""
+"<emphasis>Tiene</emphasis> que especificar un <literal>Dialecto</literal> "
+"SQL por medio de la propiedad <literal>hibernate.dialect</literal> al usar "
+"esta herramienta, ya que el DDL es altamente específico de acuerdo con el "
+"vendedor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must customize your mapping files to improve the generated "
+"schema. The next section covers schema customization."
+msgstr ""
+"Primero, debe personazar sus archivos de mapeo para mejorar el esquema "
+"generado. La siguiente sección aborda la personalización del esquema. "
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "Personalización del esquema"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You can set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"Muchos elementos de mapeo de Hibernate definen atributos opcionales "
+"denominados <literal>length</literal>, <literal>precision</literal> y "
+"<literal>scale</literal>. Con estos atributos puede establecer el tamaño, la "
+"precisión y la escala de una columna."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute for generating "
+"a <literal>NOT NULL</literal> constraint on table columns, and a "
+"<literal>unique</literal> attribute for generating <literal>UNIQUE</literal> "
+"constraint on table columns."
+msgstr ""
+"Algunas etiquetas también aceptan un atributo <literal>not-null</literal> "
+"para generar una restricción <literal>NOT NULL</literal> en columnas de "
+"tablas y un atributo <literal>unique</literal> para generar restricciones "
+"<literal>UNIQUE</literal> en columnas de tablas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute can be used to group columns in a "
+"single, unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL. It is only used to group the "
+"columns in the mapping file."
+msgstr ""
+"Se puede usar un atributo <literal>unique-key</literal> para agrupar "
+"columnas en una restricción de clave única. Actualmente, el valor "
+"especificado del atributo <literal>unique-key</literal><emphasis>no</"
+"emphasis> se utiliza para nombrar la restricción en el DDL generado. "
+"Sólamente se utiliza para agrupar las columnas en el archivo de mapeo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns can be "
+"grouped into the same index by simply specifying the same index name."
+msgstr ""
+"Un atributo <literal>index</literal> especifica el nombre de un índice que "
+"se creará utilizando la columa o las columnas mapeadas. Se pueden ser "
+"agrupar múltiples columnas bajo el mismo índice, simplemente especificando "
+"el mismo nombre de índice. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute can be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"Un atributo <literal>foreign-key</literal> se puede utilizar para "
+"sobreescribir el nombre de cualquier restricción de clave foránea generada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal>&lt;column&gt;</literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"Muchos elementos de mapeo también aceptan un elemento <literal>&lt;column&gt;"
+"</literal> hijo. Esto es particularmente útil para mapear tipos de multi-"
+"columna:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>default</literal> attribute allows you to specify a default "
+"value for a column.You should assign the same value to the mapped property "
+"before saving a new instance of the mapped class."
+msgstr ""
+"El atributo <literal>default</literal> le permite especificar un valor por "
+"defecto para una columna. Usted le debe asignar el mismo valor a la "
+"propiedad mapeada antes de guardar una nueva instancia de la clase mapeada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"El atributo <literal>sql-type</literal> permite al usuario sobrescribir el "
+"mapeo por defecto de tipo Hibernate a tipo de datos SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"El atributo <literal>check</literal> le permite especificar una comprobación "
+"de restricción."
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr "La siguiente tabla resume estos atributos opcionales. "
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Resumen"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "Atributo"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "Valores"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "Interpretación"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>length</literal>"
+msgstr "<literal>length</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "número"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "longitud de columna/precisión decimal"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "<literal>precision</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "precisión decimal de columna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "<literal>scale</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "escala decimal de columna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "<literal>not-null</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "<literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "especifica que la columna debe ser sin nulos"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "<literal>unique</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "especifica que la columna debe tener una restricción de unicidad"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index</literal>"
+msgstr "<literal>index</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "<literal>index_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "especifica el nombre de un índice (multicolumna)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "<literal>unique-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "<literal>unique_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "especifica el nombre de una restricción de unicidad multicolumna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "<literal>foreign-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "<literal>foreign_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-"
+"to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-"
+"to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"especifica el nombre de la restricción de clave foránea generada por una "
+"asociación, para un elemento de mapeo <literal>&lt;one-to-one&gt;</literal>, "
+"<literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, o "
+"<literal>&lt;many-to-many&gt;</literal>. Observe que <literal>SchemaExport</"
+"literal> no considerará los lados <literal>inverse=\"true\"</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "<literal>sql-type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "<literal>tipo de columna SQL</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal>&lt;column&gt;</"
+"literal> element only)"
+msgstr ""
+"sobrescribe el tipo de columna por defecto (sólamente el atributo del "
+"elemento <literal>&lt;column&gt;</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>default</literal>"
+msgstr "<literal>default</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "expresión SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "especifica un valor predeterminado para la columna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>check</literal>"
+msgstr "<literal>check</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr "crea una restricción de comprobación SQL en columna o tabla"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;comment&gt;</literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"El elemento <literal>&lt;comment&gt;</literal> le permite especificar un "
+"comentario para el esquema generado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL where supported."
+msgstr ""
+"Esto da como resultado una declaración <literal>comment on table</literal> o "
+"<literal>comment on column</literal> en el DDL generado, donde se encuentre "
+"soportado."
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "Ejecución de la herramienta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"La herramienta <literal>SchemaExport</literal> escribe un script DDL a la "
+"salida estándar y/o ejecuta las declaraciones DDL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaExport</literal> command "
+"line options"
+msgstr ""
+"La siguiente tabla presenta las opciones de la línea de comandos de "
+"<literal>SchemaExport</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "Opciones de Línea de Comandos de <literal>SchemaExport</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "Opción"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Descripción"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "<literal>--quiet</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not output the script to stdout"
+msgstr "no envie el script a la salida estándar"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "<literal>--drop</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "sólamente desechar las tablas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "<literal>--create</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "sólamente crear las tablas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "<literal>--text</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export to the database"
+msgstr "no exportar a la base de datos "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "<literal>--output=my_schema.ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "enviar la salida del script ddl a un archivo"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "<literal>--naming=eg.MyNamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "seleccione un <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "<literal>--config=hibernate.cfg.xml</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "lee la configuración de Hibernate de un archivo XML"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "<literal>--properties=hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr "lee las propiedades de base de datos de un archivo"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "<literal>--format</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "formatea muy bien el SQL generado en el script"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "<literal>--delimiter=;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "establece un delimitador de fin de línea para el script"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr "Inclusive puede incluir <literal>SchemaExport</literal> en su aplicación: "
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Propiedades"
+
+#. Tag: para
+#, no-c-format
+msgid "Database properties can be specified:"
+msgstr "Las propiedades de la base de datos se pueden especificar:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+msgstr ""
+"como propiedades del sistema con <literal>-D</literal><emphasis>&lt;"
+"property&gt;</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "en <literal>hibernate.properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr "en un archivo de propiedades nombrado con <literal>--properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "Las propiedades necesarias son las siguientes:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "Propiedades de Conexión del SchemaExport"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "Nombre de la Propiedad"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "<literal>hibernate.connection.driver_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "clase del controlador jdbc"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "<literal>hibernate.connection.url</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "url de jdbc"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "<literal>hibernate.connection.username</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "usuario de la base de datos"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "<literal>hibernate.connection.password</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "contraseña del usuario"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "<literal>hibernate.dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "dialecto"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "Utilización de Ant"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"Puede llamar a <literal>SchemaExport</literal> desde su script de "
+"construcción de Ant:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "Actualizaciones incrementales de esquema"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon "
+"the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+"La herramienta <literal>SchemaUpdate</literal> actualizará un esquema "
+"existente con cambios \"incrementales\". El <literal>SchemaUpdate</literal> "
+"depende de la API de metadatos de JDBC, de modo que no funcionará con todos "
+"los controladores JDBC."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "Opciones de Línea de Comandos de <literal>SchemaUpdate</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export the script to the database"
+msgstr "no exporte el script a la base de datos "
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "specifique un archivo <literal>.cfg.xml</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr "Puede incluir <literal>SchemaUpdate</literal> en su aplicación: "
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "Utilización de Ant para actualizaciones incrementales de esquema"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr "Puede llamar a <literal>SchemaUpdate</literal> desde el script de Ant:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "Validación de Esquema"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. The "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API and, as such, will not work with all JDBC drivers. This tool is "
+"extremely useful for testing."
+msgstr ""
+"La herramienta <literal>SchemaValidator</literal> validará que el esquema de "
+"la base de datos existente \"coincide\" con sus documentos de mapeo. El "
+"<literal>SchemaValidator</literal> depene bastante de la API de metadatos "
+"JDBC así que no funcionará con todos los controladores JDBC. Esta "
+"herramienta es extremadamente útil para comprobar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaValidator</literal> command "
+"line options:"
+msgstr ""
+"La siguiente tabla presenta las opciones de la línea de comandos para "
+"<literal>SchemaValidator</literal> "
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "Opciones de la Línea de Comandos <literal>SchemaValidator</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr "Puede incluir <literal>SchemaValidator</literal> en su aplicación:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "Utilización de Ant para la validación de esquema"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr "Puede llamar <literal>SchemaValidator</literal> desde el scrip de Ant:"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1874 @@
+# translation of transactions.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: transactions\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-15 13:11+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "Transacciones y concurrencia"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. It is recommended "
+"that you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"El punto más importante sobre Hibernate y el control de concurrencia es que "
+"es fácil de comprender. Hibernate usa directamente conexiones JDBC y "
+"recursos JTA sin agregar ningún comportamiento de bloqueo adicional. Le "
+"recomendamos bastante que tome algo de tiempo con la especificación de JDBC, "
+"ANSI y el aislamiento de transacciones de su sistema de gestión de base de "
+"datos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Through <literal>Session</literal>, which is also a transaction-scoped "
+"cache, Hibernate provides repeatable reads for lookup by identifier and "
+"entity queries and not reporting queries that return scalar values."
+msgstr ""
+"Hibernate no bloquea objetos en la memoria. Su aplicación puede esperar el "
+"comportamiento definido por el nivel de aislamiento de sus transacciones de "
+"las bases de datos. Gracias a la <literal>Session</literal>, la cual también "
+"es un caché con alcance de transacción, Hibernate proporciona lecturas "
+"repetidas para búsquedas del identificador y consultas de entidad y no "
+"consultas de reporte que retornan valores escalares."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> "
+"syntax, a (minor) API for pessimistic locking of rows. Optimistic "
+"concurrency control and this API are discussed later in this chapter."
+msgstr ""
+"Además del versionado del control de concurrencia optimista automático, "
+"Hibernate también ofrece una API (menor) para bloqueo pesimista de filas, "
+"usando la sintáxis <literal>SELECT FOR UPDATE</literal>. Esta API y el "
+"control de concurrencia optimista se discuten más adelante en este capítulo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The discussion of concurrency control in Hibernate begins with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"Comenzamos la discusión del control de concurrencia en Hibernate con la "
+"granularidad de <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal> y <literal>Session</literal>, así como las transacciones de la base "
+"de datos y las conversaciones largas."
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "Ámbitos de sesión y de transacción"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object, intended to be shared by all application threads. It is created "
+"once, usually on application startup, from a <literal>Configuration</"
+"literal> instance."
+msgstr ""
+"Una <literal>SessionFactory</literal> es un objeto seguro entre hilos y "
+"costoso de crear pensado para que todas las hebras de la aplicación lo "
+"compartan. Se crea una sola vez, usualmente en el inicio de la aplicación, a "
+"partir de una instancia <literal>Configuration</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once and then discarded for: a single request, a conversation "
+"or a single unit of work. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, "
+"unless it is needed. It will not consume any resources until used."
+msgstr ""
+"Una <literal>Session</literal> es un objeto de bajo costo, inseguro entre "
+"hilos que se debe utilizar una sola vez y luego se debe descartar: para un "
+"sólo pedido, una sola conversación o una sóla unidad de trabajo. Una "
+"<literal>Session</literal> no obtendrá una <literal>Connection</literal> "
+"JDBC o un <literal>Datasource</literal> a menos de que sea necesario. No "
+"consumirá recursos hasta que se utilice."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to reduce lock contention in the database, a database transaction "
+"has to be as short as possible. Long database transactions will prevent your "
+"application from scaling to a highly concurrent load. It is not recommended "
+"that you hold a database transaction open during user think time until the "
+"unit of work is complete."
+msgstr ""
+"Una transacción de la base de datos tiene que ser tan corta como sea posible "
+"para reducir la contención de bloqueos en la base de datos. Las "
+"transacciones largas de la base de datos prevendrán a su aplicación de "
+"escalar a una carga altamente concurrente. Por lo tanto, no se recomienda "
+"que mantenga una transacción de la base de datos abierta durante el tiempo "
+"para pensar del usuario, hasta que la unidad de trabajo se encuentre "
+"completa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+"¿Cuál es el ámbito de una unidad de trabajo? ¿Puede una sola "
+"<literal>Session</literal> de Hibernate extenderse a través de varias "
+"transacciones de la base de datos o ésta es una relación uno-a-uno de "
+"ámbitos? ¿Cuándo debe abrir y cerrar una <literal>Session</literal>? y ¿cómo "
+"demarca los límites de la transacción de la base de datos? En las siguientes "
+"secciones abordaremos estas preguntas. "
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "Unidad de trabajo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, let's define a unit of work. A unit of work is a design pattern "
+"described by Martin Fowler as <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation> In other words, its a series of operations we wish to carry out "
+"against the database together. Basically, it is a transaction, though "
+"fulfilling a unit of work will often span multiple physical database "
+"transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really "
+"we are talking about a more abstract notion of a transaction. The term "
+"\"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+"Primero, vamos a definir una unidad de trabajo. Una unidad de trabajo es un "
+"patrón de diseño que Martin Fowler describe como <quote> [mantener] una "
+"lista de objetos afectados por una transacción empresarial y coordina la "
+"escritura de los cambios y la resolución de problemas de concurrencia. </"
+"quote><citation>PoEAA</citation> En otras palabras, es una serie de "
+"operaciones que deseamos llevar a cabo frente a la base de datos. "
+"Básicamente es una transacción, aunque el llevar a cabo una unidad de "
+"trabajo con frecuencia abarca múltiples transacciones de la base de datos "
+"física (consulte <xref linkend=\"transactions-basics-apptx\"/>). Así que "
+"realmente estamos hablando sobre una noción más abstracta de una "
+"transacción. El término \"transacción empresarial\" también se utiliza a "
+"veces en lugar de unidad de trabajo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the <emphasis>session-per-operation</emphasis> antipattern: do "
+"not open and close a <literal>Session</literal> for every simple database "
+"call in a single thread. 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. This also means that auto-commit after "
+"every single SQL statement is useless in an application as this mode is "
+"intended for ad-hoc SQL console work. Hibernate disables, or expects the "
+"application server to disable, auto-commit mode immediately. Database "
+"transactions are never optional. All communication with a database has to "
+"occur inside a transaction. Auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also more maintainable and "
+"extensible."
+msgstr ""
+"Primero, no use el antipatrón <emphasis>sesión-por-operación</emphasis>: no "
+"abra y cierre una <literal>Session</literal> para cada llamada simple a la "
+"base de datos en un solo hilo. Lo mismo aplica para las transacciones de "
+"base de datos. Las llamadas a la base de datos en una aplicación se hacen "
+"usando una secuencia planeada; estas se agrupan dentro de unidades de "
+"trabajo atómicas. Esto también significa que el auto-commit después de cada "
+"una de las declaraciones SQL es inútil en una aplicación ya que este modo "
+"está pensado para trabajo ad-hoc de consola SQL. Hibernate deshabilita, o "
+"espera que el servidor de aplicaciones lo haga, el modo auto-commit "
+"inmediatamente. Las transacciones de las bases de datos nunca son "
+"opcionales. Toda comunicación con una base de datos tiene que ocurrir dentro "
+"de una transacción. El comportamiento auto-commit para leer datos se debe "
+"evitar, ya que hay muy poca probabilidad de que las transacciones pequeñas "
+"funcionen mejor que una unidad de trabajo definida claramente. La última es "
+"mucho más sostenible y extensible."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is sent to the server, where the Hibernate persistence layer runs. A "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. On completion of the work, and "
+"once the response for the client has been prepared, the session is flushed "
+"and closed. Use a single database transaction to serve the clients request, "
+"starting and committing it when you open and close the <literal>Session</"
+"literal>. The relationship between the two is one-to-one and this model is a "
+"perfect fit for many applications."
+msgstr ""
+"El patrón más común en una aplicación multiusuario cliente/servidor es "
+"<emphasis>sesión-por-petición</emphasis>. En este modelo, una petición del "
+"cliente se envia al servidor, en donde se ejecuta la capa de persistencia de "
+"Hibernate. Se abre una nueva <literal>Session</literal> de Hibernate y todas "
+"las operaciones de la base de datos se ejecutan en esta unidad de trabajo. "
+"Una vez completado el trabajo, y una vez se ha preparado la respuesta para "
+"el cliente, se limpia la sesión y se cierra. Use una sóla transacción de la "
+"base de datos para servir la petición del cliente, dándole inicio y "
+"guardándola cuando abre y cierra la <literal>Session</literal>. La relación "
+"entre las dos es uno-a-uno y este modelo es a la medida perfecta de muchas "
+"aplicaciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. Start a "
+"transaction when a server request has to be processed, and end the "
+"transaction before the response is sent to the client. Common solutions are "
+"<literal>ServletFilter</literal>, AOP interceptor with a pointcut on the "
+"service methods, or a proxy/interception container. An EJB container is a "
+"standardized way to implement cross-cutting aspects such as transaction "
+"demarcation on EJB session beans, declaratively with CMT. If you use "
+"programmatic transaction demarcation, for ease of use and code portability "
+"use the Hibernate <literal>Transaction</literal> API shown later in this "
+"chapter."
+msgstr ""
+"El reto se encuentra en la implementación. Hibernate brinda administración "
+"incorporada de la \"sesión actual\" para simplificar este patrón. Inicie una "
+"transacción cuando se tiene que procesar un pedido del servidor y termine la "
+"transacción antes de que se envie la respuesta al cliente. Las soluciones "
+"más comunes son <literal>ServletFilter</literal>, un interceptor AOP con un "
+"punto de corte en los métodos del servicio o un contenedor proxy/"
+"intercepción. Un contenedor EJB es una manera estandarizada de implementar "
+"aspectos de doble filo como demarcación de transacción en beans de sesión "
+"EJB, declarativamente con CMT. Si decide utilizar la demarcación de "
+"transacción programática, use el API <literal>Transaction</literal> de "
+"Hibernate de fácil uso y portable que se muestra más adelante en este "
+"capítulo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by calling <literal>sessionFactory.getCurrentSession()</literal>. "
+"You will always get a <literal>Session</literal> scoped to the current "
+"database transaction. This has to be configured for either resource-local or "
+"JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+"Su código de aplicación puede acceder a una \"sesión actual\" para procesar "
+"el pedido llamando a <literal>sessionFactory.getCurrentSession()</literal>. Siempre obtendrá una <literal>Session</literal> con ámbito a la transacción "
+"de la base de datos actual. Esto tiene que ser configurado para entornos JTA "
+"o recursos-locales, consulte <xref linkend=\"architecture-current-session\" />."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can extend the scope of a <literal>Session</literal> and database "
+"transaction until the \"view has been rendered\". This is especially useful "
+"in servlet applications that utilize a separate rendering phase after the "
+"request has been processed. Extending the database transaction until view "
+"rendering, is achieved by implementing your own interceptor. However, this "
+"will be difficult if you rely on EJBs with container-managed transactions. A "
+"transaction will be completed when an EJB method returns, before rendering "
+"of any view can start. See the Hibernate website and forum for tips and "
+"examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+"Puede extender el ámbito de una <literal>Session</literal> y transacción de "
+"la base de datos hasta que \"se ha presentado la vista\". Esto es bastante "
+"útil en aplicaciones de servlet que utilizan una fase de entrega separada "
+"después de que se ha procesado el pedido. El extender la transacción de la "
+"base de datos hasta que la entrega de la vista se encuentre completa es "
+"fácil de lograr si implementa su propio interceptor. Sin embargo, no se "
+"logra fácilmente si depende de EJBs con transacciones administradas por el "
+"contenedor. Una transacción se completará cuando un método EJB retorna, "
+"antes de que pueda empezar la entrega de cualquier vista. Vea el sitio web "
+"de Hibernate y el foro para encontrar consejos y ejemplos sobre este patrón "
+"de <emphasis>sesión abierta en vista</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "Conversaciones largas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The session-per-request pattern is not the only way of designing units of "
+"work. Many business processes require a whole series of interactions with "
+"the user that are interleaved with database accesses. In web and enterprise "
+"applications, it is not acceptable for a database transaction to span a user "
+"interaction. Consider the following example:"
+msgstr ""
+"El patrón sesión-por-petición no es la única forma de diseñar unidades de "
+"trabajo. Muchos procesos empresariales requieren una serie completa de "
+"interacciones con el usuario intercaladas con accesos a la base de datos. En "
+"aplicaciones empresariales y web no es aceptable que una transacción de la "
+"base de datos abarque la interacción de un usuario. Considere el siguiente "
+"ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens. The data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"Se abre la primera pantalla de un diálogo. Los datos que ve el usuario han "
+"sido cargados en una <literal>Session</literal> en particular y en una "
+"transacción de la base de datos. El usuario es libre de modificar los "
+"objetos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects their modifications to "
+"be made persistent. The user also expects that they were the only person "
+"editing this information and that no conflicting modification has occurred."
+msgstr ""
+"El usuario hace click en \"Guardar\" después de 5 minutos y espera que sus "
+"modificaciones se hagan persistentes. También espera que él sea la única "
+"persona editando esta información y que no ocurra ningún conflicto en la "
+"modificación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the point of view of the user, we call this unit of work a long-running "
+"<emphasis>conversation</emphasis> or <emphasis>application transaction</"
+"emphasis>. There are many ways to implement this in your application."
+msgstr ""
+"Desde el punto de vista del usuario, llamamos a esta unidad de trabajo, una "
+"larga <emphasis>conversación</emphasis> o <emphasis>transacción de "
+"aplicación</emphasis>. Hay muchas formas de implementar esto en su "
+"aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow "
+"the application to scale with the number of concurrent users."
+msgstr ""
+"Una primera implementación ingenua podría mantener abierta la "
+"<literal>Session</literal> y la transacción de la base de datos durante el "
+"tiempo para pensar del usuario, con bloqueos en la base de datos para "
+"prevenir la modificación simultánea y para garantizar el aislamiento y la "
+"atomicidad. Esto es un antipatrón, ya que la contención de bloqueo no "
+"permitiría a la aplicación escalar con el número de usuarios simultáneos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to use several database transactions to implement the conversation. "
+"In this case, maintaining isolation of business processes becomes the "
+"partial responsibility of the application tier. A single conversation "
+"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 (for example, in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+"Tiene que usar varias transacciones de la base de datos para implementar la "
+"conversación. En este caso, mantener el aislamiento de los procesos "
+"empresariales se vuelve una responsabilidad parcial de la capa de la "
+"aplicación. Una sóla conversación usualmente abarca varias transacciones de "
+"la base de datos. Será atómica si sólo una de estas transacciones de la base "
+"de datos (la última) almacena los datos actualizados. Todas las otras "
+"simplemente leen datos (por ejemplo, en un diálogo de estilo-asistente "
+"abarcando muchos ciclos petición/respuesta). Esto es más fácil de "
+"implementar de lo que suena, especialmente si usa las funcionalidades de "
+"Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic "
+"optimistic concurrency control for you. It can automatically detect if a "
+"concurrent modification occurred during user think time. Check for this at "
+"the end of the conversation."
+msgstr ""
+"<emphasis>Versionado automático</emphasis> - Hibernate puede realizar un "
+"control automático de concurrencia optimista por usted .Puede detectar "
+"automáticamente si ha ocurrido una modificación simultánea durante el tiempo "
+"para pensar del usuario. Chequee esto al final de la conversación. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis>: if you decide to use the "
+"<emphasis>session-per-request</emphasis> pattern, all loaded instances will "
+"be in the detached state during user think time. Hibernate allows you to "
+"reattach the objects and persist the modifications. The pattern is called "
+"<emphasis>session-per-request-with-detached-objects</emphasis>. Automatic "
+"versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Objetos separados</emphasis>: Si decide usar el patrón "
+"<emphasis>sesión-por-petición</emphasis>, todas las instancias cargadas "
+"estarán en estado separado durante el tiempo para pensar del usuario. "
+"Hibernate le permite volver a unir los objetos y hacer persistentes las "
+"modificaciones. El patrón se llama <emphasis>sesión-por-petición-con-objetos-"
+"separados</emphasis>. Se usa el versionado automático para aislar las "
+"modificaciones simultáneas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis>: the Hibernate "
+"<literal>Session</literal> can be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed and reconnected "
+"when a new client request occurs. This pattern is known as <emphasis>session-"
+"per-conversation</emphasis> and makes even reattachment unnecessary. "
+"Automatic versioning is used to isolate concurrent modifications and the "
+"<literal>Session</literal> will not be allowed to be flushed automatically, "
+"but explicitly."
+msgstr ""
+"<emphasis>Sesión extendida (o larga) </emphasis> - La <literal>Session</"
+"literal> de Hibernate puede ser desconectada de la conexión JDBC subyacente "
+"después de que haya guardado la transacción de la base de datos y haya "
+"reconectado cuando ocurra una nueva petición del cliente. Este patrón se "
+"conoce como <emphasis>sesión-por-conversación</emphasis> y hace la re-unión "
+"innecesaria. Para aislar las modificaciones simultáneas se usa el versionado "
+"automático y usualmente no se permite que se limpie la <literal>Session</"
+"literal> automáticamente sino explícitamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages. These disadvantages are discussed later in this chapter in "
+"the context of optimistic concurrency control."
+msgstr ""
+"Tanto la <emphasis>sesión-por-petición-con-objetos-separados</emphasis> como "
+"la <emphasis>sesión-por-conversación</emphasis> tienen ventajas y "
+"desventajas. Estas desventajas las discutimos más adelante en este capítulo "
+"en el contexto del control optimista de concurrencia."
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "Consideración de la identidad del objeto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An application can concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. It "
+"is for this reason that there are two different notions of identity:"
+msgstr ""
+"Una aplicación puede acceder simultáneamente al mismo estado persistente en "
+"dos <literal>Session</literal>es diferentes. Sin embargo, una instancia de "
+"una clase persistente nunca se comparte entre dos instancias de "
+"<literal>Session</literal>. Por lo tanto, existen dos nociones diferentes de "
+"identidad: "
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "Identidad de Base de Datos"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "<literal>foo.getId().equals( bar.getId() )</literal>"
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "Identidad JVM"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr "<literal>foo==bar</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For objects attached to a <emphasis>particular</emphasis> <literal>Session</"
+"literal> (i.e., in the scope of a <literal>Session</literal>), the two "
+"notions are equivalent and JVM identity for database identity is guaranteed "
+"by Hibernate. While the application might concurrently access the \"same"
+"\" (persistent identity) business object in two different sessions, the two "
+"instances will actually be \"different\" (JVM identity). Conflicts are "
+"resolved using an optimistic approach and automatic versioning at flush/"
+"commit time."
+msgstr ""
+"Para los bjetos unidos a una <literal>Session</literal><emphasis> en "
+"particular</emphasis> (por ejemplo, en el ámbito de una <literal>Session</"
+"literal>) las dos nociones son equivalentes y la identidad de la MVJ para la "
+"identidad de la base de datos se encuentra garantizada por Hibernate. "
+"Mientras la aplicación acceda simultáneamente al \"mismo\" objeto "
+"empresarial (identidad persistente) en dos sesiones diferentes, las dos "
+"instancias serán realmente \"diferentes\" (identidad MVJ). Los conflictos se "
+"resuelven usando un enfoque optimista y el versionado automático en tiempo "
+"de vaciado/ al guardar."
+
+#. Tag: para
+#, 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 means that it does not need expensive locking or "
+"other means of synchronization. The application does not need to synchronize "
+"on any business object, as long as it maintains a single thread per "
+"<literal>Session</literal>. Within a <literal>Session</literal> the "
+"application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+"Este enfoque deja que Hibernate y la base de datos se preocupen de la "
+"concurrencia. Además provee la mejor escalabilidad, ya que garantizando la "
+"identidad en unidades de trabajo monohilo no se necesitan bloqueos caros u "
+"otros medios de sincronización. La aplicación no necesita sincronizar sobre "
+"ningún objeto empresarial, siempre que se mantenga un solo hilo por "
+"<literal>Session</literal>. Dentro de una <literal>Session</literal> la "
+"aplicación puede usar con seguridad <literal>==</literal> para comparar "
+"objetos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal> might produce 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). JVM identity, "
+"however, is by definition not guaranteed for instances in a detached state. "
+"The developer has to override the <literal>equals()</literal> and "
+"<literal>hashCode()</literal> methods in persistent classes and implement "
+"their own notion of object equality. There is one caveat: never use the "
+"database identifier to implement equality. Use a business key that is a "
+"combination of unique, usually immutable, attributes. The database "
+"identifier will change if a transient object is made persistent. 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 business keys do not 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. Please note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+"Sin embargo, una aplicación que usa <literal>==</literal> fuera de una "
+"<literal>Session</literal>, podría ver resultados inesperados. Esto podría "
+"ocurrir incluso en sitios algo inesperados. Por ejemplo, si pone dos "
+"instancias separadas dentro del mismo <literal>Set</literal> ambas podrían "
+"tener la misma identidad de la base de datos (por ejemplo, representar la "
+"misma fila). Sin embargo, la identidad MVJ, por definición, no está "
+"garantizada para las instancias en estado separado. El desarrollador tiene "
+"que sobrescribir los métodos <literal>equals()</literal> y <literal>hashCode"
+"()</literal> en las clases persistentes e implementar su propia noción de "
+"igualdad de objetos. Hay una advertencia: nunca use el identificador de la "
+"base de datos para implementar la igualdad. Use una clave de negocio, una "
+"combinación de atributos únicos, usualmente inmutables. El identificador de "
+"la base de datos cambiará si un objeto transitorio es hecho persistente. Si "
+"la instancia transitoria (usualmente junto a las instancias separadas) es "
+"mantenida en un <literal>Set</literal>, cambiar el código hash rompe el "
+"contrato del <literal>Set</literal>. Los atributos para las claves "
+"empresariales no tienen que ser tan estables como las claves principales de "
+"la base de datos, sólo tiene que garantizar estabilidad en tanto los objetos "
+"estén en el mismo <literal>Set</literal>. Mire el sitio web de Hibernate "
+"para obetener una discusión más profunda de este tema. Note también que éste "
+"no es problema de Hibernate, sino que simplemente se tiene que implementar "
+"la identidad y la igualdad de los objetos Java."
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "Temas comúnes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> "
+"or <emphasis>session-per-application</emphasis> (there are, however, rare "
+"exceptions to this rule). Some of the following issues might also arise "
+"within the recommended patterns, so ensure that you understand the "
+"implications before making a design decision:"
+msgstr ""
+"No use los antipatrones <emphasis>sesión-por-sesión-de-usuario</emphasis> o "
+"<emphasis>sesión-por-aplicación</emphasis> (hay excepciones raras a esta "
+"regla). Algunos de los siguientes temas también podrían aparecer con los "
+"patrones recomendados así que asegúrese de que entiende las implicaciones "
+"antes de tomar una decisión de diseño:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things that work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if a <literal>Session</literal> instance is shared. If "
+"you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (this is discussed later in the chapter), you "
+"should consider synchronizing access to your Http session. Otherwise, a user "
+"that clicks reload fast enough can use the same <literal>Session</literal> "
+"in two concurrently running threads."
+msgstr ""
+"Una <literal>Session</literal> no es segura entre hilos. Las cosas que "
+"funcionan de manera simultánea, como las peticiones HTTP, beans de sesión, o "
+"workers de Swing, provocarán condiciones de competencia si una instancia de "
+"<literal>Session</literal> se comparte. Si guarda su <literal>Session</"
+"literal> de Hibernate en su <literal>HttpSession</literal> (se discute más "
+"adelante), debe considerar el sincronizar el acceso a su sesión HTTP. De "
+"otro modo, un usuario que hace click lo suficientemente rápido puede llegar "
+"a usar la misma <literal>Session</literal> en dos hilos ejecutándose "
+"simultáneamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (this is "
+"discussed in more detail later in the chapter). If your <literal>Session</"
+"literal> is bound to the application, you have to stop the application. "
+"Rolling back the database transaction does not put your business objects "
+"back into the state they were at the start of the transaction. This means "
+"that the database state and the business objects will be out of sync. "
+"Usually this is not a problem, because exceptions are not recoverable and "
+"you will have to start over after rollback anyway."
+msgstr ""
+"Una excepción lanzada por Hibernate significa que tiene que deshacer su "
+"transacción de la base de datos y cerrar la <literal>Session</literal> "
+"inmediatamente (se discute en más detalle más adelante en este capítulo). Si "
+"su <literal>Session</literal> está vinculada a la aplicación, tiene que "
+"parar la aplicación. Deshacer la transacción de la base de datos no pone a "
+"sus objetos de vuelta al estado en que estaban al comienzo de la "
+"transacción. Esto significa que el estado de la base de datos y los objetos "
+"empreariales quedan fuera de sincronía. Usualmente esto no es un problema, "
+"pues las excepciones no son recuperables y tendrá que volver a comenzar "
+"después de deshacer de todos modos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in a persistent "
+"state (watched and checked for dirty state by Hibernate). If you keep it "
+"open for a long time or simply load too much data, it will grow endlessly "
+"until you get an OutOfMemoryException. One solution is to call <literal>clear"
+"()</literal> and <literal>evict()</literal> to manage the <literal>Session</"
+"literal> cache, but you should consider a Stored Procedure if you need mass "
+"data operations. Some solutions are shown in <xref linkend=\"batch\" />. "
+"Keeping a <literal>Session</literal> open for the duration of a user session "
+"also means a higher probability of stale data."
+msgstr ""
+"La <literal>Session</literal> pone en caché todo objeto que esté en estado "
+"persistente (Hibernate vigila y chequea para identificar estados "
+"desactualizados). Si la mantiene abierta por un largo tiempo o simplemente "
+"carga demasiados datos crece sin fin hasta que obtiene una "
+"OutOfMemoryException. Una solución para esto es llamar a <literal>clear()</"
+"literal> y <literal>evict()</literal> para gestionar el caché de la "
+"<literal>Session</literal>, pero probablemente deba considerar un "
+"procedimiento almacenado si necesita operaciones de datos masivs. Se pueden "
+"ver algunas soluciones en <xref linkend=\"batch\"/>. Mantener una "
+"<literal>Session</literal> abierta durante una sesión de usuario también "
+"significa una alta probabilidad de datos desactualizados. "
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "Demarcación de la transacción de la base de datos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database, 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. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"Los límites de las transacciones de la base de datos o el sistema son "
+"siempre necesarios. Ninguna comunicación con la base de datos puede darse "
+"fuera de una transacción de la base de datos (esto parece confundir a muchos "
+"desarrolladores acostumbrados al modo auto-commit). Siempre use límites de "
+"transacción claros, incluso para las operaciones de sólo lectura. "
+"Dependiendo del nivel de aislamiento y las capacidades de la base de datos, "
+"esto podría requerirse o no, pero no hay inconvenientes si siempre demarca "
+"explícitamente las transacciones. Con seguridad, una transacción única de "
+"base de datos va a funcionar mejor que muchas transacciones pequeñas, "
+"inclusive para leer datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e., standalone, simple "
+"Web- or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries (begin, commit, or rollback database transactions) themselves. A "
+"managed environment usually provides container-managed transactions (CMT), "
+"with the transaction assembly defined declaratively (in deployment "
+"descriptors of EJB session beans, for example). Programmatic transaction "
+"demarcation is then no longer necessary."
+msgstr ""
+"Una aplicación Hibernate puede ejecutarse en entornos no administrados (por "
+"ejemplo, aplicaciones simples Web o Swing autónomas) y entornos "
+"administrados por J2EE. En un entorno no administrado, Hibernate es "
+"usualmente responsable de su propio pool de conexiones de la base de datos. "
+"El desarrollador de aplicaciones tiene que establecer manualmente los "
+"límites de transacción (inicar, guardar o deshacer las transacciones de la "
+"base de datos) por sí mismo. Un entorno administrado usualmente proporciona "
+"transacciones gestionadas por contenedor, con el ensamble de transacción "
+"definido declarativamente (por ejemplo, en descriptores de despliegue de "
+"beans de sesión EJB). La demarcación programática de transacciones ya no es "
+"necesaria."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, it is often desirable to keep your persistence layer portable "
+"between non-managed resource-local environments, and systems that can rely "
+"on JTA but use BMT instead of CMT. In both cases use programmatic "
+"transaction demarcation. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"Sin embargo, comúnmente se quiere mantener su capa de persistencia portátil "
+"entre entornos locales- de recursos no-administrados y sistemas que pueden "
+"confiar en JTA, pero utilizar BMT en vez de CMT. En ambos casos utilizaría "
+"la demarcación de transacción programática. Hibernate ofrece una API de "
+"envoltura llamada <literal>Transaction</literal> que se traduce al sistema "
+"de transacciones nativo de su entorno de despliegue. Esta API es de hecho "
+"opcional, pero le recomendamos bastante su uso salvo que esté en un bean de "
+"sesión CMT. "
+
+#. Tag: para
+#, no-c-format
+msgid "Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+"Usualmente, el finalizar una <literal>Session</literal> implica cuatro fases "
+"distintas:"
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "limpiar la sesión"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "someter la transacción"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "cerrar la sesión"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "manejar excepciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We discussed Flushing the session earlier, so we will now have a closer look "
+"at transaction demarcation and exception handling in both managed and non-"
+"managed environments."
+msgstr ""
+"Anteriormente se discutió el vacido de la sesión así que ahora vamos a mirar "
+"más de cerca la demarcación de transacciones y el manejo de excepciones en "
+"los dos entornos administrado y no administrado."
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "Entorno no administrado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e., non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"Si una capa de persistencia Hibernate se ejecuta en un entorno no "
+"administrado, las conexiones de la base de datos se manejan usualmente por "
+"simples pools de conexión (por ejemplo, no-DataSource) del cual Hibernate "
+"obtiene conexiones al ser necesario. El idioma de manejo de sesión/"
+"transacción se ve así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You do not have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly: the call to <literal>commit()</literal> automatically triggers "
+"the synchronization depending on the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"No tiene que vaciar con <literal>flush()</literal> la <literal>Session</"
+"literal> explícitamente: la llamada a <literal>commit()</literal> "
+"automáticamente dispara la sincronización dependiendo del <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> para la sesión. Una llamada a <literal>close()</"
+"literal> marca el final de una sesión. La implicación principal de "
+"<literal>close()</literal> es que la conexión JDBC será abandonada por la "
+"sesión. Este código Java es portátil y ejecuta en entornos tanto no-"
+"administrados como JTA."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As outlined earlier, a much more flexible solution is Hibernate's built-in "
+"\"current session\" context management:"
+msgstr ""
+"Como se mencionó anteriormente, una solución mucho más flexible es la "
+"administración de contexto \"sesión actual\" incorporada en Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will not see these code snippets in a regular application; fatal "
+"(system) exceptions should always be caught at the \"top\". In other words, "
+"the code that executes Hibernate 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. The current context management "
+"by Hibernate can significantly simplify this design by accessing a "
+"<literal>SessionFactory</literal>. Exception handling is discussed later in "
+"this chapter."
+msgstr ""
+"No verá estos pedazos de código en una aplicación normal; las excepciones "
+"fatales (del sistema) siempre deben ser capturadas en la \"cima\". En otras "
+"palabras, el código que ejecuta las llamadas de Hibernate en la capa de "
+"persistencia y el código que maneja <literal>RuntimeException</literal> (y "
+"usualmente sólo puede limpiar y salir) se encuentran en capas diferentes. La "
+"administración de contexto actual de Hibernate puede simplificar de manera "
+"importante este diseño, ya que todo lo que necesita hacer es acceder a "
+"<literal>SessionFactory</literal>. El manejo de excepciones se discute más "
+"adelante en este capítulo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, which is the default, and for the second example select <literal>"
+"\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"Debe seleccionar <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, el cual es el predeterminado, y para el segundo ejemplo "
+"seleccionar <literal>\"thread\"</literal> como su <literal>hibernate."
+"current_session_context_class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "Utilización de JTA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (for example, behind "
+"EJB session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"Si su capa de persistencia se ejecuta en un servidor de aplicaciones (por "
+"ejemplo, detrás de los beans de sesión EJB), cada conexión de fuente de "
+"datos obtenida por Hibernate será parte de la transacción JTA global de "
+"manera automática. También puede instalar una implementación JTA autónoma y "
+"utilizarla sin EJB. Hibernate ofrece dos estrategias para esta integración "
+"JTA."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. The transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"Si usa transacciones gestionadas-por-bean (BMT) Hibernate le dirá al "
+"servidor de aplicaciones que comience y finalice una transacción BMT si usa "
+"la API de <literal>Transaction</literal>. De modo que, el código de gestión "
+"de la transacción es idéntico al de un entorno no administrado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+"Si quiere utilizar un vínculo de transacción <literal>Session</literal>, es "
+"decir, la funcionalidad <literal>getCurrentSession()</literal> para "
+"propagación de contexto de manera fácil, tendrá que utilizar el API "
+"<literal>UserTransaction</literal> del JTA directamente: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With CMT, transaction demarcation is completed in session bean deployment "
+"descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+"Con CMT, la demarcación de transacción se realiza en los descriptores de "
+"implementacion bean de sesión, no programáticamente. Por lo tanto el código "
+"se reduce a:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a CMT/EJB, even rollback happens automatically. An unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>You do "
+"not need to use the Hibernate <literal>Transaction</literal> API at all with "
+"BMT or CMT, and you get automatic propagation of the \"current\" Session "
+"bound to the transaction.</emphasis>"
+msgstr ""
+"En un CMT/EJB incluso el deshacer sucede de forma automática. Un "
+"<literal>RuntimeException</literal> lanzado por un método bean de sesión le "
+"dice al contenedor que establezca una transacción global para deshacer. "
+"<emphasis>No necesita utilizar el API <literal>Transaction</literal> de "
+"Hibernate con BMT o CMT y obtiene la propagación automática de sesión\"actual"
+"\" vinculada a la transacción.</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When configuring Hibernate's transaction factory, choose <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> if you use JTA "
+"directly (BMT), and <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> in a CMT session bean. Remember to also set "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that "
+"your <literal>hibernate.current_session_context_class</literal> is either "
+"unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+"Al configurar la fábrica de transacciones de Hibernate, escoja <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> si utiliza JTA "
+"directamente (BMT) y <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> en una bean de sesión CMT. Recuerde "
+"establecer también <literal>hibernate.transaction.manager_lookup_class</"
+"literal>. Asegúrese de que su <literal>hibernate."
+"current_session_context_class</literal> no se encuentra configurado "
+"(compatibilidad retrasada) o configurada como <literal>\"jta\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. 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. Most applications can easily avoid "
+"using <literal>scroll()</literal> or <literal>iterate()</literal> from the "
+"JTA or CMT code.)"
+msgstr ""
+"La operación <literal>getCurrentSession()</literal> tiene un inconveniente "
+"en un entorno JTA. Hay una desventaja en el uso del modo de liberación de la "
+"conección <literal>after_statement</literal>, la cual luego se utiliza por "
+"defecto. Debido a una limitación de la especificación JTA, no le es posible "
+"a Hibernate limpiar automáticamente cualquier instancia "
+"<literal>ScrollableResults</literal> o <literal>Iterator</literal> no "
+"cerradas y retornadas por <literal>scroll()</literal> o <literal>iterate()</"
+"literal>. <emphasis>Tiene</emphasis> que liberar el cursor de la base de "
+"datos subyacente llamando a <literal>ScrollableResults.close()</literal> o "
+"<literal>Hibernate.close(Iterator)</literal> explícitamente desde un bloque "
+"<literal>finally</literal>. La mayoría de las aplicaciones pueden evitar "
+"fácilmente el utilizar <literal>scroll()</literal> o <literal>iterate()</"
+"literal> del código JTA o CMT."
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "Manejo de excepciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception, including any "
+"<literal>SQLException</literal>, immediately rollback the database "
+"transaction, call <literal>Session.close()</literal> and discard the "
+"<literal>Session</literal> instance. Certain methods of <literal>Session</"
+"literal> will <emphasis>not</emphasis> leave the session in a consistent "
+"state. No exception thrown by Hibernate can be treated as recoverable. "
+"Ensure that the <literal>Session</literal> will be closed by calling "
+"<literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"Si la <literal>Session</literal> lanza una excepción, incluyendo cualquier "
+"<literal>SQLException</literal>, debe deshacer inmediatamente la transacción "
+"de la base de datos, llamar a <literal>Session.close()</literal> y descartar "
+"la instancia de <literal>Session</literal>. Ciertos métodos de "
+"<literal>Session</literal> <emphasis>no</emphasis> dejarán la sesión en un "
+"estado consistente. Ninguna excepción lanzada por Hibernate puede ser "
+"tratada como recuperable. Asegúrese de que la <literal>Session</literal> se "
+"cierre llamando a <literal>close()</literal> en un bloque <literal>finally</"
+"literal>."
+
+#. Tag: para
+#, 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. "
+"It was not in older versions of Hibernate. In our opinion, we should not "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e., in higher layers) and "
+"either an error message is presented to the application user or some other "
+"appropriate action is taken. Note that Hibernate might also throw other "
+"unchecked exceptions that are not a <literal>HibernateException</literal>. "
+"These are not recoverable and appropriate action should be taken."
+msgstr ""
+"La <literal>HibernateException</literal>, que envuelve a la mayoría de los "
+"errores que pueden ocurrir en la capa de persistencia de Hibernate, es una "
+"excepción no chequeada. No lo era en versiones anteriores de Hibernate. En "
+"nuestra opinión, no debemos forzar al desarrollador de aplicaciones a "
+"capturar una excepción irrecuperable en una capa baja. En la mayoría de los "
+"sistemas, las excepciones no chequeadas y fatales son manejadas en uno de "
+"los primeros cuadros de la pila de llamadas a métodos (por ejemplo, en las "
+"capas más altas) y presenta un mensaje de error al usuario de la aplicación "
+"o se toma alguna otra acción apropiada. Note que Hibernate podría también "
+"lanzar otras excepciones no chequeadas que no sean una "
+"<literal>HibernateException</literal>. Estas no son recuperables y debe "
+"tomarse una acción apropiada."
+
+#. Tag: para
+#, 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 ""
+"Hibernate envuelve <literal>SQLException</literal>s lanzadas mientras se "
+"interactúa con la base de datos en una <literal>JDBCException</literal>. De "
+"hecho, Hibernate intentará convertir la excepción en una subclase de "
+"<literal>JDBCException</literal> más significativa. La "
+"<literal>SQLException</literal> subyacente siempre está disponible por medio "
+"de <literal>JDBCException.getCause()</literal>. Hibernate convierte la "
+"<literal>SQLException</literal> en una subclase de <literal>JDBCException</"
+"literal> apropiada usando el <literal>SQLExceptionConverter</literal> "
+"adjunto a la <literal>SessionFactory</literal>. Por defecto, el "
+"<literal>SQLExceptionConverter</literal> está definido por el dialecto "
+"configurado. Sin embargo, también es posible enchufar una implementación "
+"personalizada . Consulte los javadocs de la clase "
+"<literal>SQLExceptionConverterFactory</literal> para obtener más detalles. "
+"Los subtipos estándar de <literal>JDBCException</literal> son: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal>: indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal>: indica un error con la "
+"comunicación JDBC subyacente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal>: indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal>: indica un problema de gramática o "
+"sintáxis con el SQL publicado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal>: indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal>: indica alguna forma de "
+"violación de restricción de integridad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal>: indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal>: indica un error adquiriendo un "
+"nivel de bloqueo necesario para realizar una operación solicitada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal>: a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal>: una excepción genérica que no "
+"encajó en ninguna de las otras categorías."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "Tiempo de espera de la transacción"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An important feature provided by a managed environment like EJB, that is "
+"never provided for non-managed code, is transaction timeout. Transaction "
+"timeouts ensure that no misbehaving transaction can indefinitely tie up "
+"resources while returning no response to the user. Outside a managed (JTA) "
+"environment, Hibernate cannot fully provide this functionality. However, "
+"Hibernate can at least control data access operations, ensuring that "
+"database level deadlocks and queries with huge result sets are limited by a "
+"defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functionality is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"Una característica importante proporcionada por un entorno administrado como "
+"EJB que nunca es proporcionado para un código no-administrado, es el tiempo "
+"de espera de la transacción. Estos tiempos de espera se aseguran de que "
+"ninguna transacción que se comporte inapropiadamente pueda vincular recursos "
+"mientras no devuelva una respuesta al usuario. Fuera de un entorno "
+"administrado (JTA), Hibernate no puede proporcionar completamente esta "
+"funcionalidad. Sin embargo, Hibernate puede por lo menos controlar las "
+"operaciones de acceso de datos, asegurándose de que los bloqueos a nivel de "
+"base de datos y las consultas con grandes grupos de resultados se encuentran "
+"limitados por un tiempo de espera definido. En un entorno administrado, "
+"Hibernate puede delegar el tiempo de espera de la transacción a JTA. Esta "
+"funcionalidad es abstraída por el objeto <literal>Transaction</literal> de "
+"Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>setTimeout()</literal> cannot be called in a CMT bean, where "
+"transaction timeouts must be defined declaratively."
+msgstr ""
+"<literal>setTimeout()</literal> no se puede llamar en un bean CMT, en donde "
+"se deben definir declarativamente los tiempos de espera de las transacciones."
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "Control de concurrencia optimista"
+
+#. Tag: para
+#, 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 three possible approaches to "
+"writing application code that uses optimistic concurrency. The use cases we "
+"discuss are in the context of long conversations, but version checking also "
+"has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+"El único enfoque consistente con una alta concurrencia y una alta "
+"escalabilidad es el control de concurrencia optimista con versionamiento. El "
+"chequeo de versión utiliza números de versión, o sellos de fecha "
+"(timestamps), para detectar actualizaciones en conflicto y para prevenir la "
+"pérdida de actualizaciones. Hibernate proporciona tres enfoques posibles de "
+"escribir código de aplicación que utilice concurrencia optimista. Los casos "
+"de uso que mostramos se encuentran en el contexto de conversaciones largas, "
+"pero el chequeo de versiones tiene además el beneficio de prevenir la "
+"pérdida de actualizaciones en transacciones individuales de la base de datos."
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "Chequeo de versiones de la aplicación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. The application is forced to carry out its own version "
+"checking to ensure conversation transaction isolation. This approach is the "
+"least efficient in terms of database access. It is the approach most similar "
+"to entity EJBs."
+msgstr ""
+"En una implementación que no tiene mucha ayuda de Hibernate, cada "
+"interacción con la base de datos ocurre en una nueva <literal>Session</"
+"literal> y el desarrollador es el responsable de recargar todas las "
+"intancias persistentes desde la base de datos antes de manipularlas. Este "
+"enfoque fuerza a la aplicación a realizar su propio chequeo de versiones "
+"para asegurar el aislamiento de transacciones de conversaciones. Este "
+"enfoque es el menos eficiente en términos de acceso a la base de datos. Es "
+"el enfoque más similar a los EJBs de entidad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>&lt;"
+"version&gt;</literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"La propiedad <literal>version</literal> se mapea utilizando <literal>&lt;"
+"version&gt;</literal>, e Hibernate la incrementará automáticamente durante "
+"la limpieza si la entidad está desactualizada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are operating in a low-data-concurrency environment, and do not "
+"require version checking, you can use this approach and skip the version "
+"check. In this case, <emphasis>last commit wins</emphasis> is the default "
+"strategy for long conversations. Be aware 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 ""
+"Si está operando un entorno de baja-concurrencia-de-datos y no requiere "
+"chequeo de versiones, puede usar este enfoque y simplemente saltarse el "
+"chequeo de versiones. En ese caso, <emphasis>el último que guarda gana</"
+"emphasis> y será la estrategia por defecto para conversaciones largas. Tenga "
+"en mente que esto podría confundir a los usuarios de la aplicación, pues "
+"podrían experimentar pérdidas de actualizaciones sin mensajes de error ni "
+"oportunidad de fusionar los cambios conflictivos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Manual version checking is only feasible in 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 an extended <literal>Session</"
+"literal> or detached instances as the design paradigm."
+msgstr ""
+"El chequeo manual de versiones es factible sólamente en circunstancias muy "
+"triviales y no es práctico para la mayoría de las aplicaciones. Con "
+"frecuencia se tienen que chequear no sólamente las intancias sólas, sino "
+"también grafos completos de objetos modificados. Hibernate ofrece el chequeo "
+"de versiones automático con el paradigma de diseño de <literal>Session</"
+"literal> larga o de instancias separadas."
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "Sesión extendida y versionado automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"that are used for the whole conversation are known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It is up to "
+"the developer to catch and handle this exception. Common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data."
+msgstr ""
+"Una sóla instancia de <literal>Session</literal> y sus instancias "
+"persistentes se utilizan para toda la convervsación conocida como "
+"<emphasis>sesión-por-conversación</emphasis>. Hibernate chequea las "
+"versiones de instancia en el momento de vaciado, lanzando una excepción si "
+"se detecta una modificación concurrente. Le concierne al desarrollador "
+"capturar y manejar esta excepción. Las opciones comunes son la oportunidad "
+"del usuario de fusionar los cambios, o de recomenzar el proceso empresarial "
+"sin datos desactualizados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application does not version "
+"check or reattach detached instances, nor does it have to reload instances "
+"in every database transaction."
+msgstr ""
+"La <literal>Session</literal> se desconecta de cualquier conexión JDBC "
+"subyacente a la espera de una interacción del usuario. Este enfoque es el "
+"más eficiente en términos de acceso a la base de datos. La aplicación no "
+"necesita por sí misma tratar con el chequeo de versiones, ni re-unir "
+"instancias separadas, ni tiene que recargar instancias en cada transacción "
+"de la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object knows which <literal>Session</literal> it "
+"was loaded in. Beginning a new database transaction on an old session "
+"obtains a new connection and resumes the session. Committing a database "
+"transaction disconnects a session from the JDBC connection and returns the "
+"connection to the pool. After reconnection, to force a version check on data "
+"you are not updating, you can call <literal>Session.lock()</literal> with "
+"<literal>LockMode.READ</literal> on any objects that might have been updated "
+"by another transaction. You do not need to lock any data that you "
+"<emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode."
+"MANUAL</literal> on an extended <literal>Session</literal>, so that only the "
+"last database transaction cycle is allowed to actually persist all "
+"modifications made in this conversation. Only this last database transaction "
+"will include the <literal>flush()</literal> operation, and then "
+"<literal>close()</literal> the session to end the conversation."
+msgstr ""
+"El objeto <literal>foo</literal> sabe en qué <literal>Session</literal> fue "
+"cargado. El dar inicio a una nueva base de datos en una sesión vieja obtiene "
+"una nueva conexión y reanuda la sesión. El guardar una transacción de la "
+"base de datos desconecta una sesión de la conexion JDBC y devuelve la "
+"conexión al pool. Después de la reconexión, para poder forzar una "
+"verificación de versión sobre datos que usted no está actalizando, puede "
+"llamar a <literal>Session.lock()</literal> con <literal>LockMode.READ</"
+"literal> en cualquier objeto que pueda haber sido actualizado por otra "
+"transacción. No necesita bloquear ningún dato que <emphasis>sí esté</"
+"emphasis> actualizando. Usualmente configuraría <literal>FlushMode.MANUAL</"
+"literal> en una <literal>Session</literal> extendida, de manera que de hecho "
+"sólamente se permite persistir el último ciclo de transacción de la base de "
+"datos de todas las modificaciones realizadas en esta conversación. Sólamente "
+"esta última transacción de la base de datos incluiría la operación "
+"<literal>flush()</literal> y luego cierra -<literal>close()</literal>- la "
+"sesión para dar fin a la conversación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time (for example, an <literal>HttpSession</"
+"literal> should be kept as small as possible). As the <literal>Session</"
+"literal> is also the first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. Use a "
+"<literal>Session</literal> only for a single conversation as it will soon "
+"have stale data."
+msgstr ""
+"Este patrón es problemático si la <literal>Session</literal> es demasiado "
+"grande para almacenarla durante el tiempo para pensar del usuario, por "
+"ejemplo, una <literal>HttpSession</literal> se debe mantener tan pequeña "
+"como sea posible. Como la <literal>Session</literal> también lo es el caché "
+"de primer nivel (obligatorio) y comprende todos los objetos cargados, "
+"probablemente podemos utilizar esta estrategia sólamente para unos pocos "
+"ciclos de pedido/respuesta. Debe utilizar una <literal>Session</literal> "
+"sólamente para una conversación única ya que pronto también tendrá  datos "
+"añejos."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Earlier versions of Hibernate required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect."
+msgstr ""
+"Las versiones anteriores de Hibernate necesitaban desconexión explícita y "
+"reconexión de una <literal>Session</literal>. Estos métodos ya no se "
+"aprueban ya que tienen el mismo efecto que dar inicio o finalizar a una "
+"transacción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Keep the disconnected <literal>Session</literal> close to the persistence "
+"layer. Use an EJB stateful session bean to hold the <literal>Session</"
+"literal> in a three-tier environment. Do not transfer it to the web layer, "
+"or even serialize it to a separate tier, to store it in the "
+"<literal>HttpSession</literal>."
+msgstr ""
+"Mantenga la <literal>Session</literal> desconectada cerca a la capa de "
+"persistencia. Use un bean de sesión EJB con estado para mantener la "
+"<literal>Session</literal> en un entorno de tres capas . No la transfiera a "
+"la capa web ni la serialice en una capa separada para almacenarla en la "
+"<literal>HttpSession</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki "
+"for examples."
+msgstr ""
+"El patrón de sesión extendido, o <emphasis>sesión-por-conversación</"
+"emphasis>, es más dificil de implementar con la administración de contexto "
+"de sesión actual. Necesita proporcionar su propia implementación de la "
+"<literal>CurrentSessionContext</literal> para esto, vea el Wiki de Hibernate "
+"para obtener más ejemplos."
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "Objetos separados y versionado automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. 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 <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"Cada interacción con el almacenamiento persistente ocurre en una nueva "
+"<literal>Session</literal>. Sin embargo, las mismas instancias persistentes "
+"son reutilizadas para cada interacción con la base de datos. La aplicación "
+"manipula el estado de las instancias separadas cargadas originalmente en "
+"otra <literal>Session</literal> y luego las readjunta usando "
+"<literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</"
+"literal>, o <literal>Session.merge()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occurred."
+msgstr ""
+"De nuevo, Hibernate chequeará las versiones de la instancia durante el "
+"vaciado, lanzando una excepción si tuvieron lugar conflictos en las "
+"actualizaciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also call <literal>lock()</literal> instead of <literal>update()</"
+"literal>, and use <literal>LockMode.READ</literal> (performing a version "
+"check and bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"También puede llamar a <literal>lock()</literal> en lugar de <literal>update"
+"()</literal> y utilizar <literal>LockMode.READ</literal> (realizando un "
+"chequeo de versión, evitando todos los cachés) si está seguro de que el "
+"objeto no ha sido modificado."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "Personalización del versionado automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"Puede deshabilitar el incremento de la versión automática de Hibernate para "
+"ciertas propiedades y colecciones en particular estableciendo el atributo de "
+"mapeo <literal>optimistic-lock</literal> como <literal>false</literal>. "
+"Hibernate entonces ya no incrementará más las versiones si la propiedad se "
+"encuentra desactualizada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Legacy database schemas are often static and cannot be modified. Or, other "
+"applications might access the same database and will not know how to handle "
+"version numbers or even timestamps. In both cases, versioning cannot rely on "
+"a particular column in a table. To force a version check with a comparison "
+"of the state of all fields in a row but without a version or timestamp "
+"property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal>&lt;class&gt;</literal> mapping. This conceptually only works if "
+"Hibernate can compare the old and the new state (i.e., if you use a single "
+"long <literal>Session</literal> and not session-per-request-with-detached-"
+"objects)."
+msgstr ""
+"Los esquemas heredados de la base de datos con frecuencia son estáticos y no "
+"pueden ser modificados. Inclusive otras aplicaciones podrían también acceder "
+"la misma base de datos y no saber cómo manejar los números de versión ni los "
+"sellos de fecha. En ambos casos, el versionado no puede confiarse a una "
+"columna en particular en una tabla. Para forzar un chequeo de versiones sin "
+"un mapeo de propiedad de versión o sello de fecha, con una comparación del "
+"estado de todos los campos en una fila, active <literal>optimistic-lock=\"all"
+"\"</literal> en el mapeo de <literal>&lt;class&gt;</literal>. Esto funciona "
+"conceptualmente sólamente si Hibernate puede comparar el estado viejo y el "
+"nuevo, es decir, si usa una sóla <literal>Session</literal> larga y no "
+"sesión-por-petición-con-instancias-separadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Concurrent modification can be permitted in instances where the changes that "
+"have been made do not overlap. If you set <literal>optimistic-lock=\"dirty"
+"\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate "
+"will only compare dirty fields during flush."
+msgstr ""
+"Las modificaciones simultáneas pueden permitirse en instancias en tanto los "
+"cambios que se hayan realizado no se superpongan. Si establece "
+"<literal>optimistic-lock=\"dirty\"</literal> al mapear la <literal>&lt;"
+"class&gt;</literal>, Hibernate sólo comparará los campos desactualizados "
+"durante el vaciado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with a full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement, with an appropriate <literal>WHERE</literal> clause, per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate may execute unnecessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did occur "
+"before updating the row."
+msgstr ""
+"En ambos casos, con columnas de versión/sello de fecha dedicadas o con "
+"comparación de campos completos/desactualizados, Hibernate utiliza una sóla "
+"declaración <literal>UPDATE</literal> (con una cláusula <literal>WHERE</"
+"literal> apropiada) por entidad para ejecutar el chequeo de versiones y "
+"actualizar la información. Si utiliza una persistencia transitiva para la re-"
+"unión en cascada de entidades asociadas, Hibernate podría ejecutar "
+"actualizaciones innecesarias. Esto usualmente no es problema, pero podrían "
+"ejecutarse disparadores (triggers) <emphasis>enactualizazción</emphasis> en "
+"la base de datos incluso cuando no se haya hecho ningún cambio a las "
+"instancias separadas. Puede personalizar este comportamiento estableciendo "
+"<literal>select-before-update=\"true\"</literal> en el mapeo de <literal>&lt;"
+"class&gt;</literal>, forzando a Hibernate a <literal>SELECT</literal> la "
+"instancia para asegurar que las actualizaciones realmente ocurran, antes de "
+"actualizar la fila."
+
+#. Tag: title
+#, no-c-format
+msgid "Pessimistic locking"
+msgstr "Bloqueo pesimista "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not intended that users spend much time worrying about locking "
+"strategies. It is usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may wish to obtain exclusive pessimistic locks or re-obtain "
+"locks at the start of a new transaction."
+msgstr ""
+"No se pretende que los usuarios tomen mucho tiempo preocupándose de las "
+"estrategias de bloqueo. Usualmente es suficiente con especificar un nivel de "
+"aislamiento para las conexiones JDBC y entonces simplemente dejar que la "
+"base de datos haga todo el trabajo. Sin embargo, los usuarios avanzados a "
+"veces pueden obtener bloqueos exclusivos pesimistas, o reobtener bloqueos al "
+"comienzo de una nueva transacción."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database; it never "
+"lock objects in memory."
+msgstr ""
+"Hibernate siempre usará el mecanismo de bloqueo de la base de datos, nunca "
+"el bloqueo de objetos en memoria."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"La clase <literal>LockMode</literal> define los diferentes niveles de "
+"bloqueo que Hibernate puede adquirir. Un bloqueo se obtiene por medio de los "
+"siguientes mecanismos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal> se adquiere automáticamente cuando "
+"Hibernate actualiza o inserta una fila."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal> se puede ser adquirir bajo petición "
+"explícita del usuario usando <literal>SELECT ... FOR UPDATE</literal> en "
+"bases de datos que soporten esa sintáxis."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> se puede adquirir bajo petición "
+"explícita del usuario usando un <literal>SELECT ... FOR UPDATE NOWAIT</"
+"literal> bajo Oracle."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. It can be "
+"re-acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal> se adquiere automáticamente cuando "
+"Hibernate lee los datos bajo los niveles de aislamiento de lectura repetible "
+"o serializable. Se puede readquirir por pedido explícito del usuario."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal> representa la ausencia de un bloqueo. Todos "
+"los objetos se pasan a este modo de bloqueo al final de una "
+"<literal>Transaction</literal>. Los objetos asociados con una sesión por "
+"medio de una llamada a <literal>update()</literal> o <literal>saveOrUpdate()"
+"</literal> también comienzan en este modo de bloqueo."
+
+#. Tag: para
+#, no-c-format
+msgid "The \"explicit user request\" is expressed in one of the following ways:"
+msgstr ""
+"La \"petición explícita del usuario\" se expresa en una de las siguientes "
+"formas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"Una llamada a <literal>Session.load()</literal>, especificando un "
+"<literal>LockMode</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "Una llamada a <literal>Session.lock()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "Una llamada a <literal>Query.setLockMode()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"Si se llama a <literal>Session.load()</literal> con <literal>UPGRADE</"
+"literal> o <literal>UPGRADE_NOWAIT</literal>, y el objeto pedido no ha sido "
+"cargado todavía por la sesión, el objeto es cargado usando "
+"<literal>SELECT ... FOR UPDATE</literal>. Si se llama a <literal>load()</"
+"literal> para un objeto que ya esté cargado con un bloqueo menos restrictivo "
+"que el pedido, Hibernate llama a <literal>lock()</literal> para ese objeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used."
+msgstr ""
+"<literal>Session.lock()</literal> realiza un chequeo de número de versión si "
+"el modo de bloqueo especificado es <literal>READ</literal>, "
+"<literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>. En el caso "
+"de <literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>, se usa "
+"<literal>SELECT ... FOR UPDATE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the requested lock mode is not supported by the database, Hibernate uses "
+"an appropriate alternate mode instead of throwing an exception. This ensures "
+"that applications are portable."
+msgstr ""
+"Si la base de datos no soporta el modo de bloqueo solicitado, Hibernate usa "
+"un modo opcional apropiado en lugar de lanzar una excepción. Esto asegura "
+"que las aplicaciones serán portátiles."
+
+#. Tag: title
+#, no-c-format
+msgid "Connection release modes"
+msgstr "Modos de liberación de la conexión"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the legacies of Hibernate 2.x JDBC connection management meant that a "
+"<literal>Session</literal> would obtain a connection when it was first "
+"required and then maintain that connection until the session was closed. "
+"Hibernate 3.x introduced the notion of connection release modes that would "
+"instruct a session how to handle its JDBC connections. The following "
+"discussion is pertinent only to connections provided through a configured "
+"<literal>ConnectionProvider</literal>. User-supplied connections are outside "
+"the breadth of this discussion. The different release modes are identified "
+"by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</"
+"literal>:"
+msgstr ""
+"La herencia (2x) de Hibernate en relación con la administración de la "
+"conexion JDBC fue que una <literal>Session</literal> obtendría una conexión "
+"cuando se necesitara por primera vez y luego la mantendría hasta que se "
+"cerrara la sesión. Hibernate 3.x introdujo la noción de modos de liberación "
+"de conexión para decirle a la sesión como manejar sus conexiones JDBC. La "
+"siguiente discusión sólamente es pertinente para las conexiones provistas "
+"por medio de un <literal>ConnectionProvider</literal> configurado. Las "
+"conexiones provistas por el usuario no se discuten aquí. Los diferentes "
+"modos de liberación se identifican por los valores numerados de <literal>org."
+"hibernate.ConnectionReleaseMode</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal>: is the legacy behavior described above. The "
+"Hibernate session obtains a connection when it first needs to perform some "
+"JDBC access and maintains that connection until the session is closed."
+msgstr ""
+"<literal>ON_CLOSE</literal>: es el comportamiento heredado descrito "
+"anteriormente. La sesión de Hibernate obtiene una conexión cuando necesita "
+"acceder a JDBC la primera vez y mantiene esa conexión hasta que se cierra la "
+"sesión."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal>: releases connections after a "
+"<literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal>: libera las conecciones después de que "
+"se ha completado una <literal>org.hibernate.Transaction</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): "
+"releases connections after every statement execution. This aggressive "
+"releasing is skipped if that statement leaves open resources associated with "
+"the given session. Currently the only situation where this occurs is through "
+"the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (también se conoce como una liberación "
+"agresiva): libera conexiones después de cada ejecución de una declaración. "
+"Se salta esta liberación agresiva si la declaración deja abiertos recursos "
+"asociados con la sesión dada. Actualmente la única situación donde ocurre "
+"esto es por medio del uso de <literal>org.hibernate.ScrollableResults</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values "
+"are as follows:"
+msgstr ""
+"El parámetro de configuración <literal>hibernate.connection.release_mode</"
+"literal> se utiliza para especificar el modo de liberación a utilizar. Los "
+"valores posibles son los siguientes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto</literal> (the default): this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this "
+"default behavior as failures due to the value of this setting tend to "
+"indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (predeterminado): esta opción delega al modo de "
+"liberación devuelto por el método <literal>org.hibernate.transaction."
+"TransactionFactory.getDefaultReleaseMode()</literal>. Para "
+"JTATransactionFactory, esto devuelve ConnectionReleaseMode.AFTER_STATEMENT; "
+"para JDBCTransactionFactory, esto devuelve ConnectionReleaseMode."
+"AFTER_TRANSACTION. No cambie este comportamiento predeterminado ya que las "
+"fallas debido a este valor de esta configuración tienden a indicar errores y/"
+"o suposiciones en el código del usuario."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This "
+"setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+"<literal>on_close</literal>: usa ConnectionReleaseMode.ON_CLOSE. Esta "
+"configuración se deja para la compatibilidad con versiones anteriores, pero "
+"no se recomienda para nada su utilización."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_transaction</literal>: uses ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode, connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal>: utiliza ConnectionReleaseMode."
+"AFTER_TRANSACTION. Esta configuración no se debe utilizar en entornos JTA. "
+"También note que con ConnectionReleaseMode.AFTER_TRANSACTION, si se "
+"considera que una sesión se encuentra en modo auto-commit, las conexiones "
+"serán liberada como si el modo de liberación fuese AFTER_STATEMENT."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_statement</literal>: uses ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time you make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter if we re-establish the same connection."
+msgstr ""
+"<literal>after_statement</literal>: usa ConnectionReleaseMode."
+"AFTER_STATEMENT. Además se consulta la <literal>ConnectionProvider</literal> "
+"configurada para ver si soporta esta característica "
+"<literal>supportsAggressiveRelease()</literal>. Si no, el modo de liberación "
+"se vuelve a establecer como ConnectionReleaseMode.AFTER_TRANSACTION. Esta "
+"configuración sólamente es segura en entornos en donde podemos re-adquirir "
+"la misma conexión JDBC subyacente cada vez que llamamos a "
+"<literal>ConnectionProvider.getConnection()</literal> o en entornos auto-"
+"commit, en donde no importa si recibimos la misma conexión."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1776 @@
+# translation of tutorial.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-15 13:03+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Intended for new users, this chapter provides an step-by-step introduction "
+"to Hibernate, starting with a simple application using an in-memory "
+"database. The tutorial is based on an earlier tutorial developed by Michael "
+"Gloegl. All code is contained in the <filename>tutorials/web</filename> "
+"directory of the project source."
+msgstr ""
+"Dirigido a los nuevos usuarios, este capítulo brinda una introducción a "
+"Hibernate paso por paso, empezando con una aplicación simple usando una base "
+"de datos en memoria. Este tutorial se basa en un tutorial anterior que "
+"Michael Gloegl desarrolló. Todo el código se encuentra en el directorio "
+"<filename>tutorials/web</filename> de la fuente del proyecto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial expects the user have knowledge of both Java and SQL. If you "
+"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
+"good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+"Este tutorial se basa en que el usuario tenga conocimiento de Java y SQL. Si "
+"tiene un conocimiento muy limitado de JAVA o SQL, le aconsejamos que empiece "
+"con una buena introducción a esta tecnología antes de tratar de aprender "
+"sobre Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The distribution contains another example application under the "
+"<filename>tutorial/eg</filename> project source directory."
+msgstr ""
+"La distribución contiene otra aplicación de ejemplo bajo el directorio "
+"fuente del proyecto <filename>tutorial/eg</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "Parte 1 - La primera aplicación Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this example, we will set up a small database application that can store "
+"events we want to attend and information about the host(s) of these events."
+msgstr ""
+"Para este ejemplo, vamos a configurar una aplicación base de datos pequeña "
+"que pueda almacenar eventos a los que queremos asistir e información sobre "
+"los anfitriones de estos eventos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although you can use whatever database you feel comfortable using, we will "
+"use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java "
+"database) to avoid describing installation/setup of any particular database "
+"servers."
+msgstr ""
+"Aunque puede utilizar cualquier base de datos con la que se sienta bien, "
+"vamos a usar <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (una base de "
+"datos Java en-memoria) para evitar describir la instalación/configuración de "
+"cualquier servidor de base de datos en particular."
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr "Configuración"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first thing we need to do is to set up the development environment. We "
+"will be using the \"standard layout\" advocated by alot of build tools such "
+"as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has "
+"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
+"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
+"ulink>. As this tutorial is to be a web application, we will be creating and "
+"making use of <filename>src/main/java</filename>, <filename>src/main/"
+"resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+"Lo primero que tenemos que hacer es configurar el entorno de desarrollo. "
+"Vamos a utilizar el \"diseño estándar\" apoyado por muchas herramientas de "
+"construcción tal como <ulink url=\"http://maven.org\">Maven</ulink>. Maven, "
+"en particular, tiene un buen recurso que describe este <ulink url=\"http://"
+"maven.apache.org/guides/introduction/introduction-to-the-standard-directory-"
+"layout.html\">diseño</ulink>. Como este tutorial va a ser una aplicación "
+"web, vamos a crear y a utilizar los directorios <filename>src/main/java</"
+"filename>, <filename>src/main/resources</filename> y <filename>src/main/"
+"webapp</filename>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will be using Maven in this tutorial, taking advantage of its transitive "
+"dependency management capabilities as well as the ability of many IDEs to "
+"automatically set up a project for us based on the maven descriptor."
+msgstr ""
+"Vamos a usar Maven en este tutorial, sacando ventaja de sus funcionalidades "
+"de administración de dependencias transitivas así como la habilidad de "
+"muchos IDEs para configurar automáticamente un proyecto para nosotros con "
+"base en el descriptor maven."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not a requirement to use Maven. If you wish to use something else to "
+"build this tutoial (such as Ant), the layout will remain the same. The only "
+"change is that you will need to manually account for all the needed "
+"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> providing transitive dependency management you would "
+"still use the dependencies mentioned below. Otherwise, you'd need to grab "
+"<emphasis>all</emphasis> dependencies, both explicit and transitive, and add "
+"them to the project's classpath. If working from the Hibernate distribution "
+"bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts "
+"in the <filename>lib/required</filename> directory and all files from either "
+"the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/"
+"javassist</filename> directory; additionally you will need both the servlet-"
+"api jar and one of the slf4j logging backends."
+msgstr ""
+"No es un requerimiento el uso de Maven. Si desea utilizar alguna otra cosa para "
+"construir este tutorial (tal como Ant), el diseño sigue siendo el mismo. El "
+"único cambio es que necesitará dar cuenta manualmente por todas las "
+"dependencias que se necesitan. Si usa algo como <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> para brindar administración de dependencias transitivas "
+"todavía utilizaría las dependencias que mencionamos anteriormente. De otra "
+"manera, necesitará encontrar <emphasis>todas</emphasis> las dependencias, explícitas y "
+"transitivas y agregarlas a la ruta de clase del proyecto. Si trabaja desde "
+"el paquete de distribución Hibernate, esto significaría que "
+"<filename>hibernate3.jar</filename>, todos los artefactos en el directorio "
+"<filename>lib/required</filename> y todos los archivos del directorio "
+"<filename>lib/bytecode/cglib</filename> o <filename>lib/bytecode/javassist</"
+"filename>; además necesitará el servlet-api jar y uno de los backends de "
+"registro slf4j."
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+"Guarde este archivo como <filename>pom.xml</filename> en el directorio raíz "
+"del proyecto."
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "La primera clase"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, we create a class that represents the event we want to store in the "
+"database; it is a simple JavaBean class with some properties:"
+msgstr ""
+"Luego creamos una clase que representa el evento que queremos almacenar en "
+"la base de datos, es una clase JavaBean simple con algunas propiedades:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This class uses standard JavaBean naming conventions for property getter and "
+"setter methods, as well as private visibility for the fields. Although this "
+"is the recommended design, it is not required. Hibernate can also access "
+"fields directly, the benefit of accessor methods is robustness for "
+"refactoring."
+msgstr ""
+"Esta clase utiliza convenciones de nombrado estándares de JavaBean para los "
+"métodos de propiedades getter y setter así como también visibilidad privada "
+"para los campos. Se recomienda este diseño, pero no se exige. Hibernate "
+"también puede acceder a los campos directamente, los métodos de acceso "
+"benefician la robustez de la refactorización. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> property holds a unique identifier value for a "
+"particular event. All persistent entity classes (there are less important "
+"dependent classes as well) will need such an identifier property if we want "
+"to use the full feature set of Hibernate. In fact, most applications, "
+"especially web applications, need to distinguish objects by identifier, so "
+"you should consider this a feature rather than a limitation. However, we "
+"usually do not manipulate the identity of an object, hence the setter method "
+"should be private. Only Hibernate will assign identifiers when an object is "
+"saved. Hibernate can access public, private, and protected accessor methods, "
+"as well as public, private and protected fields directly. The choice is up "
+"to you and you can match it to fit your application design."
+msgstr ""
+"La propiedad <literal>id</literal> tiene un valor identificador único para "
+"un evento en particular. Todas las clases de entidad persistentes "
+"necesitarán tal propiedad identificadora si queremos utilizar el grupo "
+"completo de funcionalidades de Hibernate (también algunas clases "
+"dependientes menos importantes). De hecho, la mayoría de las aplicaciones "
+"(en especial las aplicaciones web) necesitan distinguir los objetos por "
+"identificador, así que usted debe tomar esto como una funcionalidad más que "
+"una limitación. Sin embargo, usualmente no manipulamos la identidad de un "
+"objeto, por lo tanto, el método setter debe ser privado. Sólamente Hibernate "
+"asignará identificadores cuando se guarde un objeto. Como se puede ver, "
+"Hibernate puede acceder a métodos de acceso públicos, privados y protegidos, "
+"así como también a campos directamente públicos, privados y protegidos. "
+"Puede escoger y hacer que se ajuste a su diseño de su aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The no-argument constructor is a requirement for all persistent classes; "
+"Hibernate has to create objects for you, using Java Reflection. The "
+"constructor can be private, however package or public visibility is required "
+"for runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"El constructor sin argumentos es un requerimiento para todas las clases "
+"persistentes, Hibernate tiene que crear objetos por usted utilizando Java "
+"Reflection. El constructor puede ser privado; sin embargo, se necesita la "
+"visibilidad del paquete para generar proxies en tiempo de ejecución y para "
+"la recuperación de datos de manera efectiva sin la instrumentación del "
+"código byte."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</"
+"filename> directory."
+msgstr ""
+"Duarde este archivo en el directorio <filename>src/main/java/org/hibernate/"
+"tutorial/domain</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "El archivo de mapeo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate necesita saber cómo cargar y almacenar objetos de la clase "
+"persistente. En este punto es donde entra en juego el archivo de mapeo de "
+"Hibernate. Este archivo le dice a Hibernate a que tabla tiene que acceder en "
+"la base de datos, y que columnas debe utilizar en esta tabla."
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "La estructura básica de un archivo de mapeo se ve así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate DTD is sophisticated. You can use it for auto-completion of XML "
+"mapping elements and attributes in your editor or IDE. Opening up the DTD "
+"file in your text editor is the easiest way to get an overview of all "
+"elements and attributes, and to view the defaults, as well as some comments. "
+"Hibernate will not load the DTD file from the web, but first look it up from "
+"the classpath of the application. The DTD file is included in "
+"<filename>hibernate-core.jar</filename> (it is also included in the "
+"<filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+"El DTD de Hibernate es sofisticado. Puede utilizarlo para autocompletar los "
+"elementos y atributos XML de mapeo en su editor o IDE. Abrir el archivo DTD "
+"en su editor de texto es la manera más fácil para obtener una sinopsis de "
+"todos los elementos y atributos y para ver los valores por defecto, así como "
+"algunos de los comentarios. Note que Hibernate no cargará el fichero DTD de "
+"la web, sino que primero lo buscará en la ruta de clase de la aplicación. El "
+"archivo DTD se encuentra incluido en <filename>hibernate-core.jar</filename> "
+"(también en <filename>hibernate3.jar</filename> si está usando el paquete de "
+"la distribución)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is, of course, not optional."
+msgstr ""
+"Omitiremos la declaración de DTD en los ejemplos posteriores para hacer más "
+"corto el código. Esto no es opcional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need a mapping to a table in the SQL database:"
+msgstr ""
+"Entre las dos etiquetas <literal>hibernate-mapping</literal>, incluya un "
+"elemento <literal>class</literal>. Todas las clases de entidad persistentes "
+"(de nuevo, podrían haber clases dependientes más adelante, las cuales no son "
+"entidades de primera clase) necesitan de dicho mapeo en una tabla en la base "
+"de datos SQL:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>. Each "
+"instance is now represented by a row in that table. Now we can continue by "
+"mapping the unique identifier property to the tables primary key. As we do "
+"not want to care about handling this identifier, we configure Hibernate's "
+"identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+"Hasta ahora le hemos dicho a Hibernate cómo persistir y cargar el objeto de "
+"clase <literal>Event</literal> a la tabla <literal>EVENTS</literal>. Cada "
+"instancia se encuentra representada por una fila en esa tabla. Ahora podemos "
+"continuar mapeando la propiedad identificadora única a la clave primaria de "
+"la tabla. Ya que no queremos preocuparnos por el manejo de este "
+"identificador, configuramos la estrategia de generación del identificador de "
+"Hibernate para una columna clave primaria sustituta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifier "
+"property. The <literal>name=\"id\"</literal> mapping attribute declares the "
+"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
+"</literal> and <literal>setId()</literal> methods to access the property. "
+"The column attribute tells Hibernate which column of the <literal>EVENTS</"
+"literal> table holds the primary key value."
+msgstr ""
+"El elemento <literal>id</literal> es la declaración de la propiedad "
+"identificadora. El atributo de mapeo <literal>name=\"id\"</literal> declara "
+"el nombre de la propiedad JavaBean y le dice a Hibernate que utilice los "
+"métodos <literal>getId()</literal> y <literal>setId()</literal> para acceder "
+"a la propiedad. El atributo columna le dice a Hibernate qué columna de la "
+"tabla <literal>EVENTS</literal> tiene el valor de la llave principal."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The nested <literal>generator</literal> element specifies the identifier "
+"generation strategy (aka how are identifier values generated?). In this case "
+"we choose <literal>native</literal>, which offers a level of portability "
+"depending on the configured database dialect. Hibernate supports database "
+"generated, globally unique, as well as application assigned, identifiers. "
+"Identifier value generation is also one of Hibernate's many extension points "
+"and you can plugin in your own strategy."
+msgstr ""
+"El elemento anidado <literal>generator</literal> especifica la estrategia de "
+"generación del identificador (también conocidos como ¿cómo se generan los "
+"valores del identificador?). En este caso escogimos <literal>native</"
+"literal>, el cual ofrece un nivel de qué tan portátil es dependiendo del "
+"dialecto configurado de la base de datos. Hibernate soporta identificadores "
+"generados por la base de datos, globalmente únicos así como asignados por la "
+"aplicación. La generación del valor del identificador también es uno de los "
+"muchos puntos de extensión de Hibernate y puede conectar su propia "
+"estrategia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>native</literal> is no longer consider the best strategy in terms "
+"of portability. for further discussion, see <xref linkend=\"portability-idgen"
+"\" />"
+msgstr ""
+"<literal>native</literal> ya no se considera como la mejor estrategia en "
+"términos de portabilidad. Para obtener mayor información consulte <xref linkend=\"portability-idgen"
+"\" />. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lastly, we need to tell Hibernate about the remaining entity class "
+"properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+"Por último es necesario decirle a Hibernate sobre las porpiedades de clase "
+"de entidad que quedan. Por defecto, ninguna propiedad de la clase se "
+"considera persistente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similar to the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. In this case, Hibernate will search for "
+"<literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle"
+"()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+"Al igual que con el elemento <literal>id</literal>, el atributo "
+"<literal>name</literal> del elemento <literal>property</literal> le dice a "
+"Hibernate que métodos getter y setter utilizar. Así que en este caso, "
+"Hibernate buscará los métodos <literal>getDate()</literal>, <literal>setDate"
+"()</literal>, <literal>getTitle()</literal> y <literal>setTitle()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> does "
+"not? Without the <literal>column</literal> attribute, Hibernate by default "
+"uses the property name as the column name. This works for <literal>title</"
+"literal>, however, <literal>date</literal> is a reserved keyword in most "
+"databases so you will need to map it to a different name."
+msgstr ""
+"¿Por qué el mapeo de la propiedad <literal>date</literal> incluye el "
+"atributo <literal>column</literal>, pero el de <literal>title</literal> no? "
+"Sin el atributo <literal>column</literal> Hibernate utiliza, por defecto, el "
+"nombre de propiedad como nombre de la columna. Esto funciona bien para "
+"<literal>title</literal>. Sin embargo, <literal>date</literal> es una "
+"palabra clave reservada en la mayoría de las bases de datos, así que es "
+"mejor que la mapeamos a un nombre diferente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>title</literal> mapping also lacks a <literal>type</literal> "
+"attribute. The types declared and used in the mapping files are not Java "
+"data types; they are not SQL database types either. These types are called "
+"<emphasis>Hibernate mapping types</emphasis>, converters which can translate "
+"from Java to SQL data types and vice versa. Again, Hibernate will try to "
+"determine the correct conversion and mapping type itself if the "
+"<literal>type</literal> attribute is not present in the mapping. In some "
+"cases this automatic detection using Reflection on the Java class might not "
+"have the default you expect or need. This is the case with the "
+"<literal>date</literal> property. Hibernate cannot know if the property, "
+"which is of <literal>java.util.Date</literal>, should map to a SQL "
+"<literal>date</literal>, <literal>timestamp</literal>, or <literal>time</"
+"literal> column. Full date and time information is preserved by mapping the "
+"property with a <literal>timestamp</literal> converter."
+msgstr ""
+"El mapeo de <literal>title</literal> carece de un atributo <literal>type</"
+"literal>. Los tipos que declaramos y utilizamos en los archivos de mapeo no "
+"son tipos de datos Java. Tampoco son tipos de base de datos SQL. Estos tipos "
+"se llaman <emphasis>tipos de mapeo Hibernate </emphasis>, convertidores que "
+"pueden traducir de tipos de datos de Java a SQL y viceversa. De nuevo, "
+"Hibernate tratará de determinar el tipo correcto de conversión y de mapeo "
+"por sí mismo si el atributo <literal>type</literal> no se encuentra presente "
+"en el mapeo. En algunos casos esta detección automática (utilizando "
+"Reflection en la clase Java) puede que no tenga lo que usted espera o "
+"necesita. Este es el caso de la propiedad <literal>date</literal>. Hibernate "
+"no puede saber is la propiedad, la cual es de <literal>java.util.Date</"
+"literal>, debe mapear a una columna <literal>date</literal>, "
+"<literal>timestamp</literal> o <literal>time</literal> de SQL. Por medio de "
+"un convertidor <literal>timestamp</literal>, mapeamos la propiedad y "
+"mantenemos la información completa sobre la hora y fecha."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes this mapping type determination using reflection when the "
+"mapping files are processed. This can take time and resources, so if startup "
+"performance is important you should consider explicitly defining the type to "
+"use."
+msgstr ""
+"Hibernate realiza esta determinación de tipo de mapeo usando reflection "
+"cuando se procesan los archivos de mapeo. Esto puede tomar tiempo y recursos "
+"así que el rendimiento al arrancar es importante entonces debe considerar el "
+"definir explícitamente el tipo a usar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this mapping file as <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+"Guarde este archivo de mapeo como <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Configuración de Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this point, you should have the persistent class and its mapping file in "
+"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
+"run in \"server mode\""
+msgstr ""
+"En este momento debe tener la clase persistente y su archivo de mapeo. Ahora "
+"debe configurar Hibernate. Primero vamos a configurar HSQLDB para que "
+"ejecute en \"modo de servidor\""
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr "Hacemos esto o lo otro y los datos permanecen entre ejecuciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will utilize the Maven exec plugin to launch the HSQLDB server by "
+"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
+"it start up and bind to a TCP/IP socket; this is where our application will "
+"connect later. If you want to start with a fresh database during this "
+"tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</"
+"filename> directory, and start HSQLDB again."
+msgstr ""
+"Vamos a utilizar el plugin de ejecución Maven para lanzar el servidor HSQLDB "
+"ejecutando: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command>.Lo verá "
+"iniciando y vinculandose a un enchufe TCP/IP, allí es donde nuestra "
+"aplicación se conectará más adelante. Si quiere dar inicio con una base de "
+"datos fresca durante este tutorial, apague HSQLDB, borre todos los archivos "
+"en el directorio <filename>target/data</filename> e inicie HSQLDB de nuevo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will be connecting to the database on behalf of your application, "
+"so it needs to know how to obtain connections. For this tutorial we will be "
+"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate comes with support for two third-"
+"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. However, we will be using the Hibernate built-in "
+"connection pool for this tutorial."
+msgstr ""
+"Hibernate se conectará a la base de datos de parte de su aplicación así que "
+"necesita saber cómo obtener conexiones. Para este tutorial vamos a utilizar "
+"un pool de conexiones autónomo (opuesto a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate viene con soporte para dos pools de "
+"conexiones JDBC de código abierto de terceros: <ulink url=\"https://"
+"sourceforge.net/projects/c3p0\">c3p0</ulink> y <ulink url=\"http://proxool."
+"sourceforge.net/\">proxool</ulink>. Sin embargo, vamos a utilizar el pool de "
+"conexiones incluido de Hibernate para este tutorial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in Hibernate connection pool is in no way intended for production "
+"use. It lacks several features found on any decent connection pool."
+msgstr ""
+"El pool de conexiones de Hibernate no está diseñado para utilizarse en "
+"producción. Le faltan varias funcionalidades que se encuentran en cualquier pool de conexiones decente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</"
+"literal> file, or even complete programmatic setup. Most users prefer the "
+"XML configuration file:"
+msgstr ""
+"Para la configuración de Hibernate, podemos utilizar un archivo "
+"<literal>hibernate.properties</literal> simple, un archivo "
+"<literal>hibernate.cfg.xml</literal> un poco más sofisticado, o incluso una "
+"configuración completamente programática. La mayoría de los usuarios "
+"prefieren el archivo de configuración XML:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr "Observe que este archivo de configuración especifica un DTD diferente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory "
+"is a global factory responsible for a particular database. If you have "
+"several databases, for easier startup you should use several <literal>&lt;"
+"session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+"Configure la <literal>SessionFactory</literal> de Hibernate. SessionFactory "
+"es una fábrica global responsable de una base de datos en particular. Si "
+"usted tiene varias bases de datos, para un inicio más fácil utilice varias "
+"configuraciones <literal>&lt;session-factory&gt;</literal> en varios "
+"archivos de configuración."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+"Los primeros cuatro elementos <literal>property</literal> contienen la "
+"configuración necesaria para la conexión JDBC. El elemento "
+"<literal>property</literal> dialecto especifica la variante SQL en "
+"particular que Hibernate genera."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases, Hibernate is able to properly determine which dialect to use. "
+"See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+"Hibernate tiene la habilidad de determinar correctamente qué dialecto "
+"utilizar en la mayoría de los casos. Consulte <xref linkend=\"portability-dialectresolver\" /> para obtener mayor información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's automatic session management for persistence contexts is "
+"particularly useful in this context. The <literal>hbm2ddl.auto</literal> "
+"option turns on automatic generation of database schemas directly into the "
+"database. This can also be turned off by removing the configuration option, "
+"or redirected to a file with the help of the <literal>SchemaExport</literal> "
+"Ant task. Finally, add the mapping file(s) for persistent classes to the "
+"configuration."
+msgstr ""
+"La administración de la sesión automática de Hibernate para contextos de "
+"persistencia es particularmente útil en este contexto. La opción "
+"<literal>hbm2ddl.auto</literal> activa la generación automática de los "
+"esquemas de la base de datos directamente en la base de datos. Esto se puede "
+"desactivar, eliminando la opción de configuración o redirigiéndolo a un "
+"archivo con la ayuda de la tarea de Ant <literal>SchemaExport</literal>. "
+"Finalmente, agregue a la configuración el/los fichero(s) de mapeo para "
+"clases persistentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>hibernate.cfg.xml</filename> into the "
+"<filename>src/main/resources</filename> directory."
+msgstr ""
+"Guarde este archivo como <filename>hibernate.cfg.xml</filename> en el "
+"directorio <filename>src/main/resources</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Building with Maven"
+msgstr "Construcción con Maven"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now build the tutorial with Maven. You will need to have Maven "
+"installed; it is available from the <ulink url=\"http://maven.apache.org/"
+"download.html\">Maven download page</ulink>. Maven will read the <filename>/"
+"pom.xml</filename> file we created earlier and know how to perform some "
+"basic project tasks. First, lets run the <literal>compile</literal> goal to "
+"make sure we can compile everything so far:"
+msgstr ""
+"Ahora vamos a construir el tutorial con Maven. Es necesario que tenga "
+"instalado Maven; se encuentra disponible en la <ulink url=\"http://maven."
+"apache.org/download.html\">página de descargas Maven</ulink>. Maven leerá el "
+"archivo <filename>/pom.xml</filename> que creamos anteriormente y sabrá cómo "
+"realizar algunas tareas de proyectos básicos. Primero, vamos a ejecutar la "
+"meta <literal>compile</literal> para asegurarnos de que podemos compilar "
+"todo hasta el momento:"
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "Inicio y ayudantes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is time to load and store some <literal>Event</literal> objects, but "
+"first you have to complete the setup with some infrastructure code. You have "
+"to startup Hibernate by building a global <interfacename>org.hibernate."
+"SessionFactory</interfacename> object and storing it somewhere for easy "
+"access in application code. A <interfacename>org.hibernate.SessionFactory</"
+"interfacename> is used to obtain <interfacename>org.hibernate.Session</"
+"interfacename> instances. A <interfacename>org.hibernate.Session</"
+"interfacename> represents a single-threaded unit of work. The "
+"<interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe "
+"global object that is instantiated once."
+msgstr ""
+"Es el momento de cargar y almacenar algunos objetos <literal>Event</"
+"literal>, pero primero tiene que completar la configuración con algo de "
+"código de infraestructura. Tiene que iniciar Hibernate construyendo un "
+"objeto <interfacename>org.hibernate.SessionFactory</interfacename> global y "
+"almacenarlo en algún lugar de fácil acceso en el código de la aplicación. "
+"Una <interfacename>org.hibernate.SessionFactory</interfacename> se utiliza "
+"para obtener instancias <interfacename>org.hibernate.Session</"
+"interfacename>. Una <interfacename>org.hibernate.Session</interfacename> "
+"representa una unidad de trabajo mono-hilo. La <interfacename>org.hibernate."
+"SessionFactory</interfacename> es un objeto global seguro entre hilos que se "
+"instancia una sóla vez."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will create a <literal>HibernateUtil</literal> helper class that takes "
+"care of startup and makes accessing the <interfacename>org.hibernate."
+"SessionFactory</interfacename> more convenient."
+msgstr ""
+"Vamos a crear una clase de ayuda <literal>HibernateUtil</literal> que se "
+"encargue del inicio y haga más práctico el acceso a <interfacename>org."
+"hibernate.SessionFactory</interfacename>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+msgstr ""
+"Guarde este código como <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This class not only produces the global <interfacename>org.hibernate."
+"SessionFactory</interfacename> reference in its static initializer; it also "
+"hides the fact that it uses a static singleton. We might just as well have "
+"looked up the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"reference from JNDI in an application server or any other location for that "
+"matter."
+msgstr ""
+"Esta clase no sólamente produce la referencia <interfacename>org.hibernate."
+"SessionFactory</interfacename> global en su inicializador estático, sino que "
+"también esconde el hecho de que utiliza un singleton estático. También puede "
+"que busque la  referencia <interfacename>org.hibernate.SessionFactory</"
+"interfacename> desde JNDI en un servidor de aplicaciones en cualquier otro "
+"lugar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you give the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"a name in your configuration, Hibernate will try to bind it to JNDI under "
+"that name after it has been built. Another, better option is to use a JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. Such advanced options are "
+"discussed later."
+msgstr ""
+"Si usted le da un nombre a <interfacename>org.hibernate.SessionFactory</"
+"interfacename> en su archivo de configuración, de hecho, Hibernate tratará "
+"de vincularlo a JNDI bajo ese nombre después de que ha sido construido. Otra "
+"mejor opción es utilizar el despliegue JMX y dejar que el contenedor con "
+"capacidad JMX instancie y vincule un <literal>HibernateService</literal> a "
+"JNDI. Más adelante discutiremos estas opciones avanzadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You now need to configure a logging system. Hibernate uses commons logging "
+"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
+"Log4j: copy <literal>log4j.properties</literal> from the Hibernate "
+"distribution in the <literal>etc/</literal> directory to your <literal>src</"
+"literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you "
+"prefer to have more verbose output than that provided in the example "
+"configuration, you can change the settings. By default, only the Hibernate "
+"startup message is shown on stdout."
+msgstr ""
+"Ahora necesita configurar un sistema de registro. Hibernate utiliza "
+"registros comunes le da dos opciones: Log4J y registros de JDK 1.4. La "
+"mayoría de los desarrolladores prefieren Log4J: copie <literal>log4j."
+"properties</literal> de la distribución de Hibernate, se encuentra en el "
+"directorio <literal>etc/</literal>) a su directorio <literal>src</literal>, "
+"junto a <literal>hibernate.cfg.xml</literal>. Si desea tener una salida más "
+"verbosa que la que se proporcionó en la configuración del ejemplo entonces "
+"puede cambiar su configuración. Por defecto, sólo se muestra el mensaje de "
+"inicio de Hibernate en la salida estándar."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The tutorial infrastructure is complete and you are now ready to do some "
+"real work with Hibernate."
+msgstr ""
+"La infraestructura del tutorial está completa y estamos listos para hacer un "
+"poco de trabajo real con Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "Carga y almacenamiento de objetos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We are now ready to start doing some real worjk with Hibernate. Let's start "
+"by writing an <literal>EventManager</literal> class with a <literal>main()</"
+"literal> method:"
+msgstr ""
+"Ahora estamos listos para hacer un poco de trabajo real con Hibernate. "
+"Empecemos por escribir una clase <literal>EventManager</literal> con un "
+"método <literal>main()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</"
+"literal> object and handed it over to Hibernate. At that point, Hibernate "
+"takes care of the SQL and executes an <literal>INSERT</literal> on the "
+"database."
+msgstr ""
+"En <literal>createAndStoreEvent()</literal> creamos un nuevo objeto "
+"<literal>Event</literal> y se lo entregamos a Hibernate. En ese momento, "
+"Hibernate se encarga de SQL y ejecuta un <literal>INSERT</literal> en la "
+"base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> is designed to represent a "
+"single unit of work (a single atmoic piece of work to be performed). For now "
+"we will keep things simple and assume a one-to-one granularity between a "
+"Hibernate <interface>org.hibernate.Session</interface> and a database "
+"transaction. To shield our code from the actual underlying transaction "
+"system we use the Hibernate <interfacename>org.hibernate.Transaction</"
+"interfacename> API. In this particular case we are using JDBC-based "
+"transactional semantics, but it could also run with JTA."
+msgstr ""
+"Una <interface>org.hibernate.Session</interface> está diseñada para "
+"representar una sóla unidad de trabajo (una sola parte atómica de trabajo "
+"que se va a realizar). Por ahora vamos a mantener las cosas sencillas y "
+"vamos a asumir una granularidad de uno a uno entre la <interface>org."
+"hibernate.Session</interface> de Hibernate y una transacción de la base "
+"datos. Para proteger nuestro código del sistema de transacciones subyacentes "
+"utilizamos el API <interfacename>org.hibernate.Transaction</interfacename> "
+"de Hibernate. En este caso en particular estamos utilizado una semántica "
+"transaccional basada en JDBC pero también puede ejecutarse con JTA. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like once you get hold of "
+"your <interfacename>org.hibernate.SessionFactory</interfacename>. The "
+"<literal>getCurrentSession()</literal> method always returns the \"current\" "
+"unit of work. Remember that we switched the configuration option for this "
+"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
+"xml</filename>? Due to that setting, the context of a current unit of work "
+"is bound to the current Java thread that executes the application."
+msgstr ""
+"¿Qué hace <literal>sessionFactory.getCurrentSession()</literal>? Primero, la "
+"puede llamar tantas veces como desee y en donde quiera, una vez consiga su "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. El método "
+"<literal>getCurrentSession()</literal> siempre retorna la unidad de trabajo "
+"\"actual\". ¿Recuerda que cambiamos la opción de la configuración de este "
+"mecanismo a \"thread\" en <filename>src/main/resources/hibernate.cfg.xml</"
+"filename>? Por lo tanto, el contexto de una unidad de trabajo actual se "
+"encuentra vinculada al hilo de Java actual que ejecuta nuestra aplicación."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers three methods of current session tracking. The \"thread\" "
+"based method is not intended for production use; it is merely useful for "
+"prototyping and tutorials such as this one. Current session tracking is "
+"discussed in more detail later on."
+msgstr ""
+"Hibernate ofrece tres métodos de rastreo de sesión actual. El método basado "
+"en \"hilos\" no está dirigido al uso de producción; sólo es útil para "
+"prototipos y para tutoriales como este. Más adelante discutiremos con más "
+"detalles el rastreo de sesión actual."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> begins when the first call to "
+"<literal>getCurrentSession()</literal> is made for the current thread. It is "
+"then bound by Hibernate to the current thread. When the transaction ends, "
+"either through commit or rollback, Hibernate automatically unbinds the "
+"<interface>org.hibernate.Session</interface> from the thread and closes it "
+"for you. If you call <literal>getCurrentSession()</literal> again, you get a "
+"new <interface>org.hibernate.Session</interface> and can start a new unit of "
+"work."
+msgstr ""
+"Una <interface>org.hibernate.Session</interface> se inicia cuando se realiza "
+"la primera llamada a <literal>getCurrentSession()</literal> para el hilo "
+"actual. Luego Hibernate la vincula al hilo actual. Cuando termina la "
+"transacción, ya sea por medio de guardar o deshacer los cambios, Hibernate "
+"desvincula automáticamente la <interface>org.hibernate.Session</interface> "
+"del hilo y la cierra por usted. Si llama a <literal>getCurrentSession()</"
+"literal> de nuevo, obtiene una <interface>org.hibernate.Session</interface> "
+"nueva y obtiene una nueva <interface>org.hibernate.Session</interface> "
+"unidad de trabajo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <interface>org."
+"hibernate.Session</interface> be used to execute one or several database "
+"operations? The above example uses one <interface>org.hibernate.Session</"
+"interface> for one operation. However this is pure coincidence; the example "
+"is just not complex enough to show any other approach. The scope of a "
+"Hibernate <interface>org.hibernate.Session</interface> is flexible but you "
+"should never design your application to use a new Hibernate <interface>org."
+"hibernate.Session</interface> for <emphasis>every</emphasis> database "
+"operation. Even though it is used in the following examples, consider "
+"<emphasis>session-per-operation</emphasis> an anti-pattern. A real web "
+"application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+"En relación con la unidad del campo de trabajo, ¿Se debería utilizar "
+"<interface>org.hibernate.Session</interface> de Hibernate para ejecutar una "
+"o varias operaciones de la base de datos? El ejemplo anterior utiliza una "
+"<interface>org.hibernate.Session</interface> para una operación. Sin "
+"embargo, esto es pura coincidencia; el ejemplo simplemente no es lo "
+"suficientemente complicado para mostrar cualquier otro enfoque. El ámbito de "
+"una <interface>org.hibernate.Session</interface> de Hibernate es flexible "
+"pero nunca debe diseñar su aplicación para que utilice una nueva "
+"<interface>org.hibernate.Session</interface> de Hibernate para "
+"<emphasis>cada</emphasis> operación de la base de datos. Aunque lo "
+"utilizamos en los siguientes ejemplos, considere la <emphasis>sesión-por-"
+"operación</emphasis> como un anti-patrón. Más adelante en este tutorial, se "
+"muestra una aplicación web real, lo cual le ayudará a ilustrar esto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"transactions\" /> for more information about transaction "
+"handling and demarcation. The previous example also skipped any error "
+"handling and rollback."
+msgstr ""
+"Consulte <xref linkend=\"transactions\" /> para obtener mayor información "
+"sobre el manejo de transacciones y la demarcación. En el ejemplo anterior "
+"también nos saltamos el manejo de errores y cómo deshacerlos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To run this, we will make use of the Maven exec plugin to call our class "
+"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
+"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+"Para ejecutar esto, utilizaremos el plugin de ejecución Maven para llamar "
+"nuestra clase con la configuración de ruta de clase necesaria: <command>mvn "
+"exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec."
+"args=\"store\"</command>"
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr "Es posible que primero necesite realizar <command>mvn compile</command>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should see Hibernate starting up and, depending on your configuration, "
+"lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+"Debe ver que Hibernate inicia y dependiendo de su configuración, también "
+"verá bastantes salidas de registro. Al final, verá la siguiente línea:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr "Este es el <literal>INSERT</literal> que Hibernate ejecuta."
+
+#. Tag: para
+#, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr "Para listar los eventos almacenados se agrega una opción al método principal:"
+
+#. Tag: para
+#, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr "También agregamos un método <literal>listEvents()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here, we are using a Hibernate Query Language (HQL) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+"Aquí utilizamos una consulta HQL (Hibernate Query Language) para cargar "
+"todos los objetos <literal>Event</literal> desde la base de datos. Hibernate "
+"generará el SQL apropiado, lo enviará a la base de datos y poblará los "
+"objetos <literal>Event</literal> con los datos. Puede crear peticiones más "
+"complejas con HQL. Consulte <xref linkend=\"queryhql\"/> para obtener mayor "
+"información."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we can call our new functionality, again using the Maven exec plugin: "
+"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
+"\" -Dexec.args=\"list\"</command>"
+msgstr ""
+"Ahora podemos llamar nuestra nueva funcionalidad, de nuevo usando el plugin "
+"de ejecución Maven: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate."
+"tutorial.EventManager\" -Dexec.args=\"list\"</command>"
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "Part 2 - Mapeo de asociaciones"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have mapped a single persistent entity class to a table in "
+"isolation. Let's expand on that a bit and add some class associations. We "
+"will add people to the application and store a list of events in which they "
+"participate."
+msgstr ""
+"Hasta ahora hemos mapeado una clase de entidad persistente a una tabla "
+"aislada. Vamos a construir sobre esto y agregaremos algunas asociaciones de "
+"clase. Vamos a agregar personas a la aplicación y vamos a almacenar una "
+"lista de eventos en las que participan."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "Mapeo de la clase Person"
+
+#. Tag: para
+#, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "El primer corte de la clase <literal>Person</literal> se ve así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+msgstr ""
+"Guarde esto en un archivo llamado <filename>src/main/java/org/hibernate/"
+"tutorial/domain/Person.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, create the new mapping file as <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+"Luego, cree el nuevo archivo de mapeo como <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr "Finalmente, añada el nuevo mapeo a la configuración de Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Create an association between these two entities. Persons can participate in "
+"events, and events have participants. The design questions you have to deal "
+"with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+"Vamos a crear una asociación entre estas dos entidades. Las personas pueden "
+"participar en los eventos y los eventos cuentan con participantes. Las "
+"cuestiones de diseño con las que tenemos que tratar son: direccionalidad, "
+"multiplicidad y comportamiento de la colección."
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "Una asociación unidireccional basada en Set"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By adding a collection of events to the <literal>Person</literal> class, you "
+"can easily navigate to the events for a particular person, without executing "
+"an explicit query - by calling <literal>Person#getEvents</literal>. Multi-"
+"valued associations are represented in Hibernate by one of the Java "
+"Collection Framework contracts; here we choose a <interfacename>java.util."
+"Set</interfacename> because the collection will not contain duplicate "
+"elements and the ordering is not relevant to our examples:"
+msgstr ""
+"Al agregar una colección de eventos a la clase <literal>Person</literal>, "
+"puede navegar fácilmente a los eventos de una persona en particular, sin "
+"ejecutar una petición explícita - llamando a <literal>Person#getEvents</"
+"literal>. En Hibernate, las asociaciones multi-valores se representan por "
+"medio de uno de los contratos del marco de colecciones Java; aquí escogimos "
+"un <interfacename>java.util.Set</interfacename> ya que la colección no "
+"contendrá elementos duplicados y el orden no es relevante para nuestros "
+"ejemplos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Before mapping this association, let's consider the other side. We could "
+"just keep this unidirectional or create another collection on the "
+"<literal>Event</literal>, if we wanted to be able to navigate it from both "
+"directions. This is not necessary, from a functional perspective. You can "
+"always execute an explicit query to retrieve the participants for a "
+"particular event. This is a design choice left to you, but what is clear "
+"from this discussion is the multiplicity of the association: \"many\" valued "
+"on both sides is called a <emphasis>many-to-many</emphasis> association. "
+"Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+"Antes de mapear esta asociación, considere el otro lado. Podriamos mantener "
+"esto unidireccional o podríamos crear otra colección en el <literal>Event</"
+"literal>, si queremos tener la habilidad de navegarlo desde ambas "
+"direcciones. Esto no es necesario desde un punto de vista funcional. Siempre "
+"puede ejeutar un pedido explícito para recuperar los participantes de un "
+"evento en particular. Esta es una elección de diseño que depende de usted, "
+"pero lo que queda claro de esta discusión es la multiplicidad de la "
+"asociación: \"muchos\" valuada en ambos lados, denominamos esto como una "
+"asociación <emphasis>muchos-a-muchos</emphasis>. Por lo tanto, utilizamos un "
+"mapeo muchos-a-muchos de Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports a broad range of collection mappings, a <literal>set</"
+"literal> being most common. For a many-to-many association, or <emphasis>n:"
+"m</emphasis> entity relationship, an association table is required. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is decalred using the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person side, is defined with the <literal>key</literal> "
+"element, the column name for the event's side with the <literal>column</"
+"literal> attribute of the <literal>many-to-many</literal>. You also have to "
+"tell Hibernate the class of the objects in your collection (the class on the "
+"other side of the collection of references)."
+msgstr ""
+"Hibernate soporta un amplio rango de mapeos de colección, el más común "
+"<literal>set</literal>. Para una asociación muchos-a-muchos o la relación de "
+"entidad <emphasis>n:m</emphasis>, se necesita una tabla de asociación. Cada "
+"fila en esta tabla representa un enlace entre una persona y un evento. El "
+"nombre de esta tabla se declara con el atributo <literal>table</literal> del "
+"elemento <literal>set</literal>. El nombre de la columna identificadora en "
+"la asociación, del lado de la persona, se define con el elemento "
+"<literal>key</literal>, el nombre de columna para el lado del evento se "
+"define con el atributo <literal>column</literal> del <literal>many-to-many</"
+"literal>. También tiene que informarle a Hibernate la clase de los objetos "
+"en su colección (la clase del otro lado de la colección de referencias)."
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "Por consiguiente, el esquema de base de datos para este mapeo es:"
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "Trabajo de la asociación"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we will bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"Vamos a reunir a algunas personas y eventos en un nuevo método en "
+"<literal>EventManager</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. There is "
+"no explicit call to <literal>update()</literal> or <literal>save()</"
+"literal>; Hibernate automatically detects that the collection has been "
+"modified and needs to be updated. This is called <emphasis>automatic dirty "
+"checking</emphasis>. You can also try it by modifying the name or the date "
+"property of any of your objects. As long as they are in "
+"<emphasis>persistent</emphasis> state, that is, bound to a particular "
+"Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate "
+"monitors any changes and executes SQL in a write-behind fashion. The process "
+"of synchronizing the memory state with the database, usually only at the end "
+"of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the "
+"unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+"Después de cargar una <literal>Person</literal> y un <literal>Event</"
+"literal>, simplemente modifique la colección utilizando los métodos normales "
+"de colección. No hay una llamada explícita a <literal>update()</literal> o "
+"<literal>save()</literal>; Hibernate detecta automáticamente que se ha "
+"modificado la colección y que se necesita actualizarla. Esto se denomina "
+"<emphasis>chequeo automático de desactualizaciones</emphasis> y también "
+"puede probarlo modificando el nombre o la propiedad de fecha de cualquiera "
+"de sus objetos. Mientras se encuentran en estado <emphasis>persistente</"
+"emphasis>, es decir, enlazado a una <interfacename>org.hibernate.Session</"
+"interfacename> de Hibernate en particular, Hibernate monitorea cualquier "
+"cambio y ejecuta SQL de un modo escribe-detrás. El proceso de sincronización "
+"del estado de la memoria con la base de datos, usualmente sólo al final de "
+"una unidad de trabajo, se denomina <emphasis>vaciado</emphasis>. En nuestro "
+"código la unidad de trabajo termina con guardar o deshacer los cambios de la "
+"transacción de la base de datos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can load person and event in different units of work. Or you can modify "
+"an object outside of a <interfacename>org.hibernate.Session</interfacename>, "
+"when it is not in persistent state (if it was persistent before, this state "
+"is called <emphasis>detached</emphasis>). You can even modify a collection "
+"when it is detached:"
+msgstr ""
+"Puede cargar una persona y un evento en diferentes unidades de trabajo. "
+"También puede modificar un objeto fuera de una <interfacename>org.hibernate."
+"Session</interfacename>, cuando no se encuentra en estado persistente (si "
+"antes era persistente denominamos a este estado <emphasis>separado</"
+"emphasis> ). Inclusive, puede modificar una colección cuando se encuentre "
+"separada:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again by binding it to a new unit of work, so any modifications you made to "
+"it while detached can be saved to the database. This includes any "
+"modifications (additions/deletions) you made to a collection of that entity "
+"object."
+msgstr ""
+"La llamada a <literal>update</literal> hace que un objeto separado sea "
+"persistente de nuevo enlazándolo a una nueva unidad de trabajo, así que "
+"cualquier modificación que le realizó mientras estaba separado se puede "
+"guardar en la base de datos. Esto incluye cualquier modificación (adiciones "
+"o eliminaciones) que le hizo a una colección de ese objeto entidad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not much use in our example, but it is an important concept you can "
+"incorporate into your own application. Complete this exercise by adding a "
+"new action to the main method of the <literal>EventManager</literal> and "
+"call it from the command line. If you need the identifiers of a person and "
+"an event - the <literal>save()</literal> method returns it (you might have "
+"to modify some of the previous methods to return that identifier):"
+msgstr ""
+"Esto no se utiliza mucho en nuestro ejemplo, pero es un concepto importante "
+"que puede incorporar en su propia aplicación. Complete este ejercicio "
+"agregando una nueva acción al método main de <literal>EventManager</literal> "
+"y llámela desde la línea de comandos. Si necesita los identificadores de una "
+"persona y de un evento - el método <literal>save()</literal> los retorna "
+"(pueda que necesite modificar algunos de los métodos anteriores para "
+"retornar ese identificador):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is an example of an association between two equally important classes : "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <classname>java.lang.String</classname>. We "
+"call these classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"do not have their own identity, nor are they shared between entities. Two "
+"persons do not reference the same <literal>firstname</literal> object, even "
+"if they have the same first name. Value types cannot only be found in the "
+"JDK , but you can also write dependent classes yourself such as an "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal> class. In "
+"fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+"Esto fue un ejemplo de una asociación entre dos clases igualmente "
+"importantes: dos entidades. Como se mencionó anteriormente, hay otras clases "
+"y tipos en un modelo típico, usualmente \"menos importantes\". Algunos de "
+"ustedes las habrán visto, como un <literal>int</literal> o un "
+"<classname>java.lang.String</classname>. Denominamos a estas clases "
+"<emphasis>tipos de valor</emphasis> y sus instancias <emphasis>dependen</"
+"emphasis> de una entidad en particular. Las instancias de estos tipos no "
+"tienen su propia identidad, ni son compartidas entre entidades. Dos personas "
+"no referencian el mismo objeto <literal>firstname</literal>, incluso si "
+"tienen el mismo nombre. Los tipos de valor no sólo pueden encontrarse en el "
+"JDK, sino que también puede escribir por sí mismo clases dependientes como "
+"por ejemplo, <literal>Address</literal> o <literal>MonetaryAmount</literal>. "
+"De hecho, en una aplicación Hibernate todas las clases JDK se consideran "
+"como tipos de valor. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"También puede diseñar una colección de tipos de valor. Esto es "
+"conceptualmente diferente de una colección de referencias a otras entidades, "
+"pero se ve casi igual en Java."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "Colección de valores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Let's add a collection of email addresses to the <literal>Person</literal> "
+"entity. This will be represented as a <interfacename>java.util.Set</"
+"interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+"Vamos a agregar una colección de direcciones de correo electrónico a la "
+"entidad <literal>Person</literal>. Esto se representará como un "
+"<interfacename>java.util.Set</interfacename> de las instnaicas "
+"<classname>java.lang.String</classname>:"
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "El mapeo de este <literal>Set</literal> es así:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the use of the "
+"<literal>element</literal> part which tells Hibernate that the collection "
+"does not contain references to another entity, but is rather a collection "
+"whose elements are values types, here specifically of type <literal>string</"
+"literal>. The lowercase name tells you it is a Hibernate mapping type/"
+"converter. Again the <literal>table</literal> attribute of the <literal>set</"
+"literal> element determines the table name for the collection. The "
+"<literal>key</literal> element defines the foreign-key column name in the "
+"collection table. The <literal>column</literal> attribute in the "
+"<literal>element</literal> element defines the column name where the email "
+"address values will actually be stored."
+msgstr ""
+"La diferencia comparado con el mapeo anterior es el uso de la parte "
+"<literal>element</literal>, que le dice a Hibernate que la colección no "
+"contiene referencias a otra entidad, sino que es una colección de elementos "
+"que son tipos de valores, aquí especificamente de tipo <literal>String</"
+"literal>. El nombre en minúsculas le dice que es un tipo/conversor de mapeo "
+"de Hibernate. Una vez más, el atributo <literal>table</literal> del elemento "
+"<literal>set</literal> determina el nombre de la tabla para la colección. El "
+"elemento <literal>key</literal> define el nombre de la columna clave foránea "
+"en la tabla de colección. El atributo <literal>column</literal> en el "
+"elemento <literal>element</literal> define el nombre de la columna donde "
+"realmente se almacenarán los valores de la dirección de correo electrónico."
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the updated schema:"
+msgstr "Este es el esquema actualizado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key that uses both columns. This also implies that there cannot be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"Puede ver que la clave principal de la tabla de colección es, de hecho, una "
+"clave compuesta que utiliza ambas columnas. Esto también implica que no "
+"pueden haber direcciones de correo electrónico duplicadas por persona, la "
+"cual es exactamente la semántica que necesitamos para un conjunto en Java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can now try to add elements to this collection, just like we did before "
+"by linking persons and events. It is the same code in Java:"
+msgstr ""
+"Ahora, puede tratar de agregar elementos a esta colección, al igual que lo "
+"hicimos antes vinculando personas y eventos. Es el mismo código en Java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This time we did not use a <emphasis>fetch</emphasis> query to initialize "
+"the collection. Monitor the SQL log and try to optimize this with an eager "
+"fetch."
+msgstr ""
+"Esta vez no utilizamos una petición de <emphasis>búqueda - fetch -</"
+"emphasis> para dar inicio a la colección. Monitoree su registro SQL e "
+"intente de optimizar esto con una recuperación temprana."
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "Asociaciones bidireccionales"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next you will map a bi-directional association. You will make the "
+"association between person and event work from both sides in Java. The "
+"database schema does not change, so you will still have many-to-many "
+"multiplicity."
+msgstr ""
+"A continuacion vamos a mapear una asociación bidireccional. Vamos a hacer "
+"que la asociación entre persona y evento funcione desde ambos lados en Java. "
+"El esquema de la base de datos no cambia así que todavía tendremos una "
+"multiplicidad muchos-a-muchos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A relational database is more flexible than a network programming language, "
+"in that it does not need a navigation direction; data can be viewed and "
+"retrieved in any possible way."
+msgstr ""
+"Una base de datos relacional es más flexible que un lenguaje de programación "
+"de red ya que no necesita una dirección de navegación; los datos se pueden "
+"ver y recuperar de cualquier forma posible."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"class:"
+msgstr ""
+"Primero, agregue una colección de participantes a la clase <literal>Event</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr "Ahora mapee este lado de la asociación en <literal>Event.hbm.xml</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These are normal <literal>set</literal> mappings in both mapping documents. "
+"Notice that the column names in <literal>key</literal> and <literal>many-to-"
+"many</literal> swap in both mapping documents. The most important addition "
+"here is the <literal>inverse=\"true\"</literal> attribute in the "
+"<literal>set</literal> element of the <literal>Event</literal>'s collection "
+"mapping."
+msgstr ""
+"Estos son mapeos normales de <literal>set</literal> en ambos documentos de "
+"mapeo. Note que los nombres de las columnas en <literal>key</literal> y "
+"<literal>many-to-many</literal> se intercambiaron en ambos documentos de "
+"mapeo. La adición más importante aquí es el atributo <literal>inverse=\"true"
+"\"</literal> en el elemento <literal>set</literal> del mapeo de colección de "
+"<literal>Event</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side, the "
+"<literal>Person</literal> class, when it needs to find out information about "
+"the link between the two. This will be a lot easier to understand once you "
+"see how the bi-directional link between our two entities is created."
+msgstr ""
+"Esto significa que Hibernate debe tomar el otro lado, la clase "
+"<literal>Person</literal>, cuando necesite encontrar información sobre el "
+"enlace entre las dos. Esto será mucho más fácil de entender una vez que vea "
+"como se crea el enlace bidireccional entre nuestras dos entidades."
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "Trabajo con enlaces bidireccionales"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, keep in mind that Hibernate does not affect normal Java semantics. "
+"How did we create a link between a <literal>Person</literal> and an "
+"<literal>Event</literal> in the unidirectional example? You add an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. If you want to make this link bi-"
+"directional, you have to do the same on the other side by adding a "
+"<literal>Person</literal> reference to the collection in an <literal>Event</"
+"literal>. This process of \"setting the link on both sides\" is absolutely "
+"necessary with bi-directional links."
+msgstr ""
+"Primero, recuerde que Hibernate no afecta la semántica normal de Java. ¿Cómo "
+"creamos un enlace entre <literal>Person</literal> y un <literal>Event</"
+"literal> en el ejemplo unidireccional? Agregue una instancia de "
+"<literal>Event</literal> a la colección de referencias de eventos de una "
+"instancia de <literal>Person</literal>. Si quiere que este enlace funcione "
+"bidireccionalmente, tiene que hacer lo mismo del otro lado, añadiendo una "
+"referencia <literal>Person</literal> a la colección en un <literal>Event</"
+"literal>. Este proceso de \"establecer el enlace en ambos lados\" es "
+"absolutamente necesario con enlaces bidireccionales."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many developers program defensively and create link management methods to "
+"correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+"Muchos desarrolladores programan a la defensiva y crean métodos de "
+"administración de enlaces para establecer correctamente ambos lados, (por "
+"ejemplo, en <literal>Person</literal>):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The get and set methods for the collection are now protected. This allows "
+"classes in the same package and subclasses to still access the methods, but "
+"prevents everybody else from altering the collections directly. Repeat the "
+"steps for the collection on the other side."
+msgstr ""
+"Los métodos get y set para la colección ahora se encuentran protegidos. Esto "
+"le permite a las clases en el mismo paquete y a las subclases acceder aún a "
+"los métodos, pero impide a cualquier otro que desordene las colecciones "
+"directamente. Repita los pasos para la colección del otro lado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> mapping attribute? For you, and "
+"for Java, a bi-directional link is simply a matter of setting the references "
+"on both sides correctly. Hibernate, however, does not have enough "
+"information to correctly arrange SQL <literal>INSERT</literal> and "
+"<literal>UPDATE</literal> statements (to avoid constraint violations). "
+"Making one side of the association <literal>inverse</literal> tells "
+"Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. "
+"That is all that is necessary for Hibernate to resolve any issues that arise "
+"when transforming a directional navigation model to a SQL database schema. "
+"The rules are straightforward: all bi-directional associations need one side "
+"as <literal>inverse</literal>. In a one-to-many association it has to be the "
+"many-side, and in many-to-many association you can select either side."
+msgstr ""
+"¿Y el atributo de mapeo <literal>inverse</literal>? Para usted y para Java, "
+"un enlace bidireccional es simplemente cuestión de establecer correctamente "
+"las referencias en ambos lados. Sin embargo, Hibernate no tiene suficiente "
+"información para organizar correctamente declaraciones <literal>INSERT</"
+"literal> y <literal>UPDATE</literal> de SQL (para evitar violaciones de "
+"restricciones). El hacer un lado de la asociación <literal>inverse</literal> "
+"le dice a Hibernate que lo considere un <emphasis>espejo</emphasis> del otro "
+"lado. Eso es todo lo necesario para que Hibernate resuelva todos los asuntos "
+"que surgen al transformar un modelo de navegación direccional a un esquema "
+"de base de datos SQL. Las reglas son muy simples: todas las asociaciones "
+"bidireccionales necesitan que uno de los lados sea <literal>inverse</"
+"literal>. En una asociación uno-a-muchos debe ser el lado-de-muchos; y en "
+"una asociación muchos-a-muchos, puede escoger cualquier lado."
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "Part 3 - La aplicación web EventManager"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. You can now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Una aplicación web de Hibernate utiliza <literal>Session</literal> y "
+"<literal>Transaction</literal> casi como una aplicación autónoma. Sin "
+"embargo, algunos patrones comunes son útiles. Ahora puede escribir un "
+"<literal>EventManagerServlet</literal>. Este servlet puede enumerar todos "
+"los eventos almacenados en la base de datos y proporciona una forma HTML "
+"para ingresar eventos nuevos."
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "Escritura de un servlet básico"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First we need create our basic processing servlet. Since our servlet only "
+"handles HTTP <literal>GET</literal> requests, we will only implement the "
+"<literal>doGet()</literal> method:"
+msgstr ""
+"Primero necesitamos crear nuestro servlet de procesamiento básico. Ya que "
+"nuestro servlet solo maneja pedidos <literal>GET</literal> HTTP sólamente, "
+"solo implementaremos el método <literal>doGet()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+msgstr ""
+"Guarde este servlet como <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pattern applied here is called <emphasis>session-per-request</emphasis>. "
+"When a request hits the servlet, a new Hibernate <literal>Session</literal> "
+"is opened through the first call to <literal>getCurrentSession()</literal> "
+"on the <literal>SessionFactory</literal>. A database transaction is then "
+"started. All data access occurs inside a transaction irrespective of whether "
+"the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+"El patrón aplicado aquí se llama <emphasis>sesión-por-petición</emphasis>. "
+"Cuando una petición llega al servlet, se abre una nueva <literal>Session</"
+"literal> de Hibernate por medio de la primera llamada a "
+"<literal>getCurrentSession()</literal> en el <literal>SessionFactory</"
+"literal>. Entonces se inicia una transacción de la base de datos. Todo "
+"acceso a los datos tiene que suceder dentro de una transacción, sin importar "
+"que los datos sean leídos o escritos . No utilice el modo auto-commit en las "
+"aplicaciones."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"<emphasis>No</emphasis> utilice una nueva <literal>Session</literal> de "
+"Hibernate para cada operación de base de datos. Utilice una "
+"<literal>Session</literal> Hibernate que cubra el campo de todo el pedido. "
+"Utilice <literal>getCurrentSession()</literal> para vincularlo "
+"automáticamente al hilo de Java actual."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We will get to that part soon."
+msgstr ""
+"Después, se procesan las acciones posibles del pedido y se entrega la "
+"respuesta HTML. Llegaremos a esa parte muy pronto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering are complete. "
+"If any problems occurred during processing or rendering, an exception will "
+"be thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> pattern. Instead of the transaction "
+"demarcation code in every servlet, you could also write a servlet filter. "
+"See the Hibernate website and Wiki for more information about this pattern "
+"called <emphasis>Open Session in View</emphasis>. You will need it as soon "
+"as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"Finalmente, la unidad de trabajo termina cuando se completa el procesamiento "
+"y la entrega. Si surgió algún problema durante el procesamiento o la "
+"entrega , se presentará una excepción y la transacción de la base de datos "
+"se deshará. Esto completa el patrón <literal>session-per-request</literal>. "
+"En vez del código de demarcación de la transacción en todo servlet, también "
+"podría escribir un filtro de servlet. Véa el sitio web de Hibernate y el "
+"Wiki para obtener más información sobre este patrón llamado <emphasis>sesión "
+"abierta en vista</emphasis>. Lo necesitará tan pronto como considere "
+"representar su vista en JSP, no en un servlet."
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "Procesamiento y entrega"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now you can implement the processing of the request and the rendering of the "
+"page."
+msgstr ""
+"Ahora puede implementar el procesamiento del pedido y la representación de "
+"la página."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This coding style, with a mix of Java and HTML, would not scale in a more "
+"complex application&mdash;keep in mind that we are only illustrating basic "
+"Hibernate concepts in this tutorial. The code prints an HTML header and a "
+"footer. Inside this page, an HTML form for event entry and a list of all "
+"events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"Dado que este estilo de codificación con una mezcla de Java y HTML no "
+"escalaría en una aplicación más compleja - tenga en cuenta que sólo estamos "
+"ilustrando los conceptos básicos de Hibernate en este tutorial. El código "
+"imprime una cabecera y un pie de página HTML. Dentro de esta página se "
+"imprime una forma HTML para entrada de eventos y se imprime una lista de "
+"todos los eventos en la base de datos. El primer método es trivial y su "
+"salida se realiza únicamente en HTML:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"El método <literal>listEvents()</literal> utiliza Hibernate "
+"<literal>Session</literal> vinculado al hilo actual para ejecutar una "
+"petición:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"Finalmente, la acción <literal>store</literal> se despacha al método "
+"<literal>createAndStoreEvent()</literal>, el cual también utiliza la "
+"<literal>Session</literal> del hilo actual:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The servlet is now complete. A request to the servlet will be processed in a "
+"single <literal>Session</literal> and <literal>Transaction</literal>. As "
+"earlier in the standalone application, Hibernate can automatically bind "
+"these objects to the current thread of execution. This gives you the freedom "
+"to layer your code and access the <literal>SessionFactory</literal> in any "
+"way you like. Usually you would use a more sophisticated design and move the "
+"data access code into data access objects (the DAO pattern). See the "
+"Hibernate Wiki for more examples."
+msgstr ""
+"El servlet se encuentra completo. Un pedido al servlet será procesado en una "
+"sola <literal>Session</literal> y <literal>Transaction</literal>. Como lo "
+"vimos antes en la aplicación autónoma, Hibernate puede enlazar "
+"automáticamente estos objetos al hilo actual de ejecución. Esto le da la "
+"libertad de utilizar capas en su código y acceder a la "
+"<literal>SessionFactory</literal> de cualquier manera que lo desee. "
+"Usualmente, usted utilizaría un diseño más sofisticado y movería el código "
+"de acceso de datos a los objetos de acceso de datos (el patrón DAO). "
+"Refiérase al Wiki de Hibernate para ver más ejemplos."
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "Despliegue y prueba"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To deploy this application for testing we must create a Web ARchive (WAR). "
+"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
+"web.xml</filename>"
+msgstr ""
+"Para implementar esta aplicación para prueba debemos crear una Web ARchive "
+"(WAR). Primero debemos definir el descriptor WAR como <filename>src/main/"
+"webapp/WEB-INF/web.xml</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To build and deploy call <literal>mvn package</literal> in your project "
+"directory and copy the <filename>hibernate-tutorial.war</filename> file into "
+"your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+"Para construir y desplegar llame a <literal>mvn package</literal> en su "
+"directorio de proyecto y copie el archivo <literal>hibernate-tutorial.war</"
+"literal> en su directorio <literal>webapp</literal> Tomcat. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not have Tomcat installed, download it from <ulink url=\"http://"
+"tomcat.apache.org/\" /> and follow the installation instructions. Our "
+"application requires no changes to the standard Tomcat configuration."
+msgstr ""
+"Si no tiene Tomcat instalado, descárguelo de <ulink url=\"http://"
+"tomcat.apache.org/\" /> y siga las instrucciones de instalación. Nuestra aplicación "
+"no requiere cambios a la configuración estándar de Tomcat."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
+msgstr ""
+"Una vez que se encuentre desplegado y que Tomcat esté ejecutando, acceda la "
+"aplicación en <literal>http://localhost:8080/hibernate-tutorial/"
+"eventmanager</literal>. Asegúrese de ver el registro de Tomcat para ver a "
+"Hibernate iniciar cuando llegue el primer pedido a su servlet (se llama al "
+"inicializador estático en <literal>HibernateUtil</literal>) y para obetener "
+"la salida detallada si ocurre alguna excepción."
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Resumen"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application. More tutorials are available from "
+"the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+"Este tutorial abordó los puntos básicos de la escritura de una simple "
+"aplicación de Hibernate autónoma y una pequeña aplicación web. Encontrará "
+"más tutoriales en el website de Hibernate <ulink url=\"http://hibernate.org"
+"\"></ulink>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,248 @@
+# translation of xml.po to
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Angela Garcia <agarcia at redhat.com>, 2009, 2010.
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-15 12:56+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "Mapeo XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is "
+"currently under active development. </emphasis>"
+msgstr ""
+"<emphasis> El mapeo XML es una funcionalidad experimental en Hibernate 3.0 y "
+"actualmente se encuentra bajo desarrollo activo. </emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "Trabajo con datos XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to work with persistent XML data in much the same way "
+"you work with persistent POJOs. A parsed XML tree can be thought of as "
+"another way of representing the relational data at the object level, instead "
+"of POJOs."
+msgstr ""
+"Hibernate le permite trabajar con datos XML persistentes en casi de la misma "
+"forma que trabaja con POJOs persistentes. Un árbol XML analizado "
+"semáticamente se puede considerar como otra manera de representar los datos "
+"relacionales a nivel de objetos, en lugar de POJOs."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate soporta dom4j como API para manipular árboles XML. Puede escribir "
+"consultas que recuperen árboles dom4j de la base de datos y puede tener "
+"cualquier modificación que realice al árbol sincronizada automáticamente con "
+"la base de datos. Incluso puede tomar un documento XML, analizarlo "
+"sintácticamente utilizando dom4j, y escribirlo a la base de datos con "
+"cualquiera de las operaciones básicas de Hibernate: <literal>persist(), "
+"saveOrUpdate(), merge(), delete(), replicate()</literal> (merge aún no está "
+"soportado)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"Esta funcionalidad tiene muchas aplicaciones incluyendo la importación/"
+"exportación de datos, externalización de datos de entidad por medio de JMS o "
+"SOAP y reportes basados en XSLT."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single mapping can be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it can be used to map just the XML."
+msgstr ""
+"Un sólo mapeo se puede utilizar para mapear simultáneamente las propiedades "
+"de una clase y los nodos de un documento XML a la base de datos, o si no hay "
+"ninguna clase a mapear, se puede utilizar para mapear sólo el XML."
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "Especificación de los mapeos de XML y de clase en conjunto"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "Este es un ejemplo del mapeo de un POJO y XML de manera simultánea:"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "Especificación de sólo un mapeo XML"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "Este es un ejemplo donde no hay ninguna clase POJO:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs or java <literal>Map</literal>s. The property "
+"names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+"Este mapeo le permite acceder a los datos como un árbol dom4j o como un "
+"grafo de parejas nombre/valor de propiedad o<literal>Map</literal>as de "
+"Java. Los nombres de propiedades son construcciones puramente lógicas a las "
+"que se puede hacer referencia en consultas HQL."
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "Mapeo de metadatos XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A range of Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This lets you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"Muchos elementos de mapeo de Hibernate aceptan el atributo <literal>node</"
+"literal>. Esto le permite especificar el nombre de un atributo o elemento "
+"XML que contenga los datos de la propiedad o entidad. El formato del "
+"atributo <literal>node</literal> tiene que ser uno de los siguientes: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr "<literal>\"element-name\"</literal> - mapea al elemento XML mencionado "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr "<literal>\"@attribute-name\"</literal>: mapea al atributo XML mencionado"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal> - mapea al elemento padre "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal>: map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal>: mapea al atributo "
+"mencionado del elemento nombrado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will not appear at all."
+msgstr ""
+"Para las colecciones y asociaciones monovaluadas, existe un atributo "
+"adicional <literal>embed-xml</literal>. Si <literal>embed-xml=\"true\"</"
+"literal>, el cual es el valor por defecto, el árbol XML para la entidad "
+"asociada (o colección de tipo de valor) será incluida directamente en el "
+"árbol XML para la entidad que posee la asociación. De otra manera, si "
+"<literal>embed-xml=\"false\"</literal>, entonces sólo el valor identificador "
+"referenciado aparecerá en el XML para asociaciones de punto único y para las "
+"colecciones simplemente no aparecerá."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not leave <literal>embed-xml=\"true\"</literal> for too many "
+"associations, since XML does not deal well with circularity."
+msgstr ""
+"No deje <literal>embed-xml=\"true\"</literal> para demasiadas asociaciones "
+"ya que XML no se ocupa bien de la circularidad."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this case, the collection of account ids is embedded, but not the actual "
+"account data. The following HQL query:"
+msgstr ""
+"En este caso, la colección de ids de cuenta están incluídos, pero no los "
+"datos reales de cuenta. La siguiente consulta HQL:"
+
+#. Tag: para
+#, no-c-format
+msgid "would return datasets such as this:"
+msgstr "retornaría conjuntos de datos como este:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
+"many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+"Si establece <literal>embed-xml=\"true\"</literal> en el mapeo <literal>&lt;"
+"one-to-many&gt;</literal>, puede que los datos se vean así:"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "Manipulación de datos XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also re-read and update XML documents in the application. You can do "
+"this by obtaining a dom4j session:"
+msgstr ""
+"Puede releer y actualizar documentos XML en la aplicación. Puede hacer esto "
+"obteniendo una sesión dom4j:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When implementing XML-based data import/export, it is useful to combine this "
+"feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+"Es útil combinar esta funcionalidad con la operación <literal>replicate()</"
+"literal> de Hibernate para implementar la importación/exportación de datos "
+"basada en XML."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,217 @@
+# translation of Conventions.po to
+#
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conventions\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-17 16:34+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr "Convenciones del documento"
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr "Este manual utiliza varias convenciones para resaltar algunas palabras y frases y para llamar la atención sobre ciertas partes específicas de información."
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr "En ediciones PDF y en papel, este manual utiliza tipos de letra procedentes de <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink>. Este tipo de letra también se utilizan en ediciones de HTML si están instalados en su sistema. Si no, se muestran tipografías alternas pero equivalentes. Nota: Red Hat Enterprise Linux 5 y posteriores incluyen Liberation Fonts predeterminadas."
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr "Convenciones tipográficas"
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr "Se utilizan cuatro convenciones tipográficas para llamar la atención sobre palabras o frases específicas. Dichas convenciones y las circunstancias en que se aplican son las siguientes:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr "<literal>Negrita monoespaciado</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr "Se utiliza para resaltar la entrada del sistema, incluyendo comandos de shell, nombres de archivos y rutas. También se utiliza para resaltar teclas claves y combinaciones de teclas. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr "Para ver el contenido del archivo <filename>my_next_bestselling_novel</filename> en su directorio actual de trabajo introduza el comando <command>cat my_next_bestselling_novel</command> en el intérprete de comandos y teclee <keycap>Enter</keycap> para ejecutar el comando."
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr "Lo anterior incluye un nombre de archivo, un comando de shell y una tecla clave, todas presentadas en negrita monoespaciada y todas distinguibles gracias al contexto."
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr "Las combinaciones clave se pueden distinguir de las teclas clave por medio del guión que conecta cada parte de una combinación de teclas. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr "Teclee <keycap>Enter</keycap> para ejecutar el comando."
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr "Pulse <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> para cambiar a la primera terminal virtual. Pulse <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> para volver a su sesión de ventanas-X. "
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr "El primer parrafo resalta la tecla clave determinada que se debe pulsar. El segundo resalta dos combinaciones de teclas (cada uno un conjunto de tres teclas claves, cada conjunto presionado simultáneamente)."
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr "Si el código fuente es discutido, nombres de clases, métodos, funciones, nombres de variables y valores de retorno mencionados dentro de un párrafo se presentarán como lo anterior, en <literal>negrita-monoespaciado</literal>. Por ejemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr "Las clases de archivo relacionadas incluyen <classname>filesystem</classname> para sistemas de archivos, <classname>file</classname> para archivos y <classname>dir</classname> para directorios. Cada clase tiene su propio conjunto asociado de permisos. "
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr "<application>Negrita proporcional</application>"
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr "Esta denota palabras o frases encontradas en un sistema, incluyendo nombres de aplicaciones; texto de ventanas de diálogos, botones etiquetados, botones de radio, títulos de menús y títulos del sub-menú. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr "Seleccionar <menuchoice><guimenu>Sistema</guimenu><guisubmenu>Preferencias</guisubmenu><guimenuitem>Ratón</guime desde la barra del menú principal para lanzar <application>Preferencias del ratón</application>. En la pestaña de <guilabel>Botones</guilabel>, haga clic en el <guilabel>botón de la izquiera del ratón</guilabel> y luego haga clic en <guibutton>Cerrar</guibutton> para cambiar el botón principal del ratón de la izquierda a la derecha (adecuando el ratón para la mano izquierda). "
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr "Para insertar un caracter especial en un archivo <application>gedit</application>, seleccione desde la barra del menú principal <menuchoice><guimenu>Aplicaciones</guimenu><guisubmenu>Accesorios</guisubmenu><guimenuitem>Mapa de caracteres</guimenuitem></menuchoice>. Luego, desde la barra del menú elija <menuchoice><guimenu>Búsqueda</guimenu><guimenuitem>Buscar&hellip;</guimenuitem></menuchoice> de la barra del menú <application>Mapa de caracteres</application>, teclee el nombre del caracter en el campo de <guilabel>Búsqueda</guilabel> y haga clic en <guibutton>Siguiente</guibutton>. El caracter buscado se resaltará en la <guilabel>Tabla de caracteres</guilabel>. Haga doble clic en este caracter resaltado para colocarlo en el campo de <guilabel>Texto para copiar</guilabel> y luego haga clic en el botón de <guibutton>Copiar</guibutton>. Ahora regrese a su documento y elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Pegar</guimenuitem></menuchoice> desde l!
 a barra de menú de <application>gedit</application>. "
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr "El texto anterior incluye nombres de aplicaciones; nombres de menú de todo el sistema y elementos; nombres de menú de aplicaciones específicas y botones y texto hallados dentro de una interfaz GUI, todos presentados en negrita proporcional y distinguibles por contexto."
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr "<command><replaceable>Itálicas-negrita monoespaciado</replaceable></command> o <application><replaceable>Itálicas-negrita proporcional</replaceable></application>"
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr "Negrita monoespaciado o negrita proporcional, la adición de itálicas indica texto reemplazable o variable. Las itálicas denotan texto que usted no escribe literalmente o texto mostrado que cambia dependiendo de la circunstancia. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr "Para conectar a una máquina remota utilizando ssh, teclee <command>ssh <replaceable>nombredeusuario</replaceable>@<replaceable>nombre.dominio</replaceable></command> en un intérprete de comandos de shell. Si la máquina remota es <filename>example.com</filename> y su nombre de usuario en esa máquina es john, teclee <command>ssh john at example.com</command>."
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr "El comando <command>mount -o remount <replaceable>file-system</replaceable></command> remonta el sistema de archivo nombrado. Por ejemplo, para volver a montar el sistema de archivos <filename>/home</filename>, el comando es <command>mount -o remount /home</command>."
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr "Para ver la versión de un paquete actualmente instalado, utilice el comando <command>rpm -q <replaceable>paquete</replaceable></command>. Éste entregará el siguiente resultado: <command><replaceable>paquete-versión-lanzamiento</replaceable></command>. "
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr "Observe las palabras en itálicas- negrita anteriores &mdash; nombre de usuario, domain.name, sistema de archivos, paquete, versión y lanzamiento. Cada palabra es un marcador de posición tanto para el texto que usted escriba al ejecutar un comando como para el texto que el sistema presente."
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr "Aparte del uso estándar para presentar el título de un trabajo, las itálicas denotan el primer uso de un término nuevo e importante. Por ejemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr "Publican es un sistema de publicación <firstterm>DocBook</firstterm>."
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr "Convenciones para citaciones"
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr "La salida de la terminal y los listados del código fuente se distinguen visualmente del texto que los rodea."
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr "La salida enviada a una terminal está establecida en tipo <computeroutput>romano monoespaciado</computeroutput> y se presenta así: "
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr "Los listados del código fuente también se establecen en <computeroutput>romano monoespaciado</computeroutput>, pero se presentan y resaltan de la siguiente manera: "
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr "Notas y advertencias"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr "Finalmente, utilizamos tres estilos visuales para llamar la atención sobre la información que de otro modo se podría pasar por alto."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr "Una nota es una sugerencia, un atajo o un enfoque opcional que se tiene a mano para la tarea. Ignorar una nota no debería tener consecuencias negativas, pero podría perderse de algunos trucos que pueden facilitarle las cosas."
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr "Importante"
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr "Los cuadros de importante dan detalles de cosas que se pueden pasar por alto fácilmente: cambios de configuración únicamente aplicables a la sesión actual, o servicios que necesitan reiniciarse antes de que se aplique una actualización. Ignorar estos cuadros de importante no ocasionará pérdida de datos, pero puede causar enfado y frustración."
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr "Advertencia"
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr "Las advertencias no deben ignorarse. Ignorarlas muy probablemente ocasionará pérdida de datos. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,27 @@
+# translation of Feedback.po to
+#
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-17 14:54+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr "¡Necesitamos sus comentarios!"
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr "Debe sobreescribir esto creando su propio archivo local Feedback.xml. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,24 @@
+# translation of Legal_Notice.po to
+#
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Legal_Notice\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-17 15:06+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ""
+"Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; Este material solamente se distribuye bajo los términos y condiciones"
+"establecidos en la licencia de documentación libre de GNU (GFDL), V1.2 o versiones posteriores (la última versión está disponible en <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/es-ES/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,78 @@
+# translation of legal_notice.po to
+# Angela Garcia <agarcia at redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-17 16:47+1000\n"
+"Last-Translator: Angela Garcia <agarcia at redhat.com>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: legal_notice\n"
+"Language-Team:  <en at li.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"MIME-Version: 1.0\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr "Advertencia legal"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, "
+"<state>NC</state><postcode>27606-2072</postcode><country>USA</country> "
+"<phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> "
+"<fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research "
+"Triangle Park</city>, <state>NC</state><postcode>27709</"
+"postcode><country>USA</country> </address>"
+msgstr ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</"
+"state><postcode>27606-2072</postcode><country>USA</country> <phone>Teléfono: +1 "
+"919 754 3700</phone> <phone>Teléfono: 888 733 4281</phone> <fax>Fax: +1 919 754 "
+"3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, "
+"<state>NC</state><postcode>27709</postcode><country>USA</country> </address>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+"Derechos de autor <trademark class=\"copyright\"></trademark> 2007 por Red Hat, Inc.  "
+"Este material con derechos de autor está disponible para quien quiera utilizarlo, "
+"modificarlo, copiarlo o redistribuirlo sujeto a los términos y condiciones del "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Licencia Pública General Menor</ulink> tal como los publica la fundación para el software libre."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+msgstr ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+msgstr ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr "The GPG fingerprint of the security at redhat.com key is:"
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,28 @@
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-02-04T04:51:21\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#~ msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+#~ msgstr "HIBERNATE - Relational Persistence for Idiomatic Java"
+
+#~ msgid "Hibernate Reference Documentation"
+#~ msgstr "Hibernate Reference Documentation"
+
+#~ msgid "&copyrightHolder;"
+#~ msgstr "&copyrightHolder;"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,30 @@
+# 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: 2010-02-11T05:38:14\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
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,149 @@
+# Language ja-JP translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2009-07-14 19:55+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr ""
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr ""
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,603 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-01-13 10:25+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "アーキテクチャ"
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "概観"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr "Hibernate アーキテクチャの(非常に)高いレベルからのビュー:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We do not have the scope in this document to provide a more detailed view of "
+"all the runtime architectures available; Hibernate is flexible and supports "
+"several different approaches. We will, however, show the two extremes: "
+"\"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+"ここで実行時アーキテクチャのより詳細なビューをお見せしましょう。あいにく、 "
+"Hibernate は柔軟であり、いろいろなアプローチをサポートしています。ここでは、2"
+"つの極端な例をお見せします。「軽い」アーキテクチャでは、アプリケーションが自"
+"前の JDBC コネクションを用意し、アプリケーション自身がトランザクションを管理"
+"します。この方法は、 Hibernate API の最小限のサブセットを使います:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This next diagram illustrates how Hibernate utilizes database and "
+"configuration data to provide persistence services, and persistent objects, "
+"to the application."
+msgstr ""
+"この図は Hibernate が、アプリケーションに対して永続化サービス (と永続オブ"
+"ジェクト)を提供するために、データベースと設定データを使うことを示していま"
+"す。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The \"minimal\" architecture has the application provide its own JDBC "
+"connections and manage its own transactions. This approach uses a minimal "
+"subset of Hibernate's APIs:"
+msgstr ""
+"ここで実行時アーキテクチャのより詳細なビューをお見せしましょう。あいにく、 "
+"Hibernate は柔軟であり、いろいろなアプローチをサポートしています。ここでは、2"
+"つの極端な例をお見せします。「軽い」アーキテクチャでは、アプリケーションが自"
+"前の JDBC コネクションを用意し、アプリケーション自身がトランザクションを管理"
+"します。この方法は、 Hibernate API の最小限のサブセットを使います:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The \"comprehensive\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+"「軽い」アーキテクチャは、アプリケーションから、その下に位置する JDBC や JTA "
+"の API を取り払って抽象化し、その詳細の面倒を Hibernate に見させます。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr "以下は、図に含まれるオブジェクトの定義です:"
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A threadsafe, immutable cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can "
+"hold an optional (second-level) cache of data that is reusable between "
+"transactions at a process, or cluster, level."
+msgstr ""
+"1つのデータベースに対するコンパイルされたマッピングのスレッドセーフな(更新不"
+"能の)キャッシュ。 <literal>Session</literal> のファクトリであり、 "
+"<literal>ConnectionProvider</literal> のクライアント。オプションとして、プロ"
+"セスまたはクラスタレベルにおいて、トランザクション間で再利用可能なデータの"
+"(二次)キャッシュを持ちます。"
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. It wraps a JDBC connection and is "
+"a factory for <literal>Transaction</literal>. <literal>Session</literal> "
+"holds a mandatory first-level cache of persistent objects that are used when "
+"navigating the object graph or looking up objects by identifier."
+msgstr ""
+"アプリケーションと永続ストアとの対話を表す、シングルスレッドで短命のオブジェ"
+"クト。 JDBC コネクションをラップします。 <literal>Transaction</literal> の"
+"ファクトリです。永続オブジェクトの必須の(一次)キャッシュを保持します。この"
+"キャッシュはオブジェクトグラフをナビゲーションする時や、識別子でオブジェクト"
+"を検索する時に使われます。"
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "Persistent objects と Collections"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These can be ordinary JavaBeans/POJOs. They are "
+"associated with exactly one <literal>Session</literal>. Once the "
+"<literal>Session</literal> is closed, they will be detached and free to use "
+"in any application layer (for example, directly as data transfer objects to "
+"and from presentation)."
+msgstr ""
+"永続化状態とビジネス機能を持つ、短命でシングルスレッドのオブジェクト。これは"
+"通常の JavaBeans/POJO のこともありますが、特徴的なことは、その時点での(ただ1"
+"つの) <literal>Session</literal> と関連していることです。 <literal>Session</"
+"literal> がクローズされるとすぐに、それらは切り離されて他のアプリケーション層"
+"から自由に使うことができます(例えばデータトランスファオブジェクトとして、プ"
+"レゼンテーション層から、またはプレゼンテーション層へ直接使用できます)。"
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "Transient と detached な objects と Collections"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not yet persisted, or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"現時点では <literal>Session</literal> と関連していない、永続クラスのインスタ"
+"ンス。すでにアプリケーション側でインスタンス化されていて、まだ永続化されてい"
+"ないか、クローズされた <literal>Session</literal> でインスタンス化されたかの"
+"どちらかです。"
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. It abstracts the application from the "
+"underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> "
+"might span several <literal>Transaction</literal>s in some cases. However, "
+"transaction demarcation, either using the underlying API or "
+"<literal>Transaction</literal>, is never optional."
+msgstr ""
+"(オプション) 原子性を持つ作業単位 (Unit of Work) を指定するために、アプリケー"
+"ションが使用する、シングルスレッドで短命なオブジェクト。下に位置する JDBC 、 "
+"JTA 、 CORBA トランザクションからアプリケーションを抽象化します。 "
+"<literal>Session</literal> は、時にはいくつかの <literal>Transaction</"
+"literal> をまたがるかもしれません。しかし、下の層の API を使うにせよ、 "
+"<literal>Transaction</literal> を使うにせよ、トランザクション境界を設定するこ"
+"とは、決してオプションではありません。"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for, and pool of, JDBC connections. It abstracts the "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. It is not exposed to application, but it "
+"can be extended and/or implemented by the developer."
+msgstr ""
+"(オプション) JDBC コネクション(とそのプール)のファクトリ。下の層に位置する "
+"<literal>Datasource</literal> や <literal>DriverManager</literal> からアプリ"
+"ケーションを抽象化します。アプリケーションには公開されませんが、開発者が継承"
+"または実装することは可能です。"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. It is not "
+"exposed to the application, but it can be extended and/or implemented by the "
+"developer."
+msgstr ""
+"(オプション) <literal>Transaction</literal> インスタンスのファクトリ。アプリ"
+"ケーションには公開されませんが、開発者が継承または実装することは可能です。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "<emphasis>Extension Interfaces</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers a range of optional extension interfaces you can implement "
+"to customize the behavior of your persistence layer. See the API "
+"documentation for details."
+msgstr ""
+"Hibernate は、永続層の振る舞いをカスタマイズするために、多くのオプション拡張"
+"インタフェースを用意しています。詳細は API ドキュメントを参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Given a \"minimal\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC "
+"directly."
+msgstr ""
+"「軽い」アーキテクチャでは、アプリケーションは直接 JTA や JDBC と対話するため"
+"に、 <literal>Transaction</literal> や <literal>TransactionFactory</literal> "
+"や <literal>ConnectionProvider</literal> の API をバイパスします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "インスタンスの状態"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of a persistent class can be in one of three different states. "
+"These states are defined in relation to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context. The three different states are as follows:"
+msgstr ""
+"永続クラスのインスタンスは、次の3つの異なる状態のどれかになります。それは、 "
+"<emphasis>永続コンテキスト</emphasis> によって決まります。 Hibernate の "
+"<literal>Session</literal> オブジェクトが、永続コンテキストになります:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "transient"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The instance is not associated with any persistence context. It has no "
+"persistent identity or primary key value."
+msgstr ""
+"この状態のインスタンスは、現在もそして過去においても、永続コンテキストに関連"
+"づいていません。また、永続 ID (主キーの値)を 持っていません。"
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "persistent"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and can have a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity in relation to the in-memory location of the object."
+msgstr ""
+"この状態のインスタンスは、その時点で永続コンテキストに関連づいています。ま"
+"た、永続 ID (主キーの値)を持ち、たいていはデータベースに対応する行を持って"
+"いるでしょう。特定の永続コンテキストのなかでは、永続 ID が Java の ID (オブ"
+"ジェクトのメモリ上の位置)と同じであることを Hibernate が <emphasis>保証</"
+"emphasis> します。"
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "detached"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and can have a corresponding row in the database. "
+"For detached instances, Hibernate does not guarantee the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"この状態のインスタンスは、かつて永続コンテキストに関連づけられたが、そのコン"
+"テキストがクローズされたか、あるいは、他のプロセスにそのインスタンスがシリア"
+"ライズされたかです。このインスタンスは、永続 ID を持ち、たいていはデータベー"
+"スに対応する行を持っているでしょう。分離インスタンスに対しては、永続 ID と "
+"Java の ID との関連は、 Hibernate が保証しません。"
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "JMX との統合"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for the management of Java components. Hibernate "
+"can be managed via a JMX standard service. AN MBean implementation is "
+"provided in the distribution: <literal>org.hibernate.jmx.HibernateService</"
+"literal>."
+msgstr ""
+"JMX は Java コンポーネント管理の J2EE 標準です。 JMX 標準サービスを通して、 "
+"Hibernate は管理されます。ディストリビューションの中に <literal>org."
+"hibernate.jmx.HibernateService</literal> という MBean 実装を用意しています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For an example of how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. JBoss AS also provides "
+"these benefits if you deploy using JMX:"
+msgstr ""
+"JBoss アプリケーションサーバー上に Hibernate を JMX サービスとしてデプロイす"
+"る方法の例としては、 JBoss ユーザーガイドを参照してください。 JBoss アプリ"
+"ケーションサーバーにおいて、 JMX を使ってデプロイすると、次のメリットが得られ"
+"ます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means that you no longer have to manually open and close "
+"the <literal>Session</literal>; this becomes the job of a JBoss EJB "
+"interceptor. You also do not have to worry about transaction demarcation in "
+"your code (if you would like to write a portable persistence layer use the "
+"optional Hibernate <literal>Transaction</literal> API for this). You call "
+"the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>セッション管理:</emphasis> Hibernate の <literal>Session</literal> "
+"のライフサイクルは、自動的に JTA トランザクションのスコープに結びつけられま"
+"す。これは、もはや手動で <literal>Session</literal> をオープンしたり、クロー"
+"ズしたりする必要がないことを意味します。これは、 JBoss EJB インターセプタの仕"
+"事になります。また、コードのどこでトランザクション境界を設定するかについて、"
+"もはや悩む必要がありません(もちろん移植可能な永続層を書かかなくていいのなら"
+"ば、オプションの Hibernate の <literal>Transaction</literal> を使用してくださ"
+"い。) <literal>Session</literal> にアクセスするためには、 "
+"<literal>HibernateContext</literal> をコールしてください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed "
+"using a JBoss service deployment descriptor in an EAR and/or SAR file, as it "
+"supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still need to name all your "
+"mapping files in the deployment descriptor. If you use the optional HAR "
+"deployment, JBoss will automatically detect all mapping files in your HAR "
+"file."
+msgstr ""
+"<emphasis>HAR デプロイ:</emphasis> 通常、( EAR または SAR ファイルにある) "
+"JBoss サービスデプロイメントディスクリプタを使って、 Hibernate JMX サービスを"
+"デプロイします。それは、 Hibernate の <literal>SessionFactory</literal> の全"
+"ての一般的な設定オプションをサポートします。しかし依然としてデプロイメント"
+"ディスクリプタのなかにすべてのマッピングファイルの名前を挙げる必要がありま"
+"す。もし、オプションの HAR デプロイメントを使うことを決めたなら、 JBoss は自"
+"動的に HAR ファイルのなかの全てのマッピングファイルを検出します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"これらのオプションについての詳細な情報は、 JBoss アプリケーションサーバーユー"
+"ザーガイドを参考にしてください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another feature available as a JMX service is runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\" /> for more "
+"information."
+msgstr ""
+"JMX サービスとして利用可能な他の機能に、 Hibernate 実行時統計情報があります。"
+"<xref linkend=\"configuration-optional-statistics\"/> を見てください。"
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "JCA サポート"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also be configured as a JCA connector. Please see the website "
+"for more information. Please note, however, that at this stage Hibernate JCA "
+"support is under development."
+msgstr ""
+"Hibernate は JCA コネクタとしても設定できます。詳細については、 Web サイトを"
+"見てください。 Hibernate JCA サポートは、今のところ実験段階として考えられてい"
+"ることに注意してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr "コンテキスト上のセッション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" session, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks, such as Spring or Pico, which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"Hibernate を使ったアプリケーションは、ほとんど、なんらかの形で「コンテキスト"
+"上の」セッションが必要になります。「コンテキスト上のセッション」は、特定のコ"
+"ンテキストのスコープのなかで有効なセッションのことです。しかし、通常アプリ"
+"ケーションごとにコンテキストを構成するものの定義は異なります。しかも、異なる"
+"複数のコンテキストは、現時点に対して異なるスコープを定義します。バージョン3.0"
+"より前の Hibernate では、自作の <literal>ThreadLocal</literal> ベースの「コン"
+"テキスト上のセッション」を利用するか、 <literal>HibernateUtil</literal> のよ"
+"うなヘルパークラスを利用するか、 proxy/interception ベースの「コンテキスト上"
+"のセッション」を提供する (Spring や Pico のような)サードパーティのフレーム"
+"ワークを利用するかのいずれかでした。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. Given "
+"the maturity of the numerous stand-alone <literal>JTA TransactionManager</"
+"literal> implementations, most, if not all, applications should be using "
+"<literal>JTA</literal> transaction management, whether or not they are "
+"deployed into a <literal>J2EE</literal> container. Based on that, the "
+"<literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+"バージョン 3.0.1 から、 Hibernate には <literal>SessionFactory."
+"getCurrentSession()</literal> メソッドが加わりました。これは、 <literal>JTA</"
+"literal> トランザクションの使用を前提にしています。 <literal>JTA</literal> ト"
+"ランザクションは、現在のセッションのスコープとコンテキストの両方を定義しま"
+"す。 Hibernate チームは、次のことを主張します。巨大なスタンドアロンの "
+"<literal>JTA TransactionManager</literal> 実装が成熟したら、 <literal>J2EE</"
+"literal> コンテナ上にデプロイされるかどうかにかかわらず、ほとんどの(すべてと"
+"は言わないが)アプリケーションが、 <literal>JTA</literal> トランザクション管"
+"理を使用すべきであると。この考えに基づくと、 <literal>JTA</literal> ベースの"
+"「コンテキスト上のセッション」を使うしかないでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, "
+"and a new configuration parameter, <literal>hibernate."
+"current_session_context_class</literal>, have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"しかし、バージョン 3.1 からは、 <literal>SessionFactory.getCurrentSession()</"
+"literal> の後の処理が、プラガブルになりました。これを受けて、現在のセッション"
+"を定義するスコープとコンテキストのプラガビリティを可能にするために、新しい拡"
+"張インタフェース ( <literal>org.hibernate.context.CurrentSessionContext</"
+"literal> ) と新しい構成パラメータ ( <literal>hibernate."
+"current_session_context_class</literal> ) が追加されました。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface:"
+msgstr ""
+"<literal>org.hibernate.context.CurrentSessionContext</literal> インタフェース"
+"の規約についての詳細な内容は Javadoc を参照してください。それには、 "
+"<literal>currentSession()</literal> という1つのメソッドが定義されており、その"
+"実装は、現在の「コンテキスト上のセッション」を追跡することに責任を持ちます。"
+"そのまま使えるように、 Hibernate はこのインタフェースの実装を2つ提供していま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: current sessions "
+"are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal> - <literal>JTA</"
+"literal> トランザクションによって、現在のセッションが追跡され、スコープを決め"
+"られます。この処理は、古い JTA だけのアプローチとまったく同じです。詳細は "
+"Javadoc を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current "
+"sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - スレッド"
+"の実行によって、現在のセッションが追跡されます。詳細は Javadoc を参照してくだ"
+"さい。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal> - スレッドの実"
+"行によって、現在のセッションが追跡されます。しかし、このクラスの static メ"
+"ソッドで <literal>Session</literal> インスタンスをバインド/アンバインドする責"
+"任はあなたにあります。これは決して <literal>Session</literal> をオープン、フ"
+"ラッシュ、クローズしません。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model. This is also known and used as "
+"<emphasis>session-per-request</emphasis>. The beginning and end of a "
+"Hibernate session is defined by the duration of a database transaction. If "
+"you use programmatic transaction demarcation in plain JSE without JTA, you "
+"are advised to use the Hibernate <literal>Transaction</literal> API to hide "
+"the underlying transaction system from your code. If you use JTA, you can "
+"utilize the JTA interfaces to demarcate transactions. If you execute in an "
+"EJB container that supports CMT, transaction boundaries are defined "
+"declaratively and you do not need any transaction or session demarcation "
+"operations in your code. Refer to <xref linkend=\"transactions\" /> for more "
+"information and code examples."
+msgstr ""
+"はじめの2つの実装は、「1セッション - 1データベーストランザクション」プログラ"
+"ミングモデルを提供します。これは <emphasis>リクエストごとのセッション"
+"(session-per-request)</emphasis> としても知られており、使われています。 "
+"Hibernate セッションの開始と終了は、データベーストランザクションの期間で決ま"
+"ります。 JTA を使わない普通の JSE で、プログラム上のトランザクション境界設定"
+"を行うなら、コードから基礎のトランザクションシステムを隠蔽するために、 "
+"Hibernate <literal>Transaction</literal> API を使うとよいでしょう。 JTA を使"
+"うなら、トランザクションの境界設定には、 JTA インターフェースを使ってくださ"
+"い。 CMT をサポートする EJB コンテナで実行するつもりなら、トランザクション境"
+"界は宣言的に定義できるため、コード上でトランザクションやセッションの境界を設"
+"定する必要はありません。さらに詳細な情報やコードの例は、 <xref linkend="
+"\"transactions\"/> を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. For backwards "
+"compatibility, if this configuration parameter is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use. For the three out-of-the-box implementations, "
+"however, there are three corresponding short names: \"jta\", \"thread\", and "
+"\"managed\"."
+msgstr ""
+"<literal>hibernate.current_session_context_class</literal> 設定パラメータ"
+"は、 <literal>org.hibernate.context.CurrentSessionContext</literal> のどの実"
+"装を使うかを指定します。下位互換性のため、このパラメータが設定されず "
+"<literal>org.hibernate.transaction.TransactionManagerLookup</literal> が設定"
+"されていた場合、 Hibernate は <literal>org.hibernate.context."
+"JTASessionContext</literal> を使うことに注意してください。通常このパラメータ"
+"の値には、3つの実装の中から使用する実装クラスの名前を直接指定します。しかし、"
+"\"jta\"、 \"thread\"、 \"managed\"というそれぞれの省略名も用意されています。"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1133 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-01-06 17:26+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "関連マッピング"
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "イントロダクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"関連マッピングはしばしば理解が最も難しいものになります。この章では、基本的な"
+"一つ一つのケースについて述べます。単方向のマッピングから始め、それから双方向"
+"のケースについて考えていきます。例として、 <literal>Person</literal> と "
+"<literal>Address</literal> を用います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"関連は、結合テーブルを入れるかかどうかと、多重度によって分類することにしま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"null 可能な外部キーは従来型データモデリングの中では良い習慣と見なされていない"
+"ため、すべての例で not null の外部キーを使用します。これは Hibernate の要件で"
+"はありません。 not null 制約を外したとしても、マッピングは問題なく動作しま"
+"す。"
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "単方向関連"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-one"
+msgstr "many-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"<emphasis>単方向多対一関連</emphasis> は単方向関連の中で最も一般的なもので"
+"す。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-one"
+msgstr "one-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"<emphasis>外部キーの単方向一対一関連</emphasis> はほとんど同じものです。唯一"
+"違うのは、カラムのユニークな制約です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"<emphasis>主キーの単方向一対一関連</emphasis> は通常、特別な ID ジェネレータ"
+"を使います。 (この例では関連の方向が逆になっていることに注意してください)"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-many"
+msgstr "one-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"<emphasis>外部キーの単方向一対多関連</emphasis> はとても特殊なケースで、あま"
+"り推奨されていません。"
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr "このような関連のために結合テーブルを使うことをお薦めします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "結合テーブルを使った単方向関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"<emphasis>結合テーブルを使った単方向一対多関連</emphasis> はより好ましいで"
+"す。 <literal>unique=\"true\"</literal> の指定により、多重度が多対多から一対"
+"多に変わったことに注意して下さい。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"<emphasis>結合テーブルの単方向多対一関連</emphasis> は関連が任意であるときに"
+"非常に一般的なものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>結合テーブルの単方向一対一関連</emphasis> は、非常に特殊ですが不可"
+"能ではありません。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-many"
+msgstr "many-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr "最後に、 <emphasis>単方向多対多関連</emphasis> を示します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "双方向関連"
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "一対多/多対一"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"<emphasis>双方向多対一関連</emphasis> は最も一般的な関連です。 (標準的な親子"
+"関係です)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"<literal>List</literal> (または他のインデックス付きのコレクション)を使うな"
+"ら、外部キーの <literal>key</literal> カラムを <literal>not null</literal> に"
+"設定し、コレクション側が各要素のインデックスをメンテナンスするように、関連を"
+"扱う必要があります (<literal>update=\"false\"</literal> かつ "
+"<literal>insert=\"false\"</literal> と設定して、反対側を仮想的に inverse にし"
+"ます):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"もし外部キーカラムが <literal>NOT NULL</literal> であるならば、コレクション"
+"マッピングの <literal>&lt;key&gt;</literal> 要素を <literal>not-null=\"true"
+"\"</literal> にすることは重要です。入れ子になった <literal>&lt;column&gt;</"
+"literal> 要素だけではなく、 <literal>&lt;key&gt;</literal> 要素も "
+"<literal>not-null=\"true\"</literal> と定義しないようにしてください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr "<emphasis>外部キーの双方向一対一関連</emphasis> は非常に一般的です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"<emphasis>主キーの双方向一対一関連</emphasis> は特殊な ID ジェネレータを使い"
+"ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "結合テーブルを使った双方向関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"<emphasis>結合テーブルの双方向一対多関連</emphasis> です。 <literal>inverse="
+"\"true\"</literal> が関連端、コレクション、結合のいずれかに設定できることに注"
+"意してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "一対一"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>結合テーブルの双方向一対一関連</emphasis> は非常に特殊ですが、可能"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr "最後に、 <emphasis>双方向多対多関連</emphasis> を示します。"
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "より複雑な関連マッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"より複雑な関連結合は <emphasis>極めて</emphasis> 稀です。マッピングドキュメン"
+"トに SQL 文を埋め込むことで、さらに複雑な状況を扱うことができます。例えば、 "
+"<literal>accountNumber</literal> 、 <literal>effectiveEndDate</literal> 、 "
+"<literal>effectiveStartDate</literal> カラムを持つ account (口座)情報の履歴"
+"を扱うテーブルは、以下のようにマッピングします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"そして、関連を <emphasis>現時点の</emphasis> インスタンス "
+"(<literal>effectiveEndDate</literal> が null であるもの)にマッピングしま"
+"す。以下のようになります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"さらに複雑な例では、 <literal>Employee(従業員)</literal> と "
+"<literal>Organization(組織)</literal> 間の関連が <literal>Employment(雇"
+"用)</literal> テーブルで保持される場合を想像してください。このテーブルには雇"
+"用データの履歴がすべて含まれます。すると従業員の <emphasis>最も最近の</"
+"emphasis> 雇用者を表す関連 (最も最近の <literal>startDate</literal> を持つも"
+"の)は、このようにマッピングできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"この機能は非常に強力です。しかしこのような場合、普通は HQL や criteria クエリ"
+"を使う方がより実践的です。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;person&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"person\" constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint \n"
+#~ "    not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint\n"
+#~ "    not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, \n"
+#~ "    primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"people\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Person\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "   &lt;id name=\"id\"/&gt;\n"
+#~ "   ...\n"
+#~ "   &lt;many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "   &lt;id name=\"id\"/&gt;\n"
+#~ "   ...\n"
+#~ "   &lt;list name=\"people\"&gt;\n"
+#~ "      &lt;key column=\"addressId\" not-null=\"true\"/&gt;\n"
+#~ "      &lt;list-index column=\"peopleIdx\"/&gt;\n"
+#~ "      &lt;one-to-many class=\"Person\"/&gt;\n"
+#~ "   &lt;/list&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "   &lt;one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"address\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;person&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"&gt;\n"
+#~ "        &lt;key column=\"personId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"addressId\" \n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"personId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"addresses\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"personId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"addressId\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;set name=\"people\" inverse=\"true\" table=\"PersonAddress\"&gt;\n"
+#~ "        &lt;key column=\"addressId\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;properties name=\"currentAccountKey\"&gt;\n"
+#~ "    &lt;property name=\"accountNumber\" type=\"string\" not-null=\"true\"/"
+#~ "&gt;\n"
+#~ "    &lt;property name=\"currentAccount\" type=\"boolean\"&gt;\n"
+#~ "        &lt;formula&gt;case when effectiveEndDate is null then 1 else 0 "
+#~ "end&lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "&lt;/properties&gt;\n"
+#~ "&lt;property name=\"effectiveEndDate\" type=\"date\"/&gt;\n"
+#~ "&lt;property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\"&gt;\n"
+#~ "    &lt;column name=\"accountNumber\"/&gt;\n"
+#~ "    &lt;formula&gt;'1'&lt;/formula&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "&lt;join&gt;\n"
+#~ "    &lt;key column=\"employeeId\"/&gt;\n"
+#~ "    &lt;subselect&gt;\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    &lt;/subselect&gt;\n"
+#~ "    &lt;many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/&gt;\n"
+#~ "&lt;/join&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,5819 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-06 10:49+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "基本的な O/R マッピング"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "マッピング定義"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations and not table declarations."
+msgstr ""
+"オブジェクト/リレーショナルマッピングは通常 XML ドキュメントで定義します。"
+"マッピングドキュメントは、読みやすく手作業で編集しやすいようにデザインされて"
+"います。マッピング言語は Java 中心、つまりテーブル定義ではなく永続クラスの定"
+"義に基づいて構築されています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that even though many Hibernate users choose to write the XML by "
+"hand, a number of tools exist to generate the mapping document. These "
+"include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+"多くの Hibernate ユーザーは XML マッピングの記述を手作業で行いますが、 "
+"XDoclet, Middlegen, AndroMDA というようなマッピングドキュメントを生成するツー"
+"ルがいくつか存在することを覚えておいてください。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example mapping:"
+msgstr "サンプルのマッピングから始めましょう:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe, however, the document elements and attributes that are used by "
+"Hibernate at runtime. The mapping document also contains some extra optional "
+"attributes and elements that affect the database schemas exported by the "
+"schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+"マッピングドキュメントの内容を説明します。ただし、ここでは Hibernate が実行時"
+"に使うドキュメント要素と属性についてのみ説明します。マッピングドキュメント"
+"は、いくつかのオプション属性と要素を含んでいます(例えば <literal>not-null</"
+"literal> 属性)。それらはスキーマエクスポートツールが出力するデータベースス"
+"キーマに影響を与えるものです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD can be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate "
+"will always look for the DTD in its classpath first. If you experience "
+"lookups of the DTD using an Internet connection, check the DTD declaration "
+"against the contents of your classpath."
+msgstr ""
+"XML マッピングでは、お見せしたようなドキュメント型を必ず定義すべきです。実際"
+"の DTD は、上記の URL の <literal>hibernate-x.x.x/src/org/hibernate</"
+"literal> ディレクトリ、または <literal>hibernate.jar</literal> 内にありま"
+"す。 Hibernate は常に、そのクラスパス内で DTD を探し始めます。インターネット"
+"にある DTD ファイルを探そうとしたなら、クラスパスの内容を見て、 DTD 宣言を確"
+"認してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "エンティティリゾルバ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will first attempt to resolve DTDs in its classpath. It does this "
+"is by registering a custom <literal>org.xml.sax.EntityResolver</literal> "
+"implementation with the SAXReader it uses to read in the xml files. This "
+"custom <literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces:"
+msgstr ""
+"前述したように、 Hibernate はまずクラスパス内で DTD を解決しようとします。 "
+"<literal>org.xml.sax.EntityResolver</literal> のカスタム実装を XML ファイルを"
+"読み込むための SAXReader に登録することによって、 DTD を解決します。このカス"
+"タムの <literal>EntityResolver</literal> は2つの異なるシステム ID 名前空間を"
+"認識します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounters a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>. The resolver attempts to resolve these entities via the "
+"classloader which loaded the Hibernate classes."
+msgstr ""
+"<literal>hibernate namespace</literal> は、リゾルバが <literal>http://"
+"hibernate.sourceforge.net/</literal> で始まるシステム ID に到達したときに認識"
+"されます。そしてリゾルバは、 Hibernate のクラスをロードしたクラスローダを用い"
+"て、これらのエンティティを解決しようとします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounters a systemId using a <literal>classpath://</literal> URL protocol. "
+"The resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"<literal>user namespace</literal> は、リゾルバが URL プロトコルの "
+"<literal>classpath://</literal> を使ったシステム ID に到達したときに、認識さ"
+"れます。そしてリゾルバは、 (1) カレントスレッドのコンテキストクラスローダー、"
+"または (2) Hibernate のクラスをロードしたクラスローダを使って、これらのエン"
+"ティティを解決しようとします。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "下記は、ユーザー名前空間を使った例です:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"ここで <literal>types.xml</literal> は <literal>your.domain</literal> パッ"
+"ケージ内のリソースであり、カスタム型定義 <xref linkend=\"mapping-types-custom"
+"\"/> を含みます。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Hibernate-mapping"
+msgstr "hibernate-mapping"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If they are "
+"specified, tablenames will be qualified by the given schema and catalog "
+"names. If they are missing, tablenames will be unqualified. The "
+"<literal>default-cascade</literal> attribute specifies what cascade style "
+"should be assumed for properties and collections that do not specify a "
+"<literal>cascade</literal> attribute. By default, the <literal>auto-import</"
+"literal> attribute allows you to use unqualified class names in the query "
+"language."
+msgstr ""
+"この要素にはいくつかオプション属性があります。 <literal>schema</literal> 属性"
+"と <literal>catalog</literal> 属性は、このマッピングが参照するテーブルが、こ"
+"の属性によって指定されたスキーマと(または)カタログに属することを指定します。"
+"この属性が指定されると、テーブル名は与えられたスキーマ名とカタログ名で修飾さ"
+"れます。これらの属性が指定されていなければ、テーブル名は修飾されません。 "
+"<literal>default-cascade</literal> 属性は、 <literal>cascade</literal> 属性を"
+"指定していないプロパティやコレクションに、どのカスケードスタイルを割り当てる"
+"かを指定します。 <literal>auto-import</literal> 属性は、クエリ言語内で修飾さ"
+"れていないクラス名を、デフォルトで使えるようにします。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr "<literal>schema</literal>(オプション):データベーススキーマの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr ""
+"<literal>catalog</literal> (オプション):データベースカタログの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): a default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (オプション - デフォルトは "
+"<literal>none</literal>): デフォルトのカスケードスタイル。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing all properties. "
+"It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (オプション - デフォルトは "
+"<literal>property</literal> ): Hibernate がプロパティにアクセスする際に取る"
+"べき戦略。 <literal>PropertyAccessor</literal> を実装することでカスタマイズ可"
+"能。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): the default value for unspecified <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): <literal>lazy</literal> 属性が指定されていないクラスやコレクショ"
+"ンマッピングに対するデフォルト値。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): specifies whether we can use unqualified class names of classes "
+"in this mapping in the query language."
+msgstr ""
+"<literal>auto-import</literal> (オプション - デフォルトは <literal>true</"
+"literal>):クエリ言語内で、(このマッピング内のクラスの)修飾されていないク"
+"ラス名を使えるかどうかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>package</literal> (optional): specifies a package prefix to use for "
+"unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (オプション): マッピングドキュメント内で修飾されて"
+"いないクラス名に対して割り当てる、パッケージの接頭辞 (prefix) を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have two persistent classes with the same unqualified name, you "
+"should set <literal>auto-import=\"false\"</literal>. An exception will "
+"result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"(修飾されていない)同じ名前の永続クラスが2つあるなら、 <literal>auto-import="
+"\"false\"</literal> を設定すべきです。2つのクラスに\"インポートされた\"同じ名"
+"前を割り当てようとすると、 Hibernate は例外を送出します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate-mapping</literal> element allows you to nest several "
+"persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, "
+"however, good practice (and expected by some tools) to map only a single "
+"persistent class, or a single class hierarchy, in one mapping file and name "
+"it after the persistent superclass. For example, <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"<literal>hibernate-mapping</literal> 要素は、最初の例で示したようにいくつかの"
+"永続 <literal>&lt;class&gt;</literal> マッピングをネストできます。しかし、1"
+"つのマッピングファイルではただひとつの永続クラス(またはひとつのクラス階層)に"
+"マッピングするようにし、さらに永続スーパークラスの後で指定するべきでしょう(い"
+"くつかのツールはこのようなマッピングファイルを想定しています)。例えば次のよう"
+"になります。: <literal>Cat.hbm.xml</literal> , <literal>Dog.hbm.xml</"
+"literal> , または継承を使うなら <literal>Animal.hbm.xml</literal> 。"
+
+#. Tag: title
+#, no-c-format
+msgid "Class"
+msgstr "Class"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can declare a persistent class using the <literal>class</literal> "
+"element. For example:"
+msgstr "<literal>class</literal> 要素を使って、永続クラスを宣言できます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the fully qualified Java class name of "
+"the persistent class or interface. If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (オプション):永続クラス(またはインターフェース)の"
+"完全修飾 Java クラス名。もしこの属性が欠落している場合、 POJO ではないエン"
+"ティティに対するマッピングとして扱われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): the name of its database table."
+msgstr ""
+"<literal>table</literal> (オプション - デフォルトは修飾されていないクラス"
+"名):データベーステーブルの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses that is used for "
+"polymorphic behavior. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (オプション - デフォルトはクラス名): "
+"ポリモーフィックな振る舞いに使われる個々のサブクラスを識別するための値。値は "
+"<literal>null</literal> か <literal>not null</literal> のいずれかを取ります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (オプション、デフォルトは <literal>true</"
+"literal> ): そのクラスのインスタンスが更新可能(または不可能)であることを指"
+"定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): overrides the schema name specified by "
+"the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>schema</literal> (オプション): ルートの <literal>&lt;hibernate-"
+"mapping&gt;</literal> 要素で指定したスキーマ名をオーバーライドします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): overrides the catalog name specified "
+"by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>catalog</literal> (オプション): ルートの <literal>&lt;hibernate-"
+"mapping&gt;</literal> 要素で指定したカタログ名をオーバーライドします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies an interface to use for lazy "
+"initializing proxies. You can specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (オプション):遅延初期化プロキシに使うインター"
+"フェースを指定します。永続化するクラス名そのものを指定することも可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and can contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (オプション、 デフォルトは "
+"<literal>false</literal> ):値が変更されたカラムだけを含む SQL の "
+"<literal>UPDATE</literal> 文を、実行時に生成することを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (オプション, デフォルトは <literal>false</"
+"literal> ):値が null ではないカラムだけを含む SQL の <literal>INSERT</"
+"literal> 文を、実行時に生成することを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional - defaults to "
+"<literal>false</literal>): specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. Only when a transient object has been "
+"associated with a new session using <literal>update()</literal>, will "
+"Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an "
+"<literal>UPDATE</literal> is actually required."
+msgstr ""
+"<literal>select-before-update</literal> (オプション、デフォルトは "
+"<literal>false</literal>): オブジェクトが変更されたのが確実でないならば、 "
+"Hibernate が SQL の <literal>UPDATE</literal> を <emphasis>決して実行しない</"
+"emphasis> ことを指定します。ある特定の場合(実際的には、一時オブジェクトが "
+"<literal>update()</literal> を使い、新しいセッションと関連付けられた時だ"
+"け)、 <literal>UPDATE</literal> が実際に必要かどうかを決定するために、 "
+"Hibernate が余分な SQL の <literal>SELECT</literal> 文を実行することを意味し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional - defaults to <literal>implicit</"
+"literal>): determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (オプション、デフォルトでは "
+"<literal>implicit</literal> ): implicit(暗黙)かexplicit(明示)の、どちらの"
+"クエリポリモーフィズムを使うか決定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition to be used when retrieving objects of "
+"this class."
+msgstr ""
+"<literal>where</literal> (オプション): このクラスのオブジェクトを検索する"
+"ときに使用する、任意の SQL の <literal>WHERE</literal> 条件を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (オプション):カスタム "
+"<literal>ClassPersister</literal> を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for fetching instances of this class by "
+"identifier."
+msgstr ""
+"<literal>batch-size</literal> (オプション、デフォルトは <literal>1</"
+"literal> ): 識別子でこのクラスのインスタンスを復元するときの「バッチサイ"
+"ズ」を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>version</"
+"literal>): determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション、デフォルトは "
+"<literal>version</literal> ): 楽観ロック戦略を決定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): lazy fetching can be disabled by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (オプション): <literal>lazy=\"false\"</literal> と"
+"設定することで、遅延フェッチができなくなります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional - defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times, potentially to "
+"different tables. It also allows entity mappings that are represented by "
+"Maps or XML at the Java level. In these cases, you should provide an "
+"explicit arbitrary name for the entity. See <xref linkend=\"persistent-"
+"classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+"<literal>entity-name</literal> (オプション、デフォルトはクラス名): "
+"Hibernate3 ではクラスが複数回マッピングでき(場合によっては違うテーブルに対し"
+"ても)、 Java レベルで Map や XML で表現されるエンティティマッピングが可能で"
+"す。これらの場合、エンティティに対して任意の名前を、明示的に付けなくてはなり"
+"ません。 詳しくは <xref linkend=\"persistent-classes-dynamicmodels\"/> と "
+"<xref linkend=\"xml\"/> を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>check</literal> (optional): an SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (オプション):自動的にスキーマを生成するために、複"
+"数行の <emphasis>check</emphasis> 制約を生成する SQL 式。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. "
+"On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra "
+"column for fast updates once this option has been set to <literal>rowid</"
+"literal>. A ROWID is an implementation detail and represents the physical "
+"location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (オプション): Hibernate は、それをサポートしてい"
+"るデータベースで ROWID と 呼ばれるものを使うことができます。例えば Oracle を"
+"使っているとき、このオプションに <literal>rowid</literal> を設定すれば、 "
+"Hiberante は update を高速化するために <literal>rowid</literal> という特別な"
+"カラムを使うことができます。 ROWID は詳細な実装であり、保存されたタプルの物理"
+"的な位置を表しています。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): maps an immutable and read-only "
+"entity to a database subselect. This is useful if you want to have a view "
+"instead of a base table. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (オプション):不変かつ読み取り専用であるエン"
+"ティティをデータベースの副問合せ(subselect)にマッピングします。もし元のテー"
+"ブルの代わりにビューを持ちたければ有用ですが、そうでないのなら有用ではありま"
+"せん。より詳しい情報は下記を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): is used to mark abstract "
+"superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (オプション): <literal>&lt;union-subclass&gt;"
+"</literal> 階層内の抽象スーパークラスにマークするために使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is acceptable for the named persistent class to be an interface. You can "
+"declare implementing classes of that interface using the <literal>&lt;"
+"subclass&gt;</literal> element. You can persist any <emphasis>static</"
+"emphasis> inner class. Specify the class name using the standard form i.e. "
+"<literal>e.g.Foo$Bar</literal>."
+msgstr ""
+"永続クラスの名前にインターフェースを指定してもまったく問題ありません。そのと"
+"きは <literal>&lt;subclass&gt;</literal> 要素を使って、そのインターフェースを"
+"実装するクラスを定義してください。 <emphasis>static</emphasis> な内部クラスで"
+"も永続化できます。そのときは標準形式、例えば <literal>eg.Foo&#36;Bar</"
+"literal> を使ってクラス名を指定してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"<literal>mutable=\"false\"</literal> 指定をした不変クラスは、アプリケーション"
+"による更新や削除が出来ないことがあります。これにより、 Hibernate がパフォーマ"
+"ンスを少し改善します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies that implement the named interface. The persistent object will load "
+"when a method of the proxy is invoked. See \"Initializing collections and "
+"proxies\" below."
+msgstr ""
+"オプションの <literal>proxy</literal> 属性により、クラスの永続インスタンスの"
+"遅延初期化が可能になります。 Hibernate は最初に、指定したインターフェースを実"
+"装した CGLIB プロキシを返します。実際の永続オブジェクトはプロキシのメソッドを"
+"呼び出すときにロードします。以下の「遅延初期化のためのプロキシ」を参照してく"
+"ださい。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or class, and that instances of any subclass of the class will be "
+"returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class. Queries that name the class will "
+"return only instances of subclasses mapped inside this <literal>&lt;class&gt;"
+"</literal> declaration as a <literal>&lt;subclass&gt;</literal> or "
+"<literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default "
+"<literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table This allows a \"lightweight\" class that contains a subset of the "
+"table columns."
+msgstr ""
+" <emphasis>暗黙的</emphasis> ポリモーフィズムとは、次の二つを意味しています。"
+"一つはクラスのインスタンスが、スーパークラスや実装したインターフェース、また"
+"そのクラスを指定するクエリによって返されることで、もう一つはそのクラスのサブ"
+"クラスのインスタンスが、そのクラス自身を指定したクエリによって返されることで"
+"す。また、 <emphasis>明示的</emphasis> ポリモーフィズムとは、次の二つを意味し"
+"ています。一つはクラスのインスタンスが、そのクラスを明示的に指定したクエリに"
+"よってのみ返されることで、もう一つはクラスを指定したクエリが、 <literal>&lt;"
+"class&gt;</literal> 要素の中で <literal>&lt;subclass&gt;</literal> や "
+"<literal>&lt;joined-subclass&gt;</literal> とマッピングされているサブクラスの"
+"インスタンスだけを返すことです。ほとんどの用途ではデフォルトの "
+"<literal>polymorphism=\"implicit\"</literal> が適切です。明示的なポリモーフィ"
+"ズムは、2つの違ったクラスが同じテーブルにマッピングされているときに有用です "
+"(これによってテーブルカラムのサブセットを含む、「軽量な」クラスが可能になり"
+"ます)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You can, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, "
+"or you can even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements, "
+"for example, persistence via stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+"<literal>persister</literal> 属性を指定することで、クラスの永続化戦略をカスタ"
+"マイズできます。例えば <literal>org.hibernate.persister.EntityPersister</"
+"literal> 自身のサブクラスを指定したり、また例えばストアドプロシージャコール、"
+"フラットファイルへシリアライズ、 LDAP などを通した永続性を実装する "
+"<literal>org.hibernate.persister.ClassPersister</literal> インターフェースの"
+"完全に新しい実装を提供できます。簡単な例として <literal>org.hibernate.test."
+"CustomPersister</literal> を参照してください(これは <literal>Hashtable</"
+"literal> の「永続化」です)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> "
+"settings are not inherited by subclasses, so they can also be specified on "
+"the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</"
+"literal> elements. Although these settings can increase performance in some "
+"cases, they can actually decrease performance in others."
+msgstr ""
+"<literal>dynamic-update</literal> と <literal>dynamic-insert</literal> の設定"
+"はサブクラスに継承されません。そのため <literal>&lt;subclass&gt;</literal> "
+"や <literal>&lt;joined-subclass&gt;</literal> 要素を指定することも出来ます。"
+"これらの設定はパフォーマンスを向上させる事もありますが、落とすこともあります"
+"ので、慎重に使用してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is useful to prevent a database update trigger being called "
+"unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"<literal>select-before-update</literal> の使用は通常パフォーマンスを落としま"
+"す。もし <literal>Session</literal> へ分離インスタンスのグラフを再追加するな"
+"ら、データベース更新のトリガを不必要に呼び出すのを避けるという点で、非常に有"
+"用です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"<literal>dynamic-update</literal> を有効にすれば、楽観ロック戦略を選ぶことに"
+"なります:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr ""
+"<literal>version</literal> バージョン/タイムスタンプカラムをチェックします。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all</literal> すべてのカラムをチェックします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dirty</literal>: check the changed columns, allowing some "
+"concurrent updates"
+msgstr ""
+"<literal>dirty</literal> 変更したカラムをチェックし、同時更新できるようにしま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none</literal> 楽観ロックを使用しません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is <emphasis>strongly</emphasis> recommended that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This strategy "
+"optimizes performance and correctly handles modifications made to detached "
+"instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+"Hibernate で楽観的ロック戦略を使うなら、バージョン/タイムスタンプカラムを使う"
+"ことを <emphasis>非常に</emphasis> 強くお勧めします。楽観的ロックはパフォーマ"
+"ンスの観点からも最適であり、さらに分離インスタンスへの修正 (つまり "
+"<literal>Session.marge()</literal> が使われるとき) を正確に扱うことのできる"
+"唯一の戦略でもあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping. This is transparent at the database level, although some DBMS do "
+"not support views properly, especially with updates. Sometimes you want to "
+"use a view, but you cannot create one in the database (i.e. with a legacy "
+"schema). In this case, you can map an immutable and read-only entity to a "
+"given SQL subselect expression:"
+msgstr ""
+"Hibernate のマッピングにとってビューと普通のテーブルの間に違いはなく、データ"
+"ベースレベルでは透過的です(ただしビューを完全にはサポートしていない DBMS も"
+"あります。特に、更新のあるビューに対してはそうです)。ビューを使いたくても、"
+"データベースで作成できないことがあります(例えば、レガシースキーマの場合)。"
+"この場合には、不変かつ読み取り専用のエンティティに与えられた SQL の副問合せ文"
+"をマップできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly and that queries against the derived entity do not return "
+"stale data. The <literal>&lt;subselect&gt;</literal> is available both as an "
+"attribute and a nested mapping element."
+msgstr ""
+"テーブルをこのエンティティと同期するように定義してください。オートフラッシュ"
+"が確実に起こるように、また導出エンティティに対するクエリが古いデータを返さな"
+"いようにするためです。 <literal>&lt;subselect&gt;</literal> は属性とネストし"
+"たマッピング属性のどちらでも利用できます。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "id"
+msgstr "uuid"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal>&lt;id&gt;</"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"マップされたクラスはデータベーステーブルの主キーカラムを定義 <emphasis>しなけ"
+"ればなりません</emphasis> 。ほとんどのクラスにはインスタンスのユニークな識別"
+"子を保持する JavaBeans スタイルのプロパティも持っています。 <literal>&lt;"
+"id&gt;</literal> 要素は、そのプロパティから主キーカラムへのマッピングを定義し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the name of the identifier property."
+msgstr "<literal>name</literal>(オプション):識別子プロパティの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr "<literal>type</literal>(オプション): Hibernate の型を示す名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトはプロパティ名): 主キーカ"
+"ラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): an identifier property value that indicates an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal>(オプション - デフォルトの値は "
+"sensible ): インスタンスが新しくインスタンス化された (セーブされていない)"
+"ことを示す、識別子プロパティの値。以前の Session でセーブまたはロードされた分"
+"離インスタンスと区別するために使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"<literal>access</literal> (オプション - デフォルトは <literal>property</"
+"literal> ): Hibernate がプロパティの値にアクセスするために使用すべき戦略。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"<literal>name</literal> 属性がなければ、クラスには識別子プロパティがないもの"
+"とみなされます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"<literal>unsaved-value</literal> 属性は Hibernate3 ではほとんどの場合、必要で"
+"はありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is an alternative <literal>&lt;composite-id&gt;</literal> declaration "
+"that allows access to legacy data with composite keys. Its use is strongly "
+"discouraged for anything else."
+msgstr ""
+"複合キーを持つレガシーデータにアクセスできるように、 <literal>&lt;composite-"
+"id&gt;</literal> という代替のマッピング定義があります。しかし他の用途への使用"
+"は全くおすすめできません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "ジェネレータ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;generator&gt;</literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal>&lt;param&gt;</"
+"literal> element."
+msgstr ""
+"オプションの <literal>&lt;generator&gt;</literal> 子要素は、永続クラスのイン"
+"スタンスのユニークな識別子を生成するために使う、 Java クラスを指定します。"
+"ジェネレータインスタンスの設定、もしくは初期化にパラメータが必要であれば、 "
+"<literal>&lt;param&gt;</literal> 要素を使って渡すことができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface. Some "
+"applications can choose to provide their own specialized implementations, "
+"however, Hibernate provides a range of built-in implementations. The "
+"shortcut names for the built-in generators are as follows:"
+msgstr ""
+"すべてのジェネレータは、 <literal>org.hibernate.id.IdentifierGenerator</"
+"literal> インターフェースを実装します。これはとても単純なインターフェースなの"
+"で、特別な実装を独自に用意するアプリケーションもあるかもしれません。しかし "
+"Hibernate は組み込みの実装をいくつも用意しています。組み込みのジェネレータに"
+"は以下のショートカット名があります:"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"<literal>long</literal> , <literal>short</literal> , <literal>int</literal> "
+"型の識別子を生成します。これらは他のプロセスが同じテーブルにデータを挿入しな"
+"いときだけユニークです。 <emphasis>クラスタ内では使わないでください</"
+"emphasis> 。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL の識別子カラムをサポートしま"
+"す。返される識別子の型は <literal>long</literal> , <literal>short</"
+"literal> , <literal>int</literal> のいずれかです。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"DB2, PostgreSQL, Oracle, SAP DB, McKoi のシーケンスや、 Interbase のジェネ"
+"レータを使用します。返される識別子の型は <literal>long</literal> , "
+"<literal>short</literal> , <literal>int</literal> のいずれかです。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"<literal>long</literal> , <literal>short</literal> , <literal>int</literal> "
+"型の識別子を効率的に生成する hi/lo アルゴリズムを使います。 hi 値のソースとし"
+"て、テーブルとカラムを与えます(デフォルトではそれぞれ "
+"<literal>hibernate_unique_key</literal> と <literal>next_hi</literal> )。 hi/"
+"lo アルゴリズムは特定のデータベースに対してのみユニークな識別子を生成します。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"<literal>long</literal> , <literal>short</literal> , <literal>int</literal> "
+"型の識別子を効率的に生成する hi/lo アルゴリズムを使います。指定されたデータ"
+"ベースシーケンスを与えます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string that "
+"are unique within a network (the IP address is used). The UUID is encoded as "
+"a string of 32 hexadecimal digits in length."
+msgstr ""
+"( IP アドレスが使用される)ネットワーク内でユニークな文字列型の識別子を生成す"
+"るために、 128 ビットの UUID アルゴリズムを使用します。 UUID は長さ 32 の 16 "
+"進数字の文字列としてエンコードされます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr ""
+"MS SQL サーバーと MySQL でデータベースが生成する GUID 文字列を使用します。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"selects <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"使用するデータベースの性能により <literal>identity</literal> 、 "
+"<literal>sequence</literal> 、 <literal>hilo</literal> のいずれかが選ばれま"
+"す。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"lets the application assign an identifier to the object before <literal>save"
+"()</literal> is called. This is the default strategy if no <literal>&lt;"
+"generator&gt;</literal> element is specified."
+msgstr ""
+"<literal>save()</literal> が呼ばれる前に、アプリケーションがオブジェクトに識"
+"別子を代入できるようにします。 <literal>&lt;generator&gt;</literal> 要素が指"
+"定されていなければ、これがデフォルトの戦略になります。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"retrieves a primary key, assigned by a database trigger, by selecting the "
+"row by some unique key and retrieving the primary key value."
+msgstr ""
+"あるユニークキーによる行の選択と主キーの値の復元により、データベーストリガが"
+"割り当てた主キーを取得します。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses the identifier of another associated object. It is usually used in "
+"conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key "
+"association."
+msgstr ""
+"他の関連オブジェクトの識別子を使います。普通は、 <literal>&lt;one-to-one&gt;"
+"</literal> 主キー関連と組み合わせて使います。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a specialized sequence generation strategy that utilizes a database sequence "
+"for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to return the generated identifier value as part of the "
+"insert statement execution. This strategy is only supported on Oracle 10g "
+"drivers targeted for JDK 1.4. Comments on these insert statements are "
+"disabled due to a bug in the Oracle drivers."
+msgstr ""
+"実際の値の生成のためにデータベースシーケンスを使用する特別なシーケンス生成戦"
+"略ですが、 JDBC3 getGeneratedKeys と結びついて、 INSERT 文の実行の一部として"
+"生成された識別子の値を実際に返します。この戦略は JDK 1.4 を対象とする Oracle "
+"10g のドライバでサポートされていることが知られています。これらの INSERT 文で"
+"のコメントは Oracle のドライバのバグにより無効にされていることに注意してくだ"
+"さい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "Hi/lo アルゴリズム"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm. The first "
+"implementation requires a \"special\" database table to hold the next "
+"available \"hi\" value. Where supported, the second uses an Oracle-style "
+"sequence."
+msgstr ""
+"<literal>hilo</literal> と <literal>seqhilo</literal> ジェネレータは、識別子"
+"生成の代表的なアプローチである hi/lo アルゴリズムの2つの代替実装を提供しま"
+"す。1番目の実装は、次回に利用される \"hi\" 値を保持する「特別な」データベース"
+"テーブルを必要とします。2番目の実装は、 Oracle スタイルのシーケンスを使います"
+"(サポートされている場合)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, you cannot use <literal>hilo</literal> when supplying your "
+"own <literal>Connection</literal> to Hibernate. When Hibernate uses an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must configure the <literal>hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+"残念ながら Hibernate への独自の <literal>Connection</literal> を提供するとき"
+"には、 <literal>hilo</literal> を使えません。 Hibernate が JTA でリストされて"
+"いる接続を取得するためにアプリケーションサーバーのデータソースを使用している"
+"ときには、 <literal>hibernate.transaction.manager_lookup_class</literal> を適"
+"切に設定しなければなりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "UUID アルゴリズム"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM that is accurate to a "
+"quarter second, system time and a counter value that is unique within the "
+"JVM. It is not possible to obtain a MAC address or memory address from Java "
+"code, so this is the best option without using JNI."
+msgstr ""
+"UUID には以下のものが含まれます: IP アドレス、 JVM のスタートアップタイム(4"
+"分の1秒の正確さ)、システム時間、( JVM に対してユニークな)カウンタ値。 "
+"Java コードから MAC アドレスやメモリアドレスを取得することはできないので、 "
+"JNI が使えないときの最良の方法です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "識別子カラムとシーケンス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you can use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"can use <literal>sequence</literal> style key generation. Both of these "
+"strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+"識別子カラムをサポートしているデータベース(DB2, MySQL, Sybase, MS SQL)で"
+"は、 <literal>identity</literal> キー生成が使えます。シーケンスをサポートする"
+"データベース(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)では、 "
+"<literal>sequence</literal> スタイルのキー生成が使えます。どちらの戦略も、新"
+"しいオブジェクトを挿入するために、 SQL クエリを2つ必要とします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will, "
+"depending on the capabilities of the underlying database, choose from the "
+"<literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</"
+"literal> strategies."
+msgstr ""
+"クロスプラットフォームの開発では、<literal>native</literal> 戦略は "
+"<literal>identity</literal> 、 <literal>sequence</literal> 、 <literal>hilo</"
+"literal> 戦略の中から1つを選択しますが、これは使用しているデータベースの能力"
+"に依存します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "識別子の割り当て"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the application to assign identifiers, as opposed to having "
+"Hibernate generate them, you can use the <literal>assigned</literal> "
+"generator. This special generator uses the identifier value already assigned "
+"to the object's identifier property. The generator is used when the primary "
+"key is a natural key instead of a surrogate key. This is the default "
+"behavior if you do not specify a <literal>&lt;generator&gt;</literal> "
+"element."
+msgstr ""
+"アプリケーションに識別子を割り当てさせたいのであれば( Hibernate が生成するも"
+"のではなく)、 <literal>assigned</literal> ジェネレータを使うことができます。"
+"この特別なジェネレータは、すでにオブジェクトの識別子プロパティに代入された値"
+"を識別子に使います。このジェネレータは主キーが代理キーの代わりに自然キーであ"
+"る場合に使用します。 <literal>&lt;generator&gt;</literal> 要素を指定しない場"
+"合のデフォルトの動作になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go "
+"to the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"<literal>assigned</literal> ジェネレータを選択すると、 Hibernate は "
+"<literal>unsaved-value=\"undefined\"</literal> を使います。そして、バージョン"
+"やタイムスタンプのプロパティがない場合や <literal>Interceptor.isUnsaved()</"
+"literal> を定義しなかった場合には、インスタンスが一時的(transient)なものであ"
+"るのか、またはセッションから分離(detached)したものかどうかを決めるために、"
+"データベースを調べます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "トリガにより割り当てられた主キー"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr ""
+"レガシースキーマのためにのみ指定します( Hibernate はトリガを使って DDL を生成"
+"しません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal>. It is defined by the class, as a "
+"natural key and a surrogate key named <literal>person_id</literal>, whose "
+"value is generated by a trigger."
+msgstr ""
+"上記の例の中で、クラスで自然キーとして定義された "
+"<literal>socialSecurityNumber</literal> という名前のユニークな値のプロパティ"
+"と、値がトリガにより生成される <literal>person_id</literal> という名前の代理"
+"キーがあります。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "識別子の getter メソッド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization Optimization means that "
+"you do not have to query the database for every request for a new identifier "
+"value. These two new generators are intended to take the place of some of "
+"the named generators described above, starting in 3.3.x. However, they are "
+"included in the current releases and can be referenced by FQN."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended, firstly, as a "
+"replacement for the <literal>sequence</literal> generator and, secondly, as "
+"a better portability generator than <literal>native</literal>. This is "
+"because <literal>native</literal> generally chooses between "
+"<literal>identity</literal> and <literal>sequence</literal> which have "
+"largely different semantics that can cause subtle issues in applications "
+"eyeing portability. <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, however, achieves portability in a "
+"different manner. It chooses between a table or a sequence in the database "
+"to store its incrementing values, depending on the capabilities of the "
+"dialect being used. The difference between this and <literal>native</"
+"literal> is that table-based and sequence-based storage have the same exact "
+"semantic. In fact, sequences are exactly what Hibernate tries to emulate "
+"with its table-based generators. This generator has a number of "
+"configuration parameters:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): the name of the sequence or table to "
+"be used."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトは <literal>class</"
+"literal> ): 識別カラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): the initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typically named "
+"\"STARTS WITH\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): the value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause "
+"typically named \"INCREMENT BY\"."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional - defaults to <literal>false</"
+"literal>): should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): ルートクラスのすべてのインスタンスを検索する場合であっても、 "
+"Hibernate が使用できる識別カラムの指定を「強制」します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional - defaults to <literal>next_val</"
+"literal>): only relevant for table structures, it is the name of the column "
+"on the table which is used to hold the value."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトは <literal>class</"
+"literal> ): 識別カラムの名前。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" /"
+">"
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, which is intended, firstly, as a replacement for "
+"the <literal>table</literal> generator, even though it actually functions "
+"much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</"
+"literal>, and secondly, as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> that utilizes the notion of "
+"pluggable optimizers. Essentially this generator defines a table capable of "
+"holding a number of different increment values simultaneously by using "
+"multiple distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional - defaults to "
+"<literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional - defaults to "
+"<literal>next_val</literal>): the name of the column on the table that is "
+"used to hold the value."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトは <literal>class</"
+"literal> ): 識別カラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional - defaults to "
+"<literal>sequence_name</literal>): the name of the column on the table that "
+"is used to hold the \"segment key\". This is the value which identifies "
+"which increment value to use."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional - defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>access</literal> (オプション - デフォルトは <literal>property</"
+"literal> ): Hibernate がプロパティの値にアクセスするために使用すべき戦略。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional - defaults to "
+"<literal>255</literal>): Used for schema generation; the column size to "
+"create this segment key column."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトは <literal>class</"
+"literal> ): 識別カラムの名前。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional - defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal></literal>): "
+"See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Identifier generator optimization"
+msgstr "識別子の getter メソッド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For identifier generators that store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you can group a bunch of them in memory and "
+"only hit the database when you have exhausted your in-memory value group. "
+"This is the role of the pluggable optimizers. Currently only the two "
+"enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> "
+"support this operation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): this will not perform any optimizations and hit the database for "
+"each and every request."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\". The "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this "
+"optimizer attempts to minimize the number of hits to the database. Here, "
+"however, we simply store the starting value for the \"next group\" into the "
+"database structure rather than a sequential value in combination with an in-"
+"memory grouping algorithm. Here, <literal>increment_size</literal> refers to "
+"the values coming from the database."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "composite-id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A table with a composite key can be mapped with multiple properties of the "
+"class as identifier properties. The <literal>&lt;composite-id&gt;</literal> "
+"element accepts <literal>&lt;key-property&gt;</literal> property mappings "
+"and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+"複合キーのあるテーブルに対し、識別子プロパティとしてクラスの複数のプロパティ"
+"をマッピングすることができます。 <literal>&lt;composite-id&gt;</literal> 要素"
+"は、子要素として <literal>&lt;key-property&gt;</literal> プロパティマッピング"
+"と <literal>&lt;key-many-to-one&gt;</literal> マッピングを受け入れます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+"複合識別子の等価性を実装するためには、永続クラスが <literal>equals()</"
+"literal> と <literal>hashCode()</literal> をオーバーライド <emphasis>しなけれ"
+"ばなりません</emphasis> 。 また <literal>Serializable</literal> も実装しなけ"
+"ればいけません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, this approach means that a persistent object is its own "
+"identifier. There is no convenient \"handle\" other than the object itself. "
+"You must instantiate an instance of the persistent class itself and populate "
+"its identifier properties before you can <literal>load()</literal> the "
+"persistent state associated with a composite key. We call this approach an "
+"<emphasis>embedded</emphasis> composite identifier, and discourage it for "
+"serious applications."
+msgstr ""
+"残念ながら複合識別子のためのこの方法は、永続オブジェクトが自身の識別子である"
+"ことを意味しています。オブジェクト自身を識別子とする以外に便利な「扱い方」は"
+"ありません。複合キーに関連した永続状態を <literal>load()</literal> 出来るよう"
+"になる前に、永続クラス自身をインスタンス化し、識別子プロパティを設定しなけれ"
+"ばなりません。 <emphasis> 組み込みの</emphasis> 複合識別子と呼ばれるこのアプ"
+"ローチは、本格的なアプリケーションには向いていません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal>&lt;"
+"composite-id&gt;</literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"2つ目の方法は <emphasis>マップされた</emphasis> 複合識別子と呼ばれるもので、 "
+"<literal>&lt;composite-id&gt;</literal>エレメント内で指定した識別プロパティが"
+"永続クラスと分離した識別子クラスの両方に重複して存在します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement <literal>Serializable</literal>. "
+"The main disadvantage of this approach is code duplication."
+msgstr ""
+"この例では、複合識別子クラス( <literal>MedicareId</literal> )とエンティティ"
+"クラス自身の両方が、 <literal>medicareNumber</literal> と "
+"<literal>dependent</literal> という名前のプロパティを持ちます。識別子クラス"
+"は、 <literal>equals()</literal> と <literal>hashCode()</literal> をオーバラ"
+"イドし、 <literal>Serializable</literal> を実装しなくてはなりません。この方法"
+"には、明らかにコードが重複するという不都合があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following attributes are used to specify a mapped composite identifier:"
+msgstr "次の属性はマッピングした複合識別子を指定するために使用します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional - defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (オプション、デフォルトは <literal>false</"
+"literal> ): マッピングした複合識別子が使用されることと、包含されたプロパティ"
+"のマッピングが、エンティティクラスと複合識別子クラスの両方を参照することを示"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - but required for a mapped composite "
+"identifier): the class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (オプション、ただしマッピングした複合識別子には必"
+"須): 複合識別子として使用するクラス。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach, where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\" />. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"3つ目のさらに便利な方法は、複合識別子を <xref linkend=\"components-"
+"compositeid\"/> のコンポーネントクラスとして実装することです。下で記述してい"
+"る属性は、この代替方法にのみ適用されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional - required for this approach): a property "
+"of component type that holds the composite identifier. Please see chapter 9 "
+"for more information."
+msgstr ""
+"<literal>name</literal> (オプション、このアプローチでは必須): 複合識別子を保"
+"持するコンポーネントタイプのプロパティ(9章を参照してください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+"<literal>access</literal> (オプション - デフォルトは <literal>property</"
+"literal> ): Hibernate がプロパティの値にアクセスするために使用すべき戦略。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the component class used as a composite "
+"identifier. Please see the next section for more information."
+msgstr ""
+"<literal>class</literal> (オプション - デフォルトはリフレクションにより決定"
+"されるプロパティの型): 複合識別子として使われるコンポーネントのクラス(次の"
+"節を見てください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The third approach, an <emphasis>identifier component</emphasis>, is "
+"recommended for almost all applications."
+msgstr ""
+"この3つ目の方法は <emphasis> 識別子コンポーネント</emphasis> と呼び、ほとんど"
+"すべてのアプリケーションに対して推奨する方法です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Discriminator"
+msgstr "discriminator"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;discriminator&gt;</literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping "
+"strategy. It declares a discriminator column of the table. The discriminator "
+"column contains marker values that tell the persistence layer what subclass "
+"to instantiate for a particular row. A restricted set of types can be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"<literal>&lt;discriminator&gt;</literal> 要素は、 table-per-class-hierarchy "
+"マッピング戦略を使うポリモーフィックな永続化に必要であり、テーブルの識別カラ"
+"ムを定義します。識別カラムは、ある行に対して永続層がどのサブクラスをインスタ"
+"ンス化するかを伝えるマーカー値を含んでいます。以下のような型に制限されます: "
+"<literal>string</literal> , <literal>character</literal> , <literal>integer</"
+"literal>, <literal>byte</literal> , <literal>short</literal> , "
+"<literal>boolean</literal> , <literal>yes_no</literal> , "
+"<literal>true_false</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>): "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトは <literal>class</"
+"literal> ): 識別カラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>): "
+"a name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>string</"
+"literal> ): Hibernate の型を示す名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>): "
+"\"forces\" Hibernate to specify the allowed discriminator values, even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): ルートクラスのすべてのインスタンスを検索する場合であっても、 "
+"Hibernate が使用できる識別カラムの指定を「強制」します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. It tells Hibernate not to include the "
+"column in SQL <literal>INSERTs</literal>."
+msgstr ""
+"<literal>insert</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): もし識別カラムがマッピングする複合識別子の一部ならば、 "
+"<literal>false</literal> と設定してください。 (Hibernate に SQL の "
+"<literal>INSERT</literal> 内のカラムを含ませないよう伝えます。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. It allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (オプション) 型が評価されるときに実行される任意の "
+"SQL 式。コンテンツベースの識別を可能にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal>&lt;"
+"class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+"識別カラムの実際の値は、 <literal>&lt;class&gt;</literal> と <literal>&lt;"
+"subclass&gt;</literal> 要素の <literal>discriminator-value</literal> 属性で指"
+"定されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is only useful if the table contains "
+"rows with \"extra\" discriminator values that are not mapped to a persistent "
+"class. This will not usually be the case."
+msgstr ""
+"永続クラスへマッピングされない「余分な」識別値を持つ行がテーブルにあれば、(そ"
+"のときに限り) <literal>force</literal> 属性は有効です。ただし、普通はそうい"
+"うことはありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>formula</literal> attribute allows you to declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+"<literal>formula</literal> 属性を使うと、行の型を評価するために任意の SQL 式"
+"を宣言できます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Version (optional)"
+msgstr "version(オプション)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;version&gt;</literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis>. See below for more "
+"information:"
+msgstr ""
+"<literal>&lt;version&gt;</literal> 要素はオプションであり、テーブルがバージョ"
+"ンデータを含むことを示します。これは <emphasis>ロングトランザクション</"
+"emphasis> を使うつもりなら、特に役立ちます(以下を参照してください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (オプション - デフォルトはプロパティ名): バージョ"
+"ン番号を保持するカラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a property of the persistent class."
+msgstr "<literal>name</literal> :永続クラスのプロパティの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"the type of the version number."
+msgstr ""
+"<literal>type</literal> (オプション - デフォルトは <literal>integer</"
+"literal> ):バージョン番号の型。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+"<literal>access</literal> (オプション - デフォルトは <literal>property</"
+"literal> ): Hibernate がプロパティの値にアクセスするために使用すべき戦略。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (オプション - デフォルトは "
+"<literal>undefined</literal> ): インスタンスが新しくインスタンス化されたこ"
+"とを示す (セーブされていないことを示す) バージョンプロパティの値。以前の "
+"Session でセーブまたはロードされた分離インスタンスと区別するために使います。 "
+"( <literal>undefined</literal> は識別子プロパティの値が使われることを指定し"
+"ます。)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this version property value is generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (オプション - デフォルトは <literal>never</"
+"literal> ): このバージョンのプロパティの値が、データベースによって生成された"
+"ことを指定します。<xref linkend=\"mapping-generated\"/> 生成プロパティの議論"
+"を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"specifies whether the version column should be included in SQL insert "
+"statements. It can be set to <literal>false</literal> if the database column "
+"is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): SQLの insert 文にバージョンカラムを含めるべきかどうかを指定しま"
+"す。もしデータベースカラムのデフォルト値が <literal>0</literal> と定義される"
+"ときには、 <literal>false</literal> に設定すると良いでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version numbers can be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"バージョン番号は Hibernate の <literal>long</literal> 、 <literal>integer</"
+"literal> 、 <literal>short</literal> 、 <literal>timestamp</literal> 、 "
+"<literal>calendar</literal> 型のいずれかです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance. Hibernate will detect any instance with a null version or "
+"timestamp as transient, irrespective of what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid problems with transitive "
+"reattachment in Hibernate. It is especially useful for people using assigned "
+"identifiers or composite keys</emphasis>."
+msgstr ""
+"バージョンやタイムスタンプのプロパティは、分離されたインスタンスに対して "
+"null であってはなりません。そのためどのような <literal>unsaved-value</"
+"literal> 戦略が指定されても、 Hibernate は null のバージョンやタイムスタンプ"
+"を持ったすべてのインスタンスを、一時的なものであると判断します。 <emphasis> "
+"null を許容するバージョンやタイムスタンプのプロパティを定義することは、 "
+"Hibernate において過渡的に一時オブジェクトとすることを防ぐ簡単な方法です。特"
+"に識別子の割り当てや複合キーを使用しているときには特に有用です。</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "Timestamp (optional)"
+msgstr "timestamp(オプション)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;timestamp&gt;</literal> element indicates that the "
+"table contains timestamped data. This provides an alternative to versioning. "
+"Timestamps are a less safe implementation of optimistic locking. However, "
+"sometimes the application might use the timestamps in other ways."
+msgstr ""
+"オプションの <literal>&lt;timestamp&gt;</literal> 要素は、テーブルがタイムス"
+"タンプデータを含むことを示します。これはバージョン付けの代わりの方法として用"
+"意されています。タイムスタンプはもともと楽観的ロックにおける安全性の低い実装"
+"です。しかしアプリケーションはタイムスタンプを異なる用途で使うこともあるかも"
+"しれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトはプロパティ名): タイムス"
+"タンプを保持するカラムの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal> : 永続クラスである Java の <literal>Date</literal>型"
+"または <literal>Timestamp</literal> 型 の、 JavaBeans スタイルプロパティの名"
+"前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (オプション - デフォルトは <literal>null</"
+"literal> ): インスタンスが新しくインスタンス化された (セーブされていない)"
+"ことを示すバージョンプロパティの値。以前の Session でセーブまたはロードされた"
+"分離されたインスタンスと区別するために使われます。 ( <literal>undefined</"
+"literal> と指定すると、識別子プロパティの値が使われます。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"Where should Hibernate retrieve the timestamp value from? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\". It "
+"is safer to use in clustered environments. Not all <literal>Dialects</"
+"literal> are known to support the retrieval of the database's current "
+"timestamp. Others may also be unsafe for usage in locking due to lack of "
+"precision (Oracle 8, for example)."
+msgstr ""
+"<literal>source</literal> (オプション - デフォルトは <literal>vm</"
+"literal> ): Hibernate はどこからタイムスタンプの値を取得するべきでしょうか?"
+"データベースからでしょうか、現在の JVM からでしょうか?データベースによるタイ"
+"ムスタンプは、 Hibernate が \"次の値\" を決定するためにデータベースをヒットし"
+"なければならないため、オーバヘッドを招きます。しかしクラスタ環境では JVM から"
+"取得するより安全です。データベースの現在のタイムスタンプの取得をサポートする"
+"すべての <literal>Dialect</literal> が知られているわけではないことに注意して"
+"ください。また一方で、精密さを欠くために、ロックで使用するには安全でないもの"
+"もあります (例えば Oracle 8 )。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (オプション - デフォルトは <literal>never</"
+"literal> ): このタイムスタンプのプロパティの値が、データベースによって生成さ"
+"れることを指定します。 <xref linkend=\"mapping-generated\"/> 生成プロパティを"
+"参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注記"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db"
+"\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp"
+"\"&gt;</literal>"
+msgstr ""
+"<literal>&lt;timestamp&gt;</literal> は <literal>&lt;version type=\"timestamp"
+"\"&gt;</literal> と等価であることに注意してください。 <literal>&lt;timestamp "
+"source=\"db\"&gt;</literal> は <literal>&lt;version type=\"dbtimestamp\"&gt;"
+"</literal> と等価であることに注意してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Property"
+msgstr "property"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;property&gt;</literal> element declares a persistent "
+"JavaBean style property of the class."
+msgstr ""
+"<literal>&lt;property&gt;</literal> 要素は、クラスの永続的な JavaBean スタイ"
+"ルのプロパティを定義します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr "<literal>name</literal>: 小文字で始まるプロパティ名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This can also be specified by "
+"nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+"<literal>column</literal>(オプション - デフォルトはプロパティ名): マッピン"
+"グされたデータベーステーブルのカラムの名前。ネストした <literal>&lt;"
+"column&gt;</literal> 要素でも指定できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): マッピングされたカラムが SQL の <literal>UPDATE</literal> や "
+"<literal>INSERT</literal> に含まれることを指定します。両方とも "
+"<literal>false</literal> に設定すると、同じカラムにマッピングされた他のプロパ"
+"ティやトリガや他のアプリケーションによって初期化された純粋な「導出」プロパ"
+"ティが可能になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal>(オプション): <emphasis>計算</emphasis> プロパ"
+"ティのための値を定義する SQL 式。計算されたプロパティは自身のカラムへのマッピ"
+"ングがありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this property should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): インスタンス変数に最初にアクセスしたときに、プロパティを遅延して"
+"取得するよう指定します。 (バイトコード実装を作成する時間が必要になります)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (オプション):カラムにユニーク制約をつける DDL の生"
+"成を可能にします。また、 <literal>property-ref</literal> のターゲットとするこ"
+"ともできます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (オプション):カラムに null 値を許可する DDL の生"
+"成を可能にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, it determines if a "
+"version increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): このプロパティの更新に楽観ロックの取得を要求するかどうかを指定し"
+"ます。言い換えれば、このプロパティがダーティであるときにバージョンを増やすべ"
+"きかを決定します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (オプション - デフォルトは <literal>never</"
+"literal> ): プロパティの値が、データベースによって生成されたことを指定しま"
+"す。 <xref linkend=\"mapping-generated\"/> 生成プロパティを参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>typename</emphasis> には以下の値が可能です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Hibernate basic type: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+"Hibernate の基本型の名前(例 <literal>integer, string, character, date, "
+"timestamp, float, binary, serializable, object, blob</literal> )。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Java class with a default basic type: <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal> etc."
+msgstr ""
+"デフォルトの基本型の Java クラス名 (例 <literal>int, float, char, java.lang."
+"String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> )。"
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "シリアライズ可能な Java クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class name of a custom type: <literal>com.illflow.type.MyCustomType</"
+"literal> etc."
+msgstr ""
+"カスタム型のクラス名(例 <literal>com.illflow.type.MyCustomType</"
+"literal> )。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property and guess the correct Hibernate type. Hibernate will attempt to "
+"interpret the name of the return class of the property getter using, in "
+"order, rules 2, 3, and 4. In certain cases you will need the <literal>type</"
+"literal> attribute. For example, to distinguish between <literal>Hibernate."
+"DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a "
+"custom type."
+msgstr ""
+"型を指定しなければ、 Hibernate は正しい Hibernate の型を推測するために、指定"
+"されたプロパティに対してリフレクションを使います。 Hibernate はルール2, 3, 4"
+"をその順序に使い、 getter プロパティの返り値のクラスの名前を解釈しようとしま"
+"す。しかしこれで常に十分であるとは限りません。場合によっては、 "
+"<literal>type</literal> 属性が必要な場合があります。 (例えば "
+"<literal>Hibernate.DATE</literal> と <literal>Hibernate.TIMESTAMP</literal> "
+"を区別するため、またはカスタム型を指定するためなどです。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>access</literal> attribute allows you to control how Hibernate "
+"accesses the property at runtime. By default, Hibernate will call the "
+"property get/set pair. If you specify <literal>access=\"field\"</literal>, "
+"Hibernate will bypass the get/set pair and access the field directly using "
+"reflection. You can specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"<literal>access</literal> 属性で、実行時に Hibernate がどのようにプロパティに"
+"アクセスするかを制御できます。デフォルトでは Hibernate はプロパティの get/"
+"set のペアをコールします。 <literal>access=\"field\"</literal> と指定すれ"
+"ば、 Hibernate はリフレクションを使い get/set のペアを介さずに、直接フィール"
+"ドにアクセスします。インターフェース <literal>org.hibernate.property."
+"PropertyAccessor</literal> を実装するクラスを指定することで、プロパティへのア"
+"クセスに独自の戦略を指定することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A powerful feature is derived properties. These properties are by definition "
+"read-only. The property value is computed at load time. You declare the "
+"computation as an SQL expression. This then translates to a <literal>SELECT</"
+"literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+"特に強力な特徴は生成プロパティです。これらのプロパティは当然読み取り専用であ"
+"り、プロパティの値はロード時に計算されます。計算を SQL 式として宣言すると、こ"
+"のプロパティはインスタンスをロードする SQL クエリの <literal>SELECT</"
+"literal> 句のサブクエリに変換されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can reference the entity table by not declaring an alias on a particular "
+"column. This would be <literal>customerId</literal> in the given example. "
+"You can also use the nested <literal>&lt;formula&gt;</literal> mapping "
+"element if you do not want to use the attribute."
+msgstr ""
+"特定のカラム(例では <literal>customerId</literal> がそれにあたります)のエイリ"
+"アスを宣言することなく、エンティティ自身のテーブルを参照できることに注意して"
+"ください。もし属性を使用したくなければ、ネストした <literal>&lt;formula&gt;</"
+"literal> マッピング要素を使えることにも注意してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "many-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association; a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"他の永続クラスへの通常の関連は <literal>many-to-one</literal> 要素を使って定"
+"義します。リレーショナルモデルは多対一関連です。つまりあるテーブルの外部キー"
+"は、ターゲットとなるテーブルの主キーカラムを参照しています。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>:プロパティ名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column. "
+"This can also be specified by nested <literal>&lt;column&gt;</literal> "
+"element(s)."
+msgstr ""
+"<literal>column</literal> (オプション):外部キーカラムの名前。ネストした "
+"<literal>&lt;column&gt;</literal> カラムによっても指定されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the associated class."
+msgstr ""
+"<literal>class</literal>(オプション - デフォルトはリフレクションにより決定さ"
+"れるプロパティの型): 関連クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal>(オプション): 親オブジェクトから関連オブジェクト"
+"へ、どの操作をカスケードするかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"<literal>fetch</literal>(オプション - デフォルトは <literal>select</"
+"literal> ): 外部結合フェッチと順次選択フェッチ(sequential select fetch)の"
+"どちらかを選択します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from another property that maps to "
+"the same column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal>(オプション - デフォルトは <literal>true</"
+"literal> ): マッピングされたカラムが SQL の <literal>UPDATE</literal> また"
+"は <literal>INSERT</literal> 文に含まれることを指定します。両方とも "
+"<literal>false</literal> に設定すると、その値が同じカラムにマッピングされた他"
+"のプロパティやトリガや他のアプリケーションによって初期化された純粋な「導出」"
+"プロパティが可能になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (オプション) この外部キーに加わる、関連クラ"
+"スのプロパティの名前。指定されていない場合は、関連クラスの主キーが使用されま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. By allowing this to be the target of "
+"a <literal>property-ref</literal>, you can make the association multiplicity "
+"one-to-one."
+msgstr ""
+"<literal>unique</literal>(オプション): 外部キーカラムに対してユニーク制約"
+"をつけた DDL の生成を可能にします。また、 <literal>property-ref</literal> の"
+"ターゲットにすることもできます。これにより関連の多重度を効果的に一対一にしま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (オプション): 外部キーカラムに対して、 null 値を"
+"許可する DDL の生成を可能にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. This requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (オプション - デフォルトは <literal>proxy</"
+"literal> ): デフォルトでは、多重度1の関連がプロキシとなります。 "
+"<literal>lazy=\"no-proxy\"</literal> は、インスタンス変数に最初にアクセスした"
+"ときに、プロパティを遅延フェッチするよう指定します (ビルド時にバイトコード実"
+"装が必要になります)。 <literal>lazy=\"false\"</literal> は関連を常に即時に"
+"フェッチするよう指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (オプション - デフォルトは <literal>exception</"
+"literal>): 参照先の行がない外部キーをどのように扱うかを指定します: "
+"<literal>ignore</literal> を指定すると、行がないことを関連がないものとして扱"
+"います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class."
+msgstr ""
+"<literal>entity-name</literal> (オプション):関連したクラスのエンティティ名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (オプション): <emphasis> 計算された</emphasis> 外"
+"部キーに対して値を定義する SQL 式"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are divided into "
+"three categories. First, basic operations, which include: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>; "
+"second, special values: <literal>delete-orphan</literal>; and third,"
+"<literal>all</literal> comma-separated combinations of operation names: "
+"<literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,"
+"delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> "
+"for a full explanation. Note that single valued, many-to-one and one-to-one, "
+"associations do not support orphan delete."
+msgstr ""
+"<literal>cascade</literal> 属性に <literal>none</literal> 以外の意味のある値"
+"を設定すると、関連オブジェクトへある操作が伝播することになります。意味のある"
+"値とは Hibernate の基本操作の名前のことで、 <literal>delete-orphan</literal> "
+"と <literal>all</literal> 、操作名をカンマで区切った組み合わせ (例えば "
+"<literal>cascade=\"persist,merge,evict\"</literal> ã‚„ <literal>cascade=\"all,"
+"delete-orphan\"</literal>)、またそれだけでなく <literal>persist, merge, "
+"delete, save-update, evict, replicate, lock, refresh</literal> のことを指しま"
+"す。詳しい説明は <xref linkend=\"objectstate-transitive\"/> を参照してくださ"
+"い。値が一つの関連 (many-to-one と one-to-one関連) は、単独での削除 (orphan "
+"delete) をサポートしていないことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr ""
+"典型的な <literal>many-to-one</literal> 宣言は次のようにシンプルです。:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is a complicated and "
+"confusing relational model. For example, if the <literal>Product</literal> "
+"class had a unique serial number that is not the primary key. The "
+"<literal>unique</literal> attribute controls Hibernate's DDL generation with "
+"the SchemaExport tool."
+msgstr ""
+"<literal>property-ref</literal> 属性は、外部キーが関連付けられたテーブルの、"
+"主キーでないユニークキーを参照しているレガシーデータをマップするためにだけ使"
+"うべきです。これは醜いリレーショナルモデルです。例えば <literal>Product</"
+"literal> クラスが、主キーでないユニークなシリアルナンバーを持っていると仮定し"
+"てみてください。( <literal>unique</literal> 属性は SchemaExport ツールを使っ"
+"た Hibernate の DDL 生成を制御します。)"
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr ""
+"以下のように <literal>OrderItem</literal> に対してマッピングを使えます:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not encouraged, however."
+msgstr "しかし、これは決して推奨できません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal>&lt;"
+"properties&gt;</literal> element."
+msgstr ""
+"参照したユニークキーが、関連するエンティティの多数のプロパティから構成される"
+"場合、指定した <literal>&lt;properties&gt;</literal> 要素内で、参照するプロパ"
+"ティをマッピングするべきです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you can specify "
+"a property path:"
+msgstr ""
+"もし参照したユニークキーがコンポーネントのプロパティである場合は、プロパティ"
+"のパスを指定できます:"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "one-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"他の永続クラスへの一対一関連は、<literal>one-to-one</literal> 要素で定義しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional): specifies that a foreign key "
+"constraint on the primary key of the mapped table and references the table "
+"of the associated class. This option affects the order in which <literal>save"
+"()</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association can be proxied. It is also used by the schema export "
+"tool."
+msgstr ""
+"<literal>constrained</literal>(オプション): マッピングされたテーブルの主"
+"キーに対する外部キー制約が、関連クラスのテーブルを参照することを指定します。"
+"このオプションは <literal>save()</literal> と <literal>delete()</literal> が"
+"カスケードされる順序に影響し、そして関連がプロキシされるかどうかにも影響しま"
+"す (そしてスキーマエクスポートツールにも使われます)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>(オプション): このクラスの主キーに結合され"
+"た関連クラスのプロパティ名。指定されなければ、関連クラスの主キーが使われま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): almost all one-to-one associations "
+"map to the primary key of the owning entity. If this is not the case, you "
+"can specify another column, columns or expression to join on using an SQL "
+"formula. See <literal>org.hibernate.test.onetooneformula</literal> for an "
+"example."
+msgstr ""
+"<literal>formula</literal> (オプション): ほとんどすべての一対一関連はオーナー"
+"のエンティティの主キーへとマッピングされます。これ以外の稀な場合は、他のカラ"
+"ムや、複数のカラム、 SQL 構文を使った結合するための式を指定できます。(例は "
+"<literal>org.hibernate.test.onetooneformula</literal> を参照してください。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. It requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+"<literal>lazy</literal> (オプション - デフォルトは <literal>proxy</"
+"literal> ): デフォルトでは、多重度1の関連がプロキシとなります。 "
+"<literal>lazy=\"no-proxy\"</literal> は、インスタンス変数に最初にアクセスした"
+"ときに、プロパティを遅延フェッチするよう指定します (ビルド時にバイトコード実"
+"装が必要になります)。 <literal>lazy=\"false\"</literal> は関連を常に即時に"
+"フェッチするよう指定します。 <emphasis>もし <literal>constrained=\"false\"</"
+"literal> ならば、プロキシは使用不可能となり、関連を即時にフェッチすることに注"
+"意してください。</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "一対一関連には2種類あります:"
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "主キー関連"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "ユニーク外部キー関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Primary key associations do not need an extra table column. If two rows are "
+"related by the association, then the two table rows share the same primary "
+"key value. To relate two objects by a primary key association, ensure that "
+"they are assigned the same identifier value."
+msgstr ""
+"主キー関連には、特別なテーブルカラムは必要ありません。もし2つの行が関連により"
+"関係していれば、2つのテーブルは同じ主キーの値を共有します。そのため2つのオブ"
+"ジェクトを主キー関連によって関連付けたいのであれば、確実に同じ識別子の値を代"
+"入しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+"主キー関連を行うためには、以下のマッピングを <literal>Employee</literal> と "
+"<literal>Person</literal> のそれぞれに追加してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE "
+"tables are equal. You use a special Hibernate identifier generation strategy "
+"called <literal>foreign</literal>:"
+msgstr ""
+"ここで、 PERSON と EMPLOYEE テーブルの関係する行の主キーが同じであることを確"
+"実にしなければいけません。ここでは、 <literal>foreign</literal> という特殊な "
+"Hibernate 識別子生成戦略を使います:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is assigned the same "
+"primary key value as the <literal>Employee</literal> instance referred with "
+"the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+"<literal>Employee</literal> インスタンスが、 <literal>Person</literal> の "
+"<literal>employee</literal> プロパティで参照されるように、新しくセーブされた "
+"<literal>Person</literal> のインスタンスには同じ主キーの値が代入されます。新"
+"しくセーブする <literal>Person</literal> インスタンスは、その "
+"<literal>Person</literal> の <literal>employee</literal> プロパティが参照す"
+"る <literal>Employee</literal> インスタンスとして同じ主キーが割り当てられま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, can be expressed "
+"as:"
+msgstr ""
+"もう1つの方法として、 <literal>Employee</literal> から <literal>Person</"
+"literal> へのユニーク制約を使った外部キー関連は以下のように表現されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This association can be made bidirectional by adding the following to the "
+"<literal>Person</literal> mapping:"
+msgstr ""
+"そしてこの関連は、以下の記述を <literal>Person</literal> のマッピングに追加す"
+"ることで双方向にすることができます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Natural-id"
+msgstr "natural-id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although we recommend the use of surrogate keys as primary keys, you should "
+"try to identify natural keys for all entities. A natural key is a property "
+"or combination of properties that is unique and non-null. It is also "
+"immutable. Map the properties of the natural key inside the <literal>&lt;"
+"natural-id&gt;</literal> element. Hibernate will generate the necessary "
+"unique key and nullability constraints and, as a result, your mapping will "
+"be more self-documenting."
+msgstr ""
+"主キーとして代理キーの使用を推奨しますが、すべてのエンティティに対して自然"
+"キーを識別するようにすべきです。自然キーはユニークかつ非 null な一つのプロパ"
+"ティ、またはプロパティの連結です。不変であればさらに良いです。 <literal>&lt;"
+"natural-id&gt;</literal> 要素内で自然キーのプロパティをマッピングします。 "
+"Hibernate は必然的にユニークかつ null 値を許可する制約を生成し、こうしてマッ"
+"ピングはより自己記述的になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"エンティティの自然キープロパティの比較には、 <literal>equals()</literal> と "
+"<literal>hashCode()</literal> の実装を強くお勧めします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping is not intended for use with entities that have natural primary "
+"keys."
+msgstr ""
+"このマッピングは自然主キーを使ったエンティティでの使用を意図していません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>false</"
+"literal>): by default, natural identifier properties are assumed to be "
+"immutable (constant)."
+msgstr ""
+"<literal>mutable</literal> (オプション、 デフォルトは <literal>false</"
+"literal> ): デフォルトでは、自然識別子プロパティは不変(定数)と想定されていま"
+"す。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Component and dynamic-component"
+msgstr "component, dynamic-component"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components can, in turn, "
+"declare their own properties, components or collections. See the \"Component"
+"\" examples below:"
+msgstr ""
+"<literal>&lt;component&gt;</literal> 要素は、子オブジェクトのプロパティを親ク"
+"ラスのテーブルのカラムへマッピングします。コンポーネントは自分のプロパティ、"
+"コンポーネント、コレクションの順に定義できます。以下の「コンポーネント」を見"
+"てください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (オプション - デフォルトはリフレクションにより決定"
+"されるプロパティの型): コンポーネント(子)クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: do the mapped columns appear in SQL "
+"<literal>INSERTs</literal>?"
+msgstr ""
+"<literal>insert</literal>:マッピングされたカラムが SQL の <literal>INSERT</"
+"literal> に現れるようにするかどうかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal>: do the mapped columns appear in SQL "
+"<literal>UPDATEs</literal>?"
+msgstr ""
+"<literal>update</literal>:マッピングされたカラムが SQL の <literal>UPDATE</"
+"literal> に現れるようにするかどうかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this component should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): インスタンス変数に最初にアクセスしたときに、コンポーネントを遅延"
+"してフェッチするよう指定します。 (バイトコード実装を作成する時間が必要になり"
+"ます)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this component either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): このプロパティの更新に、楽観ロックの取得を要求するかどうかを指定"
+"します。言い換えれば、このプロパティがダーティであるときにバージョンを増やす"
+"べきかを決定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): コンポーネントのすべてのマッピングするカラムに、ユニーク制約が存"
+"在するかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The child <literal>&lt;property&gt;</literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"子の <literal>&lt;property&gt;</literal> タグで、子のクラスのプロパティをテー"
+"ブルカラムにマッピングします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal>&lt;component&gt;</literal> 要素は、親エンティティへ戻る参照として、"
+"コンポーネントのクラスのプロパティをマッピングする <literal>&lt;parent&gt;</"
+"literal> サブ要素を許可します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;dynamic-component&gt;</literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for "
+"more information."
+msgstr ""
+"<literal>&lt;dynamic-component&gt;</literal> 要素は、 <literal>Map</literal> "
+"がコンポーネントとしてマッピングされることを可能にします。プロパティ名は map "
+"のキーを参照します。<xref linkend=\"components-dynamic\"/> を参照してくださ"
+"い。"
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "プロパティ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;properties&gt;</literal> element allows the definition of a "
+"named, logical grouping of the properties of a class. The most important use "
+"of the construct is that it allows a combination of properties to be the "
+"target of a <literal>property-ref</literal>. It is also a convenient way to "
+"define a multi-column unique constraint. For example:"
+msgstr ""
+"<literal>&lt;properties&gt;</literal> 要素はクラスのプロパティの指定された、"
+"論理的なグルーピングを可能にします。この構造の最も重要な使用方法は、 "
+"<literal>property-ref</literal> のターゲットになるプロパティの結合を許可する"
+"ことです。それはまた、複数カラムのユニーク制約を定義する簡単な方法でもありま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the logical name of the grouping. It is "
+"<emphasis>not</emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal> : グルーピングの論理名。実際のプロパティ名では "
+"<emphasis>ありません</emphasis> 。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to these properties either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): これらのプロパティの更新に楽観的ロックの取得を要求するかどうかを"
+"指定します。言い換えれば、このプロパティがダーティであるときにバージョンを増"
+"やすべきかを決定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal>&lt;properties&gt;</literal> "
+"mapping:"
+msgstr ""
+"例えば、もし以下のような <literal>&lt;properties&gt;</literal> マッピングが"
+"あった場合:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You might have some legacy data association that refers to this unique key "
+"of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"主キーの代わりに <literal>Person</literal> テーブルのユニークキーへの参照を持"
+"つ、レガシーデータの関連を持つかもしれません。:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The use of this outside the context of mapping legacy data is not "
+"recommended."
+msgstr ""
+"しかし、このようなレガシーデータマッピングのコンテキスト外への使用は推奨しま"
+"せん。"
+
+#. Tag: title
+#, no-c-format
+msgid "Subclass"
+msgstr "subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Polymorphic persistence requires the declaration of each subclass of the "
+"root persistent class. For the table-per-class-hierarchy mapping strategy, "
+"the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+"最後にポリモーフィックな永続化には、ルートの永続クラスの各サブクラスの定義が"
+"必要です。 table-per-class-hierarchy マッピング戦略では、 <literal>&lt;"
+"subclass&gt;</literal> 定義が使われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr "<literal>name</literal>:サブクラスの完全修飾されたクラス名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal>(オプション - デフォルトはクラス"
+"名): 個々のサブクラスを区別するための値。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface used for "
+"lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (オプション): 遅延初期化プロキシに使用するクラスやイ"
+"ンターフェースを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (オプション、デフォルトは <literal>true</literal> ): "
+"<literal>lazy=\"false\"</literal> とすると、遅延フェッチが使用できません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass declares its own persistent properties and subclasses. "
+"<literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a hierarchy must define a unique <literal>discriminator-value</literal>. If "
+"this is not specified, the fully qualified Java class name is used."
+msgstr ""
+"各サブクラスでは、永続プロパティとサブクラスを定義します。 <literal>&lt;"
+"version&gt;</literal> と <literal>&lt;id&gt;</literal> プロパティは、ルートク"
+"ラスから継承されると仮定されます。階層構造におけるサブクラスは、ユニークな "
+"<literal>discriminator-value</literal> を定義しなければなりません。 none が指"
+"定されると、完全修飾された Java クラス名が使われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For information about inheritance mappings see <xref linkend=\"inheritance"
+"\" />."
+msgstr ""
+"継承のマッピングに関する情報は <xref linkend=\"inheritance\"/> を参照してくだ"
+"さい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Joined-subclass"
+msgstr "joined-subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass can also be mapped to its own table. This is called the table-"
+"per-subclass mapping strategy. An inherited state is retrieved by joining "
+"with the table of the superclass. To do this you use the <literal>&lt;joined-"
+"subclass&gt;</literal> element. For example:"
+msgstr ""
+"もう1つの方法として、各サブクラスを自身のテーブルへマッピングすることができま"
+"す (table-per-subclass mapping strategy)。継承した状態はスーパークラスのテー"
+"ブルを使った結合で検索します。 <literal>&lt;joined-subclass&gt;</literal> 要"
+"素を使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal> :サブクラステーブルの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (オプション): 遅延初期化プロキシに使用するクラスやイ"
+"ンターフェースを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (オプション、デフォルトは <literal>true</literal> ): "
+"<literal>lazy=\"false\"</literal> とすると、遅延フェッチが使用できません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A discriminator column is not required for this mapping strategy. Each "
+"subclass must, however, declare a table column holding the object identifier "
+"using the <literal>&lt;key&gt;</literal> element. The mapping at the start "
+"of the chapter would then be re-written as:"
+msgstr ""
+"このマッピング戦略には、識別カラムは必要ありません。しかし各サブクラスは "
+"<literal>&lt;key&gt;</literal> 要素を使い、オブジェクト識別子を保持するテーブ"
+"ルカラムを定義しなければなりません。この章の初めのマッピングは以下のように書"
+"き直せます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Union-subclass"
+msgstr "union-subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables. This is called the table-per-concrete-class strategy. "
+"Each table defines all persistent states of the class, including the "
+"inherited state. In Hibernate, it is not necessary to explicitly map such "
+"inheritance hierarchies. You can map each class with a separate <literal>&lt;"
+"class&gt;</literal> declaration. However, if you wish use polymorphic "
+"associations (e.g. an association to the superclass of your hierarchy), you "
+"need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For "
+"example:"
+msgstr ""
+"3つ目の選択肢は、継承階層の具象クラスのみをテーブルにマッピングすることです "
+"(the table-per-concrete-class 戦略)。それぞれのテーブルは継承の状態を含めすべ"
+"てのクラスの永続状態を定義します。 Hibernate ではその様な継承階層が必ずしも必"
+"要ではありません。単純にそれぞれのクラスを、別々の <literal>&lt;class&gt;</"
+"literal> 宣言を使ってマッピングすることができます。しかしポリモーフィックな関"
+"連 (例えば階層のスーパークラスへの関連) を使いたいなら、 <literal>&lt;union-"
+"subclass&gt;</literal> マッピングを使う必要があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No discriminator column or key column is required for this mapping strategy."
+msgstr "このマッピング戦略では識別カラムやキーカラムは必要ありません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Join"
+msgstr "join"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using the <literal>&lt;join&gt;</literal> element, it is possible to map "
+"properties of one class to several tables that have a one-to-one "
+"relationship. For example:"
+msgstr ""
+"テーブル間に一対一の関係があるとき、 <literal>&lt;join&gt;</literal> 要素を使"
+"うことで、1つのクラスのプロパティをいくつものテーブルにマッピングすることが"
+"できます。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal> :結合したテーブルの名前"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"if set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its "
+"superclasses. It will use an outer join for a <literal>&lt;join&gt;</"
+"literal> defined by a subclass. If set to <literal>select</literal> then "
+"Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> "
+"defined on a subclass. This will be issued only if a row represents an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (オプション - デフォルトは <literal>join</"
+"literal> ): <literal>join</literal> を設定した場合、 Hibernate はデフォルト"
+"で、クラスやスーパークラスで定義された <literal>&lt;join&gt;</literal> を検索"
+"するのに内部結合を使い、サブクラスで定義された <literal>&lt;join&gt;</"
+"literal> を検索するのに外部結合を使います。 <literal>select</literal> を設定"
+"した場合には、 Hibernate はサブクラスで定義された <literal>&lt;join&gt;</"
+"literal> の選択に順次選択を使います。この場合、行がサブクラスのインスタンスを"
+"代表することがわかった場合にのみ発行されます。内部結合はクラスやそのスーパー"
+"クラスで定義された <literal>&lt;join&gt;</literal> を検索するために使用しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will not insert or update the properties "
+"defined by this join."
+msgstr ""
+"<literal>inverse</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): もし可能であれば、 Hibernate はこの結合で定義されているプロパティ"
+"に対し挿入や更新を行いません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null. It will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (オプション - デフォルトは <literal>false</"
+"literal> ): もし可能であれば、 Hibernate はこの結合で定義されたプロパティが "
+"null でない場合にのみ行を挿入し、そのプロパティの検索には常に外部結合を使用し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, address information for a person can be mapped to a separate "
+"table while preserving value type semantics for all properties:"
+msgstr ""
+"例えば人のアドレスの情報を分離したテーブルにマッピングすることが可能です (す"
+"べてのプロパティに対して値型のセマンティクスを保持します):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models. We recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"この特徴はしばしばレガシーデータモデルに対してのみ有用ですが、クラスよりも少"
+"ないテーブルと、きめの細かいドメインモデルを推奨します。しかし後で説明するよ"
+"うに、1つのクラス階層で継承のマッピング戦略を切り替える時には有用です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;key&gt;</literal> element has featured a few times within "
+"this guide. It appears anywhere the parent mapping element defines a join to "
+"a new table that references the primary key of the original table. It also "
+"defines the foreign key in the joined table:"
+msgstr ""
+"今まで何度か <literal>&lt;key&gt;</literal> 要素が出てきました。この要素は新"
+"しいテーブルへの結合を定義したり、結合テーブルで外部キーを定義したりする親要"
+"素のどこにでも現れ、オリジナルテーブルの主キーを参照します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional - defaults to <literal>noaction</"
+"literal>): specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (オプション, デフォルトは <literal>noaction</"
+"literal>): 外部キー制約がデータベースレベルでカスケード削除が可能かどうかを指"
+"定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): specifies that the foreign key "
+"refers to columns that are not the primary key of the original table. It is "
+"provided for legacy data."
+msgstr ""
+"<literal>property-ref</literal> (オプション): オリジナルテーブルの主キーでは"
+"ないカラムを参照する外部キーを指定します (レガシーデータに対して提供されま"
+"す)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): specifies that the foreign key "
+"columns are not nullable. This is implied whenever the foreign key is also "
+"part of the primary key."
+msgstr ""
+"<literal>not-null</literal> (オプション): 外部キーカラムが null 値を許容しな"
+"いことを指定します (このことは外部キーが主キーの一部であることを暗黙的に示し"
+"ます)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal> (optional): specifies that the foreign key should "
+"never be updated. This is implied whenever the foreign key is also part of "
+"the primary key."
+msgstr ""
+"<literal>update</literal> (オプション): 外部キーを決して更新してはならないこ"
+"とを指定します (このことは外部キーが主キーの一部であることを暗黙的に示しま"
+"す)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): specifies that the foreign key should "
+"have a unique constraint. This is implied whenever the foreign key is also "
+"the primary key."
+msgstr ""
+"<literal>unique</literal> (オプション): 外部キーがユニーク制約を持つべきであ"
+"ることを指定します (このことは外部キーが主キーの一部であることを暗黙的に示し"
+"ます)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For systems where delete performance is important, we recommend that all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"uses a database-level <literal>ON CASCADE DELETE</literal> constraint, "
+"instead of many individual <literal>DELETE</literal> statements. Be aware "
+"that this feature bypasses Hibernate's usual optimistic locking strategy for "
+"versioned data."
+msgstr ""
+"削除のパフォーマンスが重要であるシステムには、すべてのキーを <literal>on-"
+"delete=\"cascade\"</literal> と定義することを推奨します。そうすることで "
+"Hibernate は、 <literal>DELETE</literal> 文を毎回発行する代わりに、データベー"
+"スレベルの <literal>ON CASCADE DELETE</literal> 制約を使用します。この特徴は"
+"バージョン付けられたデータに対する Hibernate の通常の楽観的ロック戦略を無視す"
+"るということに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one-to-many association. If you map a "
+"unidirectional one-to-many association to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>."
+msgstr ""
+"<literal>not-null</literal> と <literal>update</literal> 属性は、単方向一対多"
+"関連の時には有用です。単方向一対多関連を null を許容しない外部キーにマッピン"
+"グするときは、 <literal>&lt;key not-null=\"true\"&gt;</literal> を使ってキー"
+"カラムを宣言 <emphasis> しなくてはなりません</emphasis> 。"
+
+#. Tag: title
+#, no-c-format
+msgid "Column and formula elements"
+msgstr "column と formula 要素"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping elements which accept a <literal>column</literal> attribute will "
+"alternatively accept a <literal>&lt;column&gt;</literal> subelement. "
+"Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the "
+"<literal>formula</literal> attribute. For example:"
+msgstr ""
+"<literal>column</literal> 属性を記述できる任意のマッピング要素はまた、 "
+"<literal>&lt;column&gt;</literal> サブ要素も記述できます。同様に "
+"<literal>&lt;formula&gt;</literal> も <literal>formula</literal> 属性の代替手"
+"段です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most of the attributes on <literal>column</literal> provide a means of "
+"tailoring the DDL during automatic schema generation. The <literal>read</"
+"literal> and <literal>write</literal> attributes allow you to specify custom "
+"SQL that Hibernate will use to access the column's value. For more on this, "
+"see the discussion of <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link>."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>column</literal> and <literal>formula</literal> elements can "
+"even be combined within the same property or association mapping to express, "
+"for example, exotic join conditions."
+msgstr ""
+"同じプロパティや関連のマッピングの中で、 <literal>column</literal> と "
+"<literal>formula</literal> 属性を組み合わせることができます。例えば、特殊な結"
+"合条件などです。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Import"
+msgstr "import"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application has two persistent classes with the same name, and you "
+"do not want to specify the fully qualified package name in Hibernate "
+"queries, classes can be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You can also import classes and "
+"interfaces that are not explicitly mapped:"
+msgstr ""
+"アプリケーションに同じ名前の2つの永続クラスがあり、 Hibernate クエリで完全修"
+"飾された(パッケージの)名前を指定したくないと仮定します。そのような場合は "
+"<literal>auto-import=\"true\"</literal> に頼らず、クラスが「インポート」され"
+"たものであると明示できます。明示的にマッピングされていないクラスやインター"
+"フェースでさえもインポートできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr "<literal>class</literal>: Java クラスの完全修飾されたクラス名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): a name that can be used in the query language."
+msgstr ""
+"<literal>rename</literal> (オプション - デフォルトは修飾されていないクラス"
+"名): クエリ言語で使われる名前。"
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is one more type of property mapping. The <literal>&lt;any&gt;</"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping requires more than one column. The "
+"first column contains the type of the associated entity. The remaining "
+"columns contain the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association. This is not the usual way of "
+"mapping polymorphic associations and you should use this only in special "
+"cases. For example, for audit logs, user session data, etc."
+msgstr ""
+"プロパティマッピングにはさらにもう1つの型があります。 <literal>&lt;any&gt;</"
+"literal> マッピング要素は、複数のテーブルからクラスへのポリモーフィックな関連"
+"を定義します。この型のマッピングには必ず複数のカラムが必要です。1番目のカラム"
+"は関連エンティティの型を保持します。残りのカラムは識別子を保持します。この種"
+"類の関連には外部キー制約を指定することはできません。そのためこれは最も使われ"
+"ることのない(ポリモーフィックな)関連のマッピング方法です。非常に特別な場合"
+"(例えば、検査ログやユーザーセッションデータなど)に限って、これを使うべきで"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute allows the application to specify "
+"a custom type that maps database column values to persistent classes that "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"<literal>meta-type</literal> により、アプリケーションはカスタム型を指定できま"
+"す。このカスタム型はデータベースカラムの値を、 <literal>id-type</literal> で"
+"指定した型の識別子プロパティを持った永続クラスへマッピングします。 meta-type "
+"の値からクラス名へのマッピングを指定しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>: プロパティ名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>: 識別子の型。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal>(オプション - デフォルトは <literal>string</"
+"literal> ): ディスクリミネータマッピングで許された型。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal>(オプション - デフォルトは <literal>none</"
+"literal> ): カスケードのスタイル。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property either do or do not "
+"require acquisition of the optimistic lock. It defines whether a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</"
+"literal> ): このプロパティの更新に楽観ロックの取得を要求するかどうかを指定し"
+"ます。言い換えれば、このプロパティがダーティであるときにバージョンを増やすべ"
+"きかを定義します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate types"
+msgstr "Hibernate の型"
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "エンティティと値"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In relation to the persistence service, Java language-level objects are "
+"classified into two groups:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model, "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted. Saves and deletions, however, can be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children. This is "
+"different from the ODMG model of object persistence by reachability and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They can "
+"also be versioned."
+msgstr ""
+"<emphasis>エンティティ</emphasis> はエンティティへの参照を保持する、他のすべ"
+"てのオブジェクトから独立して存在します。参照されないオブジェクトがガベージコ"
+"レクトされてしまう性質を持つ通常の Java モデルと、これを比べてみてください。"
+"(親エンティティから子へ、セーブと削除が <emphasis>カスケード</emphasis> され"
+"うることを除いて)エンティティは明示的にセーブまたは削除されなければなりませ"
+"ん。これは到達可能性によるオブジェクト永続化の ODMG モデルとは異なっていま"
+"す。大規模なシステムでアプリケーションオブジェクトが普通どのように使われるか"
+"により密接に対応します。エンティティは循環と参照の共有をサポートします。また"
+"それらはバージョン付けすることもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives: "
+"collections (not what is inside a collection), components and certain "
+"immutable objects. Unlike entities, values in particular collections and "
+"components, <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects and primitives are persisted and deleted along with "
+"their containing entity, they cannot be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"エンティティの永続状態は他のエンティティや <emphasis>値</emphasis> 型のインス"
+"タンスへの参照から構成されます。値はプリミティブ、コレクション (コレクション"
+"の内部ではなく)、コンポーネント、不変オブジェクトです。エンティティとは違い、"
+"値は(特にコレクションとコンポーネントにおいて)、到達可能性による永続化や削"
+"除が <emphasis>行われます</emphasis> 。値オブジェクト(とプリミティブ)は、包"
+"含するエンティティと一緒に永続化や削除が行われるので、それらを独立にバージョ"
+"ン付けすることはできません。値には独立したアイデンティティがないので、複数の"
+"エンティティやコレクションがこれを共有することはできません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, we have been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Not all user-defined classes with a "
+"persistent state, however, are entities. A <emphasis>component</emphasis> is "
+"a user-defined class with value semantics. A Java property of type "
+"<literal>java.lang.String</literal> also has value semantics. Given this "
+"definition, all types (classes) provided by the JDK have value type "
+"semantics in Java, while user-defined types can be mapped with entity or "
+"value type semantics. This decision is up to the application developer. An "
+"entity class in a domain model will normally have shared references to a "
+"single instance of that class, while composition or aggregation usually "
+"translates to a value type."
+msgstr ""
+"これまで「永続クラス」という言葉をエンティティの意味で使ってきました。これか"
+"らもそうしていきます。厳密に言うと、永続状態を持つユーザー定義のクラスのすべ"
+"てがエンティティというわけではありません。 <emphasis>コンポーネント</"
+"emphasis> は値のセマンティクスを持つユーザー定義クラスです。 <literal>java."
+"lang.String</literal> 型のプロパティもまた値のセマンティクスを持ちます。定義"
+"するなら、 JDK で提供されているすべての Java の型 (クラス) が値のセマンティク"
+"スを持つといえます。一方ユーザー定義型は、エンティティや値型のセマンティクス"
+"とともにマッピングできます。この決定はアプリケーション開発者次第です。そのク"
+"ラスの1つのインスタンスへの共有参照は、ドメインモデル内のエンティティクラス"
+"に対する良いヒントになります。一方合成集約や集約は、通常値型へ変換されます。"
+
+#. Tag: para
+#, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr "本ドキュメントを通して、何度もこの概念を取り上げます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge is to map the Java type system, and the developers' definition "
+"of entities and value types, to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate. For entities, <literal>&lt;"
+"class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. "
+"For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;"
+"component&gt;</literal>etc., that usually have a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides a range of mappings "
+"for standard JDK value types out of the box. You can write your own mapping "
+"types and implement your own custom conversion strategies."
+msgstr ""
+"Java 型のシステム (もしくは開発者が定義したエンティティと値型) を SQL /データ"
+"ベース型のシステムにマッピングすることは難しいです。 Hibernate は2つのシステ"
+"ムの架け橋を提供します。エンティティに対しては <literal>&lt;class&gt;</"
+"literal> や <literal>&lt;subclass&gt;</literal> などを使用します。値型に対し"
+"ては <literal>&lt;property&gt;</literal> や <literal>&lt;component&gt;</"
+"literal> などを、通常 <literal>type</literal> と共に使います。この属性の値は "
+"Hibernate の <emphasis>マッピング型</emphasis> の名前です。 Hibernate は (標"
+"準 JDK の値型に対して) 多くの自由なマッピングを提供します。後で見るように、自"
+"身のマッピング型を記述し、同様にカスタムの変換戦略を実装することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of collections, all built-in Hibernate types support null "
+"semantics."
+msgstr ""
+"コレクションを除く組み込みの Hibernate の型はすべて、 null セマンティクスをサ"
+"ポートします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "基本的な型"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> can be roughly "
+"categorized into the following:"
+msgstr ""
+"組み込みの <emphasis>基本的なマッピング型</emphasis> は大まかに以下のように分"
+"けられます。"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+msgstr ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"Java のプリミティブやラッパークラスから適切な(ベンダー固有の) SQL カラム型"
+"への型マッピング。 <literal>boolean, yes_no</literal> と "
+"<literal>true_false</literal> は、すべて Java の <literal>boolean</literal> "
+"または <literal>java.lang.Boolean</literal> の代替エンコードです。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"<literal>java.lang.String</literal> から <literal>VARCHAR</literal> (または "
+"Oracle の <literal>VARCHAR2</literal> )への型マッピング。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "<literal>date, time, timestamp</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"<literal>java.util.Date</literal> とそのサブクラスから SQL 型の "
+"<literal>DATE</literal> 、 <literal>TIME</literal> 、 <literal>TIMESTAMP</"
+"literal> (またはそれらと等価なもの) への型マッピング。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "<literal>calendar, calendar_date</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"<literal>java.util.Calendar</literal> から SQL 型 の「 <literal>TIMESTAMP</"
+"literal> 、 <literal>DATE</literal> (またはそれらと等価なもの)への型マッピン"
+"グ。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "<literal>big_decimal, big_integer</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"<literal>java.math.BigDecimal</literal> と <literal>java.math.BigInteger</"
+"literal> から <literal>NUMERIC</literal>(または Oracle の <literal>NUMBER</"
+"literal> )への型マッピング。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "<literal>locale, timezone, currency</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
+msgstr ""
+"<literal>java.util.Locale</literal> 、 <literal>java.util.TimeZone</"
+"literal> 、 <literal>java.util.Currency</literal> から <literal>VARCHAR</"
+"literal> (または Oracle の <literal>VARCHAR2</literal> )への型マッピング。 "
+"<literal>Locale</literal> と <literal>Currency</literal> のインスタンスは、そ"
+"れらの ISO コードにマッピングされます。 <literal>TimeZone</literal> のインス"
+"タンスは、それらの <literal>ID</literal> にマッピングされます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
+msgstr ""
+"<literal>java.lang.Class</literal> から <literal>VARCHAR</literal> (または "
+"Oracle の <literal>VARCHAR2</literal> )への型マッピング。 <literal>Class</"
+"literal> はその完全修飾された名前にマッピングされます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "バイト配列は、適切な SQL のバイナリ型にマッピングされます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"長い Java 文字列は、 SQL の <literal>CLOB</literal> または <literal>TEXT</"
+"literal> 型にマッピングされます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You can also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+"シリアライズ可能な Java 型は、適切な SQL のバイナリ型にマッピングされます。デ"
+"フォルトで基本型ではないシリアライズ可能な Java クラスやインターフェースの名"
+"前を指定することで、 Hibernate の型を <literal>serializable</literal> とする"
+"こともできます。"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>calendar, calendar_date</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types can be inconvenient for some "
+"applications, since the blob or clob object cannot be reused outside of a "
+"transaction. Driver support is patchy and inconsistent."
+msgstr ""
+"JDBC クラス <literal>java.sql.Clob</literal> と <literal>java.sql.Blob</"
+"literal> に対する型マッピング。 blob や clob オブジェクトはトランザクションの"
+"外では再利用できないため、アプリケーションによっては不便かもしれません。(さ"
+"らにはドライバサポートが一貫していません。)"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+msgstr ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for what are considered mutable Java types. This is where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new, "
+"nonidentical, object to the property."
+msgstr ""
+"ほとんどの場合に可変である Java の型に対する型マッピング。 Hibernate は不変"
+"な Java の型に対しては最適化を行い、アプリケーションはそれを不変オブジェクト"
+"として扱います。例えば <literal>imm_timestamp</literal> としてマップしたイン"
+"スタンスに対して、 <literal>Date.setTime()</literal> を呼び出してはなりませ"
+"ん。プロパティの値を変更しその変更を永続化するためには、アプリケーションはプ"
+"ロパティに対して新しい (同一でない) オブジェクトを割り当てなければなりませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unique identifiers of entities and collections can be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. Composite identifiers are also allowed. See below for more "
+"information."
+msgstr ""
+"エンティティとコレクションのユニークな識別子は、 <literal>binary</"
+"literal> 、 <literal>blob</literal> 、 <literal>clob</literal> を除く、どんな"
+"基本型でも構いません。(複合識別子でも構いません。以下を見てください。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"基本的な値型には、 <literal>org.hibernate.Hibernate</literal> で定義された "
+"<literal>Type</literal> 定数がそれぞれあります。例えば、 <literal>Hibernate."
+"STRING</literal> は <literal>string</literal> 型を表現しています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "カスタム型"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. Custom types are not limited to "
+"mapping a property, or collection element, to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"開発者が独自の値型を作成することは、比較的簡単です。例えば、 <literal>java."
+"lang.BigInteger</literal> 型のプロパティを <literal>VARCHAR</literal> カラム"
+"に永続化したいかもしれません。 Hibernate はこのための組み込み型を用意していま"
+"せん。しかしカスタム型は、プロパティ(またはコレクションの要素)を1つのテーブ"
+"ルカラムにマッピングするのに制限はありません。そのため例えば、 <literal>java."
+"lang.String</literal> 型の <literal>getName()</literal> / <literal>setName()"
+"</literal> Java プロパティを <literal>FIRST_NAME</literal> 、 "
+"<literal>INITIAL</literal> 、 <literal>SURNAME</literal> カラムに永続化できま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. View "
+"<literal>org.hibernate.test.DoubleStringType</literal> to see the kind of "
+"things that are possible."
+msgstr ""
+"カスタム型を実装するには、 <literal>org.hibernate.UserType</literal> または "
+"<literal>org.hibernate.CompositeUserType</literal> を実装し、型の完全修飾され"
+"た名前を使ってプロパティを定義します。どのような種類のものが可能かを調べるに"
+"は、 <literal>org.hibernate.test.DoubleStringType</literal> を確認してくださ"
+"い。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice the use of <literal>&lt;column&gt;</literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"<literal>&lt;column&gt;</literal> タグで、プロパティを複数のカラムへマッピン"
+"グできることに注目してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"<literal>CompositeUserType</literal> 、 <literal>EnhancedUserType</"
+"literal> 、 <literal>UserCollectionType</literal> 、 "
+"<literal>UserVersionType</literal> インターフェースは、より特殊な使用法に対し"
+"てのサポートを提供します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal>&lt;"
+"type&gt;</literal> element in your mapping files."
+msgstr ""
+"マッピングファイル内で <literal>UserType</literal> へパラメータを提供できま"
+"す。このためには、 <literal>UserType</literal> は <literal>org.hibernate."
+"usertype.ParameterizedType</literal> を実装しなくてはなりません。カスタム型パ"
+"ラメータを提供するために、マッピングファイル内で <literal>&lt;type&gt;</"
+"literal> 要素を使用できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"<literal>UserType</literal> は、引数として渡された <literal>Properties</"
+"literal> オブジェクトから、 <literal>default</literal> で指定したパラメータに"
+"対する値を検索することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you regularly use a certain <literal>UserType</literal>, it is useful to "
+"define a shorter name for it. You can do this using the <literal>&lt;"
+"typedef&gt;</literal> element. Typedefs assign a name to a custom type, and "
+"can also contain a list of default parameter values if the type is "
+"parameterized."
+msgstr ""
+"特定の <literal>UserType</literal> を頻繁に使用するならば、短い名前を定義する"
+"と便利になるでしょう。 <literal>&lt;typedef&gt;</literal> 要素を使ってこのよ"
+"うなことが行えます。 Typedefs はカスタム型に名前を割り当てます。その型がパラ"
+"メータを持つならば、パラメータのデフォルト値のリストを含むこともできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"プロパティのマッピングで型パラメータを使うことで、 typedef で提供されたパラ"
+"メータをその都度オーバーライドすることが可能です。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will rarely need to use a custom type, it is considered "
+"good practice to use custom types for non-entity classes that occur "
+"frequently in your application. For example, a <literal>MonetaryAmount</"
+"literal> class is a good candidate for a <literal>CompositeUserType</"
+"literal>, even though it could be mapped as a component. One reason for this "
+"is abstraction. With a custom type, your mapping documents would be "
+"protected against changes to the way monetary values are represented."
+msgstr ""
+"Hibernate の幅広い組み込み型とコンポーネントに対するサポートは、カスタム型を"
+"めったに <emphasis>使わない</emphasis> ということを意味します。それでもなお、"
+"アプリケーションで頻出する (エンティティではない) クラスに対するカスタム型の"
+"使用は、よいやり方であるとみなされます。例えば <literal>MonetaryAmount</"
+"literal> クラスはコンポーネントとして簡単にマッピングできますが、 "
+"<literal>CompositeUserType</literal> の良い候補です。カスタム型を使用する動機"
+"の1つは抽象化です。カスタム型を使うことで、通貨をどのように表現しようともマッ"
+"ピングドキュメントは起こりうる変化に対応できます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "1つのクラスに1つ以上のマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case, you must specify an <emphasis>entity name</emphasis> to "
+"disambiguate between instances of the two mapped entities. By default, the "
+"entity name is the same as the class name. Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"ある永続クラスに、一つ以上のマッピングを提供することが出来ます。この場合、"
+"マッピングする2つのエンティティのインスタンスを明確にするために、 <emphasis>"
+"エンティティ名</emphasis> を指定しなければなりません (デフォルトではエンティ"
+"ティ名はクラス名と同じです。)。 Hibernate では、永続オブジェクトを扱うとき、"
+"クエリを書き込むとき、指定されたエンティティへの関連をマッピングするときに、"
+"エンティティ名を指定しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations are now specified using <literal>entity-name</literal> instead "
+"of <literal>class</literal>."
+msgstr ""
+"関連が <literal>class</literal> の代わりに <literal>entity-name</literal> を"
+"使って、どのように指定されるのかに注目してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "バッククォートで囲んだ SQL 識別子"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal>. This is usually double quotes, but the SQL Server uses brackets "
+"and MySQL uses backticks."
+msgstr ""
+"マッピングドキュメントでテーブルやカラムの名前をバッククォートで囲むことで、 "
+"Hibernate で生成された SQL 中の識別子を引用させることができます。 Hibernate "
+"は SQL の <literal>Dialect</literal> に対応する、正しい引用スタイルを使います"
+"(普通はダブルクォートですが、 SQL Server ではかぎ括弧、 MySQL ではバック"
+"クォートです)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "メタデータの代替手段"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"XML does not suit all users so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
+msgstr ""
+"XML の記述以外に、 Hibernate では O/R マッピングのメタデータを定義する代替方"
+"法があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "XDoclet マークアップの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover "
+"this approach in this reference guide since it is considered part of "
+"XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings:"
+msgstr ""
+"多くの Hibernate ユーザーは XDoclet の <literal>@hibernate.tags</literal> を"
+"使って、ソースコード内に直接マッピング情報を埋め込むことを好みます。これは厳"
+"密に言えば XDoclet の分野なので、本ドキュメントではこの方法を対象とはしませ"
+"ん。しかし XDoclet を使った以下の <literal>Cat</literal> マッピングの例を示し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr ""
+"Hibernate のウェブサイトには、 XDoclet と Hibernate に関するサンプルが多数あ"
+"ります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "JDK 5.0 アノテーションの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level that are "
+"type-safe and checked at compile time. This mechanism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API). Support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+"JDK5.0 ではタイプセーフかつコンパイル時にチェックできる、言語レベルの "
+"XDoclet スタイルのアノテーションを導入しました。このメカニズムは XDoclet のア"
+"ノテーションよりも強力で、ツールや IDE も多くがサポートしています。例えば "
+"IntelliJ IDEA は、 JDK5.0 にアノテーションの自動補完と構文の強調表示をサポー"
+"トしています。 EJB 仕様 (JSR-220) の新しいバージョンでは、エンティティ Bean "
+"に対する主要なメタデータメカニズムとして JDK5.0 のアノテーションを使用してい"
+"ます。 Hibernate3 では JSR-220 (永続化 API) の <literal>EntityManager</"
+"literal> を実装し、メタデータマッピングに対するサポートは、別ダウンロードの "
+"<emphasis>Hibernate Annotations</emphasis> パッケージにより利用可能です。これ"
+"は EJB3 (JSR-220) と Hibernate3 のメタデータをどちらもサポートしています。"
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr "以下は EJB のエンティティ Bean として注釈された POJO クラスの例です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Support for JDK 5.0 Annotations (and JSR-220) is currently under "
+"development. Please refer to the Hibernate Annotations module for more "
+"details."
+msgstr ""
+"JDK5.0 のアノテーション (と JSR-220) のサポートは進行中の作業であり、完全では"
+"ないことに注意してください。さらに詳しい情報は Hibernate のアノテーションモ"
+"ジュールを参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Generated properties"
+msgstr "生成プロパティ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Generated properties are properties that have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects that contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. When Hibernate issues "
+"an SQL INSERT or UPDATE for an entity that has defined generated properties, "
+"it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+"生成プロパティとは、データベースによって生成された値を持つプロパティです。通"
+"常、 Hibernate アプリケーションは、データベースが値を生成したプロパティを含む"
+"オブジェクトを <literal>リフレッシュ</literal> する必要がありました。しかし、"
+"プロパティが生成されたということをマークすることで、アプリケーションはリフ"
+"レッシュの責任を Hibernate に委譲します。基本的に、生成プロパティを持つと定義"
+"したエンティティに対して Hibernate が INSERT や UPDATE の SQL を発行した後す"
+"ぐに、生成された値を読み込むための SELECT SQL が発行されます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link>, "
+"can be marked as generated."
+msgstr ""
+"生成プロパティは、挿入不可能かつ更新不可能でなければなりません。 <xref "
+"linkend=\"mapping-declaration-version\"/> バージョン、 <xref linkend="
+"\"mapping-declaration-timestamp\"/> タイムスタンプ、 <xref linkend=\"mapping-"
+"declaration-property\"/> 簡単なプロパティだけが生成されたとマークできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>never</literal> (the default): the given property value is not "
+"generated within the database."
+msgstr ""
+"<literal>never</literal> (デフォルト) - 与えられたプロパティの値は、データ"
+"ベースから生成されないことを意味します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: the given property value is generated on insert, "
+"but is not regenerated on subsequent updates. Properties like created-date "
+"fall into this category. Even though <link linkend=\"mapping-declaration-"
+"version\">version</link> and <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> properties can be marked as generated, this option is "
+"not available."
+msgstr ""
+"<literal>insert</literal> - 与えられたプロパティの値は挿入時に生成されるが、"
+"続いて起こる更新時には生成されないこと示します。作成された日付などは、このカ"
+"テゴリに分類されます。 <xref linkend=\"mapping-declaration-version\"/> バー"
+"ジョンや <xref linkend=\"mapping-declaration-timestamp\"/> タイムスタンプのプ"
+"ロパティは生成されたとマークできますが、このオプションは利用できないことに注"
+"意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>always</literal>: the property value is generated both on insert "
+"and on update."
+msgstr ""
+"<literal>always</literal> - 挿入時も更新時もプロパティの値が生成されることを"
+"示します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to customize the SQL it uses to read and write the "
+"values of columns mapped to <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. For example, if your database provides a set of "
+"data encryption functions, you can invoke them for individual columns like "
+"this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate applies the custom expressions automatically whenever the property "
+"is referenced in a query. This functionality is similar to a derived-"
+"property <literal>formula</literal> with two differences:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The property is backed by one or more columns that are exported as part of "
+"automatic schema generation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>write</literal> expression, if specified, must contain exactly "
+"one '?' placeholder for the value."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Auxiliary database objects"
+msgstr "補助的なデータベースオブジェクト"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Auxiliary database objects allow for the CREATE and DROP of arbitrary "
+"database objects. In conjunction with Hibernate's schema evolution tools, "
+"they have the ability to fully define a user schema within the Hibernate "
+"mapping files. Although designed specifically for creating and dropping "
+"things like triggers or stored procedures, any SQL command that can be run "
+"via a <literal>java.sql.Statement.execute()</literal> method is valid (for "
+"example, ALTERs, INSERTS, etc.). There are essentially two modes for "
+"defining auxiliary database objects:"
+msgstr ""
+"Hibernate のスキーマエボリューションツールと連動することで、任意のデータベー"
+"スオブジェクト(トリガーやストアドプロシージャなど)の CREATE と DROP によ"
+"り、 Hibernate のマッピングファイル内のユーザースキーマをすべて定義することが"
+"出来ます。主にトリガやストアドプロシージャのようなデータベースオブジェクトを"
+"生成や削除することを意図していますが、実際には <literal>java.sql.Statement."
+"execute()</literal> メソッドによって実行できる任意の SQL コマンド(ALTER、"
+"INSERTなど)が実行できます。補助的なデータベースオブジェクトを定義するため"
+"の、2つの基本的な方法があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands in the "
+"mapping file:"
+msgstr ""
+"1つ目の方法は、 CREATE と DROP コマンドをマッピングファイルの外に、明示的に記"
+"載することです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second mode is to supply a custom class that constructs the CREATE and "
+"DROP commands. This custom class must implement the <literal>org.hibernate."
+"mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+"2つ目の方法は、 CREATE と DROP コマンドの組み立て方を知っているカスタムクラス"
+"を提供することです。このカスタムクラスは <literal>org.hibernate.mapping."
+"AuxiliaryDatabaseObject</literal> インタフェースを実装しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped so that they "
+"only apply when certain dialects are used."
+msgstr ""
+"さらに、あるデータベース方言が使用される時にだけ適用するといったように、デー"
+"タベースオブジェクトが使われるケースを限定できます。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\"\n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\">\n"
+#~ "\n"
+#~ "                <id name=\"id\">\n"
+#~ "                        <generator class=\"native\"/>\n"
+#~ "                </id>\n"
+#~ "\n"
+#~ "                <discriminator column=\"subclass\"\n"
+#~ "                     type=\"character\"/>\n"
+#~ "\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "\n"
+#~ "                <property name=\"birthdate\"\n"
+#~ "                    type=\"date\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"sex\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\">\n"
+#~ "                        <key column=\"mother_id\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "\n"
+#~ "                <subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\">\n"
+#~ "\n"
+#~ "                        <property name=\"name\"\n"
+#~ "                            type=\"string\"/>\n"
+#~ "\n"
+#~ "                </subclass>\n"
+#~ "\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Cat\" \n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\"&gt;\n"
+#~ "                \n"
+#~ "                &lt;id name=\"id\"&gt;\n"
+#~ "                        &lt;generator class=\"native\"/&gt;\n"
+#~ "                &lt;/id&gt;\n"
+#~ "\n"
+#~ "                &lt;discriminator column=\"subclass\" \n"
+#~ "                     type=\"character\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"weight\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"birthdate\"\n"
+#~ "                    type=\"date\" \n"
+#~ "                    not-null=\"true\" \n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"sex\"\n"
+#~ "                    not-null=\"true\" \n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\"&gt;\n"
+#~ "                        &lt;key column=\"mother_id\"/&gt;\n"
+#~ "                        &lt;one-to-many class=\"Cat\"/&gt;\n"
+#~ "                &lt;/set&gt;\n"
+#~ "\n"
+#~ "                &lt;subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\"&gt;\n"
+#~ "\n"
+#~ "                        &lt;property name=\"name\" \n"
+#~ "                            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "                &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Dog\"&gt;\n"
+#~ "                &lt;!-- mapping for Dog could go here --&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+#~ "    <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+#~ "]>\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"your.domain\">\n"
+#~ "    <class name=\"MyEntity\">\n"
+#~ "        <id name=\"id\" type=\"my-custom-id-type\">\n"
+#~ "            ...\n"
+#~ "        </id>\n"
+#~ "    <class>\n"
+#~ "    &types;\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+#~ "    &lt;!ENTITY types SYSTEM \"classpath://your/domain/types.xml\"&gt;\n"
+#~ "]&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"your.domain\"&gt;\n"
+#~ "    &lt;class name=\"MyEntity\"&gt;\n"
+#~ "        &lt;id name=\"id\" type=\"my-custom-id-type\"&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/id&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "    &amp; types;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " />]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " /&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Summary\">\n"
+#~ "    <subselect>\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    </subselect>\n"
+#~ "    <synchronize table=\"item\"/>\n"
+#~ "    <synchronize table=\"bid\"/>\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Summary\"&gt;\n"
+#~ "    &lt;subselect&gt;\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    &lt;/subselect&gt;\n"
+#~ "    &lt;synchronize table=\"item\"/&gt;\n"
+#~ "    &lt;synchronize table=\"bid\"/&gt;\n"
+#~ "    &lt;id name=\"name\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        <generator class=\"generatorClass\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\"&gt;\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        &lt;generator class=\"generatorClass\"/&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+#~ "                <param name=\"table\">uid_table</param>\n"
+#~ "                <param name=\"column\">next_hi_value_column</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"org.hibernate.id.TableHiLoGenerator\"&gt;\n"
+#~ "                &lt;param name=\"table\"&gt;uid_table&lt;/param&gt;\n"
+#~ "                &lt;param name=\"column\"&gt;next_hi_value_column&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#~ msgid "increment"
+#~ msgstr "increment"
+
+#~ msgid "identity"
+#~ msgstr "identity"
+
+#~ msgid "sequence"
+#~ msgstr "sequence"
+
+#~ msgid "hilo"
+#~ msgstr "hilo"
+
+#~ msgid "seqhilo"
+#~ msgstr "seqhilo"
+
+#~ msgid "guid"
+#~ msgstr "guid"
+
+#~ msgid "native"
+#~ msgstr "native"
+
+#~ msgid "assigned"
+#~ msgstr "assigned"
+
+#~ msgid "select"
+#~ msgstr "select"
+
+#~ msgid "foreign"
+#~ msgstr "foreign"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"hilo\">\n"
+#~ "                <param name=\"table\">hi_value</param>\n"
+#~ "                <param name=\"column\">next_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"&gt;\n"
+#~ "                &lt;param name=\"table\"&gt;hi_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"column\"&gt;next_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"max_lo\"&gt;100&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"seqhilo\">\n"
+#~ "                <param name=\"sequence\">hi_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"cat_id\"&gt;\n"
+#~ "        &lt;generator class=\"seqhilo\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;hi_value&lt;/param&gt;\n"
+#~ "                &lt;param name=\"max_lo\"&gt;100&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">person_id_sequence</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;person_id_sequence&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value="
+#~ "\"0\">\n"
+#~ "        <generator class=\"identity\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0"
+#~ "\"&gt;\n"
+#~ "        &lt;generator class=\"identity\"/&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"select\">\n"
+#~ "                <param name=\"key\">socialSecurityNumber</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "&lt;id name=\"id\" type=\"long\" column=\"person_id\"&gt;\n"
+#~ "        &lt;generator class=\"select\"&gt;\n"
+#~ "                &lt;param name=\"key\"&gt;socialSecurityNumber&lt;/"
+#~ "param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "&lt;/id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        <key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/>\n"
+#~ "        <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+#~ "\"column_name\"/>\n"
+#~ "        ......\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"&gt;\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        &lt;key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/&gt;\n"
+#~ "        &lt;key-many-to-one name=\"propertyName class=\"ClassName\" "
+#~ "column=\"column_name\"/&gt;\n"
+#~ "        ......\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id>\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"medicareNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"dependent\"/&gt;\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "&lt;composite-id class=\"MedicareId\" mapped=\"true\"&gt;\n"
+#~ "        &lt;key-property name=\"medicareNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"dependent\"/&gt;\n"
+#~ "&lt;/composite-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/>]]>"
+#~ msgstr ""
+#~ "&lt;discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column="
+#~ "\"PRODUCT_ID\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" "
+#~ "column=\"SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"serialNumber\" unique=\"true\" type=\"string\" column="
+#~ "\"SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" "
+#~ "column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" property-ref=\"serialNumber\" column="
+#~ "\"PRODUCT_SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" class=\"Person\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained="
+#~ "\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">employee</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;employee&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID"
+#~ "\" unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref="
+#~ "\"person\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name\"employee\" class=\"Employee\" property-ref=\"person"
+#~ "\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
+#~ "        <property ... />\n"
+#~ "        <many-to-one ... />\n"
+#~ "        ......\n"
+#~ "</natural-id>]]>"
+#~ msgstr ""
+#~ "&lt;natural-id mutable=\"true|false\"/&gt;\n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        &lt;many-to-one ... /&gt;\n"
+#~ "        ......\n"
+#~ "&lt;/natural-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<component\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</component>]]>"
+#~ msgstr ""
+#~ "&lt;component \n"
+#~ "        name=\"propertyName\" \n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/component&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<properties\n"
+#~ "        name=\"logicalName\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</properties>]]>"
+#~ msgstr ""
+#~ "&lt;properties \n"
+#~ "        name=\"logicalName\" \n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/properties&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"personNumber\"/>\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    <properties name=\"name\"\n"
+#~ "            unique=\"true\" update=\"false\">\n"
+#~ "        <property name=\"firstName\"/>\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"lastName\"/>\n"
+#~ "    </properties>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"personNumber\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;properties name=\"name\" \n"
+#~ "            unique=\"true\" update=\"false\"&gt;\n"
+#~ "        &lt;property name=\"firstName\"/&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"lastName\"/&gt;\n"
+#~ "    &lt;/properties&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\"\n"
+#~ "         class=\"Person\" property-ref=\"name\">\n"
+#~ "    <column name=\"firstName\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "    <column name=\"lastName\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" \n"
+#~ "         class=\"Person\" property-ref=\"name\"&gt;\n"
+#~ "    &lt;column name=\"firstName\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "    &lt;column name=\"lastName\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</subclass>]]>"
+#~ msgstr ""
+#~ "&lt;subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <key .... >\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</joined-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;key .... &gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/joined-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\" table=\"CATS\">\n"
+#~ "                <id name=\"id\" column=\"uid\" type=\"long\">\n"
+#~ "                        <generator class=\"hilo\"/>\n"
+#~ "                </id>\n"
+#~ "                <property name=\"birthdate\" type=\"date\"/>\n"
+#~ "                <property name=\"color\" not-null=\"true\"/>\n"
+#~ "                <property name=\"sex\" not-null=\"true\"/>\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "                <many-to-one name=\"mate\"/>\n"
+#~ "                <set name=\"kittens\">\n"
+#~ "                        <key column=\"MOTHER\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "                <joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\">\n"
+#~ "                    <key column=\"CAT\"/>\n"
+#~ "                    <property name=\"name\" type=\"string\"/>\n"
+#~ "                </joined-subclass>\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"eg.Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Cat\" table=\"CATS\"&gt;\n"
+#~ "                &lt;id name=\"id\" column=\"uid\" type=\"long\"&gt;\n"
+#~ "                        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "                &lt;/id&gt;\n"
+#~ "                &lt;property name=\"birthdate\" type=\"date\"/&gt;\n"
+#~ "                &lt;property name=\"color\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"sex\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"weight\"/&gt;\n"
+#~ "                &lt;many-to-one name=\"mate\"/&gt;\n"
+#~ "                &lt;set name=\"kittens\"&gt;\n"
+#~ "                        &lt;key column=\"MOTHER\"/&gt;\n"
+#~ "                        &lt;one-to-many class=\"Cat\"/&gt;\n"
+#~ "                &lt;/set&gt;\n"
+#~ "                &lt;joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\"&gt;\n"
+#~ "                    &lt;key column=\"CAT\"/&gt;\n"
+#~ "                    &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "                &lt;/joined-subclass&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"eg.Dog\"&gt;\n"
+#~ "                &lt;!-- mapping for Dog could go here --&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</union-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/union-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\">\n"
+#~ "\n"
+#~ "        <key ... />\n"
+#~ "\n"
+#~ "        <property ... />\n"
+#~ "        ...\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "&lt;join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\"&gt;\n"
+#~ "        \n"
+#~ "        &lt;key ... /&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        ...\n"
+#~ "&lt;/join&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    table=\"PERSON\">\n"
+#~ "\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
+#~ "\n"
+#~ "    <join table=\"ADDRESS\">\n"
+#~ "        <key column=\"ADDRESS_ID\"/>\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </join>\n"
+#~ "    ...]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"\n"
+#~ "    table=\"PERSON\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;...&lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;join table=\"ADDRESS\"&gt;\n"
+#~ "        &lt;key column=\"ADDRESS_ID\"/&gt;\n"
+#~ "        &lt;property name=\"address\"/&gt;\n"
+#~ "        &lt;property name=\"zip\"/&gt;\n"
+#~ "        &lt;property name=\"country\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "    ..."
+
+#, fuzzy
+#~ msgid "<title>Key</title>"
+#~ msgstr "<title>key</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/>]]>"
+#~ msgstr ""
+#~ "&lt;column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<formula>SQL expression</formula>]]>"
+#~ msgstr "&lt;formula&gt;SQL expression&lt;/formula&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\">\n"
+#~ "    <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
+#~ "    <formula>'MAILING'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\"&gt;\n"
+#~ "    &lt;column name=\"person_id\" not-null=\"true\" length=\"10\"/&gt;\n"
+#~ "    &lt;formula&gt;'MAILING'&lt;/formula&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
+#~ msgstr "&lt;import class=\"java.lang.Object\" rename=\"Universe\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<title>Any</title>"
+#~ msgstr "<title>any</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
+#~ "    <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
+#~ "    <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
+#~ "    <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
+#~ "    <column name=\"table_name\"/>\n"
+#~ "    <column name=\"id\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"being\" id-type=\"long\" meta-type=\"string\"&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_HUMAN\" class=\"Human\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ALIEN\" class=\"Alien\"/&gt;\n"
+#~ "    &lt;column name=\"table_name\"/&gt;\n"
+#~ "    &lt;column name=\"id\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ ">\n"
+#~ "        <meta-value ... />\n"
+#~ "        <meta-value ... />\n"
+#~ "        .....\n"
+#~ "        <column .... />\n"
+#~ "        <column .... />\n"
+#~ "        .....\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        .....\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/any&gt;"
+
+#~ msgid "string"
+#~ msgstr "string"
+
+#, fuzzy
+#~ msgid "class"
+#~ msgstr "subclass"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "text"
+#~ msgstr "text"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "clob, blob"
+#~ msgstr "clob, blob"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\">\n"
+#~ "    <column name=\"first_string\"/>\n"
+#~ "    <column name=\"second_string\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\"&gt;\n"
+#~ "    &lt;column name=\"first_string\"/&gt;\n"
+#~ "    &lt;column name=\"second_string\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"priority\">\n"
+#~ "    <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
+#~ "        <param name=\"default\">0</param>\n"
+#~ "    </type>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"priority\"&gt;\n"
+#~ "    &lt;type name=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\"&gt;\n"
+#~ "        &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "    &lt;/type&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\" name=\"default_zero\">\n"
+#~ "    <param name=\"default\">0</param>\n"
+#~ "</typedef>]]>"
+#~ msgstr ""
+#~ "&lt;typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" "
+#~ "name=\"default_zero\"&gt;\n"
+#~ "    &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "&lt;/typedef&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
+#~ msgstr "&lt;property name=\"priority\" type=\"default_zero\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
+#~ "        entity-name=\"CurrentContract\">\n"
+#~ "    ...\n"
+#~ "    <set name=\"history\" inverse=\"true\"\n"
+#~ "            order-by=\"effectiveEndDate desc\">\n"
+#~ "        <key column=\"currentContractId\"/>\n"
+#~ "        <one-to-many entity-name=\"HistoricalContract\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Contract\" table=\"ContractHistory\"\n"
+#~ "        entity-name=\"HistoricalContract\">\n"
+#~ "    ...\n"
+#~ "    <many-to-one name=\"currentContract\"\n"
+#~ "            column=\"currentContractId\"\n"
+#~ "            entity-name=\"CurrentContract\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Contract\" table=\"Contracts\" \n"
+#~ "        entity-name=\"CurrentContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;set name=\"history\" inverse=\"true\" \n"
+#~ "            order-by=\"effectiveEndDate desc\"&gt;\n"
+#~ "        &lt;key column=\"currentContractId\"/&gt;\n"
+#~ "        &lt;one-to-many entity-name=\"HistoricalContract\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Contract\" table=\"ContractHistory\" \n"
+#~ "        entity-name=\"HistoricalContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;many-to-one name=\"currentContract\" \n"
+#~ "            column=\"currentContractId\" \n"
+#~ "            entity-name=\"CurrentContract\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
+#~ "    <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/"
+#~ "></id>\n"
+#~ "    <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"LineItem\" table=\"`Line Item`\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"`Item Id`\"/&gt;&lt;generator class="
+#~ "\"assigned\"/&gt;&lt;/id&gt;\n"
+#~ "    &lt;property name=\"itemNumber\" column=\"`Item #`\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set<Order> orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set&lt;Order&gt; orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <create>CREATE TRIGGER my_trigger ...</create>\n"
+#~ "        <drop>DROP TRIGGER my_trigger</drop>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;create&gt;CREATE TRIGGER my_trigger ...&lt;/create&gt;\n"
+#~ "        &lt;drop&gt;DROP TRIGGER my_trigger&lt;/drop&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle9iDialect\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle10gDialect\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/"
+#~ "&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/"
+#~ "&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,686 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-13 15:16+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "バッチ処理"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100,000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Hibernate を使ってデータベースに100,000行を挿入する愚直な方法は、このようなも"
+"のです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50,000th row. That is because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+"これは50,000番目の行のあたりで <literal>OutOfMemoryException</literal> で失敗"
+"するでしょう。 Hibernate がセッションレベルキャッシュで、新しく挿入されたすべ"
+"ての <literal>Customer</literal> インスタンスをキャッシュするからです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are undertaking batch processing you will need to enable the use of "
+"JDBC batching. This is absolutely essential if you want to achieve optimal "
+"performance. Set the JDBC batch size to a reasonable number (10-50, for "
+"example):"
+msgstr ""
+"この章では、この問題を回避する方法を紹介します。しかしバッチ処理をするなら、 "
+"JDBC バッチが使用可能であることが非常に重要です。そうでなければ手頃なパフォー"
+"マンスが得られません。 JDBC バッチサイズを手頃な数値(例えば、10から50)に設"
+"定してください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate disables insert batching at the JDBC level transparently if you "
+"use an <literal>identity</literal> identifier generator."
+msgstr ""
+"<literal>identiy</literal> 識別子生成を使う場合は、Hibernate は JDBC レベルで"
+"インサートバッチングを無効にすることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also do this kind of work in a process where interaction with the "
+"second-level cache is completely disabled:"
+msgstr ""
+"また二次キャッシュが全く効かないプロセスで、このような作業をしたいと思うかも"
+"しれません:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"しかし、これは絶対に必要というわけではありません。なぜなら明示的に "
+"<literal>CacheMode</literal> を設定して、二次キャッシュとの相互作用を無効にす"
+"ることができるからです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "バッチ挿入"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When making new objects persistent <literal>flush()</literal> and then "
+"<literal>clear()</literal> the session regularly in order to control the "
+"size of the first-level cache."
+msgstr ""
+"新しいオブジェクトを永続化するとき、一次キャッシュのサイズを制限するため、"
+"セッションを <literal>flush()</literal> して <literal>clear()</literal> しな"
+"ければなりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "バッチ更新"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For retrieving and updating data, the same ideas apply. In addition, you "
+"need to use <literal>scroll()</literal> to take advantage of server-side "
+"cursors for queries that return many rows of data."
+msgstr ""
+"データを復元したり更新したりするには同じアイディアを適用します。それに加え"
+"て、データの行を多く返すクエリに対して有効なサーバーサイドのカーソルの利点を"
+"生かしたければ <literal>scroll()</literal> を使う必要があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "StatelessSession インターフェース"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that can be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session never cascade to associated instances. Collections "
+"are ignored by a stateless session. Operations performed via a stateless "
+"session bypass Hibernate's event model and interceptors. Due to the lack of "
+"a first-level cache, Stateless sessions are vulnerable to data aliasing "
+"effects. A stateless session is a lower-level abstraction that is much "
+"closer to the underlying JDBC."
+msgstr ""
+"また別の方法として、 Hibernate はコマンド指向の API を用意しています。これは"
+"分離オブジェクトの形で、データベースとのデータストリームのやり取りに使うこと"
+"ができます。 <literal>StatelessSession</literal> は関連する永続コンテキストを"
+"持たず、高レベルのライフサイクルセマンティクスの多くを提供しません。特にス"
+"テートレスセッションは、一次キャッシュを実装せず、またどのような二次キャッ"
+"シュやクエリキャッシュとも相互作用しません。トランザクショナルな write-"
+"behind や自動ダーティチェックも実装しません。ステートレスセッションを使って行"
+"われる操作が、関連するインスタンスへカスケードされることは決してありません。"
+"コレクションは、ステートレスセッションからは無視されます。ステートレスセッ"
+"ションを通して行われる操作は、 Hibernate のイベントモデルやインターセプタの影"
+"響を受けません。一次キャッシュを持たないため、ステートレスセッションは別名を"
+"持つデータに上手く対処できません。ステートレスセッションは低レベルの抽象化で"
+"あり、 JDBC に非常によく似ています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this code example, the <literal>Customer</literal> instances returned by "
+"the query are immediately detached. They are never associated with any "
+"persistence context."
+msgstr ""
+"このコード例では、クエリが返す <literal>Customer</literal> インスタンスは即座"
+"に (セッションから) 分離されることに注意してください。これは、どのような永"
+"続コンテキストとも決して関連しません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations. They result in the "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. They have different semantics to the "
+"<literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>Session</literal> interface."
+msgstr ""
+"<literal>StatelessSession</literal> インターフェースで定義されている "
+"<literal>insert(), update()</literal> と <literal>delete()</literal> の操作"
+"は、低レベルの直接的なデータベース操作と考えられます。結果として、 SQL の "
+"<literal>INSERT, UPDATE</literal> または <literal>DELETE</literal> がそれぞれ"
+"即座に実行されます。このように、これらは <literal>Session</literal> インター"
+"フェースで定義されている <literal>save(), saveOrUpdate()</literal> と "
+"<literal>delete()</literal> とは非常に異なる意味を持ちます。"
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "DML スタイルの操作"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of the object state. The object state is "
+"available in memory. This means that manipulating data directly in the "
+"database (using the SQL <literal>Data Manipulation Language</literal> (DML) "
+"the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) will not affect in-memory state. However, "
+"Hibernate provides methods for bulk SQL-style DML statement execution that "
+"is performed through the Hibernate Query Language (<link linkend=\"queryhql"
+"\">HQL</link>)."
+msgstr ""
+"すでに議論したように、自動的かつ透過的なオブジェクト/リレーショナルマッピング"
+"は、オブジェクトの状態の管理であると考えられます。これはメモリ内のオブジェク"
+"トの状態を利用できるということです。そのため (SQLの <literal>データ操作言語"
+"</literal> (DML) 文: <literal>INSERT</literal>、 <literal>UPDATE</"
+"literal>、 <literal>DELETE</literal> を使って)データベース内のデータを直接操"
+"作しても、メモリ内の状態には影響を与えません。しかし Hibernate は、バルク "
+"SQL スタイルの DML 文実行に対応するメソッドを用意しています。これは "
+"Hibernate クエリ言語 (<xref linkend=\"queryhql\"/> HQL) を通して実行されま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+msgstr ""
+"<literal>UPDATE</literal> と <literal>DELETE</literal> 文の疑似構文は: "
+"<literal>( UPDATE | DELETE ) FROM? エンティティ名 (WHERE 条件節)?</literal> "
+"です。注意すべき点がいくつかあります:"
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "from 節において、 FROM キーワードはオプションです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause. It can, however, "
+"be aliased. If the entity name is aliased, then any property references must "
+"be qualified using that alias. If the entity name is not aliased, then it is "
+"illegal for any property references to be qualified."
+msgstr ""
+"from 節では単一のエンティティ名だけが可能で、任意で別名を付けることができま"
+"す。エンティティ名に別名が与えられると、どのようなプロパティ参照も、その別名"
+"を使って修飾しなければなりません。もしエンティティ名に別名が与えられなけれ"
+"ば、どのようなプロパティ参照も修飾してはなりません。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or "
+"explicit, can be specified in a bulk HQL query. Sub-queries can be used in "
+"the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+"(暗黙的であれ明示的であれ) <xref linkend=\"queryhql-joins-forms\"/> 結合を"
+"バルク HQL クエリ内で指定することはできません。サブクエリは where 節で使うこ"
+"とができます。サブクエリそのものは、結合を含められます。"
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "where 節はオプションです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method. The method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>:"
+msgstr ""
+"例として、 HQL の <literal>UPDATE</literal> を実行するには、 <literal>Query."
+"executeUpdate()</literal> メソッドを使ってください。(このメソッドはおなじみ"
+"の JDBC <literal>PreparedStatement.executeUpdate()</literal> から名付けられま"
+"した):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> "
+"statements, by default, do not effect the <link linkend=\"mapping-"
+"declaration-version\">version</link> or the <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> property values for the affected "
+"entities. However, you can force Hibernate to reset the <literal>version</"
+"literal> or <literal>timestamp</literal> property values through the use of "
+"a <literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"HQL の <literal>UPDATE</literal> 文は、デフォルトでは、作用するエンティティ"
+"の <xref linkend=\"mapping-declaration-version\"/> バージョンや <xref "
+"linkend=\"mapping-declaration-timestamp\"/> タイムスタンプのプロパティの値に"
+"は影響しません。これは EJB3 の仕様にも受け継がれています。しかし "
+"<literal>versioned update</literal> を使って、 <literal>version</literal> や "
+"<literal>timestamp</literal> プロパティの値を強制的にリセットさせることができ"
+"ます。これは <literal>UPDATE</literal> キーワードの後に <literal>VERSIONED</"
+"literal> キーワードを追加することで行えます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Custom version types, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>, are not allowed in conjunction with a <literal>update versioned</"
+"literal> statement."
+msgstr ""
+"カスタムバージョン型(<literal>org.hibernate.usertype.UserVersionType</"
+"literal>)は <literal>update versioned</literal> 文と一緒に使えないことに注意"
+"してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"HQL の <literal>DELETE</literal> を実行するには、同じ <literal>Query."
+"executeUpdate()</literal> メソッドを使ってください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicates the number of entities effected by the "
+"operation. This may or may not correlate to the number of rows effected in "
+"the database. An HQL 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 ""
+"<literal>Query.executeUpdate()</literal> メソッドが返す <literal>int</"
+"literal> の値は、この操作が影響を及ぼしたエンティティの数です。これが影響する"
+"データベース内の行数と、相互に関係するかどうかを考えてみてください。 HQL バル"
+"ク操作は、結果として、実際の SQL 文が複数実行されることになります。例えば "
+"joined-subclass です。返される数は、その文によって影響された実際のエンティ"
+"ティの数を示します。 joined-subclass の例に戻ると、サブクラスの一つに対する削"
+"除は、そのサブクラスがマッピングされたテーブルだけではなく、「ルート」テーブ"
+"ルと継承階層をさらに下った joined-subclass のテーブルの削除になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"<literal>INSERT</literal> 文の疑似構文は: <literal>INSERT INTO エンティティ"
+"名プロパティリスト select 文</literal> です。注意すべき点がいくつかあります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"INSERT INTO ... SELECT ... の形式だけがサポートされています。 INSERT "
+"INTO ... VALUES ... の形式はサポートされていません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column specification</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritance, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"プロパティリストは、 SQL の <literal>INSERT</literal> 文における <literal>カ"
+"ラムの仕様</literal> に類似しています。継承のマッピングに含まれるエンティティ"
+"に対して、クラスレベルで直接定義されたプロパティだけが、プロパティリストに使"
+"えます。スーパークラスのプロパティは認められず、サブクラスのプロパティは効果"
+"がありません。言い換えると <literal>INSERT</literal> 文は、本質的にポリモー"
+"フィックではありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. This might, however, cause problems between Hibernate "
+"<literal>Type</literal>s which are <emphasis>equivalent</emphasis> as "
+"opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"select 文の返り値の型が insert 文が期待する型とマッチしていれば、その select "
+"文は妥当な HQL select クエリとなりえます。現在このチェックをデータベースへ任"
+"せるのではなく、クエリのコンパイル時にチェックします。このことは、 "
+"<emphasis>equal</emphasis> とは違い、 Hibernate の <literal>Type</literal> 間"
+"の <emphasis>equivalent</emphasis> に関する問題を引き起こすことに注意してくだ"
+"さい。これは <literal>org.hibernate.type.DateType</literal> として定義された"
+"プロパティと、 <literal>org.hibernate.type.TimestampType</literal> として定義"
+"されたプロパティの間のミスマッチの問題を引き起こします。データベースがそれら"
+"を区別できなくても、変換することができても、この問題は発生します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list, in which "
+"case its value is taken from the corresponding select expression, or omit it "
+"from the properties_list, in which case a generated value is used. This "
+"latter option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. For the purposes of this "
+"discussion, in-database generators are considered to be <literal>org."
+"hibernate.id.SequenceGenerator</literal> (and its subclasses) and any "
+"implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>. The most notable exception here is <literal>org.hibernate.id."
+"TableHiLoGenerator</literal>, which cannot be used because it does not "
+"expose a selectable way to get its values."
+msgstr ""
+"id プロパティに対して、 insert 文には二つの選択肢があります。プロパティリスト"
+"で明示的に id プロパティを指定するか (この場合、対応する select 式から値が取"
+"られます)、プロパティリストからそれを除外するかのいずれかです (この場合、生"
+"成される値が使われます)。 後者の選択肢は、データベース内を操作する id ジェネ"
+"レータを使うときのみ、利用可能です。この選択肢を採る場合、「インメモリ」型の"
+"ジェネレータを使うと、構文解析時に例外が発生します。この議論では、インデータ"
+"ベース型ジェネレータは <literal>org.hibernate.id.SequenceGenerator</literal> "
+"(とそのサブクラス) と、 <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal> の実装であると考えています。ここで最"
+"も注意すべき例外は、 <literal>org.hibernate.id.TableHiLoGenerator</literal> "
+"です。値を取得する選択可能な方法がないため、このジェネレータを使うことはでき"
+"ません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list, in which case "
+"its value is taken from the corresponding select expressions, or omit it "
+"from the properties_list, in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+"<literal>version</literal> や <literal>timestamp</literal> としてマッピングさ"
+"れるプロパティに対して、 insert 文には二つの選択肢があります。プロパティリス"
+"トで明示的にプロパティを指定するか(この場合、対応する select 式から値が取ら"
+"れます)、プロパティリストから除外するか(この場合、 <literal>org.hibernate."
+"type.VersionType</literal> で定義された <literal>シード値</literal> が使われ"
+"ます)のいずれかです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of an HQL <literal>INSERT</literal> statement "
+"execution:"
+msgstr "HQL の <literal>INSERT</literal> 文の実行例です:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i&lt;100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+#~ msgstr "hibernate.jdbc.batch_size 20"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+#~ msgstr "hibernate.cache.use_second_level_cache false"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i&lt;100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i &#37; 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count &#37; 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "StatelessSession session = sessionFactory.openStatelessSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer \n"
+#~ "    c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,412 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-20 16:59+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "ベストプラクティス"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
+"literal>:"
+msgstr ""
+"クラスは細かい粒度で書き <literal>&lt;component&gt;</literal> でマッピングし"
+"ましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"<literal>street</literal> (通り)、 <literal>suburb</literal> (都市)、 "
+"<literal>state</literal> (州)、 <literal>postcode</literal> (郵便番号)を"
+"カプセル化する <literal>Address</literal> (住所)クラスを使いましょう。そう"
+"すればコードが再利用しやすくなり、リファクタリングも簡単になります。"
+
+#. Tag: term
+#, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "永続クラスには識別子プロパティを定義しましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are a range of reasons "
+"why you should use them. We recommend that identifiers be 'synthetic', that "
+"is, generated with no business meaning."
+msgstr ""
+"Hibernate では識別子プロパティはオプションですが、使用すべき理由がたくさんあ"
+"ります。識別子は「人工的」(生成された、業務的な意味を持たない)なものにする"
+"ことをおすすめします。"
+
+#. Tag: term
+#, no-c-format
+msgid "Identify natural keys:"
+msgstr "自然キーを見つけましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal>&lt;"
+"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"すべてのエンティティに対して自然キーを見つけて、 <literal>&lt;natural-id&gt;"
+"</literal> でマッピングしましょう。自然キーを構成するプロパティを比較するため"
+"に、 <literal>equals()</literal> と <literal>hashCode()</literal> を実装しま"
+"しょう。"
+
+#. Tag: term
+#, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "クラスのマッピングはそれぞれのクラス専用のファイルに書きましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"sense, particularly in a team environment."
+msgstr ""
+"単一の巨大なマッピングドキュメントを使用しないでください。 <literal>com.eg."
+"Foo</literal> クラスなら <literal>com/eg/Foo.hbm.xml</literal> ファイルにマッ"
+"ピングしましょう。このことは、特にチームでの開発に意味があります。"
+
+#. Tag: term
+#, no-c-format
+msgid "Load mappings as resources:"
+msgstr "リソースとしてマッピングをロードしましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "マッピングを、それらがマッピングするクラスと一緒に配置しましょう。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "クエリ文字列を外部に置くことを考えましょう"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is recommended if your queries call non-ANSI-standard SQL functions. "
+"Externalizing the query strings to mapping files will make the application "
+"more portable."
+msgstr ""
+"クエリが ANSI 標準でない SQL 関数を呼んでいるなら、これはよいプラクティスで"
+"す。クエリ文字列をマッピングファイルへ外出しすればアプリケーションがポータブ"
+"ルになります。"
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "バインド変数を使いましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Do not use string "
+"manipulation to bind a non-constant value in a query. You should also "
+"consider using named parameters in queries."
+msgstr ""
+"JDBC の場合と同じように、定数でない値は必ず \"?\" で置き換えましょう。定数で"
+"ない値をバインドするために、クエリで文字列操作を使ってはいけません。名前付き"
+"のパラメータを使うようにするとさらに良いです。"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "JDBC コネクションを管理してはいけません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows the application to manage JDBC connections, but his "
+"approach should be considered a last-resort. If you cannot use the built-in "
+"connection providers, consider providing your own implementation of "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate ではアプリケーションが JDBC コネクションを管理することが許されてい"
+"ます。しかしこれは最終手段だと思ってください。組み込みのコネクションプロバイ"
+"ダを使うことができなければ、 <literal>org.hibernate.connection."
+"ConnectionProvider</literal> を実装することを考えてください。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider using a custom type:"
+msgstr "カスタム型の使用を考えましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you have a Java type from a library that needs to be persisted but "
+"does not provide the accessors needed to map it as a component. You should "
+"consider implementing <literal>org.hibernate.UserType</literal>. This "
+"approach frees the application code from implementing transformations to/"
+"from a Hibernate type."
+msgstr ""
+"あるライブラリから持ってきた Java 型を永続化する必要があるとしましょう。しか"
+"しその型には、コンポーネントとしてマッピングするために必要なアクセサがないと"
+"します。このような場合は <literal>org.hibernate.UserType</literal> の実装を考"
+"えるべきです。そうすれば Hibernate 型との実装変換を心配せずにアプリケーション"
+"のコードを扱えます。"
+
+#. Tag: term
+#, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "ボトルネックを解消するには JDBC をハンドコードしましょう。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
+"faster. Please wait until you <emphasis>know</emphasis> something is a "
+"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
+"<literal>Session</literal>, wrap your JDBC operation as a <literal>org."
+"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
+"way you can still use the same transaction strategy and underlying "
+"connection provider."
+msgstr ""
+"システムのパフォーマンスクリティカルな領域では、ある種の操作に JDBC を直接使"
+"うと良いかもしれません。しかし何がボトルネックになっているか <emphasis>はっき"
+"りする</emphasis> までは待ってください。また JDBC を直接使うからといって、必"
+"ずしも速くなるとは限らないことも理解してください。 JDBC を直接使う必要があれ"
+"ば、 Hibernate の <literal>Session</literal> をオープンして、  JDBC コネク"
+"ションを使うと良いかもしれません。依然として同じトランザクション戦略とコネク"
+"ションプロバイダが使えるからです。"
+
+#. Tag: term
+#, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "<literal>Session</literal> のフラッシュを理解しましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the Session synchronizes its persistent state with the database. "
+"Performance will be affected if this process occurs too often. You can "
+"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
+"even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"Session が永続状態をデータベースと同期させることがときどきあります。しかしこ"
+"れがあまりに頻繁に起こるようだと、パフォーマンスに影響が出てきます。自動フ"
+"ラッシュを無効にしたり、特定のトランザクションのクエリや操作の順番を変更する"
+"ことで、不必要なフラッシュを最小限にできます。"
+
+#. Tag: term
+#, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr "3層アーキテクチャでは分離オブジェクトの使用を考えましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When using a servlet/session bean architecture, you can pass persistent "
+"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
+"new session to service each request. Use <literal>Session.merge()</literal> "
+"or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the "
+"database."
+msgstr ""
+"サーブレット / セッション Bean アーキテクチャを使うとき、サーブレット層 / "
+"JSP 層間でセッション Bean でロードした永続オブジェクトをやり取りできます。そ"
+"の際リクエストごとに新しい Session を使ってください。また <literal>Session."
+"merge()</literal> や <literal>Session.saveOrUpdate()</literal> を使って、オブ"
+"ジェクトとデータベースを同期させてください。"
+
+#. Tag: term
+#, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr "2層アーキテクチャでは長い永続コンテキストの使用を考えましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often necessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An appropriate alternative in a two "
+"tiered architecture, is to maintain a single open persistence contact "
+"session for the whole life cycle of the application transaction. Then simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction or you will be working with "
+"stale data."
+msgstr ""
+"最高のスケーラビリティを得るには、データベーストランザクションをできるだけ短"
+"くしなければなりません。しかし長い間実行する <emphasis>アプリケーショントラン"
+"ザクション</emphasis> の実装が必要なことはしばしばです。これはユーザーの視点"
+"からは1個の作業単位(unit of work)になります。アプリケーショントランザクショ"
+"ンはいくつかのクライアントのリクエスト/レスポンスサイクルにまたがります。アプ"
+"リケーショントランザクションの実装に分離オブジェクトを使うのは一般的です。そ"
+"うでなければ、2層アーキテクチャの場合は特に適切なことですが、アプリケーション"
+"トランザクションのライフサイクル全体に対して単一のオープンな永続化コンテキス"
+"ト(セッション)を維持してください。そして単純にリクエストの最後に JDBC コネ"
+"クションから切断し、次のリクエストの最初に再接続します。決して複数のアプリ"
+"ケーショントランザクションユースケースに渡って1個の Session を使い回さないで"
+"ください。そうでなければ、古いデータで作業することになります。"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "例外を復帰可能なものとして扱ってはいけません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you do not do this, Hibernate cannot "
+"guarantee that in-memory state accurately represents the persistent state. "
+"For example, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"これは「ベスト」プラクティス以上の、必須のプラクティスです。例外が発生したと"
+"きは <literal>Transaction</literal> をロールバックして、 <literal>Session</"
+"literal> をクローズしてください。そうしないと Hibernate はメモリの状態が永続"
+"状態を正確に表現していることを保証できません。この特別な場合として、与えられ"
+"た識別子を持つインスタンスがデータベースに存在するかどうかを判定するために、 "
+"<literal>Session.load()</literal> を使うことはやめてください。その代わりに "
+"<literal>Session.get()</literal> かクエリを使ってください。"
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "関連にはなるべく遅延フェッチを使いましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When join fetching is appropriate "
+"to a particular use case, use a query with a <literal>left join fetch</"
+"literal>."
+msgstr ""
+"即時フェッチは控えめにしましょう。二次キャッシュには完全に保持されないような"
+"クラスの関連には、プロキシと遅延コレクションを使ってください。キャッシュされ"
+"るクラスの関連、つまりキャッシュがヒットする可能性が非常に高い関連は、 "
+"<literal>lazy=\"false\"</literal> で積極的なフェッチを明示的に無効にしてくだ"
+"さい。結合フェッチが適切な特定のユースケースには、クエリで <literal>left "
+"join fetch</literal> を使ってください。"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+"フェッチされていないデータに関わる問題を避けるために、 <emphasis>ビューの中で"
+"オープンセッションを使う (open session in view) </emphasis> パターンか、統制"
+"された <emphasis>組み立てフェーズ (assembly phase) </emphasis> を使いましょ"
+"う。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. Unless you are prepared to hold the persistence context (the "
+"session) open across the view rendering process, you will still need an "
+"assembly phase. Think of your business methods as having a strict contract "
+"with the presentation tier about what data is available in the detached "
+"objects. This is not a limitation of Hibernate. It is a fundamental "
+"requirement of safe transactional data access."
+msgstr ""
+"Hibernate は <emphasis>Data Transfer Objects</emphasis> (DTO) を書く退屈な作"
+"業から開発者を解放します。伝統的な EJB アーキテクチャでは DTO は2つ目的があり"
+"ます: 1つ目は、エンティティ Bean がシリアライズされない問題への対策です。2つ"
+"目は、プレゼンテーション層に制御が戻る前に、ビューに使われるすべてのデータが"
+"フェッチされて、 DTO に復元されるような組み立てフェーズを暗黙的に定義しま"
+"す。 Hibernate では1つ目の目的が不要になります。しかしビューのレンダリング処"
+"理の間、永続コンテキスト(セッション)をオープンにしたままにしなければ、組み"
+"立てフェーズはまだ必要です(分離オブジェクトの中のどのデータが利用可能かにつ"
+"いて、プレゼンテーション層と厳密な取り決めをしているビジネスメソッドを考えて"
+"みてください)。これは Hibernate 側の問題ではありません。トランザクション内で"
+"安全にデータアクセスするための基本的な要件です。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr "Hibernate からビジネスロジックを抽象化することを考えましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hide Hibernate data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC "
+"associated to Hibernate via a <literal>UserType</literal>. This advice is, "
+"however, intended for \"sufficiently large\" applications. It is not "
+"appropriate for an application with five tables."
+msgstr ""
+"インターフェースで(Hibernate の)データアクセスコードを隠蔽しましょう。 "
+"<emphasis>DAO</emphasis> と <emphasis>Thread Local Session</emphasis> パター"
+"ンを組み合わせましょう。 <literal>UserType</literal> で Hibernate に関連付け"
+"ると、ハンドコードした JDBC で永続化するクラスを持つこともできます。(このア"
+"ドバイスは「十分大きな」アプリケーションに対してのものです。テーブルが5個しか"
+"ないようなアプリケーションには当てはまりません。)"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "珍しい関連マッピングは使わないようにしましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Practical test cases for real many-to-many associations are rare. Most of "
+"the time you need additional information stored in the \"link table\". In "
+"this case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, most associations are one-to-many and many-"
+"to-one. For this reason, you should proceed cautiously when using any other "
+"association style."
+msgstr ""
+"よいユースケースに本当の多対多関連があることは稀です。ほとんどの場合「リンク"
+"テーブル」の付加的な情報が必要になります。この場合、リンククラスに2つの一対多"
+"関連を使う方がずっとよいです。実際ほとんどの場合、関連は一対多と多対一なの"
+"で、他のスタイルの関連を使うときは本当に必要かどうかを考えてみてください。"
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "なるべく双方向関連にしましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"単方向関連は双方向に比べて検索が難しくなります。大きなアプリケーションでは、"
+"ほとんどすべての関連が双方向にナビゲーションできなければなりません。"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# Language ja-JP translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2009-07-14 19:55+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1999 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-01-06 16:08+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mapping"
+msgstr "コレクションのマッピング"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "コレクションの永続化"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type. For example:"
+msgstr ""
+"コレクション型のフィールドを永続化するには、そのコレクション型がインター"
+"フェース型である必要があります。例えば、"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or anything you like (\"anything you "
+"like\" means you will have to write an implementation of <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"実在するインターフェースには <literal>java.util.Set</literal>、 "
+"<literal>java.util.Collection</literal>、 <literal>java.util.List</"
+"literal>、 <literal>java.util.Map</literal>、 <literal>java.util.SortedSet</"
+"literal>、 <literal>java.util.SortedMap</literal> などがあります。または、任"
+"意のインターフェースが使えます。 (ただし、「任意のインターフェース」を使用す"
+"る場合は、 <literal>org.hibernate.usertype.UserCollectionType</literal> の実"
+"装クラスを作成する必要があります。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice how the instance variable was initialized with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent, by calling <literal>persist()</literal> for "
+"example, Hibernate will actually replace the <literal>HashSet</literal> with "
+"an instance of Hibernate's own implementation of <literal>Set</literal>. Be "
+"aware of the following errors:"
+msgstr ""
+"<literal>HashSet</literal> のインスタンスを持つインスタンス変数がどのように初"
+"期化されるかに注目してみましょう。これは新たに生成された(永続化されていな"
+"い)コレクション型のプロパティを初期化する最適な方法です。 (例えば "
+"<literal>persist()</literal> により)インスタンスを永続化しようとしたとき、 "
+"Hibernate は <literal>HashSet</literal> を Hibernate 独自の <literal>Set</"
+"literal> の実装クラスに置き換えます。このため、次のようなエラーには注意が必要"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending on the interface type."
+msgstr ""
+"Hibernate により注入された永続性コレクションは、インターフェース型に応じて、 "
+"<literal>HashMap</literal> や <literal>HashSet</literal>、 <literal>TreeMap</"
+"literal>、 <literal>TreeSet</literal>、 <literal>ArrayList</literal> のように"
+"振舞います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and are "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities cannot share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics. Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"コレクションインスタンスは、値型として普通に振舞います。永続化オブジェクトに"
+"参照されたときに自動的に永続化され、参照がなくなったときに自動的に削除されま"
+"す。もしある永続化オブジェクトから別の永続化オブジェクトに渡されたら、その要"
+"素は現在のテーブルから別のテーブルに移動するかもしれません。2つのエンティ"
+"ティが同じコレクションインスタンスを共有してはいけません。リレーショナルモデ"
+"ルをベースにしているため、コレクション型のプロパティに null 値を代入しても意"
+"味がありません。つまり Hibernate は参照先のないコレクションと空のコレクション"
+"を区別しません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use persistent collections the same way you use ordinary Java collections. "
+"However, please ensure you understand the semantics of bidirectional "
+"associations (these are discussed later)."
+msgstr ""
+"しかしそれほど心配しなくても構いません。普段使っている Java のコレクションと"
+"同じように、永続化コレクションを使ってください。双方向関連の意味を理解すれば"
+"よいのです(これは後ほど説明します)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "コレクションのマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections "
+"that cover many common relational models. We suggest you experiment with the "
+"schema generation tool so that you understand how various mapping "
+"declarations translate to database tables."
+msgstr ""
+"多くの一般的なリレーショナルモデルをカバーしたために、コレクションのために利"
+"用できるマッピングにはかなりの幅があります。様々なマッピング宣言がどのように"
+"データベーステーブルに変換されるかを知るために、スキーマ生成ツールを使ってみ"
+"ると良いでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of interface. For example, a <literal>&lt;set&gt;</literal> element is "
+"used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"コレクションをマッピングするためのマッピング要素は、インターフェースの型に依"
+"存します。例えば、 <literal>&lt;set&gt;</literal> 要素は <literal>Set</"
+"literal> 型のプロパティをマッピングするために使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;"
+"list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</"
+"literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-"
+"array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> "
+"element is representative:"
+msgstr ""
+"マッピング要素には <literal>&lt;set&gt;</literal> の他に <literal>&lt;"
+"list&gt;</literal>、 <literal>&lt;map&gt;</literal>、 <literal>&lt;bag&gt;</"
+"literal>、 <literal>&lt;array&gt;</literal>、 <literal>&lt;primitive-"
+"array&gt;</literal> があります。代表として、 <literal>&lt;map&gt;</literal> "
+"要素を下記に示します。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal> :コレクション型であるプロパティの名前"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name): the name of "
+"the collection table. It is not used for one-to-many associations."
+msgstr ""
+"<literal>table</literal> (オプション - デフォルトはプロパティ名):コレク"
+"ションテーブルの名前(一対多関連では使用しません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (オプション):テーブルスキーマの名前。ルート要素"
+"で宣言されているスキーマより優先されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"disables lazy fetching and specifies that the association is always eagerly "
+"fetched. It can also be used to enable \"extra-lazy\" fetching where most "
+"operations do not initialize the collection. This is suitable for large "
+"collections."
+msgstr ""
+"<literal>lazy</literal> (オプション - デフォルトは <literal>true</"
+"literal>): 遅延フェッチを無効にし、関連を常に即時にフェッチにするために使用"
+"します。または、「extra-lazy」フェッチを有効にするために使用します。「extra-"
+"lazy」フェッチは、ほとんどの操作ではコレクションを初期化しません (非常に大き"
+"なコレクションに適しています)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): marks this collection as the \"inverse\" end of a bidirectional "
+"association."
+msgstr ""
+"<literal>inverse</literal> (オプション - デフォルトは <literal>false</"
+"literal>):このコレクションが双方向関連の「逆」側であるとマークします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>): "
+"enables operations to cascade to child entities."
+msgstr ""
+"<literal>cascade</literal> (オプション - デフォルトは <literal>none</"
+"literal>):子エンティティへのカスケード操作を有効にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>sort</literal> (optional): specifies a sorted collection with "
+"<literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+"<literal>sort</literal> (オプション):コレクションを自然な順序でソートする"
+"場合は <literal>natural</literal> を指定します。あるいは Comparator クラスを"
+"指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only): specifies a table "
+"column or columns that define the iteration order of the <literal>Map</"
+"literal>, <literal>Set</literal> or bag, together with an optional "
+"<literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+"<literal>order-by</literal> (オプション、 JDK1.4 のみ) <literal>Map</"
+"literal>、 <literal>Set</literal>、 bag のイテレーション順序を定義するテーブ"
+"ルカラムを指定すると共に、オプションとして <literal>asc</literal>、 "
+"<literal>desc</literal> を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition that is used when retrieving or removing "
+"the collection. This is useful if the collection needs to contain only a "
+"subset of the available data."
+msgstr ""
+"<literal>where</literal> (オプション):コレクションの検索や削除の際に使う任"
+"意の SQL の<literal>WHERE</literal> 条件を指定します (利用可能なデータの一部"
+"分だけをコレクションが含むべきときに、これは有用です)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>): "
+"chooses between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (オプション - デフォルトは <literal>select</"
+"literal>):外部結合によるフェッチ、順次選択フェッチ (sequential select "
+"fetch) 、順次サブセレクトフェッチ (sequential subselect fetch) のどれかを"
+"選択してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (オプション - デフォルトは <literal>1</"
+"literal>):コレクションのインスタンスの遅延フェッチのための「バッチサイズ」"
+"を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the collection property "
+"value."
+msgstr ""
+"<literal>access</literal> (オプション - デフォルトは <literal>property</"
+"literal>):コレクション型プロパティの値にアクセスするために使用する戦略で"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that changes to the state of the collection results in "
+"increments of the owning entity's version. For one-to-many associations you "
+"may want to disable this setting."
+msgstr ""
+"<literal>optimistic-lock</literal> (オプション - デフォルトは "
+"<literal>true</literal>) コレクションの状態を変えることによって、そのオー"
+"ナーであるエンティティのバージョンがインクリメントされるかを指定します。 (一"
+"対多関連では、ほとんどの場合において無効に設定するのが妥当です。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"a value of <literal>false</literal> specifies that the elements of the "
+"collection never change. This allows for minor performance optimization in "
+"some cases."
+msgstr ""
+"<literal>mutable</literal>(オプション - デフォルトは <literal>true</"
+"literal>) <literal>false</literal> 値は、コレクションの要素が変更されないこ"
+"とを表します (ある場合には、少しパフォーマンスを高めます)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "コレクションの外部キー"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis>, or columns, of the collection "
+"table. The collection key column is mapped by the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"コレクションのインスタンスは、データベース内では、そのコレクションを所有する"
+"エンティティの外部キーによって識別されます。この外部キーはコレクションテーブ"
+"ルの <emphasis>コレクションキーカラム</emphasis> (またはカラム) と呼ばれま"
+"す。コレクションキーカラムは <literal>&lt;key&gt;</literal> 要素によりマッピ"
+"ングします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one-to-many associations, "
+"the foreign key column is nullable by default, so you may need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"外部キーカラムには null 設定制約があるかもしれません。ほとんどのコレクション"
+"に当てはまるでしょう。単方向の一対多関連において、外部キーカラムはデフォルト"
+"で null を許す設定になっています。よって、 <literal>not-null=\"true\"</"
+"literal> を指定する必要があるかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"外部キーの制約が <literal>ON DELETE CASCADE</literal> を使うかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"<literal>&lt;key&gt;</literal> 要素のすべての定義については前の章を参照してく"
+"ださい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "コレクションの要素"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections can contain almost any other Hibernate type, including: basic "
+"types, custom types, components and references to other entities. This is an "
+"important distinction. An object in a collection might be handled with "
+"\"value\" semantics (its life cycle fully depends on the collection owner), "
+"or it might be a reference to another entity with its own life cycle. In the "
+"latter case, only the \"link\" between the two objects is considered to be a "
+"state held by the collection."
+msgstr ""
+"コレクションは他の Hibernate の型のほとんど(すべての基本型、カスタム型、コン"
+"ポーネント、他のエンティティへの参照)を格納することができます。次の点は重要"
+"な違いになります。コレクションに格納されたオブジェクトが「値」セマンティクス"
+"として扱われるのか (ライフサイクルはコレクションのオーナーに完全に依存しま"
+"す)、もしくはそれ自身のライフサイクルを持った別のエンティティへの参照である"
+"かのかという違いです。後者は、2つのオブジェクト間の「リンク」をコレクションに"
+"保持していると見なしているだけです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</"
+"literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of "
+"entity references, with <literal>&lt;one-to-many&gt;</literal> or "
+"<literal>&lt;many-to-many&gt;</literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"格納される型は <emphasis>コレクション要素型</emphasis> と呼ばれます。コレク"
+"ション要素は、 <literal>&lt;element&gt;</literal> または <literal>&lt;"
+"composite-element&gt;</literal> によりマッピングされ、エンティティへの参照の"
+"場合には <literal>&lt;one-to-many&gt;</literal> または <literal>&lt;many-to-"
+"many&gt;</literal> によりマッピングされます。最初の二つは値として要素をマッピ"
+"ングし、次の二つはエンティティの関連をマッピングするのに使われます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "インデックス付きのコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table. An index column "
+"is a column that maps to an array index, or <literal>List</literal> index, "
+"or <literal>Map</literal> key. The index of a <literal>Map</literal> may be "
+"of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be "
+"an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</"
+"literal>, or it can be a composite type mapped with <literal>&lt;composite-"
+"map-key&gt;</literal>. The index of an array or list is always of type "
+"<literal>integer</literal> and is mapped using the <literal>&lt;list-"
+"index&gt;</literal> element. The mapped column contains sequential integers "
+"that are numbered from zero by default."
+msgstr ""
+"set と bag を除く全てのコレクションマッピングには、コレクションテーブルの中"
+"に <emphasis>インデックス用のカラム</emphasis> が必要です。そのカラムに、配列"
+"や <literal>List</literal> のインデックス、もしくは <literal>Map</literal> の"
+"キーをマッピングします。 <literal>Map</literal> のインデックスは、 "
+"<literal>&lt;map-key&gt;</literal> によりマッピングされた基本型か、 "
+"<literal>&lt;map-key-many-to-many&gt;</literal> によりマッピングされたエン"
+"ティティの関連か、あるいは <literal>&lt;composite-map-key&gt;</literal> によ"
+"りマッピングされたコンポジット型になります。配列かリストのインデックスは、常"
+"に <literal>integer</literal> 型で、 <literal>&lt;list-index&gt;</literal> 要"
+"素によりマッピングします。マッピングされたカラムにはシーケンシャルな整数を格"
+"納します (デフォルトでは0から番号が付けられます)。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column_name</literal> (required): the name of the column holding "
+"the collection index values."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>base</literal> (optional - defaults to <literal>0</literal>): the "
+"value of the index column that corresponds to the first element of the list "
+"or array."
+msgstr ""
+"<literal>cascade</literal> (オプション - デフォルトは <literal>none</"
+"literal>):子エンティティへのカスケード操作を有効にします。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection index values."
+msgstr ""
+"<literal>schema</literal> (オプション):テーブルスキーマの名前。ルート要素"
+"で宣言されているスキーマより優先されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQL formula used to evaluate the "
+"key of the map."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column for "
+"the collection index values."
+msgstr ""
+"<literal>schema</literal> (オプション):テーブルスキーマの名前。ルート要素"
+"で宣言されているスキーマより優先されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQ formula used to evaluate the "
+"foreign key of the map key."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (required): the entity class used as the map key."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your table does not have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you can map the property as a "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order "
+"when it is retrieved from the database, but it can be optionally sorted or "
+"ordered."
+msgstr ""
+"もしテーブルにインデックスカラムがなくても、プロパティ型として "
+"<literal>List</literal> を使いたければ、 Hibernate の <emphasis>&lt;bag&gt;</"
+"emphasis> としてプロパティをマッピングします。 bag はデータベースから復元され"
+"る時、順序を保持しません。しかし、(メモリ上で)ソートしたり、(SQLで)順序付"
+"けしたり(order by)することもできます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "値のコレクションと多対多関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any collection of values or many-to-many associations requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns, and possibly an "
+"index column or columns."
+msgstr ""
+"値のコレクションや多対多関連は、専用の <emphasis>コレクションテーブル</"
+"emphasis> が必要です。このテーブルは、外部キーカラムと、 <emphasis>コレクショ"
+"ン要素のカラム</emphasis> と、場合によってはインデックスカラムを持ちます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a collection of values use the <literal>&lt;element&gt;</literal> tag. "
+"For example:"
+msgstr ""
+"値のコレクションのために、 <literal>&lt;element&gt;</literal> タグを使用しま"
+"す。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection element values."
+msgstr ""
+"<literal>schema</literal> (オプション):テーブルスキーマの名前。ルート要素"
+"で宣言されているスキーマより優先されます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element."
+msgstr ""
+"<literal>schema</literal> (オプション):テーブルスキーマの名前。ルート要素"
+"で宣言されているスキーマより優先されます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>many-to-many association</emphasis> is specified using the "
+"<literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the element foreign key "
+"column."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element foreign key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr "<literal>class</literal> (必須): 関連クラスの名前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching in a single <literal>SELECT</"
+"literal> of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching,not only of the collection "
+"itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</"
+"literal> nested element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. This makes the association "
+"multiplicity effectively one-to-many."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (オプション - デフォルトは <literal>exception</"
+"literal>): 参照先の行がないキャッシュされた識別子をどのように扱うかを指定し"
+"ます: <literal>ignore</literal> を指定すると、行がないことを関連がないものと"
+"して扱います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"<literal>entity-name</literal> (オプション): <literal>class</literal> の代"
+"替である関連クラスのエンティティ名。 <literal>class</literal> の代わりに指定"
+"する、関連クラスのエンティティ名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bag containing integers with an iteration order determined by the "
+"<literal>order-by</literal> attribute:"
+msgstr ""
+"整数値を含む bag (bagは <literal>order-by</literal> 属性によって反復順序が定"
+"義されています):"
+
+#. Tag: para
+#, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr "エンティティの配列 - この場合、多対多の関連です。"
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "文字列と日付の map"
+
+#. Tag: para
+#, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr "コンポーネントの list (次の章で詳しく説明します)"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "一対多関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>one-to-many association</emphasis> links the tables of two "
+"classes via a foreign key with no intervening collection table. This mapping "
+"loses certain semantics of normal Java collections:"
+msgstr ""
+"<emphasis>一対多関連</emphasis> は、コレクションテーブルを介さず、外部キーに"
+"より2つのクラスのテーブルを関連付けます。このマッピングは標準的な Java のコレ"
+"クションのセマンティクスをいくつか失います:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot belong to more than one "
+"instance of the collection."
+msgstr ""
+"エンティティクラスのインスタンスは、2つ以上のコレクションのインスタンスに属し"
+"てはいけません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot appear at more than one "
+"value of the collection index."
+msgstr ""
+"コレクションに含まれるエンティティクラスのインスタンスは、コレクションイン"
+"デックスの値として2度以上現れてはいけません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires the existence of a foreign key column and possibly an index column "
+"to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</"
+"literal> tag indicates that this is a one-to-many association."
+msgstr ""
+"<literal>Product</literal> から <literal>Part</literal> への関連は、 "
+"<literal>Part</literal> テーブルへの外部キーカラムと、場合によってはインデッ"
+"クスカラムが必要です。 <literal>&lt;one-to-many&gt;</literal> タグは、これが"
+"一対多関連であることを表しています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how cached identifiers that reference missing rows will "
+"be handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (オプション - デフォルトは <literal>exception</"
+"literal>): 参照先の行がないキャッシュされた識別子をどのように扱うかを指定し"
+"ます: <literal>ignore</literal> を指定すると、行がないことを関連がないものと"
+"して扱います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;one-to-many&gt;</literal> element does not need to declare "
+"any columns. Nor is it necessary to specify the <literal>table</literal> "
+"name anywhere."
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> 要素はカラムを宣言する必要がないことに"
+"注意してください。同様に <literal>テーブル</literal> 名を指定する必要もありま"
+"せん。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> "
+"association is declared <literal>NOT NULL</literal>, you must declare the "
+"<literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> "
+"or <emphasis>use a bidirectional association</emphasis> with the collection "
+"mapping marked <literal>inverse=\"true\"</literal>. See the discussion of "
+"bidirectional associations later in this chapter for more information."
+msgstr ""
+"<emphasis>とても重要な注意:</emphasis> もし <literal>&lt;one-to-many&gt;</"
+"literal> 関連の外部キーカラムが <literal>NOT NULL</literal>と宣言された場"
+"合、 <literal>&lt;key&gt;</literal> マッピングに <literal>not-null=\"true\"</"
+"literal> を宣言するか、コレクションマッピングに <literal>inverse=\"true\"</"
+"literal> を付けた上で、 <emphasis>双方向関連を使う</emphasis> 必要がありま"
+"す。双方向関連についてはこの章の後のほうで説明します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following example shows a map of <literal>Part</literal> entities by "
+"name, where <literal>partName</literal> is a persistent property of "
+"<literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+"次の例は、名称(<literal>Part</literal> の永続的なプロパティである "
+"<literal>partName</literal>) による <literal>Part</literal> エンティティの "
+"map を表しています。 formula によるインデックスを使っていることに注意してくだ"
+"さい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "高度なコレクションマッピング"
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "ソートされたコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"Hibernate は <literal>java.util.SortedMap</literal> と <literal>java.util."
+"SortedSet</literal> を実装したコレクションをサポートしています。開発者はマッ"
+"ピング定義ファイルにコンパレータを指定しなければなりません: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"<literal>sort</literal> 属性に設定できる値は <literal>unsorted</literal> と "
+"<literal>natural</literal> および、 <literal>java.util.Comparator</literal> "
+"を実装したクラスの名前です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"ソートされたコレクションは実質的には <literal>java.util.TreeSet</literal> や "
+"<literal>java.util.TreeMap</literal> のように振舞います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements, use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher and is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This "
+"performs the ordering in the SQL query and not in the memory."
+msgstr ""
+"もしデータベース自身にコレクションの要素を並べさせたいなら、 <literal>set</"
+"literal> や <literal>bag</literal>、<literal>map</literal> の <literal>order-"
+"by</literal> 属性を使います。この解決法は JDK1.4 、もしくはそれ以上のバージョ"
+"ンで利用可能です (<literal>LinkedHashSet</literal> または "
+"<literal>LinkedHashMap</literal>を使って実装されています)。整列はメモリ上で"
+"はなく、 SQL クエリ内で実行されます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注記"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The value of the <literal>order-by</literal> attribute is an SQL ordering, "
+"not an HQL ordering."
+msgstr ""
+"<literal>order-by</literal> 属性の値が SQL 命令であって、 HQL 命令ではないこ"
+"とに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations can even be sorted by arbitrary criteria at runtime using a "
+"collection <literal>filter()</literal>:"
+msgstr ""
+"関連は、コレクションの <literal>filter()</literal> を使うことで、実行時に任意"
+"の criteria によってソートすることも可能です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "双方向関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"<emphasis>双方向関連</emphasis> は関連のどちら「側」からでもナビゲーションで"
+"きます。2種類の双方向関連がサポートされています:"
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "one-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr "片側が set か bag 、もう片方が単一値です。"
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "many-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "両側が set か bag です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a bidirectional many-to-many association by mapping two many-"
+"to-many associations to the same database table and declaring one end as "
+"<emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+"2つの多対多関連で同じデータベーステーブルをマッピングし、片方を "
+"<emphasis>inverse</emphasis> として宣言することで、双方向の多対多関連を指定す"
+"ることが出来ます (どちらを inverse に選んだとしても、そちら側にはインデック"
+"ス付きのコレクションは使えません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a bidirectional many-to-many association that "
+"illustrates how each category can have many items and each item can be in "
+"many categories:"
+msgstr ""
+"次に双方向の多対多関連の例を示します。各カテゴリは多数のアイテムを持つことが"
+"でき、各アイテムは多くのカテゴリに属することが出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association: one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+"関連の inverse 側にのみ行われた変更は永続化 <emphasis>されません</emphasis>。"
+"これは、 Hibernate は全ての双方向関連について、メモリ上に2つの表現を持ってい"
+"るという意味です。つまり一つは A から B へのリンクで、もう一つは B から A へ"
+"のリンクということです。 Java のオブジェクトモデルについて考え、 Java で双方"
+"向関係をどうやって作るかを考えれば、これは理解しやすいです。下記に、 Java で"
+"の双方向関連を示します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr ""
+"関連の inverse ではない側は、メモリ上の表現をデータベースに保存するのに使われ"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"双方向の一対多関連を定義するには、一対多関連を多対一関連と同じテーブルのカラ"
+"ムにマッピングし、多側に <literal>inverse=\"true\"</literal> と宣言します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+"関連の片側に <literal>inverse=\"true\"</literal> を設定しても、カスケード操作"
+"に影響を与えません。これらは直交した概念です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "インデックス付きコレクションと双方向関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal>&lt;"
+"list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special "
+"consideration. If there is a property of the child class that maps to the "
+"index column you can use <literal>inverse=\"true\"</literal> on the "
+"collection mapping:"
+msgstr ""
+"片側が <literal>&lt;list&gt;</literal> や <literal>&lt;map&gt;</literal> であ"
+"る双方向関連は、特によく考える必要があります。インデックスカラムにマップされ"
+"る子クラスのプロパティがある場合は、問題ないです。コレクションのマッピングで "
+"<literal>inverse=\"true\"</literal> を使い続けられます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If there is no such property on the child class, the association cannot be "
+"considered truly bidirectional. That is, there is information available at "
+"one end of the association that is not available at the other end. In this "
+"case, you cannot map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, you could use the following mapping:"
+msgstr ""
+"しかし、子クラスにそのようなプロパティがない場合は、関連を真に双方向であると"
+"考えることができません (関連の片側に利用できる情報がありますが、もう一方には"
+"ありません)。この場合は、コレクションに <literal>inverse=\"true\"</literal> "
+"をマッピングできません。代わりに、次のようなマッピングが使えます:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key."
+msgstr ""
+"注意: このマッピングでは、関連のコレクション値の側は、外部キーをアップデート"
+"する責任があります。 <!-- TODO: これは本当にいくつかの不必要なアップデートス"
+"テートメントをもたらすのでしょうか? -->"
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "3項関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One "
+"approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"3項関連のマッピングには3つのアプローチがあります。1つ目は関連をインデックスと"
+"して <literal>Map</literal> を使用するアプローチです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is to remodel the association as an entity class. This is "
+"the most common approach."
+msgstr ""
+"2つ目は単純に関連をエンティティクラスとしてモデルを作り直すアプローチで、頻繁"
+"に使われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which will be discussed "
+"later."
+msgstr ""
+"最後は composite 要素を使うアプローチです。これに関する議論は後ほど行います。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "&lt;idbag&gt;の使用"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The majority of the many-to-many associations and collections of values "
+"shown previously all map to tables with composite keys, even though it has "
+"been have suggested that entities should have synthetic identifiers "
+"(surrogate keys). A pure association table does not seem to benefit much "
+"from a surrogate key, although a collection of composite values "
+"<emphasis>might</emphasis>. It is for this reason that Hibernate provides a "
+"feature that allows you to map many-to-many associations and collections of "
+"values to a table with a surrogate key."
+msgstr ""
+"複合キーは悪いもので、エンティティは人工の識別子(代理キー)を持つべきであると"
+"いう考え方からは、多対多関連と値のコレクションを複合キーを用いたテーブルへ"
+"マッピングするのは少し奇妙に感じるかもしれません。確かにこの考え方には議論の"
+"余地があります。純粋な関連テーブルは代理キーを使っても利益を得られないように"
+"思えるからです (合成値のコレクションは利益がある <emphasis>かも</emphasis> "
+"しれませんが)。とはいえ、 Hibernate は代理キーを持つテーブルへ多対多関連と値"
+"のコレクションをマッピングする機能も備えています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+"bag のセマンティックスを持った <literal>List</literal>(または "
+"<literal>Collection</literal>)を <literal>&lt;idbag&gt;</literal> 要素にマッ"
+"ピングできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like "
+"an entity class. A different surrogate key is assigned to each collection "
+"row. Hibernate does not, however, provide any mechanism for discovering the "
+"surrogate key value of a particular row."
+msgstr ""
+"ご存知のように <literal>&lt;idbag&gt;</literal> はエンティティクラスのように"
+"人工的な id ジェネレータを持っています。異なる代理キーをそれぞれのコレクショ"
+"ンの列に割り当てます。しかし、 Hibernate はある行の代理キーの値を見つけ出す機"
+"構を持っていません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a "
+"regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows "
+"efficiently and update or delete them individually, similar to a list, map "
+"or set."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal> を更新するパフォーマンスは通常の "
+"<literal>&lt;bag&gt;</literal> よりも良いことに注目してください。 Hibernate "
+"は個々の行を効果的に見つけることができ、 list や map 、 set のように個別にそ"
+"の行を更新、削除できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal>&lt;idbag&gt;</literal> "
+"collection identifiers."
+msgstr ""
+"現在の実装では、 <literal>native</literal> という id 生成戦略を <literal>&lt;"
+"idbag&gt;</literal> コレクションの識別子に対して使えません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "コレクションの例"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This section covers collection examples."
+msgstr "コレクションの例"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following class has a collection of <literal>Child</literal> instances:"
+msgstr ""
+"以下のコードを使えば、新しい <literal>Child</literal> を追加することができま"
+"す。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If each child has, at most, one parent, the most natural mapping is a one-to-"
+"many association:"
+msgstr ""
+"このクラスは <literal>Child</literal> インスタンスのコレクションを持っていま"
+"す。もし各々の child が最大でも一つの parent を持っているならば、最も自然な"
+"マッピングは一対多関連です。"
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "これは以下のテーブル定義にマッピングします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"もし parent が <emphasis>要求</emphasis> されるなら、双方向の一対多関連を使用"
+"してください:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "<literal>NOT NULL</literal> 制約に注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, if this association must be unidirectional you can declare "
+"the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</"
+"literal> mapping:"
+msgstr ""
+"あるいは、もしこの関連は単方向であるべきと強く主張するのであれば、 "
+"<literal>&lt;key&gt;</literal> マッピングに <literal>NOT NULL</literal> 制約"
+"を宣言できます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, if a child has multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"一方で、もし child が複数の parent を持てるならば、多対多関連が妥当です:"
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "テーブル定義は以下のようになります:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For more examples and a complete explanation of a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+"parent/child 関係のマッピングについてのより多くの例や完全な手順が必要であれ"
+"ば、 <xref linkend=\"example-parentchild\"/> をご覧ください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr "また、さらに特殊な関連マッピングも可能です。次の章で詳しく述べます。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!]]>"
+#~ msgstr ""
+#~ "Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Product\">\n"
+#~ "    <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+#~ "    <set name=\"parts\">\n"
+#~ "        <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Part\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Product\"&gt;\n"
+#~ "    &lt;id name=\"serialNumber\" column=\"productSerialNumber\"/&gt;\n"
+#~ "    &lt;set name=\"parts\"&gt;\n"
+#~ "        &lt;key column=\"productSerialNumber\" not-null=\"true\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Part\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "    <key .... />\n"
+#~ "    <map-key .... />\n"
+#~ "    <element .... />\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "\n"
+#~ "    &lt;key .... /&gt;\n"
+#~ "    &lt;map-key .... /&gt;\n"
+#~ "    &lt;element .... /&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+#~ msgstr "&lt;key column=\"productSerialNumber\" not-null=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+#~ msgstr "&lt;key column=\"productSerialNumber\" on-delete=\"cascade\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+#~ "    <key column=\"person_id\"/>\n"
+#~ "    <element column=\"person_name\" type=\"string\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"names\" table=\"person_names\"&gt;\n"
+#~ "    &lt;key column=\"person_id\"/&gt;\n"
+#~ "    &lt;element column=\"person_name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\">\n"
+#~ "    <key column=\"item_id\"/>\n"
+#~ "    <element column=\"size\" type=\"integer\"/>\n"
+#~ "</bag>]]>"
+#~ msgstr ""
+#~ "&lt;bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\"&gt;\n"
+#~ "    &lt;key column=\"item_id\"/&gt;\n"
+#~ "    &lt;element column=\"size\" type=\"integer\"/&gt;\n"
+#~ "&lt;/bag&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\">\n"
+#~ "    <key column=\"personId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+#~ "</array>]]>"
+#~ msgstr ""
+#~ "&lt;array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\"&gt;\n"
+#~ "    &lt;key column=\"personId\"/&gt;\n"
+#~ "    &lt;list-index column=\"sortOrder\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"addressId\" class=\"Address\"/&gt;\n"
+#~ "&lt;/array&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\"&gt;\n"
+#~ "    &lt;key column=\"id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date\" type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\">\n"
+#~ "    <key column=\"carId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <composite-element class=\"CarComponent\">\n"
+#~ "        <property name=\"price\"/>\n"
+#~ "        <property name=\"type\"/>\n"
+#~ "        <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</list>]]>"
+#~ msgstr ""
+#~ "&lt;list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\"&gt;\n"
+#~ "    &lt;key column=\"carId\"/&gt;\n"
+#~ "    &lt;list-index column=\"sortOrder\"/&gt;\n"
+#~ "    &lt;composite-element class=\"CarComponent\"&gt;\n"
+#~ "        &lt;property name=\"price\"/&gt;\n"
+#~ "        &lt;property name=\"type\"/&gt;\n"
+#~ "        &lt;property name=\"serialNumber\" column=\"serialNum\"/&gt;\n"
+#~ "    &lt;/composite-element&gt;\n"
+#~ "&lt;/list&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]>"
+#~ msgstr ""
+#~ "&lt;one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    /&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"parts\"\n"
+#~ "        cascade=\"all\">\n"
+#~ "    <key column=\"productId\" not-null=\"true\"/>\n"
+#~ "    <map-key formula=\"partName\"/>\n"
+#~ "    <one-to-many class=\"Part\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"parts\"\n"
+#~ "        cascade=\"all\"&gt;\n"
+#~ "    &lt;key column=\"productId\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;map-key formula=\"partName\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Part\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\"&gt;\n"
+#~ "    &lt;key column=\"person\"/&gt;\n"
+#~ "    &lt;element column=\"name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;map name=\"holidays\" sort=\"my.custom.HolidayComparator\"&gt;\n"
+#~ "    &lt;key column=\"year_id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date\" type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+#~ "(name) asc\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) "
+#~ "asc\"&gt;\n"
+#~ "    &lt;key column=\"person\"/&gt;\n"
+#~ "    &lt;element column=\"name\" type=\"string\"/&gt;\n"
+#~ "&lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;map name=\"holidays\" order-by=\"hol_date, hol_name\"&gt;\n"
+#~ "    &lt;key column=\"year_id\"/&gt;\n"
+#~ "    &lt;map-key column=\"hol_name\" type=\"string\"/&gt;\n"
+#~ "    &lt;element column=\"hol_date type=\"date\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this."
+#~ "name\" ).list();]]>"
+#~ msgstr ""
+#~ "sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" )."
+#~ "list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Category\">\n"
+#~ "    <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+#~ "    ...\n"
+#~ "    <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+#~ "        <key column=\"CATEGORY_ID\"/>\n"
+#~ "        <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Item\">\n"
+#~ "    <id name=\"id\" column=\"ITEM_ID\"/>\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    <!-- inverse end -->\n"
+#~ "    <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+#~ "        <key column=\"ITEM_ID\"/>\n"
+#~ "        <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Category\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;bag name=\"items\" table=\"CATEGORY_ITEM\"&gt;\n"
+#~ "        &lt;key column=\"CATEGORY_ID\"/&gt;\n"
+#~ "        &lt;many-to-many class=\"Item\" column=\"ITEM_ID\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Item\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    &lt;!-- inverse end --&gt;\n"
+#~ "    &lt;bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"ITEM_ID\"/&gt;\n"
+#~ "        &lt;many-to-many class=\"Category\" column=\"CATEGORY_ID\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be "
+#~ "saved]]>"
+#~ msgstr ""
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be saved"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"/>\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;map name=\"children\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"/&gt;\n"
+#~ "        &lt;map-key column=\"name\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;property name=\"name\" \n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\">\n"
+#~ "        <key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Parent\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"parent_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;map name=\"children\"&gt;\n"
+#~ "        &lt;key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        &lt;map-key column=\"name\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Child\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"child_id\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"contracts\">\n"
+#~ "    <key column=\"employer_id\" not-null=\"true\"/>\n"
+#~ "    <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+#~ "    <one-to-many class=\"Contract\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"contracts\"&gt;\n"
+#~ "    &lt;key column=\"employer_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;map-key-many-to-many column=\"employee_id\" class=\"Employee\"/"
+#~ "&gt;\n"
+#~ "    &lt;one-to-many class=\"Contract\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<map name=\"connections\">\n"
+#~ "    <key column=\"incoming_node_id\"/>\n"
+#~ "    <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+#~ "    <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "&lt;map name=\"connections\"&gt;\n"
+#~ "    &lt;key column=\"incoming_node_id\"/&gt;\n"
+#~ "    &lt;map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/"
+#~ "&gt;\n"
+#~ "    &lt;many-to-many column=\"connection_id\" class=\"Connection\"/&gt;\n"
+#~ "&lt;/map&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+#~ "    <collection-id column=\"ID\" type=\"long\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </collection-id>\n"
+#~ "    <key column=\"PERSON1\"/>\n"
+#~ "    <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+#~ "</idbag>]]>"
+#~ msgstr ""
+#~ "&lt;idbag name=\"lovers\" table=\"LOVERS\"&gt;\n"
+#~ "    &lt;collection-id column=\"ID\" type=\"long\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"/&gt;\n"
+#~ "    &lt;/collection-id&gt;\n"
+#~ "    &lt;key column=\"PERSON1\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/"
+#~ "&gt;\n"
+#~ "&lt;/idbag&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" inverse=\"true\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id"
+#~ "\" not-null=\"true\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"parent\" class=\"Parent\" column="
+#~ "\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" table=\"childset\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Parent\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;set name=\"children\" table=\"childset\"&gt;\n"
+#~ "            &lt;key column=\"parent_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Child\" column=\"child_id\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Child\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child]]>"
+#~ msgstr ""
+#~ "create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,788 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-07 09:28+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "コンポーネントのマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts and purposes throughout Hibernate."
+msgstr ""
+"<emphasis>コンポーネント</emphasis> の概念は、 Hibernate を通して様々な状況の"
+"中で異なる目的のために再利用されます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "依存オブジェクト"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type and not "
+"an entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition and not to architecture-level components. For example, "
+"you can model a person like this:"
+msgstr ""
+"コンポーネントは、エンティティの参照ではなく値型として永続化された、包含され"
+"たオブジェクトです。「コンポーネント」という言葉については、コンポジションと"
+"いうオブジェクト指向の概念を参照してください(アーキテクチャレベルのコンポー"
+"ネントではありません)。例えば、以下の Person モデルのようなものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now <literal>Name</literal> can be persisted as a component of "
+"<literal>Person</literal>. <literal>Name</literal> defines getter and setter "
+"methods for its persistent properties, but it does not need to declare any "
+"interfaces or identifier properties."
+msgstr ""
+"いま、 <literal>Name</literal> は <literal>Person</literal> のコンポーネント"
+"として永続化することが出来ます。ここで <literal>Name</literal> は永続化属性に"
+"対して getter 、 setter メソッドを定義しますが、インターフェースや識別子プロ"
+"パティを定義する必要がないことに注意して下さい。"
+
+#. Tag: para
+#, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "マッピング定義は以下のようになります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"Person テーブルは <literal>pid</literal>、 <literal>birthday</literal>、 "
+"<literal>initial</literal>、 <literal>first</literal>、 <literal>last</"
+"literal> カラムを持ちます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Like value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name objects that were only \"the same\" by "
+"value. The null value semantics of a component are <emphasis>ad hoc</"
+"emphasis>. When reloading the containing object, Hibernate will assume that "
+"if all component columns are null, then the entire component is null. This "
+"is suitable for most purposes."
+msgstr ""
+"全ての値型のように、コンポーネントは参照の共有をすることができません。言い換"
+"えると、二人の Person は同じ名前を持つことができますが、二つの Person オブ"
+"ジェクトは「値が同じだけ」の別々の name オブジェクトを含んでいるということで"
+"す。コンポーネントの null 値のセマンティクスは <emphasis>アドホック</"
+"emphasis> です。コンポーネントのオブジェクトを再読み込みする際、 Hibernate は"
+"コンポーネントのすべてのカラムが null であるならコンポーネント自体が null で"
+"あると考えます。これは大抵の場合問題ありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties of a component can be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a fine-grained object model."
+msgstr ""
+"コンポーネントの属性はどんな Hibernate の型でも構いません(コレクション、 "
+"many-to-one 関連、他のコンポーネントなど)。ネストされたコンポーネントは滅多"
+"に使わないと考えるべきでは <emphasis>ありません</emphasis> 。 Hibernate は非"
+"常にきめの細かいオブジェクトモデルをサポートするように意図されています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal>&lt;component&gt;</literal> 要素は、親エンティティへ戻る参照として、"
+"コンポーネントのクラスのプロパティをマッピングする <literal>&lt;parent&gt;</"
+"literal> サブ要素を許可します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "従属するオブジェクトのコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections of components are supported (e.g. an array of type "
+"<literal>Name</literal>). Declare your component collection by replacing the "
+"<literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-"
+"element&gt;</literal> tag:"
+msgstr ""
+"Hibernate はコンポーネントのコレクションをサポートしています(例えば "
+"<literal>Name</literal> 型の配列)。 <literal>&lt;element&gt;</literal> タグ"
+"を <literal>&lt;composite-element&gt;</literal> タグに取り替えることによりコ"
+"ンポーネントコレクションを宣言してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you define a <literal>Set</literal> of composite elements, it is "
+"important to implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> correctly."
+msgstr ""
+"注記: コンポジットエレメントの <literal>Set</literal> を定義したなら、 "
+"<literal>equals()</literal> と <literal>hashCode()</literal> を正しく実装する"
+"ことが重要です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can contain components but not collections. If your "
+"composite element contains components, use the <literal>&lt;nested-composite-"
+"element&gt;</literal> tag. This case is a collection of components which "
+"themselves have components. You may want to consider if a one-to-many "
+"association is more appropriate. Remodel the composite element as an entity, "
+"but be aware that even though the Java model is the same, the relational "
+"model and persistence semantics are still slightly different."
+msgstr ""
+"コンポジットエレメントはコレクションを含まず、コンポーネントを含むこともあり"
+"ます。コンポジットエレメント自身がコンポーネントを含んでいる場合は "
+"<literal>&lt;nested-composite-element&gt;</literal> を使用してください。コン"
+"ポーネントのコレクション自身がコンポーネントを持つというケースはめったにあり"
+"ません。この段階までに、 one-to-many 関連の方がより適切でないかと熟考してくだ"
+"さい。コンポジットエレメントをエンティティとして再度モデリングしてみてくださ"
+"い。しかしこれは Java のモデルとしては同じですが、リレーショナルモデルと永続"
+"動作はまだ若干異なることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A composite element mapping does not support null-able properties if you are "
+"using a <literal>&lt;set&gt;</literal>. There is no separate primary key "
+"column in the composite element table. Hibernate uses each column's value to "
+"identify a record when deleting objects, which is not possible with null "
+"values. You have to either use only not-null properties in a composite-"
+"element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+"もし <literal>&lt;set&gt;</literal> を使用するのであれば、コンポジットエレメ"
+"ントのマッピングが null 値が可能な属性をサポートしていないことに注意してくだ"
+"さい。 Hibernate はオブジェクトを削除するとき、レコードを識別するためにそれぞ"
+"れのカラムの値を使用する必要があるため、 null 値を持つことが出来ません (コン"
+"ポジットエレメントテーブルには別の主キーカラムはありません)。 コンポジットエ"
+"レメントに not-null の属性のみを使用するか、または <literal>&lt;list&gt;</"
+"literal>、<literal>&lt;map&gt;</literal>、 <literal>&lt;bag&gt;</literal>、"
+"<literal>&lt;idbag&gt;</literal> を選択する必要があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to "
+"map extra columns of a many-to-many association table to the composite "
+"element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal>, where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"コンポジットエレメントの特別なケースとして、ネストされた <literal>&lt;many-"
+"to-one&gt;</literal> 属性を持つコンポジットエレメントがあります。このマッピン"
+"グは、コンポジットエレメントクラスを多対多関連テーブルの余分なカラムへマッピ"
+"ングします。次の例は <literal>Order</literal> から、<literal>Item</literal> "
+"への多対多関連です。 <literal>purchaseDate</literal>、 <literal>price</"
+"literal>、 <literal>quantity</literal> は関連の属性となります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There cannot be a reference to the purchase on the other side for "
+"bidirectional association navigation. Components are value types and do not "
+"allow shared references. A single <literal>Purchase</literal> can be in the "
+"set of an <literal>Order</literal>, but it cannot be referenced by the "
+"<literal>Item</literal> at the same time."
+msgstr ""
+"もちろん、双方向関連のナビゲーションのために反対側から purchase への参照を作"
+"ることは出来ません。コンポーネントは値型であり、参照を共有できないことを覚え"
+"ておいてください。一つの <literal>Purchase</literal> は一つの "
+"<literal>Order</literal> の set に存在できますが、同時に <literal>Item</"
+"literal> から参照することは出来ません。"
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "3項関連(あるいは4項など)も可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"コンポジットエレメントは他のエンティティへの関連として、同じシンタックスを"
+"使っているクエリ内で使用できます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "Map のインデックスとしてのコンポーネント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a "
+"component class as the key of a <literal>Map</literal>. Ensure that you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"<literal>&lt;composite-map-key&gt;</literal> 要素は <literal>Map</literal> の"
+"キーとしてコンポーネントクラスをマッピングします。コンポーネントクラス上で "
+"<literal>hashCode()</literal> と <literal>equals()</literal> を正確にオーバー"
+"ライドしてください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "複合識別子としてのコンポーネント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"コンポーネントをエンティティクラスの識別子として使うことができます。コンポー"
+"ネントクラスは以下の条件を満たす必要があります。"
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "<literal>java.io.Serializable</literal> を実装しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> consistently with the database's notion of composite key equality."
+msgstr ""
+"データベース上の複合キーの等価性と矛盾のないように、 <literal>equals()</"
+"literal> と <literal>hashCode()</literal> を再実装しなければなりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注記"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In Hibernate3, although the second requirement is not an absolutely hard "
+"requirement of Hibernate, it is recommended."
+msgstr ""
+"Hibernate3 において、2番目の条件は絶対的な条件ではありません。それでもやはり"
+"条件を満たしてください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"複合キーを生成するために <literal>IdentifierGenerator</literal> を使用するこ"
+"とはできません。代わりにアプリケーションが識別子を割り当てなくてはなりませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use the <literal>&lt;composite-id&gt;</literal> tag, with nested "
+"<literal>&lt;key-property&gt;</literal> elements, in place of the usual "
+"<literal>&lt;id&gt;</literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"通常の <literal>&lt;id&gt;</literal> 宣言の代わりに <literal>&lt;composite-"
+"id&gt;</literal> タグを (ネストされた <literal>&lt;key-property&gt;</"
+"literal> 属性と共に) 使います。以下の例では、 <literal>OrderLine</literal> "
+"クラスは <literal>Order</literal> の(複合)主キーに依存した主キーを持ってい"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any foreign keys referencing the <literal>OrderLine</literal> table are now "
+"composite. Declare this in your mappings for other classes. An association "
+"to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+"このとき、 <literal>OrderLine</literal> テーブルへ関連する外部キーもまた複合"
+"です。他のクラスのマッピングでこれを宣言しなければなりません。 "
+"<literal>OrderLine</literal> への関連は次のようにマッピングされます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>column</literal> element is an alternative to the "
+"<literal>column</literal> attribute everywhere. Using the <literal>column</"
+"literal> element just gives more declaration options, which are mostly "
+"useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+"(<literal>&lt;column&gt;</literal> タグはどこであっても <literal>column</"
+"literal> 属性の代わりになります。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"<literal>OrderLine</literal> への <literal>many-to-many</literal> 関連も複合"
+"外部キーを使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"<literal>Order</literal> にある <literal>OrderLine</literal> のコレクションは"
+"次のものを使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr ""
+"(<literal>&lt;one-to-many&gt;</literal> 属性は、例によってカラムを宣言しませ"
+"ん)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"<literal>OrderLine</literal> 自身がコレクションを持っている場合、同時に複合外"
+"部キーも持っています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "動的コンポーネント"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "<literal>Map</literal> 型のプロパティのマッピングも可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
+"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"You can also access, and change, Hibernate's configuration-time metamodel "
+"via the <literal>Configuration</literal> object."
+msgstr ""
+"<literal>&lt;dynamic-component&gt;</literal> マッピングのセマンティクスは "
+"<literal>&lt;component&gt;</literal> と同一のものです。この種のマッピングの利"
+"点は、マッピングドキュメントの編集により、配置時に Bean の属性を決定できる点"
+"です。また、 DOM パーサを利用して、マッピングドキュメントのランタイム操作が可"
+"能です。さらに、 <literal>Configuration</literal> オブジェクト経由で "
+"Hibernate のコンフィグレーション時のメタモデルにアクセス(または変更)が可能"
+"です。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+#~ "optional -->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Person\" table=\"person\"&gt;\n"
+#~ "    &lt;id name=\"Key\" column=\"pid\" type=\"string\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"birthday\" type=\"date\"/&gt;\n"
+#~ "    &lt;component name=\"Name\" class=\"eg.Name\"&gt; &lt;!-- class "
+#~ "attribute optional --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+#~ "        <parent name=\"namedPerson\"/> <!-- reference back to the Person "
+#~ "-->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Person\" table=\"person\"&gt;\n"
+#~ "    &lt;id name=\"Key\" column=\"pid\" type=\"string\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"birthday\" type=\"date\"/&gt;\n"
+#~ "    &lt;component name=\"Name\" class=\"eg.Name\" unique=\"true\"&gt;\n"
+#~ "        &lt;parent name=\"namedPerson\"/&gt; &lt;!-- reference back to "
+#~ "the Person --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <composite-element class=\"eg.Name\"> <!-- class attribute required --"
+#~ ">\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"someNames\" table=\"some_names\" lazy=\"true\"&gt;\n"
+#~ "    &lt;key column=\"id\"/&gt;\n"
+#~ "    &lt;composite-element class=\"eg.Name\"&gt; &lt;!-- class attribute "
+#~ "required --&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"first\"/&gt;\n"
+#~ "        &lt;property name=\"last\"/&gt;\n"
+#~ "    &lt;/composite-element&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.Purchase\">\n"
+#~ "            <property name=\"purchaseDate\"/>\n"
+#~ "            <property name=\"price\"/>\n"
+#~ "            <property name=\"quantity\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class "
+#~ "attribute is optional -->\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.Purchase\"&gt;\n"
+#~ "            &lt;property name=\"purchaseDate\"/&gt;\n"
+#~ "            &lt;property name=\"price\"/&gt;\n"
+#~ "            &lt;property name=\"quantity\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt; &lt;!-- "
+#~ "class attribute is optional --&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.OrderLine\">\n"
+#~ "            <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.OrderLine\"&gt;\n"
+#~ "            &lt;many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/"
+#~ "&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" class=\"OrderLineId\">\n"
+#~ "        <key-property name=\"lineId\"/>\n"
+#~ "        <key-property name=\"orderId\"/>\n"
+#~ "        <key-property name=\"customerId\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\">\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" class=\"OrderLineId\"&gt;\n"
+#~ "        &lt;key-property name=\"lineId\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderId\"/&gt;\n"
+#~ "        &lt;key-property name=\"customerId\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"name\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\"&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-one&gt;\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
+#~ "<!-- the \"class\" attribute is optional, as usual -->\n"
+#~ "    <column name=\"lineId\"/>\n"
+#~ "    <column name=\"orderId\"/>\n"
+#~ "    <column name=\"customerId\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"orderLine\" class=\"OrderLine\"&gt;\n"
+#~ "&lt;!-- the \"class\" attribute is optional, as usual --&gt;\n"
+#~ "    &lt;column name=\"lineId\"/&gt;\n"
+#~ "    &lt;column name=\"orderId\"/&gt;\n"
+#~ "    &lt;column name=\"customerId\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
+#~ "    <key column name=\"warehouseId\"/>\n"
+#~ "    <many-to-many class=\"OrderLine\">\n"
+#~ "        <column name=\"lineId\"/>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-many>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"undeliveredOrderLines\"&gt;\n"
+#~ "    &lt;key column name=\"warehouseId\"/&gt;\n"
+#~ "    &lt;many-to-many class=\"OrderLine\"&gt;\n"
+#~ "        &lt;column name=\"lineId\"/&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-many&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
+#~ "    <key>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </key>\n"
+#~ "    <one-to-many class=\"OrderLine\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"orderLines\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/key&gt;\n"
+#~ "    &lt;one-to-many class=\"OrderLine\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    <list name=\"deliveryAttempts\">\n"
+#~ "        <key>   <!-- a collection inherits the composite key type -->\n"
+#~ "            <column name=\"lineId\"/>\n"
+#~ "            <column name=\"orderId\"/>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "        </key>\n"
+#~ "        <list-index column=\"attemptId\" base=\"1\"/>\n"
+#~ "        <composite-element class=\"DeliveryAttempt\">\n"
+#~ "            ...\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    &lt;list name=\"deliveryAttempts\"&gt;\n"
+#~ "        &lt;key&gt;   &lt;!-- a collection inherits the composite key "
+#~ "type --&gt;\n"
+#~ "            &lt;column name=\"lineId\"/&gt;\n"
+#~ "            &lt;column name=\"orderId\"/&gt;\n"
+#~ "            &lt;column name=\"customerId\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;list-index column=\"attemptId\" base=\"1\"/&gt;\n"
+#~ "        &lt;composite-element class=\"DeliveryAttempt\"&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
+#~ "    <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
+#~ "    <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
+#~ "    <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
+#~ "</dynamic-component>]]>"
+#~ msgstr ""
+#~ "&lt;dynamic-component name=\"userAttributes\"&gt;\n"
+#~ "    &lt;property name=\"foo\" column=\"FOO\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"bar\" column=\"BAR\" type=\"integer\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/&gt;\n"
+#~ "&lt;/dynamic-component&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2905 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2009-12-21 17:12+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is designed to operate in many different environments and, as "
+"such, there is a broad range of configuration parameters. Fortunately, most "
+"have sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"displays the various options. Simply put the example file in your classpath "
+"and customize it to suit your needs."
+msgstr ""
+"Hibernate は様々な環境で動作するようにデザインされているため、非常に多くの設"
+"定要素があります。幸いなことに、 Hibernate は、公開されているパッケージの "
+"<literal>etc/</literal> フォルダの <literal>hibernate.properties</literal> "
+"に、ほとんどの設定要素の適切なデフォルト値が記述されています。この "
+"<literal>hibernate.properties</literal> をクラスパスに設定し、設定要素をカス"
+"タマイズするだけです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "プログラム上の設定"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of <classname>org.hibernate.cfg.Configuration</classname> "
+"represents an entire set of mappings of an application's Java types to an "
+"SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is "
+"used to build an immutable <interfacename>org.hibernate.SessionFactory</"
+"interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+"<classname>org.hibernate.cfg.Configuration</classname> のインスタンスは、 "
+"Java の型と SQL データベースのマッピング情報をすべて持っています。 "
+"<literal>Configuration</literal> は、(不変の) "
+"<interfacename>SessionFactory</interfacename> を生成するときに使用します。複"
+"数の XML マッピングファイルを変換し、マッピング情報にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can obtain a <classname>org.hibernate.cfg.Configuration</classname> "
+"instance by instantiating it directly and specifying XML mapping documents. "
+"If the mapping files are in the classpath, use <literal>addResource()</"
+"literal>. For example:"
+msgstr ""
+"通常、 <classname>org.hibernate.cfg.Configuration</classname> インスタンス"
+"は、特定の XML マッピングファイルによって直接初期化されます。もし、マッピング"
+"ファイルがクラスパスに設定されている場合、次のメソッドを使ってください。 "
+"<literal>addResource()</literal> :"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative way is to specify the mapped class and allow Hibernate to "
+"find the mapping document for you:"
+msgstr ""
+"代替案 (こちらのほうが良いときもあります) としてマッピングクラスを指定する方"
+"法もあります。 Hibernate に、マッピングファイルを 見つけさせてください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will then search for mapping files named <filename>/org/hibernate/"
+"auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm."
+"xml</filename> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"Hibernate は、クラスパスにある以下のような名前のマッピングファイルを見つけま"
+"す。 <filename>/org/hibernate/auction/Item.hbm.xml</filename> 、 <filename>/"
+"org/hibernate/auction/Bid.hbm.xml</filename> 。この方法だと、ハードコーディン"
+"グされたファイル名を排除できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <classname>org.hibernate.cfg.Configuration</classname> also allows you to "
+"specify configuration properties. For example:"
+msgstr ""
+"<classname>org.hibernate.cfg.Configuration</classname> は、設定プロパティを指"
+"定することもできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. Some "
+"alternative options include:"
+msgstr ""
+"Hibernate に設定プロパティを渡す方法は1つではありません。さまざまなオプション"
+"を用意しています:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Pass an instance of <classname>java.util.Properties</classname> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"<literal>java.util.Properties</literal> インスタンスを "
+"<literal>Configuration.setProperties()</literal> に渡します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Place a file named <filename>hibernate.properties</filename> in a root "
+"directory of the classpath."
+msgstr ""
+"<literal>hibernate.properties</literal> をクラスパスのルートディレクトリに置"
+"きます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"<literal>System</literal> プロパティが <literal>java -Dproperty=value</"
+"literal> を使うように設定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal> (this is discussed later)."
+msgstr ""
+"<literal>&lt;property&gt;</literal> 要素を <filename>hibernate.cfg.xml</"
+"filename> (後述)に設定します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to get started quickly<filename>hibernate.properties</filename> "
+"is the easiest approach."
+msgstr ""
+"<literal>hibernate.properties</literal> をクラスパスのルートディレクトリに置"
+"きます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <classname>org.hibernate.cfg.Configuration</classname> is intended as a "
+"startup-time object that will be discarded once a <literal>SessionFactory</"
+"literal> is created."
+msgstr ""
+"<classname>org.hibernate.cfg.Configuration</classname> は、起動時にだけあるオ"
+"ブジェクトであり、一度 <literal>SessionFactory</literal> を生成した後は、破棄"
+"されることを意図しています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "SessionFactory を取得する"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When all mappings have been parsed by the <classname>org.hibernate.cfg."
+"Configuration</classname>, the application must obtain a factory for "
+"<interfacename>org.hibernate.Session</interfacename> instances. This factory "
+"is intended to be shared by all application threads:"
+msgstr ""
+"<classname>org.hibernate.cfg.Configuration</classname> がすべてのマッピング情"
+"報を解析したら、アプリケーションは、 <classname>org.hibernate.Session</"
+"classname> インスタンスのためにファクトリを取得しなければなりません。この "
+"SessionFactory は、 Hibernate を使用するすべてのスレッドで共有されるべきです:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. This is useful "
+"if you are using more than one database."
+msgstr ""
+"Hibernate は、アプリケーションが <classname>org.hibernate.SessionFactory</"
+"classname> を複数生成することを可能にします。これは、複数のデータベースを使用"
+"する場合に便利です。"
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "JDBC コネクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is advisable to have the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> create and pool JDBC connections for you. If you take this "
+"approach, opening a <interfacename>org.hibernate.Session</interfacename> is "
+"as simple as:"
+msgstr ""
+"通常、開発者は <interfacename>org.hibernate.SessionFactory</interfacename> を"
+"生成し、 SessionFactory で JDBC コネクションをプーリングしたいと考えます。そ"
+"のアプローチを採用する場合、単純に <interfacename>org.hibernate.Session</"
+"interfacename> をオープンしてください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you start a task that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"これだけで、プーリングした JDBC コネクションを使って目的のデータベースにアク"
+"セスすることができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Before you can do this, you first need to pass some JDBC connection "
+"properties to Hibernate. All Hibernate property names and semantics are "
+"defined on the class <classname>org.hibernate.cfg.Environment</classname>. "
+"The most important settings for JDBC connection configuration are outlined "
+"below."
+msgstr ""
+"そのためには、 JDBC コネクションのプロパティを Hibernate に設定する必要があり"
+"ます。すべての Hibernate プロパティ名とセマンティクスは <classname>org."
+"hibernate.cfg.Environment</classname> クラスに定義されています。この設定は "
+"JDBC コネクション設定の中で一番重要なものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will obtain and pool connections using <classname>java.sql."
+"DriverManager</classname> if you set the following properties:"
+msgstr ""
+"もし、以下のプロパティを設定すると、 Hibernate はコネクションを取得するために"
+"(プールも) <classname>java.sql.DriverManager</classname> を使います:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Hibernate JDBC プロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "プロパティ名"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "意味"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "<property>hibernate.connection.driver_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "JDBC のドライバークラス"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "<property>hibernate.connection.url</property>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr "JDBC のドライバークラス"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "<property>hibernate.connection.username</property>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "<emphasis>データベースユーザ</emphasis> (オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "<property>hibernate.connection.password</property>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "<emphasis>データベースユーザのパスワード</emphasis> (オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "<property>hibernate.connection.pool_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "<emphasis>プールするコネクションの最大数</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is, however, quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis>, or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <property>hibernate.connection.pool_size</property> property "
+"with connection pool specific settings. This will turn off Hibernate's "
+"internal pool. For example, you might like to use c3p0."
+msgstr ""
+"Hibernate のコネクションプールアルゴリズムは非常に初歩的なものです。これはす"
+"ぐに始められるようにと用意されたもので、 <emphasis>製品として使用することを意"
+"図していません</emphasis> 。また、パフォーマンスのテストのためのものでもあり"
+"ません。最高のパフォーマンスと安定性を持ったプールを実現したければ、サード"
+"パーティのツールをお勧めします。 <literal>hibernate.connection.pool_size</"
+"literal> プロパティと適切なコネクションプールの設定を置き換えてください。これ"
+"により Hibernate のインターナルプールを無効にします。例えば次のように C3P0 を"
+"使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <filename>lib</filename> directory. Hibernate will use its "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for "
+"connection pooling if you set <property>hibernate.c3p0.*</property> "
+"properties. If you would like to use Proxool, refer to the packaged "
+"<filename>hibernate.properties</filename> and the Hibernate web site for "
+"more information."
+msgstr ""
+"C3P0 はオープンソース JDBC コネクションプールで、 Hibernate の <literal>lib</"
+"literal> ディレクトリにあります。もし、 <literal>hibernate.c3p0.*</literal> "
+"プロパティをセットすれば、 Hibernate は、 <literal>C3P0ConnectionProvider</"
+"literal> を使います。もし Proxool を使いたい場合は、 <literal>hibernate."
+"properties</literal> パッケージを参照したり、 Hibernate の Web サイトでより多"
+"くの情報を取得してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example <filename>hibernate.properties</filename> file "
+"for c3p0:"
+msgstr ""
+"C3P0 用の <literal>hibernate.properties</literal> ファイルを例として示しま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You "
+"will need to set at least one of the following properties:"
+msgstr ""
+"アプリケーションサーバー上で使う場合は、 Hibernate を設定し、アプリケーション"
+"サーバーからコネクションを取得するようにしてください。 <interfacename>javax."
+"sql.Datasource</interfacename> を JNDI に登録します。そしてプロパティを以下の"
+"ように設定してください:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Hibernate データソースプロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "<property>hibernate.connection.datasource</property>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "<emphasis>データベースユーザ</emphasis> (オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "<property>hibernate.jndi.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "<emphasis>JNDI プロバイダの URL</emphasis> (オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "<property>hibernate.jndi.class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
+"<emphasis>JNDI のクラス <literal>InitialContextFactory</literal></emphasis> "
+"(オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr "<emphasis>データベースユーザ</emphasis> (オプション)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr "<emphasis>データベースユーザのパスワード</emphasis> (オプション)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example <filename>hibernate.properties</filename> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"アプリケーションサーバーから提供された JNDI データソースを使う "
+"<filename>hibernate.properties</filename> ファイルの例を示します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"JNDI データソースから取得した JDBC コネクションは、アプリケーションサーバーの"
+"コンテナ管理トランザクションに自動的に参加します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Arbitrary connection properties can be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the connection property name. "
+"For example, you can specify a <property>charSet</property> connection "
+"property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+"任意のコネクションプロパティは、追加された \"<literal>hibernate.connnection</"
+"literal>\" プロパティ名によって与えられます。例えば、 <property>charSet</"
+"property> を設定したい場合は、 <property>hibernate.connection.charSet</"
+"property> を使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, and specifying your custom "
+"implementation via the <property>hibernate.connection.provider_class</"
+"property> property."
+msgstr ""
+"JDBC コネクションを取得する戦略を持つ独自のプラグインを定義する場合は、 "
+"<interfacename>org.hibernate.connection.ConnectionProvider</interfacename> イ"
+"ンターフェースを実装してください。そして、実装クラスを <property>hibernate."
+"connection.provider_class</property> に設定してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "オプション設定プロパティ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a number of other properties that control the behavior of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"これらのプロパティはランタイムに Hibernate の挙動を制御するものです。これらの"
+"プロパティはすべて妥当なデフォルト値があり、任意で設定します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Some of these properties are \"system-level\" only.</emphasis> "
+"System-level properties can be set only via <literal>java -Dproperty=value</"
+"literal> or <filename>hibernate.properties</filename>. They "
+"<emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>注意:これらのプロパティは「システムレベル」のみです。</emphasis> "
+"システムレベルプロパティは <literal>java -Dproperty=value</literal> 、もしく"
+"は <literal>hibernate.properties</literal> でのみ設定可能です。それ以外の設定"
+"方法は <emphasis>ありません</emphasis> 。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Hibernate 設定プロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "<property>hibernate.dialect</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> which allows Hibernate to generate SQL optimized for a particular "
+"relational database."
+msgstr ""
+"Hibernate のクラス名 <classname>org.hibernate.dialect.Dialect</classname> が"
+"入ります。これはリレーショナルデータベースごとに最適化された SQL を生成しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>full.classname.of.Dialect</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases Hibernate will actually be able to choose the correct "
+"<classname>org.hibernate.dialect.Dialect</classname> implementation based on "
+"the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "<property>hibernate.show_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"発行されたすべての SQL をコンソールに出力します。これはログカテゴリの "
+"<literal>org.hibernate.SQL</literal> に <literal>debug</literal> を設定する方"
+"法の代替手段です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "<property>hibernate.format_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "ログとコンソールの SQL を整形して表示します。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "<property>hibernate.default_schema</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr "生成される SQL 文のテーブルに設定するスキーマ/テーブルスペースです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr "<emphasis role=\"strong\">例.</emphasis><literal>SCHEMA_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "<property>hibernate.default_catalog</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr "生成される SQL 文のテーブルに設定するカタログです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr "<emphasis role=\"strong\">例</emphasis><literal>CATALOG_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "<property>hibernate.session_factory_name</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.SessionFactory</interfacename> will be "
+"automatically bound to this name in JNDI after it has been created."
+msgstr ""
+"<interfacename>org.hibernate.SessionFactory</interfacename> は生成後、この名"
+"前で JNDI に自動的に登録されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>jndi/composite/name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "<property>hibernate.max_fetch_depth</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"外部結合フェッチの最大深度を設定します。結合する関連は対一関連のみ(一対一、"
+"多対一)です。 <literal>0</literal> を指定すると外部結合フェッチは無効になり"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例:</emphasis> 推奨する値は <literal>0</literal> "
+"から <literal>3</literal> の間です。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "<property>hibernate.default_batch_fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr "関連フェッチのデフォルト Hibernate バッチサイズを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例:</emphasis> 推奨する値は <literal>4</"
+"literal> , <literal>8</literal> , <literal>16</literal> です。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "<property>hibernate.default_entity_mode</property>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"<literal>SessionFactory</literal> からセッションをオープンしたときに使用する"
+"エンティティのデフォルトモードを設定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "<property>hibernate.order_updates</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"項目が更新されたときに、別の SQL で主キーを更新することを強制します。この場"
+"合、同時実行可能なシステムでは、まれにデッドロックが発生する可能性がありま"
+"す。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "<property>hibernate.generate_statistics</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"有効の場合、 Hibernate はパフォーマンスチューニングに有効な統計情報を収集しま"
+"す。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "<property>hibernate.use_identifier_rollback</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"有効の場合、オブジェクトが削除されたときに識別子プロパティをリセットし、デ"
+"フォルト値にしたものを生成します。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "<property>hibernate.use_sql_comments</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"有効の場合、 SQL 内にコメントを生成します。これはデバックを容易にします。デ"
+"フォルトの値は <literal>false</literal> です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "Hibernate JDBC とコネクションプロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "<property>hibernate.jdbc.fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"値が0でない場合、 JDBC フェッチサイズを決定します ( <literal>Statement."
+"setFetchSize()</literal> を呼びます)。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "<property>hibernate.jdbc.batch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr "値が0でない場合、 Hibernate が JDBC2 バッチ更新を使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例:</emphasis> 推奨する値は <literal>5</literal> "
+"から <literal>30</literal> の間です。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "<property>hibernate.jdbc.batch_versioned_data</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal>. Iit is usually "
+"safe to turn this option on. Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"もし JDBC ドライバが <literal>executeBatch()</literal> によって正確な行数を返"
+"す場合、このプロパティを <literal>true</literal> にしてください (通常はこの"
+"オプションを ON するのが安全です)。 Hibernate は、自動バージョンデータのため"
+"バッチ DML を使います。デフォルトの値は <literal>false</literal> です。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "<property>hibernate.jdbc.factory_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Most applications will not need this configuration property."
+msgstr ""
+"カスタム <interfacename>org.hibernate.jdbc.Batcher</interfacename> を選びま"
+"す。ほとんどのアプリケーションに、この設定プロパティは必要ありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>classname.of.BatcherFactory</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user-supplied JDBC connections. Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Hibernate による JDBC2 のスクロール可能なリザルトセットの使用を有効にします。"
+"このプロパティは、ユーザーによって提供された JDBC コネクションを使用している"
+"場合のみ必要で、そうでなければ Hibernate はコネクションメタデータを使用しま"
+"す。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "<property>hibernate.jdbc.use_streams_for_binary</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+msgstr ""
+"JDBC へ/から <literal>binary</literal> や <literal>serializable</literal> の"
+"書き込み/読み込みストリームを使います (システムレベルのプロパティ)。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "<property>hibernate.jdbc.use_get_generated_keys</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, it tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"挿入の後に自動生成された主キーを取得するための JDBC3 "
+"<literal>PreparedStatement.getGeneratedKeys()</literal> の使用を有効にしま"
+"す。これは JDBC3+ ドライバと JRE1.4+ を必要とし、もし Hibernate の識別子ジェ"
+"ネレータに問題が発生するようなら false に設定してください。デフォルトではコネ"
+"クションメタデータを使いドライバの能力を決定します。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr "<emphasis role=\"strong\">例</emphasis><literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "<property>hibernate.connection.provider_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> which provides JDBC connections to "
+"Hibernate."
+msgstr ""
+"JDBC コネクションを Hibernate に提供する独自の <literal>ConnectionProvider</"
+"literal> のクラス名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>classname.of."
+"ConnectionProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "<property>hibernate.connection.isolation</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets the JDBC transaction isolation level. Check <interfacename>java.sql."
+"Connection</interfacename> for meaningful values, but note that most "
+"databases do not support all isolation levels and some define additional, "
+"non-standard isolations."
+msgstr ""
+"JDBC トランザクション分離レベルを設定します。妥当な値を調べるためには "
+"<interfacename>java.sql.Connection</interfacename> をチェックしてください。し"
+"かし使用するデータベースが、すべての分離レベルをサポートしているとは限りませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr "<emphasis role=\"strong\">例</emphasis><literal>1, 2, 4, 8</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "<property>hibernate.connection.autocommit</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr ""
+"プールされている JDBC コネクションの自動コミットを有効にする(非推奨)。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "<property>hibernate.connection.release_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Specifies when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, use <literal>after_statement</"
+"literal> to aggressively release connections after every JDBC call. For a "
+"non-JTA connection, it often makes sense to release the connection at the "
+"end of each transaction, by using <literal>after_transaction</literal>. "
+"<literal>auto</literal> will choose <literal>after_statement</literal> for "
+"the JTA and CMT transaction strategies and <literal>after_transaction</"
+"literal> for the JDBC transaction strategy."
+msgstr ""
+"Hibernate がいつ JDBC コネクションをリリースするかを指定します。デフォルトで"
+"はセッションが明示的にクローズまたは切断されてもコネクションは保持します。ア"
+"プリケーションサーバーの JTA データソースの場合、すべての JDBC コールの後、強"
+"制的にコネクションをリリースするために <literal>after_statement</literal> を"
+"使ってください。非 JTA コネクションの場合、各トランザクションが終了したとき"
+"に <literal>after_transaction</literal> を使い、コネクションをリリースしてく"
+"ださい。 <literal>auto</literal> にすると、 JTA や CMT トランザクションの場"
+"合、 <literal>after_statement</literal> でクローズし、 JDBC トランザクション"
+"の場合、 <literal>after_transaction</literal> でクローズします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>auto</literal> (デフォルト) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This setting only affects <literal>Session</literal>s returned from "
+"<literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\" />"
+msgstr ""
+"この設定は <literal>SessionFactory.openSession</literal> から取得した "
+"<literal>Session</literal> だけに効果があります。 <literal>SessionFactory."
+"getCurrentSession</literal> を通じて取得した <literal>Session</literal> で"
+"は、 <literal>CurrentSessionContext</literal> の実装によって、コネクションの"
+"リリースモードを設定します。 <xref linkend=\"architecture-current-session\"/"
+"> を参照してください。"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+msgstr ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
+"JDBC プロパティ <emphasis>&lt;propertyName&gt;</emphasis> を "
+"<literal>DriverManager.getConnection()</literal> に渡します。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr ""
+"<literal>hibernate.jndi.</literal><emphasis>&lt;property&gt;</emphasis> ã‚’"
+"使って、システムプロパティとして"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
+"プロパティ <emphasis>&lt;propertyName&gt;</emphasis> を JNDI "
+"<literal>InitialContextFactory</literal> に渡します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Hibernate キャッシュプロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "<literal>hibernate.cache.provider_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr "カスタム <literal>CacheProvider</literal> のクラス名です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>classname.of.CacheProvider</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "<literal>hibernate.cache.use_minimal_puts</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Optimizes second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"書き込みを最小限にするために、二次キャッシュの操作を最適化します。その代わり"
+"に、読み込みがより頻繁に発生するようになります。このセッティングはクラスタ"
+"キャッシュで役に立ちます。 Hibernate3 ではクラスタキャッシュ実装用にデフォル"
+"トでは有効になっています。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "<literal>hibernate.cache.use_query_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+"特定のクエリがキャッシュ可能な場合に、クエリキャッシュを有効にします。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "<literal>hibernate.cache.use_second_level_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Can be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal>&lt;cache&gt;</literal> "
+"mapping."
+msgstr ""
+"二次キャッシュを完全に無効にする場合に使います。デフォルトでは有効で、クラス"
+"の <literal>&lt;cache&gt;</literal> マッピングで制御します。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "<literal>hibernate.cache.query_cache_factory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"カスタム <literal>QueryCache</literal> インターフェースのクラス名を指定しま"
+"す。デフォルトでは <literal>StandardQueryCache</literal> になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "<literal>hibernate.cache.region_prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr "二次キャッシュの領域名の接頭辞です。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr "<emphasis role=\"strong\">例</emphasis><literal>prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "<literal>hibernate.cache.use_structured_entries</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"二次キャッシュに格納するデータを、人が理解しやすいフォーマットにします。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Hibernate トランザクションプロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "<literal>hibernate.transaction.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"Hibernate <literal>Transaction</literal> API と一緒に使われる "
+"<literal>TransactionFactory</literal> のクラス名です。 (デフォルトでは "
+"<literal>JDBCTransactionFactory</literal> です)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>classname.of."
+"TransactionFactory</literal>>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "<literal>jta.UserTransaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"アプリケーションサーバーから JTA <literal>UserTransaction</literal> を取得す"
+"るために <literal>JTATransactionFactory</literal> に使われる JNDI 名です。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "<literal>hibernate.transaction. manager_lookup_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal>. It is "
+"required when JVM-level caching is enabled or when using hilo generator in a "
+"JTA environment."
+msgstr ""
+"<literal>TransactionManagerLookup</literal> のクラス名です。 JTA 環境におい"
+"て、 JVM レベルのキャッシュを有効にするときか、 hilo ジェネレータが使用される"
+"ときに必要です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>classname.of."
+"TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "<literal>hibernate.transaction. flush_before_completion</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"有効の場合、トランザクションの completion フェーズの前に自動的にセッションを"
+"フラッシュします。内蔵の自動セッションコンテキスト管理に適しています。 <xref "
+"linkend=\"architecture-current-session\"/> を参照してください。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "<literal>hibernate.transaction. auto_close_session</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"有効の場合、トランザクションの completion フェーズの後にセッションを自動的に"
+"クローズします。内蔵の自動セッションコンテキスト管理に適しています。 <xref "
+"linkend=\"architecture-current-session\"/> を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "その他のプロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "<literal>hibernate. current_session_context_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Supply a custom strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\" /> for more information about the built-in strategies."
+msgstr ""
+"「現在の」 <literal>Session</literal> のための(カスタム)戦略を提供します。"
+"ビルトインストラテジーに関するその他の情報については <xref linkend="
+"\"architecture-current-session\"/> を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "<literal>hibernate.query.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "HQL パーサーの実装を選択します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "<literal>hibernate.query.substitutions</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Is used to map from tokens in Hibernate queries to SQL tokens (tokens might "
+"be function or literal names, for example)."
+msgstr ""
+"HQL と SQL のトークンをマッピングします。 (例えば、トークンは関数やリテラル"
+"名です)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis><literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "<literal>hibernate.hbm2ddl.auto</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Automatically validates or exports schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"<literal>SessionFactory</literal> を生成したときに、自動的にスキーマ DDL を有"
+"効にしデータベースに出力します。 <literal>create-drop</literal> の場合、 "
+"<literal>SessionFactory</literal> をクローズしたときに、データベーススキーマ"
+"をドロップします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">例</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "<literal>hibernate.cglib. use_reflection_optimizer</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables the use of CGLIB instead of runtime reflection (System-level "
+"property). Reflection can sometimes be useful when troubleshooting. "
+"Hibernate always requires CGLIB even if you turn off the optimizer. You "
+"cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"実行時リフレクションの代わりの CGLIB の使用を有効にします (システムレベルの"
+"プロパティ) 。リフレクションはトラブルシューティングのときに役立つことがあり"
+"ます。オプティマイザをオフにしているときでさえ、 Hibernate には必ず CGLIB が"
+"必要なことに注意してください。このプロパティは <literal>hibernate.cfg.xml</"
+"literal> で設定できません。"
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "SQL 方言(Dialect)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Always set the <literal>hibernate.dialect</literal> property to the correct "
+"<literal>org.hibernate.dialect.Dialect</literal> subclass for your database. "
+"If you specify a dialect, Hibernate will use sensible defaults for some of "
+"the other properties listed above. This means that you will not have to "
+"specify them manually."
+msgstr ""
+"<literal>hibernate.dialect</literal> プロパティには、使用するデータベースの正"
+"しい <literal>org.hibernate.dialect.Dialect</literal> のサブクラスを、必ず指"
+"定すべきです。しかし方言を指定すれば、 Hibernate は上述したプロパティのいくつ"
+"かについて、より適切なデフォルト値を使います。そうすれば、それらを手作業で設"
+"定する手間が省けます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr "DB2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "MySQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MySQL with InnoDB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "MySQL with MyISAM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle (いずれのバージョンでも)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.OracleDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr "Oracle 9i"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr "Oracle 10g"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Anywhere"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Microsoft SQL Server"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InformixDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.IngresDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progress"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Pointbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "FrontBase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "外部結合フェッチ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database. This is, "
+"however, at the cost of possibly more work performed by the database itself. "
+"Outer join fetching allows a whole graph of objects connected by many-to-"
+"one, one-to-many, many-to-many and one-to-one associations to be retrieved "
+"in a single SQL <literal>SELECT</literal>."
+msgstr ""
+"もしデータベースが ANSI か、 Oracle か Sybase スタイルの外部結合をサポートし"
+"ている場合、 <emphasis>outer join fetching</emphasis> は、データベースの SQL "
+"発行回数を節約しパフォーマンスを良くします(データベース内でより多くの処理コ"
+"ストが発生します)。外部結合フェッチは、多対一、一対多、多対多、一対一のオブ"
+"ジェクト関連でグループオブジェクトを1つの SQL で <literal>SELECT</literal> し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Outer join fetching can be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations that have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"<literal>hibernate.max_fetch_depth</literal> プロパティの値を <literal>0</"
+"literal> にすると外部結合フェッチを <emphasis>すべて</emphasis> 無効にするこ"
+"とになります。 <literal>1</literal> やそれ以上の値を設定すると、外部結合"
+"フェッチが有効になり、一対一と多対一関連が <literal>fetch=\"join\"</literal> "
+"としてマッピングされます。"
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+"さらに情報が見たければ <xref linkend=\"performance-fetching\"/> を参照してく"
+"ださい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "バイナリストリーム"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that can be passed "
+"to and/or from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle は JDBC ドライバとの間でやりとりされる <literal>byte</literal> 配列の"
+"サイズを制限します。 <literal>binary</literal> や <literal>serializable</"
+"literal> 型の大きなインスタンスを使いたければ、 <literal>hibernate.jdbc."
+"use_streams_for_binary</literal> を有効にしてください。 ただし <emphasis>これ"
+"はシステムレベルの設定だけです</emphasis> 。"
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "ニ次キャッシュとクエリキャッシュ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+"<literal>hibernate.cache</literal> プロパティ接頭辞は Hibernate でプロセスや"
+"クラスタ二次キャッシュを使うとことを許可します。<xref linkend=\"performance-"
+"cache\"/> により多くの詳細があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "クエリ言語の置き換え"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"<literal>hibernate.query.substitutions</literal> を使うことで、新しい "
+"Hibernate クエリトークンを定義できます。例:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would cause the tokens <literal>true</literal> and <literal>false</"
+"literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+"これはトークン <literal>true</literal> と <literal>false</literal> を、生成さ"
+"れる SQL において整数リテラルに翻訳します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr ""
+"これは SQL の <literal>LOWER</literal> 関数の名前の付け替えを可能にします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Hibernate 統計"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"exposes a number of metrics that are useful when tuning a running system via "
+"<literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"<literal>hibernate.generate_statistics</literal> を有効にした場合、動作してい"
+"るシステムをチューニングするときに、 <literal>SessionFactory.getStatistics()"
+"</literal> を経由して、 Hibernate は便利な統計情報を出力します。 JMX を経由し"
+"て統計情報を出力することも可能です。 Javadoc の <literal>org.hibernate."
+"stats</literal> パッケージ内のインターフェースにはより多くの情報があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "ロギング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J "
+"can direct your logging output to several logging frameworks (NOP, Simple, "
+"log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen "
+"binding. In order to setup logging you will need <filename>slf4j-api.jar</"
+"filename> in your classpath together with the jar file for your preferred "
+"binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See "
+"the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</"
+"ulink> for more detail. To use Log4j you will also need to place a "
+"<filename>log4j.properties</filename> file in your classpath. An example "
+"properties file is distributed with Hibernate in the <literal>src/</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"Hibernate のログメッセージに慣れることを強くおすすめします。 Hibernate のログ"
+"は読みやすく、できる限り詳細になるように努力されています。これは必須のトラブ"
+"ルシューティングデバイスです。以下に重要なログのカテゴリを示します:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Hibernate ログカテゴリ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "カテゴリ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "機能"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "<literal>org.hibernate.SQL</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "実行したすべての SQL(DDL)ステートメントをロギングします。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "<literal>org.hibernate.type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "すべての JDBC パラメータをロギングします。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "<literal>org.hibernate.tool. hbm2ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "実行したすべての SQL(DDL)ステートメントをロギングします。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "<literal>org.hibernate.pretty</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"session に関連するすべてのエンティティ(最大20)のフラッシュ時間をロギング"
+"します。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "<literal>org.hibernate.cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "すべてのニ次キャッシュの動作をロギングします。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "<literal>org.hibernate. transaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "トランザクションに関連する動作をロギングします。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "<literal>org.hibernate.jdbc</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "JDBC リソース取得をロギングします。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "<literal>org.hibernate.hql. ast.AST</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "HQL と SQL の AST のクエリパースをロギングします。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "<literal>org.hibernate.secure</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "すべての JAAS 分析をロギングします。"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "SessionFactory の JNDI への登録"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log everything. This is a lot of information but it is useful for "
+"troubleshooting"
+msgstr ""
+"すべてをロギングします。(情報が大量になりますが、トラブルシューティングには"
+"便利です)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Hibernate でアプリケーションを作成するときは、 <literal>org.hibernate.SQL</"
+"literal> カテゴリの <literal>debug</literal> を常に有効にしておいたほうが良い"
+"でしょう。代替方法として、 <literal>hibernate.show_sql</literal> プロパティを"
+"有効にする方法があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "<literal>NamingStrategy</literal> を選択"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"インターフェース <literal>net.sf.hibernate.cfg.NamingStrategy</literal> を使"
+"うとデータベースオブジェクトとスキーマ要素のための「命名標準」を指定できま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"Java の識別子からデータベースの識別子を自動生成するためのルールや、マッピング"
+"ファイルで与えた「論理的な」カラムとテーブル名から「物理的な」テーブルとカラ"
+"ム名を生成するためのルールを用意することができます。この機能は繰り返しの雑音"
+"(例えば <literal>TBL_</literal> プリフィックス)を取り除き、マッピングドキュ"
+"メントの冗長さを減らすことに役立ちます。 Hibernate が使うデフォルトの戦略はか"
+"なり最小限に近いものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"マッピングを追加する前に <literal>Configuration.setNamingStrategy()</"
+"literal> を呼ぶことで以下のように異なる戦略を指定することができます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> は組み込みの戦略"
+"です。これはいくつかのアプリケーションにとって有用な開始点となるかもしれませ"
+"ん。"
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "XML 設定ファイル"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"もう1つの方法は <literal>hibernate.cfg.xml</literal> という名前のファイルで十"
+"分な設定を指定する方法です。このファイルは <literal>hibernate.properties</"
+"literal> ファイルの代わりとなります。もし両方のファイルがあれば、プロパティが"
+"置き換えられます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root of your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"XML 設定ファイルは初期設定で <literal>CLASSPATH</literal> の root に配置して"
+"ください。これが例です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The advantage of this approach is the externalization of the mapping file "
+"names to configuration. The <literal>hibernate.cfg.xml</literal> is also "
+"more convenient once you have to tune the Hibernate cache. It is your choice "
+"to use either <literal>hibernate.properties</literal> or <literal>hibernate."
+"cfg.xml</literal>. Both are equivalent, except for the above mentioned "
+"benefits of using the XML syntax."
+msgstr ""
+"見てのとおり、この方法の優位性は設定のためのマッピングファイル名を外出しにで"
+"きることです。 Hibernate キャッシュをチューニングしなければならないのであれ"
+"ば、 <literal>hibernate.cfg.xml</literal> はより便利です。 "
+"<literal>hibernate.properties</literal> と <literal>hibernate.cfg.xml</"
+"literal> の どちらかを使えることを覚えておいてください。2つは同じもので、違う"
+"ところといえば XML 構文を使うことの利点だけです。"
+
+#. Tag: para
+#, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr "XML 設定を使うことで、 Hibernate は以下のようにシンプルになります。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "違う XML 設定ファイルを使うこともできます。"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "J2EE アプリケーションサーバーとの統合"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr "Hibernate は J2EE 構造と統合するポイントをサポートしています:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), especially distributed transaction handling across several "
+"datasources. You can also demarcate transaction boundaries programmatically "
+"(BMT), or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>コンテナ管理データソース</emphasis>: Hibernate は JNDI が提供し、"
+"コンテナが管理する JDBC コネクションを使用できます。通常、 JTA 準拠の "
+"<literal>TransactionManager</literal> と <literal>ResourceManager</literal> "
+"がトランザクション管理 (CMT)、特に様々なデータソースにまたがる分散トランザク"
+"ションを扱います。当然プログラムでトランザクション境界を指定できます (BMT)。"
+"あるいは、記述したコードのポータビリティを保つために、オプションの Hibernate "
+"の <literal>Transaction</literal> API を使いたくなるかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>自動 JNDI バインディング</emphasis>: Hibernate は JNDI が立ち上"
+"がった後に <literal>SessionFactory</literal> を生成します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</"
+"literal> can be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate manage flushing and closing the "
+"<literal>Session</literal> when your JTA transaction completes. Transaction "
+"demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis> JTA セッションバインディング</emphasis>: Hibernate "
+"<literal>Session</literal> は自動的に JTA トランザクションのスコープにバイン"
+"ドされます。単純に <literal>SessionFactory</literal> を JNDI から lookup し"
+"て、現在の <literal>Session</literal> を取得します。 JTA トランザクションが完"
+"了したときに、 Hibernateが <literal>Session</literal> をフラッシュし、クロー"
+"ズします。トランザクション境界は、宣言 (CMT) することも、プログラム (BMT/"
+"UserTransaction) することも可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> if you have a JMX capable application "
+"server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal> and also "
+"take care of service dependencies (datasource has to be available before "
+"Hibernate starts, etc)."
+msgstr ""
+"<emphasis> JMX デプロイメント:</emphasis> もし JMX が使用可能なアプリケーショ"
+"ンサーバー(例えば JBoss AS) がある場合、 Hibernate を MBean としてデプロイ"
+"することを選べます。これは <literal>Configuration</literal> から "
+"<literal>SessionFactory</literal> を生成するコードを無くすことができます。コ"
+"ンテナは <literal>HibernateService</literal> を起動し、サービスの依存を理想的"
+"に管理します(データソースは Hibernate やその他が起動する前に使用できるように"
+"しなければなりません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"環境に依存しますが、もしアプリケーションサーバーが \"connection containment"
+"\" の例外を出す場合、設定のオプション <literal>hibernate.connection."
+"aggressive_release</literal> を true にしてください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "トランザクション戦略設定"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly through a connection pool, you can begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"Hibernate <literal>Session</literal> API は、アーキテクチャ内のシステムの管轄"
+"であるあらゆるトランザクションに依存しません。もしコネクションプールの JDBC "
+"を直接使いたい場合、 JDBC API から トランザクションを呼ぶことができます。も"
+"し、 J2EE アプリケーションサーバーで動作させるなら、 Bean 管理トランザクショ"
+"ンを使い、必要に応じて <literal>UserTransaction</literal> を JTA API から呼ぶ"
+"ことになるでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"2つ(それ以上)の環境で互換性のあるコードを維持するために、オプションとして根"
+"本的なシステムをラッピングする Hibernate <literal>Transaction</literal> API "
+"を推奨します。 Hibernate 設定プロパティの <literal>hibernate.transaction."
+"factory_class</literal> を設定することで、ある特定の <literal>Transaction</"
+"literal> クラスのインスタンスを持つことができます。"
+
+#. Tag: para
+#, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "3つの基本的な(既にある)選択を挙げます:"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "データベース (JDBC) トランザクションに委譲します(デフォルト)"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"delegates to container-managed transactions if an existing transaction is "
+"underway in this context (for example, EJB session bean method). Otherwise, "
+"a new transaction is started and bean-managed transactions are used."
+msgstr ""
+"もし、このコンテキスト(例えば、 EJB セッション Bean メソッド)で進行中のトラ"
+"ンザクションが存在する場合、コンテナ管理トランザクションに委譲します。そうで"
+"ない場合は、新しいトランザクションが開始されており、 Bean 管理トランザクショ"
+"ンが使われます。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "コンテナ管理 JTA トランザクションに委譲します"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"自分自身のトランザクション戦略(例えば、 CORBA トランザクションサービス)を定"
+"義することもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some features in Hibernate (i.e., the second level cache, Contextual "
+"Sessions with JTA, etc.) require access to the JTA "
+"<literal>TransactionManager</literal> in a managed environment. In an "
+"application server, since J2EE does not standardize a single mechanism, you "
+"have to specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>:"
+msgstr ""
+"Hibernate のいくつかの機能(例えば、二次キャッシュ、 JTA によるコンテキスト"
+"セッション等)は管理された環境の中の JTA <literal>TransactionManager</"
+"literal> へのアクセスを要求します。 J2EE がひとつのメカニズムに規格化されてい"
+"ないので、アプリケーションサーバーにおいて、 Hibernateが "
+"<literal>TransactionManager</literal> のリファレンスを取得する方法を明確にす"
+"る必要があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "JTA トランザクションマネージャ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "Transaction Factory"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "Application Server"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. JBossTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. WeblogicTransactionManagerLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. WebSphereTransactionManagerLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. WebSphereExtendedJTATransactionLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. OrionTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. ResinTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. JOTMTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. JOnASTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. JRun4TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr ""
+"<literal>org.hibernate.transaction. BESTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "<literal>SessionFactory</literal> の JNDI への登録"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup function of the factory and create new <literal>Session</literal>s. "
+"This is not, however, related to a JNDI bound <literal>Datasource</literal>; "
+"both simply use the same registry."
+msgstr ""
+"JNDI に登録した Hibernate <literal>SessionFactory</literal> はファクトリの"
+"ルックアップと新しい <literal>Session</literal> の作成を簡易化します。これは "
+"JNDI に登録された <literal>Datasource</literal> には関連せず、両方とも単に同"
+"じ登録を使うことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. This is especially useful in environments with a "
+"read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+"もし <literal>SessionFactory</literal> を JNDI ネームスペースに登録したい場"
+"合、特別な名前(例えば、 <literal>java:hibernate/SessionFactory</literal> )"
+"を <literal>hibernate.session_factory_name</literal> プロパティに使ってくださ"
+"い。もしこのプロパティを省略した場合、 <literal>SessionFactory</literal> は "
+"JNDI に登録されません。(これは Tomcat のようなデフォルト実装で JNDI が読み取"
+"り専用の環境の場合は特に便利です。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"<literal>SessionFactory</literal> を JNDI に登録するとき、 Hibernate は "
+"<literal>hibernate.jndi.url</literal> の値を使用し、<literal>hibernate.jndi."
+"class</literal> をイニシャルコンテキストとして具体化します。もし何も設定しな"
+"い場合は、デフォルトの <literal>InitialContext</literal> を使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will have this call in some startup code, or utility class in your "
+"application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (this is discussed later in greater "
+"detail)."
+msgstr ""
+"<literal>cfg.buildSessionFactory()</literal> をコール後 Hibernate は自動的に "
+"<literal>SessionFactory</literal> を JNDI に配置します。 "
+"<literal>HibernateService</literal> と一緒に JMX デプロイメントを使わない限"
+"り、これはこの呼び出しをアプリケーション内の何らかのスタートアップコード(も"
+"しくはユーティリティクラス) に配置しなければならないことを意味します(後で議"
+"論します)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class, you can obtain the <literal>SessionFactory</literal> using a JNDI "
+"lookup."
+msgstr ""
+"もし JNDI <literal>SessionFactory</literal> を使う場合、 EJB や他のクラスは "
+"JNDI ルックアップを使って <literal>SessionFactory</literal> を取得します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you bind the <literal>SessionFactory</literal> to "
+"JNDI in a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate&mdash;see chapter 1."
+msgstr ""
+"管理された環境では <literal>SessionFactory</literal> を JNDI にバインドし、そ"
+"うでなければ <literal>static</literal> シングルトンを使うことを推奨します。こ"
+"ういった詳細からアプリケーションコードを保護するために、 "
+"<literal>HibernateUtil.getSessionFactory()</literal> のようなヘルパークラスの"
+"中に、 <literal>SessionFactory</literal> をルックアップするコードを隠すことを"
+"推奨します。このようなヘルパークラスは Hibernate を開始する便利な手段でもあり"
+"ます。 - 1章を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "JTA による現在のセッションコンテキストマネージメント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The easiest way to handle <literal>Sessions</literal> and transactions is "
+"Hibernate's automatic \"current\" <literal>Session</literal> management. For "
+"a discussion of contextual sessions see <xref linkend=\"architecture-current-"
+"session\" />. Using the <literal>\"jta\"</literal> session context, if there "
+"is no Hibernate <literal>Session</literal> associated with the current JTA "
+"transaction, one will be started and associated with that JTA transaction "
+"the first time you call <literal>sessionFactory.getCurrentSession()</"
+"literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> "
+"context are set to automatically flush before the transaction completes, "
+"close after the transaction completes, and aggressively release JDBC "
+"connections after each statement. This allows the <literal>Session</"
+"literal>s to be managed by the life cycle of the JTA transaction to which it "
+"is associated, keeping user code clean of such management concerns. Your "
+"code can either use JTA programmatically through <literal>UserTransaction</"
+"literal>, or (recommended for portable code) use the Hibernate "
+"<literal>Transaction</literal> API to set transaction boundaries. If you run "
+"in an EJB container, declarative transaction demarcation with CMT is "
+"preferred."
+msgstr ""
+"もっとも簡単に <literal>Session</literal> とトランザクションを扱う方法は、 "
+"Hibernate が自動的に「現在の」 <literal>Session</literal> を管理することで"
+"す。 <xref linkend=\"architecture-current-session\"/> カレントセッションの説"
+"明を参照してください。もし <literal>\"jta\"</literal> セッションコンテキスト"
+"を使った上で、現在の JTA トランザクションと Hibernate <literal>Session</"
+"literal> が関連していない場合は、最初に <literal>sessionFactory."
+"getCurrentSession()</literal> をコールし、 JTA トランザクションとの関連付けを"
+"行ってください。 <literal>\"jta\"</literal> コンテキストの "
+"<literal>getCurrentSession()</literal> を通じて取得した <literal>Session</"
+"literal> は、トランザクションが完了する前に自動的にフラッシュし、完了した後に"
+"は自動的にクローズします。また、各ステートメント後に JDBC コネクションを積極"
+"的にリリースします。これにより JTA トランザクションのライフサイクルで "
+"<literal>Session</literal> を管理することができ、ユーザーのコードからそのよう"
+"な管理をするコードを排除できます。 <literal>UserTransaction</literal> を通じ"
+"て JTA をプログラムで管理することができます。または、(ポータブルなコードであ"
+"れば) Hibernate <literal>Transaction</literal> API をトランザクション境界と"
+"して使うこともできます。 EJB コンテナを使うときは、 CMT による宣言的トランザ"
+"クション境界が好ましいです。"
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "JMX デプロイメント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block, like "
+"the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as "
+"a <emphasis>managed service</emphasis>."
+msgstr ""
+"<literal>SessionFactory</literal> を JNDI から取得するためには <literal>cfg."
+"buildSessionFactory()</literal> 行をどこかで実行していなければなりません。あ"
+"なたはこれを、 <literal>static</literal> 初期化ブロック内"
+"( <literal>HibernateUtil</literal> のような)か <emphasis>managed service</"
+"emphasis> として Hibernate をデプロイするか、どちらかで実行できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor-specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"JBoss AS のような JMX の機能でアプリケーションサーバーにデプロイするために "
+"<literal>org.hibernate.jmx.HibernateService</literal> を使って、配置します。"
+"実際のデプロイメントと設定はベンダー特有です。ここで例として JBoss 4.0.x 用"
+"の <literal>jboss-service.xml</literal> を示します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) can be "
+"kept in their own JAR file, but you can include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"このファイルは <literal>META-INF</literal> ディレクトリに配置され、 JAR ファ"
+"イルを拡張した <literal>.sar</literal> (service archive) でパッケージ化されま"
+"す。同様に Hibernate パッケージも必要です。また、 Hibernate はサードパーティ"
+"のライブラリも要求します。コンパイルした永続化クラスとそのマッピングファイル"
+"も同様にアーカイブ(.sarファイル)に入れます。エンタープライズ Bean (通常は"
+"セッション Bean )は自身の JAR ファイルを保持しますが、1回で(ホット)デプロ"
+"イ可能なユニットのためにメインサービスアーカイブとしてこの EJB JAR ファイルを"
+"含めることができます。 JBoss AS のドキュメントに JXM サービスと EJB デプロイ"
+"メントのより多くの情報があります。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");"
+
+#, fuzzy
+#~ msgid "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+#~ msgstr "SessionFactory sessions = cfg.buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sessions.openSession(); // open a new Session]]"
+#~ ">"
+#~ msgstr "Session session = sessions.openSession(); // open a new Session"
+
+#~ msgid "database user"
+#~ msgstr "データベースのユーザー"
+
+#~ msgid "database user password"
+#~ msgstr "データベースユーザーパスワード"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect"
+
+#~ msgid "datasource JNDI name"
+#~ msgstr "データソースの JNDI 名"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = \\\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = \\\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = &#92;\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = &#92;\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect"
+
+#~ msgid "<entry>DB2</entry>"
+#~ msgstr "<entry>DB2</entry>"
+
+#~ msgid "hibernate.query.substitutions true=1, false=0"
+#~ msgstr "hibernate.query.substitutions true=1, false=0"
+
+#~ msgid "hibernate.query.substitutions toLowercase=LOWER"
+#~ msgstr "hibernate.query.substitutions toLowercase=LOWER"
+
+#~ msgid "org.hibernate"
+#~ msgstr "org.hibernate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <!-- a SessionFactory instance listed as /jndi/name -->\n"
+#~ "    <session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\">\n"
+#~ "\n"
+#~ "        <!-- properties -->\n"
+#~ "        <property name=\"connection.datasource\">java:/comp/env/jdbc/"
+#~ "MyDB</property>\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+#~ "property>\n"
+#~ "        <property name=\"show_sql\">false</property>\n"
+#~ "        <property name=\"transaction.factory_class\">\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        </property>\n"
+#~ "        <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- mapping files -->\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+#~ "\n"
+#~ "        <!-- cache settings -->\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/>\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only"
+#~ "\"/>\n"
+#~ "        <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+#~ "usage=\"read-write\"/>\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version='1.0' encoding='utf-8'?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- a SessionFactory instance listed as /jndi/name --&gt;\n"
+#~ "    &lt;session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\"&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- properties --&gt;\n"
+#~ "        &lt;property name=\"connection.datasource\"&gt;java:/comp/env/"
+#~ "jdbc/MyDB&lt;/property&gt;\n"
+#~ "        &lt;property name=\"dialect\"&gt;org.hibernate.dialect."
+#~ "MySQLDialect&lt;/property&gt;\n"
+#~ "        &lt;property name=\"show_sql\"&gt;false&lt;/property&gt;\n"
+#~ "        &lt;property name=\"transaction.factory_class\"&gt;\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        &lt;/property&gt;\n"
+#~ "        &lt;property name=\"jta.UserTransaction\"&gt;java:comp/"
+#~ "UserTransaction&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- mapping files --&gt;\n"
+#~ "        &lt;mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/&gt;\n"
+#~ "        &lt;mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- cache settings --&gt;\n"
+#~ "        &lt;class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/&gt;\n"
+#~ "        &lt;class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-"
+#~ "only\"/&gt;\n"
+#~ "        &lt;collection-cache collection=\"org.hibernate.auction.Item.bids"
+#~ "\" usage=\"read-write\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration().configure()."
+#~ "buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration().configure().buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<server>\n"
+#~ "\n"
+#~ "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+#~ "\n"
+#~ "    <!-- Required services -->\n"
+#~ "    <depends>jboss.jca:service=RARDeployer</depends>\n"
+#~ "    <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+#~ "\n"
+#~ "    <!-- Bind the Hibernate service to JNDI -->\n"
+#~ "    <attribute name=\"JndiName\">java:/hibernate/SessionFactory</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Datasource settings -->\n"
+#~ "    <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+#~ "    <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Transaction integration -->\n"
+#~ "    <attribute name=\"TransactionStrategy\">\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+#~ "    <attribute name=\"TransactionManagerLookupStrategy\">\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup</"
+#~ "attribute>\n"
+#~ "    <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Fetching options -->\n"
+#~ "    <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+#~ "\n"
+#~ "    <!-- Second-level caching -->\n"
+#~ "    <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+#~ "EhCacheProvider</attribute>\n"
+#~ "    <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Logging -->\n"
+#~ "    <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Mapping files -->\n"
+#~ "    <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml</attribute>\n"
+#~ "\n"
+#~ "</mbean>\n"
+#~ "\n"
+#~ "</server>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;server&gt;\n"
+#~ "\n"
+#~ "&lt;mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Required services --&gt;\n"
+#~ "    &lt;depends&gt;jboss.jca:service=RARDeployer&lt;/depends&gt;\n"
+#~ "    &lt;depends&gt;jboss.jca:service=LocalTxCM,name=HsqlDS&lt;/"
+#~ "depends&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Bind the Hibernate service to JNDI --&gt;\n"
+#~ "    &lt;attribute name=\"JndiName\"&gt;java:/hibernate/SessionFactory&lt;/"
+#~ "attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Datasource settings --&gt;\n"
+#~ "    &lt;attribute name=\"Datasource\"&gt;java:HsqlDS&lt;/attribute&gt;\n"
+#~ "    &lt;attribute name=\"Dialect\"&gt;org.hibernate.dialect."
+#~ "HSQLDialect&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Transaction integration --&gt;\n"
+#~ "    &lt;attribute name=\"TransactionStrategy\"&gt;\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"TransactionManagerLookupStrategy\"&gt;\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"FlushBeforeCompletionEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"AutoCloseSessionEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Fetching options --&gt;\n"
+#~ "    &lt;attribute name=\"MaximumFetchDepth\"&gt;5&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Second-level caching --&gt;\n"
+#~ "    &lt;attribute name=\"SecondLevelCacheEnabled\"&gt;true&lt;/"
+#~ "attribute&gt;\n"
+#~ "    &lt;attribute name=\"CacheProviderClass\"&gt;org.hibernate.cache."
+#~ "EhCacheProvider&lt;/attribute&gt;\n"
+#~ "    &lt;attribute name=\"QueryCacheEnabled\"&gt;true&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Logging --&gt;\n"
+#~ "    &lt;attribute name=\"ShowSqlEnabled\"&gt;true&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "    &lt;!-- Mapping files --&gt;\n"
+#~ "    &lt;attribute name=\"MapResources\"&gt;auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml&lt;/attribute&gt;\n"
+#~ "\n"
+#~ "&lt;/mbean&gt;\n"
+#~ "\n"
+#~ "&lt;/server&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,560 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-01-13 11:47+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "インターセプタとイベント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"アプリケーションが Hibernate の内部で発生するイベントに対応できると役に立つこ"
+"とがあります。ある種の一般的な機能を実装できるようになり、また Hibernate の機"
+"能を拡張することもできるようになります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "インターセプタ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"<literal>Interceptor</literal> インターフェースを使って、セッションからアプリ"
+"ケーションへコールバックをすることができます。これにより永続オブジェクトの保"
+"存、更新、削除、読み込みの前に、アプリケーションがプロパティを検査したり操作"
+"したりできるようになります。これは監査情報の追跡に利用できます。下の例で "
+"<literal>Interceptor</literal> は <literal>Auditable</literal> が作成されると"
+"自動的に <literal>createTimestamp</literal> を設定し、 <literal>Auditable</"
+"literal> が更新されると自動的に <literal>lastUpdateTimestamp</literal> プロパ"
+"ティを更新します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"<literal>Interceptor</literal> を直接実装したり、 (さらによいのは) "
+"<literal>EmptyInterceptor</literal> を拡張したりできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"インターセプタには二種類あります: <literal>Session</literal> スコープのもの"
+"と <literal>SessionFactory</literal> スコープのものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"<literal>Session</literal> スコープのインターセプタは、セッションをオープンす"
+"るときに指定します。 <literal>Interceptor</literal> を引数に取る "
+"SessionFactory.openSession() のオーバーロードメソッドの一つを使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"<literal>SessionFactory</literal> スコープのインターセプタは "
+"<literal>Configuration</literal> オブジェクトを使って登録します。これは "
+"<literal>SessionFactory</literal> の構築よりも優先されます。この場合、提供さ"
+"れるインターセプタは <literal>SessionFactory</literal> からオープンされたすべ"
+"てのセッションに適用されます。これは使用するインターセプタを明示的に指定して"
+"セッションをオープンしない限り、そうなります。 <literal>SessionFactory</"
+"literal> スコープのインターセプタはスレッドセーフでなければなりません。複数の"
+"セッションが (潜在的に) このインターセプタを同時並行で使用することになるた"
+"め、セッション固有の状態を格納しないように気をつけてください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "イベントシステム"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"永続化層で特定のイベントに対応しなければならない場合、 Hibernate3 の "
+"<emphasis>イベント</emphasis> アーキテクチャを使うこともできます。イベントシ"
+"ステムはインターセプタと一緒に使うか、またはインターセプタの代わりとして使う"
+"ことができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"本質的に <literal>Session</literal> インターフェースのすべてのメソッドは、1個"
+"のイベントと相互に関連します。例えば <literal>LoadEvent</literal> 、 "
+"<literal>FlushEvent</literal> などがあります (定義済みのイベント型の一覧につ"
+"いては、 XML 設定ファイルの DTD や <literal>org.hibernate.event</literal> "
+"パッケージを調べてください) 。リクエストがこれらのメソッドの1つから作られる"
+"とき、 Hibernate の <literal>Session</literal> は適切なイベントを生成し、その"
+"イベント型に設定されたイベントリスナに渡します。すばらしいことに、これらのリ"
+"スナはそのメソッドと同じ処理を実装します。とはいえ、リスナインターフェースの"
+"一つを自由にカスタム実装できます (つまり、 <literal>LoadEvent</literal> は登"
+"録された <literal>LoadEventListener</literal> インターフェースの実装により処"
+"理されます)。その場合、その実装には <literal>Session</literal> から作られた"
+"どのような <literal>load()</literal> リクエストをも処理する責任があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"リスナは事実上シングルトンであると見なせます。つまりリスナはリクエスト間で共"
+"有されるため、インスタンス変数として状態を保持するべきではないということで"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"カスタムリスナは処理したいイベントについて適切なインターフェースを実装するべ"
+"きです。便利な基底クラスのうちの一つを継承してもよいです (または Hibernate "
+"がデフォルトで使用するイベントリスナを継承してもよいです。すばらしいことに、"
+"この目的のために非 final として宣言されています) 。カスタムリスナは "
+"<literal>Configuration</literal> オブジェクトを使ってプログラムから登録する"
+"か、 Hibernate の XML 設定ファイルで指定できます (プロパティファイルで宣言的"
+"に設定する方法はサポートされていません) 。カスタムロードイベントリスナの例を"
+"示します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"デフォルトリスナ以外のリスナを使うには、 Hibernate への設定も必要です:"
+
+#. Tag: para
+#, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "またその他に、プログラムで登録する方法もあります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"リスナを宣言的に登録すると、そのリスナのインスタンスを共有できません。複数の "
+"<literal>&lt;listener/&gt;</literal> 要素で同じクラス名が使われると、それぞれ"
+"の参照はそのクラスの別々のインスタンスを指すことになります。リスナ型の間でリ"
+"スナインスタンスを共有する必要があれば、プログラムで登録する方法を採らなけれ"
+"ばなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"なぜインターフェースを実装して、特化した型を設定時に指定するのでしょうか?リ"
+"スナの実装クラスに、複数のイベントリスナインターフェースを実装できるからで"
+"す。登録時に追加で型を指定することで、カスタムリスナの on/off を設定時に簡単"
+"に切り替えられます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Hibernate の宣言的なセキュリティ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"一般的に Hibernate アプリケーションの宣言的なセキュリティは、セッションファ"
+"サード層で管理します。現在、 Hiberenate3 は JACC で許可し、さらに JAAS で認証"
+"したアクションを許しています。これはイベントアーキテクチャの最上位に組み込ま"
+"れているオプションの機能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"まず最初に、適切なイベントリスナを設定して JAAS 認証を使えるようにしなければ"
+"なりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"特定のイベント型に対してちょうど一つのリスナがあるとき、 <literal>&lt;"
+"listener type=\"...\" class=\"...\"/&gt;</literal> は <literal>&lt;event "
+"type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/event&gt;</literal> の簡"
+"略形に過ぎないことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"次に、同じく <literal>hibernate.cfg.xml</literal> でロールにパーミッションを"
+"与えてください:"
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr "このロール名は使用する JACC プロバイダに理解されるロールです。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i &lt; propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i&lt;propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates,\n"
+#~ "                \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#~ msgstr "Session session = sf.openSession( new AuditInterceptor() );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#~ msgstr "new Configuration().setInterceptor( new AuditInterceptor() );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "    &lt;session-factory&gt;\n"
+#~ "        ...\n"
+#~ "        &lt;event type=\"load\"&gt;\n"
+#~ "            &lt;listener class=\"com.eg.MyLoadListener\"/&gt;\n"
+#~ "            &lt;listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/&gt;\n"
+#~ "        &lt;/event&gt;\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+#~ msgstr ""
+#~ "&lt;listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/&gt;\n"
+#~ "&lt;listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+#~ msgstr ""
+#~ "&lt;grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read"
+#~ "\"/&gt;\n"
+#~ "&lt;grant role=\"su\" entity-name=\"User\" actions=\"*\"/&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1273 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-01-20 15:40+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "例: いろいろなマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr "この章では、より複雑な関連のマッピングをいくつか紹介します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "雇用者/従業員"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"<literal>Employer</literal> と <literal>Employee</literal> の関係を表す以下の"
+"モデルは、関連の表現に実際のエンティティクラス ( <literal>Employment</"
+"literal> ) を使います。なぜなら、同じ2つのパーティに複数の期間雇用されるとい"
+"うことがありえるからです。お金の値と従業員の名前をモデル化するためにコンポー"
+"ネントを使っています。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "マッピングドキュメントの一例です:"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr "<literal>SchemaExport</literal> で生成したテーブルスキーマです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "作者/作品"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"<literal>Work</literal> 、 <literal>Author</literal> そして <literal>Person</"
+"literal> の関係を表す以下のモデルを考えてみてください。 <literal>Work</"
+"literal> と <literal>Author</literal> の関係を多対多関連で表しています。 "
+"<literal>Author</literal> と <literal>Person</literal> の関係は一対一関連とし"
+"て表しています。他には <literal>Author</literal> が <literal>Person</"
+"literal> を拡張するという方法もあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr "以下のマッピングドキュメントはこのような関係を正確に表現しています:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"このマッピングには4つのテーブルがあります。 <literal>works</literal> 、 "
+"<literal>authors</literal> , <literal>persons</literal> はそれぞれ、仕事、作"
+"者、人のデータを保持します。 <literal>author_work</literal> は作者と作品をリ"
+"ンクする関連テーブルです。以下は <literal>SchemaExport</literal> で生成した"
+"テーブルスキーマです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "顧客/注文/製品"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"さて、 <literal>Customer</literal> 、 <literal>Order</literal> 、 "
+"<literal>LineItem</literal> 、 <literal>Product</literal> の関係を表すモデル"
+"を考えてみましょう。 <literal>Customer</literal> と <literal>Order</literal> "
+"は一対多の関連ですが、 <literal>Order</literal> / <literal>LineItem</"
+"literal> / <literal>Product</literal> はどのように表現するべきでしょうか? "
+"<literal>LineItem</literal> を、 <literal>Order</literal> と "
+"<literal>Product</literal> の多対多関連を表現する関連クラスとしてマッピングし"
+"ました。 Hibernate ではこれをコンポジット要素と呼びます。"
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "マッピングドキュメント:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal> 、 <literal>orders</literal> 、 "
+"<literal>line_items</literal> 、 <literal>products</literal> はそれぞれ、顧"
+"客、注文、注文明細、製品のデータを保持します。 <literal>line_items</literal> "
+"は注文と製品をリンクする関連テーブルとしても働きます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "種々雑多なマッピング例"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"ここにある例はすべて Hibernate のテストスイートから取りました。そこには、他に"
+"もたくさんのマッピングの例があります。 Hibernate ディストリビューションの "
+"<literal>test</literal> フォルダを見てください。"
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "「型付けされた」一対一関連"
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "複合キーの例"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr "複合キー属性を共有する多対多"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "discrimination に基づく内容"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "代替キーの関連"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "        \n"
+#~ "    &lt;class name=\"Employer\" table=\"employers\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employer_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Employment\" table=\"employment_periods\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employment_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"startDate\" column=\"start_date\"/&gt;\n"
+#~ "        &lt;property name=\"endDate\" column=\"end_date\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;component name=\"hourlyRate\" class=\"MonetaryAmount\"&gt;\n"
+#~ "            &lt;property name=\"amount\"&gt;\n"
+#~ "                &lt;column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)"
+#~ "\"/&gt;\n"
+#~ "            &lt;/property&gt;\n"
+#~ "            &lt;property name=\"currency\" length=\"12\"/&gt;\n"
+#~ "        &lt;/component&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Employee\" table=\"employees\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"&gt;\n"
+#~ "                &lt;param name=\"sequence\"&gt;employee_id_seq&lt;/"
+#~ "param&gt;\n"
+#~ "            &lt;/generator&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"taxfileNumber\"/&gt;\n"
+#~ "        &lt;component name=\"name\" class=\"Name\"&gt;\n"
+#~ "            &lt;property name=\"firstName\"/&gt;\n"
+#~ "            &lt;property name=\"initial\"/&gt;\n"
+#~ "            &lt;property name=\"lastName\"/&gt;\n"
+#~ "        &lt;/component&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+#~ msgstr ""
+#~ "create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Work\" table=\"works\" discriminator-value=\"W"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;discriminator column=\"type\" type=\"character\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"title\"/&gt;\n"
+#~ "        &lt;set name=\"authors\" table=\"author_work\"&gt;\n"
+#~ "            &lt;key column name=\"work_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Author\" column name=\"author_id\"/"
+#~ "&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "\n"
+#~ "        &lt;subclass name=\"Book\" discriminator-value=\"B\"&gt;\n"
+#~ "            &lt;property name=\"text\"/&gt;\n"
+#~ "        &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "        &lt;subclass name=\"Song\" discriminator-value=\"S\"&gt;\n"
+#~ "            &lt;property name=\"tempo\"/&gt;\n"
+#~ "            &lt;property name=\"genre\"/&gt;\n"
+#~ "        &lt;/subclass&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Author\" table=\"authors\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;!-- The Author must have the same identifier as the "
+#~ "Person --&gt;\n"
+#~ "            &lt;generator class=\"assigned\"/&gt; \n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"alias\"/&gt;\n"
+#~ "        &lt;one-to-one name=\"person\" constrained=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;set name=\"works\" table=\"author_work\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "            &lt;key column=\"author_id\"/&gt;\n"
+#~ "            &lt;many-to-many class=\"Work\" column=\"work_id\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Person\" table=\"persons\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+#~ msgstr ""
+#~ "create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Customer\" table=\"customers\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;set name=\"orders\" inverse=\"true\"&gt;\n"
+#~ "            &lt;key column=\"customer_id\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "        &lt;/set&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Order\" table=\"orders\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"date\"/&gt;\n"
+#~ "        &lt;many-to-one name=\"customer\" column=\"customer_id\"/&gt;\n"
+#~ "        &lt;list name=\"lineItems\" table=\"line_items\"&gt;\n"
+#~ "            &lt;key column=\"order_id\"/&gt;\n"
+#~ "            &lt;list-index column=\"line_number\"/&gt;\n"
+#~ "            &lt;composite-element class=\"LineItem\"&gt;\n"
+#~ "                &lt;property name=\"quantity\"/&gt;\n"
+#~ "                &lt;many-to-one name=\"product\" column=\"product_id\"/"
+#~ "&gt;\n"
+#~ "            &lt;/composite-element&gt;\n"
+#~ "        &lt;/list&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"Product\" table=\"products\"&gt;\n"
+#~ "        &lt;id name=\"id\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"serialNumber\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+#~ msgstr ""
+#~ "create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references orders"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"name\"/&gt;\n"
+#~ "    &lt;one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "        &lt;formula&gt;name&lt;/formula&gt;\n"
+#~ "        &lt;formula&gt;'HOME'&lt;/formula&gt;\n"
+#~ "    &lt;/one-to-one&gt;\n"
+#~ "    &lt;one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "        &lt;formula&gt;name&lt;/formula&gt;\n"
+#~ "        &lt;formula&gt;'MAILING'&lt;/formula&gt;\n"
+#~ "    &lt;/one-to-one&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/&gt;\n"
+#~ "        &lt;key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;property name=\"street\" type=\"text\"/&gt;\n"
+#~ "    &lt;property name=\"state\"/&gt;\n"
+#~ "    &lt;property name=\"zip\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"customerId\"\n"
+#~ "        length=\"10\"&gt;\n"
+#~ "        &lt;generator class=\"assigned\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\" length=\"100\"/&gt;\n"
+#~ "    &lt;property name=\"address\" not-null=\"true\" length=\"200\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\"&gt;\n"
+#~ "        &lt;key column=\"customerId\"/&gt;\n"
+#~ "        &lt;index column=\"orderNumber\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "    &lt;/list&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\"&gt;\n"
+#~ "    &lt;synchronize table=\"LineItem\"/&gt;\n"
+#~ "    &lt;synchronize table=\"Product\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" \n"
+#~ "            class=\"Order&#36;Id\"&gt;\n"
+#~ "        &lt;key-property name=\"customerId\" length=\"10\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderNumber\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"total\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "        \n"
+#~ "    &lt;bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"customerId\"/&gt;\n"
+#~ "            &lt;column name=\"orderNumber\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;one-to-many class=\"LineItem\"/&gt;\n"
+#~ "    &lt;/bag&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;class name=\"LineItem\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" \n"
+#~ "            class=\"LineItem&#36;Id\"&gt;\n"
+#~ "        &lt;key-property name=\"customerId\" length=\"10\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderNumber\"/&gt;\n"
+#~ "        &lt;key-property name=\"productId\" length=\"10\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"quantity\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "        &lt;column name=\"orderNumber\"/&gt;\n"
+#~ "    &lt;/many-to-one&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/&gt;\n"
+#~ "        \n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Product\"&gt;\n"
+#~ "    &lt;synchronize table=\"LineItem\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"productId\"\n"
+#~ "        length=\"10\"&gt;\n"
+#~ "        &lt;generator class=\"assigned\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/&gt;\n"
+#~ "    &lt;property name=\"price\" length=\"3\"/&gt;\n"
+#~ "    &lt;property name=\"numberAvailable\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"numberOrdered\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/property&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"User\" table=\"`User`\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"name\"/&gt;\n"
+#~ "        &lt;key-property name=\"org\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;set name=\"groups\" table=\"UserGroup\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"userName\"/&gt;\n"
+#~ "            &lt;column name=\"org\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;many-to-many class=\"Group\"&gt;\n"
+#~ "            &lt;column name=\"groupName\"/&gt;\n"
+#~ "            &lt;formula&gt;org&lt;/formula&gt;\n"
+#~ "        &lt;/many-to-many&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;class name=\"Group\" table=\"`Group`\"&gt;\n"
+#~ "    &lt;composite-id&gt;\n"
+#~ "        &lt;key-property name=\"name\"/&gt;\n"
+#~ "        &lt;key-property name=\"org\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    &lt;property name=\"description\"/&gt;\n"
+#~ "    &lt;set name=\"users\" table=\"UserGroup\" inverse=\"true\"&gt;\n"
+#~ "        &lt;key&gt;\n"
+#~ "            &lt;column name=\"groupName\"/&gt;\n"
+#~ "            &lt;column name=\"org\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;many-to-many class=\"User\"&gt;\n"
+#~ "            &lt;column name=\"userName\"/&gt;\n"
+#~ "            &lt;formula&gt;org&lt;/formula&gt;\n"
+#~ "        &lt;/many-to-many&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    &lt;discriminator \n"
+#~ "        type=\"character\"&gt;\n"
+#~ "        &lt;formula&gt;\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        &lt;/formula&gt;\n"
+#~ "    &lt;/discriminator&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/&gt;\n"
+#~ "        \n"
+#~ "    &lt;property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;component name=\"address\"&gt;\n"
+#~ "        &lt;property name=\"address\"/&gt;\n"
+#~ "        &lt;property name=\"zip\"/&gt;\n"
+#~ "        &lt;property name=\"country\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "    \n"
+#~ "    &lt;subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\"&gt;\n"
+#~ "            &lt;property name=\"title\"\n"
+#~ "                length=\"20\"/&gt;\n"
+#~ "            &lt;property name=\"salary\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"manager\"/&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    \n"
+#~ "    &lt;subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\"&gt;\n"
+#~ "            &lt;property name=\"comments\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"salesperson\"/&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"name\" length=\"100\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;set name=\"accounts\" \n"
+#~ "        inverse=\"true\"&gt;\n"
+#~ "        &lt;key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Account\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"userId\" length=\"8\"/&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Address\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;property name=\"address\" length=\"300\"/&gt;\n"
+#~ "    &lt;property name=\"zip\" length=\"5\"/&gt;\n"
+#~ "    &lt;property name=\"country\" length=\"25\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/"
+#~ "&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Account\"&gt;\n"
+#~ "    &lt;id name=\"accountId\" length=\"32\"&gt;\n"
+#~ "        &lt;generator class=\"uuid\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"type\" not-null=\"true\"/&gt;\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,602 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-01-20 15:29+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "例: 親/子供"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the first things that new users want to do with Hibernate is to model "
+"a parent/child type relationship. There are two different approaches to "
+"this. The most convenient approach, especially for new users, is to model "
+"both <literal>Parent</literal> and <literal>Child</literal> as entity "
+"classes with a <literal>&lt;one-to-many&gt;</literal> association from "
+"<literal>Parent</literal> to <literal>Child</literal>. The alternative "
+"approach is to declare the <literal>Child</literal> as a <literal>&lt;"
+"composite-element&gt;</literal>. The default semantics of a one-to-many "
+"association in Hibernate are much less close to the usual semantics of a "
+"parent/child relationship than those of a composite element mapping. We will "
+"explain how to use a <emphasis>bidirectional one-to-many association with "
+"cascades</emphasis> to model a parent/child relationship efficiently and "
+"elegantly."
+msgstr ""
+"新規ユーザーが Hibernate を使ってまず最初に扱うモデルの一つに、親子型のモデル"
+"化があります。このモデル化には二つのアプローチが存在します。とりわけ新規ユー"
+"ザーにとって、さまざまな理由から最も便利だと思われるアプローチは、 <literal>"
+"親</literal> から <literal>子供</literal> への <literal>&lt;one-to-many&gt;</"
+"literal> 関連により <literal>親</literal> と <literal>子供</literal> の両方を"
+"エンティティクラスとしてモデリングする方法です(もう一つの方法は、 <literal>"
+"子供</literal> を <literal>&lt;composite-element&gt;</literal> として定義する"
+"ものです)。これで( Hibernate における)一対多関連のデフォルトのセマンティク"
+"スが、通常の複合要素のマッピングよりも、親子関係のセマンティクスから遠いこと"
+"がわかります。それでは親子関係を効率的かつエレガントにモデリングするために、 "
+"<emphasis>カスケード操作を使った双方向一対多関連</emphasis> の扱い方を説明し"
+"ます。これはまったく難しいものではありません。"
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "コレクションに関する注意"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity and not of the contained entities. Be aware that this is a critical "
+"distinction that has the following consequences:"
+msgstr ""
+"Hibernate のコレクションは自身のエンティティの論理的な部分と考えられ、決して"
+"包含するエンティティのものではありません。これは致命的な違いです。これは以下"
+"のような結果になります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When you remove/add an object from/to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"オブジェクトをコレクションから削除、またはコレクションに追加するとき、コレク"
+"ションのオーナーのバージョン番号はインクリメントされます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (e.g. a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"もしコレクションから削除されたオブジェクトが値型のインスタンス(例えばコンポ"
+"ジットエレメント) だったならば、そのオブジェクトは永続的ではなくなり、その状"
+"態はデータベースから完全に削除されます。同じように、値型のインスタンスをコレ"
+"クションに追加すると、その状態はすぐに永続的になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Conversely, if an entity is removed from a collection (a one-to-many or many-"
+"to-many association), it will not be deleted by default. This behavior is "
+"completely consistent; a change to the internal state of another entity "
+"should not cause the associated entity to vanish. Likewise, adding an entity "
+"to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+"一方、もしエンティティがコレクション(一対多または多対多関連) から削除されて"
+"も、デフォルトではそれは削除されません。この動作は完全に一貫しています。すな"
+"わち、他のエンティティの内部状態を変更しても、関連するエンティティが消滅すべ"
+"きではないということです。同様に、エンティティがコレクションに追加されても、"
+"デフォルトではそのエンティティは永続的にはなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Adding an entity to a collection, by default, merely creates a link between "
+"the two entities. Removing the entity will remove the link. This is "
+"appropriate for all sorts of cases. However, it is not appropriate in the "
+"case of a parent/child relationship. In this case, the life of the child is "
+"bound to the life cycle of the parent."
+msgstr ""
+"その代わりに、デフォルトの動作では、エンティティをコレクションに追加すると単"
+"に二つのエンティティ間のリンクを作成し、一方エンティティを削除するとリンクも"
+"削除します。これはすべてのケースにおいて非常に適切です。これが適切でないのは"
+"親/子関係の場合です。この場合子供の生存は親のライフサイクルに制限されるからで"
+"す。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "双方向一対多"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"<literal>Parent</literal> から <literal>Child</literal> への単純な "
+"<literal>&lt;one-to-many&gt;</literal> 関連から始めるとします。"
+
+#. Tag: para
+#, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "以下のコードを実行すると、"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "Hibernate は二つの SQL 文を発行します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+"<literal>c</literal> に対するレコードを生成する <literal>INSERT</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"<literal>p</literal> から <literal>c</literal> へのリンクを作成する "
+"<literal>UPDATE</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. You can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"これは非効率的なだけではなく、 <literal>parent_id</literal> カラムにおいて "
+"<literal>NOT NULL</literal> 制約に違反します。コレクションのマッピングで "
+"<literal>not-null=\"true\"</literal> と指定することで、 null 制約違反を解決す"
+"ることができます:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "しかしこの解決策は推奨できません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The underlying cause of this behavior is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. The "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"この動作の根本的な原因は、 <literal>p</literal> から <literal>c</literal> へ"
+"のリンク(外部キー <literal>parent_id</literal>) は <literal>Child</literal> "
+"オブジェクトの状態の一部とは考えられず、そのため <literal>INSERT</literal> に"
+"よってリンクが生成されないことです。ですから、解決策はリンクを Child マッピン"
+"グの一部にすることです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class."
+msgstr ""
+"(また <literal>Child</literal> クラスに <literal>parent</literal> プロパティ"
+"を追加する必要があります。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute to do this:"
+msgstr ""
+"それでは <literal>Child</literal> エンティティがリンクの状態を制御するように"
+"なったので、コレクションがリンクを更新しないようにしましょう。それには "
+"<literal>inverse</literal> 属性を使います。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+"以下のコードを使えば、新しい <literal>Child</literal> を追加することができま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr ""
+"これにより、 SQL の <literal>INSERT</literal> 文が一つだけが発行されるように"
+"なりました。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You could also create an <literal>addChild()</literal> method of "
+"<literal>Parent</literal>."
+msgstr ""
+"もう少し強化するには、 <literal>Parent</literal> の <literal>addChild()</"
+"literal> メソッドを作成します。"
+
+#. Tag: para
+#, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr "<literal>Child</literal> を追加するコードはこのようになります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr "ライフサイクルのカスケード"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can address the frustrations of the explicit call to <literal>save()</"
+"literal> by using cascades."
+msgstr ""
+"明示的に <literal>save()</literal> をコールするのはまだ煩わしいものです。これ"
+"をカスケードを使って対処します。"
+
+#. Tag: para
+#, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "これにより先ほどのコードをこのように単純化します"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, we do not need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"同様に <literal>Parent</literal> を保存または削除するときに、子供を一つ一つ取"
+"り出して扱う必要はありません。以下のコードは <literal>p</literal> を削除し、"
+"そしてデータベースからその子供をすべて削除します。"
+
+#. Tag: para
+#, no-c-format
+msgid "However, the following code:"
+msgstr "しかしこのコードは"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database. In this case, it "
+"will only remove the link to <literal>p</literal> and cause a <literal>NOT "
+"NULL</literal> constraint violation. You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"データベースから <literal>c</literal> を削除しません。 <literal>p</literal> "
+"へのリンクを削除する(そしてこのケースでは <literal>NOT NULL</literal> 制約違"
+"反を引き起こす)だけです。 <literal>Child</literal> の <literal>delete()</"
+"literal> を明示する必要があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In our case, a <literal>Child</literal> cannot exist without its parent. So "
+"if we remove a <literal>Child</literal> from the collection, we do want it "
+"to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan"
+"\"</literal>."
+msgstr ""
+"今このケースでは実際に <literal>Child</literal> が親なしでは存在できないよう"
+"になりました。そのため、もしコレクションから <literal>Child</literal> を取り"
+"除く場合、これも削除します。そのためには <literal>cascade=\"all-delete-orphan"
+"\"</literal> を使わなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though the collection mapping specifies <literal>inverse=\"true\"</"
+"literal>, cascades are still processed by iterating the collection elements. "
+"If you need an object be saved, deleted or updated by cascade, you must add "
+"it to the collection. It is not enough to simply call <literal>setParent()</"
+"literal>."
+msgstr ""
+"注記:コレクションのマッピングで <literal>inverse=\"true\"</literal> と指定し"
+"ても、コレクションの要素のイテレーションによって、依然カスケードが実行されま"
+"す。そのため、もしカスケードでオブジェクトをセーブ、削除、更新する必要がある"
+"なら、それをコレクションに追加しなければなりません。単に <literal>setParent()"
+"</literal> を呼ぶだけでは不十分です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "カスケードと unsaved-value"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wanted to persist these "
+"changes in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of children and, since "
+"the cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. We "
+"will also assume that both <literal>Parent</literal> and <literal>Child</"
+"literal> have generated identifier properties of type <literal>Long</"
+"literal>. Hibernate will use the identifier and version/timestamp property "
+"value to determine which of the children are new. (See <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer "
+"necessary to specify an <literal>unsaved-value</literal> explicitly.</"
+"emphasis>"
+msgstr ""
+"<literal>Parent</literal> が、ある <literal>Session</literal> でロードされ、 "
+"UI のアクションで変更が加えられ、 <literal>update()</literal> を呼んでこの変"
+"更を新しいセッションで永続化したいとします。 <literal>Parent</literal> が子供"
+"のコレクションを持ち、カスケード更新が有効になっているため、 Hibernate はどの"
+"子供が新しくインスタンス化されたか、どれがデータベースの既存の行に相当するの"
+"かを知る必要があります。 <literal>Parent</literal> と <literal>Child</"
+"literal> の両方が <literal>Long</literal> 型の識別プロパティを生成したとしま"
+"しょう。 Hibernate はどの子供が新しいものかを決定するために識別プロパティの値"
+"を使います (<xref linkend=\"objectstate-saveorupdate\"/> 参照)。 "
+"<emphasis>Hibernate3 になって、明示的に <literal>unsaved-value</literal> を指"
+"定する必要はなくなりました。</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>:"
+msgstr ""
+"以下のコードは <literal>parent</literal> と <literal>child</literal> を更新"
+"し、 <literal>newChild</literal> を挿入します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This may be suitable for the case of a generated identifier, but what about "
+"assigned identifiers and composite identifiers? This is more difficult, "
+"since Hibernate cannot use the identifier property to distinguish between a "
+"newly instantiated object, with an identifier assigned by the user, and an "
+"object loaded in a previous session. In this case, Hibernate will either use "
+"the timestamp or version property, or will actually query the second-level "
+"cache or, worst case, the database, to see if the row exists."
+msgstr ""
+"これらは生成された識別子の場合には非常に良いのですが、割り当てられた識別子と"
+"複合識別子の場合はどうでしょうか?これは Hibernate が、(ユーザーにより割り当"
+"てられた識別子を持つ)新しくインスタンス化されたオブジェクトと、以前の "
+"Session でロードされたオブジェクトを区別できないため、より難しいです。この場"
+"合、 Hibernate はタイムスタンプかバージョンのプロパティのどちらかを使うか、二"
+"次キャッシュに問い合わせます。最悪の場合、行が存在するかどうかデータベースを"
+"見ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "結論"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The sections we have just covered can be a bit confusing. However, in "
+"practice, it all works out nicely. Most Hibernate applications use the "
+"parent/child pattern in many places."
+msgstr ""
+"ここではかなりの量を要約したので、最初の頃は混乱しているように思われるかもし"
+"れません。しかし実際は、すべて非常に良く動作します。ほとんどの Hibernate アプ"
+"リケーションでは、多くの場面で親子パターンを使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
+"which have exactly the semantics of a parent/child relationship. "
+"Unfortunately, there are two big limitations with composite element classes: "
+"composite elements cannot own collections and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"最初の段落で代替方法について触れました。上記のような問題は <literal>&lt;"
+"composite-element&gt;</literal> マッピングの場合は存在せず、にもかかわらずそ"
+"れは確かに親子関係のセマンティクスを持ちます。しかし残念ながら、複合要素クラ"
+"スには2つの大きな制限があります: 1つは複合要素はコレクションを持つことがで"
+"きないことです。もうひとつは、ユニークな親ではないエンティティの子供となるべ"
+"きではないということです"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\" cascade=\"all\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-"
+#~ "orphan\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
+#~ "\"&gt;\n"
+#~ "    &lt;key column=\"parent_id\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Child\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,863 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-01-20 15:34+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "例: Weblog アプリケーション"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "永続クラス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"永続クラスがウェブログと、ウェブログに掲示された項目を表しています。それらは"
+"通常の親子関係としてモデリングされますが、 set ではなく順序を持った bag を使"
+"用することにします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Hibernate のマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "XML マッピングは、今ではとても簡単なはずです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Hibernate のコード"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr ""
+"以下のクラスは、 Hibernate でこれらのクラスを使ってできるいくつかのことを示し"
+"ています。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "    &lt;class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\"&gt;\n"
+#~ "\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "\n"
+#~ "            &lt;key column=\"BLOG_ID\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"BlogItem\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/bag&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "    &lt;class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\"&gt;\n"
+#~ "\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime &gt; :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,324 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-01-18 15:28+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "データのフィルタリング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3 では「可視性」ルールに基づいてデータを扱うための画期的な方法を用意"
+"しています。 <emphasis>Hibernate filter</emphasis> はグローバルで、名前付き"
+"で、パラメータ化されたフィルタです。これは Hibernate セッションごとに有効無効"
+"を切り替えられます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Hibernate のフィルタ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"Hibernate3 はフィルタクライテリアをあらかじめ定義し、これらのフィルタをクラス"
+"やコレクションレベルに加える機能を加えました。フィルタクライテリアは制約節を"
+"定義する機能です。これらのフィルタ条件はパラメータ化できるということを除き、"
+"クラスやさまざまなコレクション要素で利用可能な 「where」 句に非常によく似ていま"
+"す。アプリケーションは、与えられたフィルタを可能にすべきか、そしてそのパラ"
+"メータ値を何にすべきかを実行時に決定することができます。フィルタはデータベー"
+"スビューのように使用されますが、アプリケーション内ではパラメータ化されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"フィルタを使うためにはまず、適切なマッピング要素に定義、追加しなくてはなりま"
+"せん。フィルタを定義するためには、 <literal>&lt;hibernate-mapping/&gt;</"
+"literal> 要素内で <literal>&lt;filter-def/&gt;</literal> 要素を使用します:"
+
+#. Tag: para
+#, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "そうしてフィルタはクラスへと結び付けられます:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to a collection:"
+msgstr "また、コレクションに対しては次のようになります:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "どちらに対しても (また、それぞれを複数) 同時に設定することもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"<literal>Session</literal> 上のメソッドは <literal>enableFilter(String "
+"filterName)</literal>、 <literal>getEnabledFilter(String filterName)</"
+"literal>、 <literal>disableFilter(String filterName)</literal> です。デフォル"
+"トでは、フィルタは与えられたセッションに対して使用 <emphasis>できません</"
+"emphasis> 。 <literal>Filter</literal> インスタンスを返り値とする "
+"<literal>Session.enabledFilter()</literal> メソッドを使うことで、フィルタは明"
+"示的に使用可能となります。上で定義した単純なフィルタの使用は、このようになり"
+"ます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"org.hibernate.Filter インターフェースのメソッドは、 Hibernate の多くに共通し"
+"ているメソッド連鎖を許していることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr "有効なレコードデータパターンを持つ一時データを使った完全な例です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"常に現在の有効レコードを返却することを保証するために、単純に、社員データの検"
+"索より前にセッション上のフィルタを有効にします:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"上記の HQL では、結果の給料の制約について明示的に触れただけですが、有効になっ"
+"ているフィルタのおかげで、このクエリは給料が100万ドル以上の現役の社員だけを返"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"注記: (HQL かロードフェッチで)外部結合を持つフィルタを使うつもりなら、条件"
+"式の方向に注意してください。これは左外部結合のために設定するのが最も安全で"
+"す。一般的に、演算子の後カラム名に続けて最初のパラメータを配置してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"定義したあと、フィルタは、それぞれ独自のコンディションを持つ複数のエンティ"
+"ティやコレクションにアタッチされます。コンディションがいつも同じ場合、それは"
+"面倒かもしれません。従って、 <literal>&lt;filter-def/&gt;</literal> は、属性"
+"または CDATA としてデフォルトコンディションを定義することが可能になります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"このデフォルトのコンディションは、コンディションを指定せずに何かにアタッチさ"
+"れる場合いつでも使われます。これは、特定のケースにおいてデフォルトのコンディ"
+"ションをオーバーライドするフィルターのアタッチメントの一部として、特定のコン"
+"ディションを与えることができることを意味します。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"myFilter\"&gt;\n"
+#~ "    &lt;filter-param name=\"myFilterParam\" type=\"string\"/&gt;\n"
+#~ "&lt;/filter-def&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"myClass\" ...&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set ...&gt;\n"
+#~ "    &lt;filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+#~ msgstr ""
+#~ "session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-"
+#~ "value\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"effectiveDate\"&gt;\n"
+#~ "    &lt;filter-param name=\"asOfDate\" type=\"date\"/&gt;\n"
+#~ "&lt;/filter-def&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Employee\" ...&gt;\n"
+#~ "...\n"
+#~ "    &lt;many-to-one name=\"department\" column=\"dept_id\" class="
+#~ "\"Department\"/&gt;\n"
+#~ "    &lt;property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/&gt;\n"
+#~ "    &lt;property name=\"effectiveEndDate\" type=\"date\" column="
+#~ "\"eff_end_dt\"/&gt;\n"
+#~ "...\n"
+#~ "    &lt;!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    --&gt;\n"
+#~ "    &lt;filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ "&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Department\" ...&gt;\n"
+#~ "...\n"
+#~ "    &lt;set name=\"employees\" lazy=\"true\"&gt;\n"
+#~ "        &lt;key column=\"dept_id\"/&gt;\n"
+#~ "        &lt;one-to-many class=\"Employee\"/&gt;\n"
+#~ "        &lt;filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "Session session = ...;\n"
+#~ "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary "
+#~ "&gt; :targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+#~ msgstr ""
+#~ "&lt;filter-def name=\"myFilter\" condition=\"abc &gt; xyz\"&gt;...&lt;/"
+#~ "filter-def&gt;\n"
+#~ "&lt;filter-def name=\"myOtherFilter\"&gt;abc=xyz&lt;/filter-def&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,935 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-07 09:59+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Inheritance mapping"
+msgstr "継承マッピング"
+
+#. Tag: title
+#, no-c-format
+msgid "The three strategies"
+msgstr "3つの戦略"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr "Hibernate は3つの基本的な継承のマッピング戦略をサポートします。"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "クラス階層ごとのテーブル (table-per-class-hierarchy)"
+
+#. Tag: para
+#, no-c-format
+msgid "table per subclass"
+msgstr "サブクラスごとのテーブル (table-per-subclass)"
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "具象クラスごとのテーブル (table-per-concrete-class)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr ""
+"加えて4つ目に、 Hibernate はわずかに異なる性質を持ったポリモーフィズムをサ"
+"ポートします。"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "暗黙的ポリモーフィズム"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy. You can then make use of implicit "
+"polymorphism to achieve polymorphism across the whole hierarchy. However, "
+"Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, "
+"<literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-"
+"subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</"
+"literal> element. It is possible to mix together the table per hierarchy and "
+"table per subclass strategies under the the same <literal>&lt;class&gt;</"
+"literal> element, by combining the <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+"同一の継承階層の異なるブランチに対して異なるマッピング戦略を使うことができま"
+"す。その場合には全体の階層に渡るポリモーフィズムを実現するために暗黙的ポリ"
+"モーフィズムを使用します。しかし、 Hibernate は同じルート <literal>&lt;"
+"class&gt;</literal> 要素内で <literal>&lt;subclass&gt;</literal> マッピン"
+"グ、 <literal>&lt;joined-subclass&gt;</literal> マッピング、 <literal>&lt;"
+"union-subclass&gt;</literal> マッピングの同時使用をサポートしていません。 "
+"<literal>&lt;subclass&gt;</literal> 要素と <literal>&lt;join&gt;</literal> 要"
+"素を組み合わせることで、同一 <literal>&lt;class&gt;</literal> 要素内での "
+"table-per-hierarchy 戦略と table-per-subclass 戦略の同時使用は可能です。次の"
+"例を見てください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierarchy by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Previously this "
+"feature made the ordering of the mapping documents important. Since "
+"Hibernate3, the ordering of mapping files is irrelevant when using the "
+"extends keyword. The ordering inside a single mapping file still needs to be "
+"defined as superclasses before subclasses."
+msgstr ""
+"<literal>subclass</literal>、 <literal>union-subclass</literal> と "
+"<literal>joined-subclass</literal> マッピングを複数のマッピングドキュメントに"
+"定義することが出来、 <literal>hibernate-mapping</literal> の直下に配置しま"
+"す。これは新しいマッピングファイルを追加するだけで、クラス階層を拡張できると"
+"いうことです。あらかじめマップしたスーパークラスを指定して、サブクラスマッピ"
+"ングに <literal>extends</literal> 属性を記述しなければなりません。注記:この"
+"特徴により、以前はマッピングドキュメントの順番が重要でした。 Hibernate3 から"
+"は、 extends キーワードを使う場合、マッピングドキュメントの順番は問題になりま"
+"せん。1つのマッピングファイル内で順番付けを行うときは、依然として、サブクラ"
+"スを定義する前にスーパークラスを定義する必要があります。)"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "クラス階層ごとのテーブル(table-per-class-hierarchy)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal> with the "
+"implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, and <literal>ChequePayment</literal>. The table per hierarchy "
+"mapping would display in the following way:"
+msgstr ""
+"例えば、インターフェース <literal>Payment</literal> と、それを実装した "
+"<literal>CreditCardPayment</literal>、 <literal>CashPayment</literal>、 "
+"<literal>ChequePayment</literal> があるとします。階層ごとのテーブルマッピング"
+"は以下のようになります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Exactly one table is required. There is a limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"ちょうど一つのテーブルが必要です。このマッピング戦略には一つ大きな制限があり"
+"ます。 <literal>CCTYPE</literal> のような、サブクラスで宣言されたカラムは "
+"<literal>NOT NULL</literal> 制約を持てません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "サブクラスごとのテーブル (table-per-subclass)"
+
+#. Tag: para
+#, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr "table-per-subclass マッピングは以下のようになります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table so the relational model is actually a "
+"one-to-one association."
+msgstr ""
+"このマッピングには4つのテーブルが必要です。3つのサブクラステーブルはスーパー"
+"クラステーブルとの関連を示す主キーを持っています (実際、関係モデル上は一対一"
+"関連です)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "discriminator を用いた table-per-subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's implementation of table per subclass does not require a "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass that requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement, but arguably more correct from a relational point of "
+"view. If you want to use a discriminator column with the table per subclass "
+"strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+"Hibernate の table-per-subclass 実装は、 discriminator カラムを必要としないこ"
+"とを覚えておいてください。 Hibernate 以外の O/R マッパーは、 table-per-"
+"subclass に異なる実装を用います。それは、スーパークラスのテーブルにタイプ "
+"discriminator カラムを必要とします。このアプローチは実装が困難になりますが、"
+"関係の視点から見ると、より正確なものです。 table-per-subclass 戦略で "
+"discriminator カラムを使いたければ、 <literal>&lt;subclass&gt;</literal> と "
+"<literal>&lt;join&gt;</literal> を以下のように組み合わせて使ってください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"オプションの <literal>fetch=\"select\"</literal> 宣言は、スーパークラスのクエ"
+"リ実行時に外部結合を使って、サブクラスの <literal>ChequePayment</literal> "
+"データを取得しないように指定するためのものです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "table-per-subclass と table-per-class-hierarchy の混合"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even mix the table per hierarchy and table per subclass strategies "
+"using the following approach:"
+msgstr ""
+"このアプローチを使用すると、 table-per-hierarchy と table-per-subclass 戦略を"
+"組み合わせる事も可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;"
+"</literal>."
+msgstr ""
+"いずれのマッピング戦略であっても、ルートである <literal>Payment</literal> ク"
+"ラスへのポリモーフィックな関連は <literal>&lt;many-to-one&gt;</literal> を"
+"使ってマッピングします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "具象クラスごとのテーブル(table-per-concrete-class)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two ways we can map the table per concrete class strategy. First, "
+"you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+"table-per-concrete-class 戦略のマッピングに対するアプローチは、2つあります。1"
+"つ目は <literal>&lt;union-subclass&gt;</literal> を利用する方法です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"サブクラスごとに3つのテーブルが必要です。それぞれのテーブルは、継承プロパティ"
+"を含んだ、クラスの全てのプロパティに対するカラムを定義します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. The "
+"identity generator strategy is not allowed in union subclass inheritance. "
+"The primary key seed has to be shared across all unioned subclasses of a "
+"hierarchy."
+msgstr ""
+"このアプローチには制限があります。それは、プロパティがスーパークラスにマッピ"
+"ングされていた場合、全てのサブクラスにおいてカラム名が同じでなければならない"
+"というものです。(Hibernate の今後のリリースで緩和されるかもしれません)。 "
+"union subclass 継承では識別子生成戦略を使用できません。主キーを生成するための"
+"シードは、全ての union subclass の階層内で共有する必要があるからです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. If it is not abstract, an additional table (it defaults to "
+"<literal>PAYMENT</literal> in the example above), is needed to hold "
+"instances of the superclass."
+msgstr ""
+"もしスーパークラスが抽象クラスなら、 <literal>abstract=\"true\"</literal> と"
+"マッピングします。もちろん、スーパークラスが抽象クラスでないなら、スーパーク"
+"ラスのインスタンスを保持するためのテーブルの追加が必要となります (上の例での"
+"デフォルトは <literal>PAYMENT</literal> )。"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr "暗黙的ポリモーフィズムを用いた table-per-concrete-class"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "もう一つのアプローチは暗黙的ポリモーフィズムの使用です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice that the <literal>Payment</literal> interface is not mentioned "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> "
+"declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+"<literal>Payment</literal> インターフェースがどこにも明示的に示されていないこ"
+"とに注意してください。そして、 <literal>Payment</literal> プロパティがそれぞ"
+"れのサブクラスにマッピングされていることにも注意してください。もし重複を避け"
+"たいのであれば、 XML エンティティの利用を考えてください。 (例: "
+"<literal>DOCTYPE</literal> 宣言における <literal>[ &lt;!ENTITY allproperties "
+"SYSTEM \"allproperties.xml\"&gt; ]</literal> と、マッピングにおける "
+"<literal>&amp;allproperties&semi;</literal>)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"このアプローチの欠点は、 Hibernate がポリモーフィックなクエリの実行時に SQL "
+"<literal>UNION</literal> を生成しない点です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+"このマッピング戦略に対しては、 <literal>Payment</literal> へのポリモーフィッ"
+"クな関連は常に、 <literal>&lt;any&gt;</literal> を使ってマッピングされます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "他の継承マッピングと暗黙的ポリモーフィズムの組み合わせ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the subclasses are each mapped in their own <literal>&lt;class&gt;</"
+"literal> element, and since <literal>Payment</literal> is just an "
+"interface), each of the subclasses could easily be part of another "
+"inheritance hierarchy. You can still use polymorphic queries against the "
+"<literal>Payment</literal> interface."
+msgstr ""
+"このマッピングについての更なる注意点があります。サブクラスが自身を "
+"<literal>&lt;class&gt;</literal> 要素としてマッピングしているので、(かつ "
+"<literal>Payment</literal> は単なるインターフェースなので)、それぞれのサブク"
+"ラスは簡単にその他の継承階層の一部となります。(しかも、今までどおり "
+"<literal>Payment</literal> インターフェースに対するポリモーフィックなクエリを"
+"使用することができます)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once again, <literal>Payment</literal> is not mentioned explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface, for "
+"example <literal>from Payment</literal>, Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal>, but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"もう一度述べますが、 <literal>Payment</literal> は明示的に定義されません。も"
+"し、 <literal>Payment</literal> インターフェースに対してクエリを実行するなら "
+"(例えば <literal>from Payment</literal> 節を使って)、 Hibernate は自動的に "
+"<literal>CreditCardPayment</literal> (と CreditCardPayment のサブクラス、 "
+"<literal>Payment</literal> の実装であるため)、および、 "
+"<literal>CashPayment</literal> 、 <literal>ChequePayment</literal> のインスタ"
+"ンスを返します。 <literal>NonelectronicTransaction</literal> インスタンスは返"
+"しません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "制限"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are limitations to the \"implicit polymorphism\" approach to the table "
+"per concrete-class mapping strategy. There are somewhat less restrictive "
+"limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+"table-per-concrete-class マッピング戦略への「暗黙的ポリモーフィズム」アプロー"
+"チにはいくつかの制限があります。 <literal>&lt;union-subclass&gt;</literal> "
+"マッピングに対しても少し弱めの制限があります。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"次のテーブルに、 Hibernate における table-per-concrete-class マッピングの制限"
+"や暗黙的ポリモーフィズムの制限を示します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "継承マッピングの機能"
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "継承戦略"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "多対多のポリモーフィズム"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "一対一のポリモーフィズム"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "一対多のポリモーフィズム"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "多対多のポリモーフィズム"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr "ポリモーフィックな <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "ポリモーフィズムを使ったクエリ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "ポリモーフィズムを使った結合"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Outer join fetching"
+msgstr "外部結合によるフェッチ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "table per class-hierarchy"
+msgstr "クラス階層ごとのテーブル (table-per-class-hierarchy)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "&lt;many-to-one&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "&lt;one-to-one&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "&lt;one-to-many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "&lt;many-to-many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "s.get(Payment.class, id)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr "ポリモーフィックな <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "table per concrete-class (union-subclass)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> ( <literal>inverse=\"true\"</literal> "
+"のために限られる)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "table per concrete class (implicit polymorphism)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr "ポリモーフィックな <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "&lt;many-to-any&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+msgstr ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+
+#, fuzzy
+#~ msgid "table per class-heirarchy"
+#~ msgstr "table per class-hierarchy"
+
+#, fuzzy
+#~ msgid "Polymorphic many-to-one: <code>&lt;any&gt;</code>"
+#~ msgstr "多対一のポリモーフィズム"
+
+#~ msgid "<para>table per subclass</para>"
+#~ msgstr "<para>サブクラスごとのテーブル (table-per-subclass) </para>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ " <hibernate-mapping>\n"
+#~ "     <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value="
+#~ "\"D\">\n"
+#~ "          <property name=\"name\" type=\"string\"/>\n"
+#~ "     </subclass>\n"
+#~ " </hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "     &lt;subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-"
+#~ "value=\"D\"&gt;\n"
+#~ "          &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "     &lt;/subclass&gt;\n"
+#~ " &lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        <join table=\"CASH_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        &lt;join table=\"CASH_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CHEQUE_PAYMENT\" fetch=\"select\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class="
+#~ "\"Payment\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
+#~ "    <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
+#~ "    <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
+#~ "    <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
+#~ "    <column name=\"PAYMENT_CLASS\"/>\n"
+#~ "    <column name=\"PAYMENT_ID\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"payment\" meta-type=\"string\" id-type=\"long\"&gt;\n"
+#~ "    &lt;meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CASH\" class=\"CashPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CHEQUE\" class=\"ChequePayment\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_CLASS\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_ID\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
+#~ "    <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"CREDIT_CARD\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/"
+#~ "&gt;\n"
+#~ "    &lt;subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN"
+#~ "\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"TXN_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid "<term>table per subclass</term>"
+#~ msgstr "<entry>table per subclass</entry>"
+
+#~ msgid "from Payment p"
+#~ msgstr "from Payment p"
+
+#~ msgid "supported"
+#~ msgstr "サポート"
+
+#~ msgid "&lt;any&gt;"
+#~ msgstr "&lt;any&gt;"
+
+#~ msgid "not supported"
+#~ msgstr "サポートしていません"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2608 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-20 14:25+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "パフォーマンスの改善"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "フェッチ戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"<emphasis>フェッチ戦略</emphasis> は、アプリケーションが関連をナビゲートする"
+"必要があるときに、 Hibernate が関連オブジェクトを復元するために使用する戦略で"
+"す。フェッチ戦略は O/R マッピングのメタデータに宣言するか、特定の HQL 、 "
+"<literal>Criteria</literal> クエリでオーバーライドします。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3 は次に示すフェッチ戦略を定義しています:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>結合フェッチ</emphasis> - Hibernate は <literal>OUTER JOIN</"
+"literal> を使って、関連するインスタンスやコレクションを1つの "
+"<literal>SELECT</literal> で復元します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>セレクトフェッチ</emphasis> - 2回目の <literal>SELECT</literal> で"
+"関連するエンティティやコレクションを復元します。 <literal>lazy=\"false\"</"
+"literal> で明示的に遅延フェッチを無効にしなければ、この2回目の select は実際"
+"に関連にアクセスしたときのみ実行されるでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>サブセレクトフェッチ</emphasis> - 2回目の <literal>SELECT</"
+"literal> で、直前のクエリやフェッチで復元したすべての要素に関連するコレクショ"
+"ンを復元します。 <literal>lazy=\"false\"</literal> で明示的に遅延フェッチを無"
+"効にしなければ、この2回目の select は実際に関連にアクセスしたときのみ実行され"
+"るでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>バッチフェッチ</emphasis> - セレクトフェッチのための最適化された戦"
+"略 - Hibernate はエンティティのインスタンスやコレクションの一群を1回の "
+"<literal>SELECT</literal> で復元します。これは主キーや外部キーのリストを指定"
+"することにより行います。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "Hibernate は次に示す戦略とも区別をします: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>即時フェッチ</emphasis> - 所有者のオブジェクトがロードされたとき"
+"に、関連、コレクションは即時にフェッチされます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>遅延コレクションフェッチ</emphasis> - アプリケーションがコレクショ"
+"ンに対して操作を行ったときにコレクションをフェッチします。(これはコレクション"
+"に対するデフォルトの動作です)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>「特別な遅延」コレクションフェッチ</emphasis> - コレクションの要素"
+"1つ1つが独立して、必要なときにデータベースから取得されます。 Hibernate は必"
+"要ないならば、コレクション全体をメモリにフェッチすることは避けます(とても大"
+"きなコレクションに適しています)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>プロキシフェッチ</emphasis> - 単一値関連は、識別子の getter 以外の"
+"メソッドが関連オブジェクトで呼び出されるときにフェッチされます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>「プロキシなし」フェッチ</emphasis> - 単一値関連は、インスタンス変"
+"数にアクセスされたときにフェッチされます。プロキシフェッチと比較すると、この"
+"方法は遅延の度合いが少ない(関連は識別子にアクセスしただけでもフェッチされま"
+"す)ですが、より透過的で、アプリケーションにプロキシが存在しないように見せま"
+"す。この方法はビルド時のバイトコード組み込みが必要になり、使う場面はまれで"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>遅延属性フェッチ</emphasis> - 属性や単一値関連は、インスタンス変数"
+"にアクセスしたときにフェッチされます。この方法はビルド時のバイトコード組み込"
+"みが必要になり、使う場面はまれです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"二つの直行する概念があります: <emphasis>いつ</emphasis> 関連をフェッチする"
+"か、そして、 <emphasis>どうやって</emphasis> フェッチするか(どんな SQL を"
+"使って)。これらを混同しないでください。 <literal>fetch</literal> はパフォー"
+"マンスチューニングに使います。 <literal>lazy</literal> はあるクラスの分離され"
+"たインスタンスのうち、どのデータを常に使用可能にするかの取り決めを定義しま"
+"す。"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "遅延関連の働き"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"デフォルトでは、 Hibernate3 はコレクションに対しては遅延セレクトフェッチを使"
+"い、単一値関連には遅延プロキシフェッチを使います。これらのデフォルト動作はほ"
+"ぼすべてのアプリケーションのほぼすべての関連で意味があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"<emphasis>注:</emphasis><literal>hibernate.default_batch_fetch_size</"
+"literal> をセットしたときは、 Hibernate は遅延フェッチのためのバッチフェッチ"
+"最適化を使うでしょう(この最適化はより細かいレベルで有効にすることも出来ま"
+"す)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"しかし、遅延フェッチは知っておかなければならない一つの問題があります。 "
+"Hibernate の session をオープンしているコンテキストの外から遅延関連にアクセス"
+"すると、例外が発生します。例:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"<literal>Session</literal> がクローズされたとき、 permissions コレクションは"
+"初期化されていないため、このコレクションは自身の状態をロードできません。 "
+"<emphasis>Hibernate は切り離されたオブジェクトの遅延初期化はサポートしていま"
+"せん</emphasis> 。修正方法として、コレクションから読み込みを行うコードをトラ"
+"ンザクションをコミットする直前に移動させます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"一方で、 <literal>lazy=\"false\"</literal> を関連マッピングに指定することで、"
+"遅延処理をしないコレクションや関連を使うことが出来ます。しかしながら、遅延初"
+"期化はほぼすべてのコレクションや関連で使われることを意図しています。もしあな"
+"たのオブジェクトモデルの中に遅延処理をしない関連を多く定義してしまうと、 "
+"Hibernate は最終的にはトランザクション毎にほぼ完全なデータベースをメモリの中"
+"にフェッチすることになるでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"他方では、特定のトランザクションにおいてセレクトフェッチの代わりに結合フェッ"
+"チ(当然これは遅延処理ではなくなります)を選択したいことが時々あります。これ"
+"からフェッチ戦略をカスタマイズする方法をお見せします。 Hibernate3 では、"
+"フェッチ戦略を選択する仕組みは単一値関連とコレクションで変わりはありません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "フェッチ戦略のチューニング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"セレクトフェッチ(デフォルト)は N+1 セレクト問題という大きな弱点があるため、"
+"マッピング定義で結合フェッチを有効にすることができます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"マッピング定義で定義した <literal>フェッチ</literal> 戦略は次のものに影響しま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr "<literal>get()</literal> や <literal>load()</literal> による復元"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr "関連にナビゲートしたときに発生する暗黙的な復元"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "<literal>Criteria</literal> クエリ"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "<literal>サブセレクト</literal> フェッチを使う HQL クエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"たとえどんなフェッチ戦略を使ったとしても、遅延ではないグラフはメモリに読み込"
+"まれることが保証されます。つまり、特定の HQL クエリを実行するためにいくつか"
+"の SELECT 文が即時実行されることがあるので注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"通常は、マッピング定義でフェッチのカスタマイズは行いません。代わりに、デフォ"
+"ルトの動作のままにしておいて、 HQL で <literal>left join fetch</literal> を指"
+"定することで特定のトランザクションで動作をオーバーライドします。これは "
+"Hibernate に初回のセレクトで外部結合を使って関連を先にフェッチするように指定"
+"しています。 <literal>Criteria</literal> クエリの API では、 "
+"<literal>setFetchMode(FetchMode.JOIN)</literal> を使うことが出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"もし <literal>get()</literal> や <literal>load()</literal> で使われるフェッチ"
+"戦略を変えたいと感じたときには、単純に <literal>Criteria</literal> クエリを"
+"使ってください。例:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"(これはいくつかの ORM ソリューションが \"fetch plan\" と呼んでいるものと同じ"
+"です。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"N+1 セレクト問題を避けるためのまったく違う方法は、第2レベルキャッシュを使うこ"
+"とです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "単一端関連プロキシ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"コレクションの遅延フェッチは、 Hibernate 自身の実装による永続コレクションを"
+"使って実現しています。しかし、単一端関連における遅延処理では、違う仕組みが必"
+"要です。対象の関連エンティティはプロキシでなければなりません。 Hibernate は"
+"(すばらしい CGLIB ライブラリによる)実行時のバイトコード拡張を使って永続オブ"
+"ジェクトの遅延初期化プロキシを実現しています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"デフォルトでは、 Hibernate3 は(開始時に)すべての永続クラスのプロキシを生成"
+"し、それらを使って、 <literal>many-to-one</literal> や <literal>one-to-one</"
+"literal> 関連の遅延フェッチを可能にしています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"マッピングファイルで <literal>proxy</literal> 属性によって、クラスのプロキシ"
+"インターフェースとして使うインターフェースを宣言できます。デフォルトでは、 "
+"Hibernate はそのクラスのサブクラスを使います。 <emphasis>プロキシクラスは少な"
+"くともパッケージ可視でデフォルトコンストラクタを実装しなければならないことに"
+"注意してください。すべての永続クラスにこのコンストラクタを推奨します。</"
+"emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr ""
+"ポリモーフィズムのクラスに対してこの方法を適用するときにいくつか考慮すること"
+"があります。例:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"第一に、 <literal>Cat</literal> のインスタンスは <literal>DomesticCat</"
+"literal> にキャストできません。たとえ基となるインスタンスが "
+"<literal>DomesticCat</literal> であったとしてもです:"
+
+#. Tag: para
+#, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "第二に、プロキシの <literal>==</literal> は成立しないことがあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"しかし、これは見かけほど悪い状況というわけではありません。たとえ異なったプロ"
+"キシオブジェクトへの二つの参照があったとしても、基となるインスタンスは同じオ"
+"ブジェクトです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"第三に、 <literal>final</literal> クラスや <literal>final</literal> メソッド"
+"を持つクラスに CGLIB プロキシを使えません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"最後に、もし永続オブジェクトのインスタンス化時 (例えば、初期化処理やデフォル"
+"トコンストラクタの中で) になんらかのリソースが必要となるなら、そのリソースも"
+"またプロキシを通して取得されます。実際には、プロキシクラスは永続クラスのサブ"
+"クラスです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"これらの問題は Java の単一継承モデルの原理上の制限のためです。もしこれらの問"
+"題を避けたいのなら、ビジネスメソッドを宣言したインターフェースをそれぞれ永続"
+"クラスで実装しなければなりません。マッピングファイルでこれらのインターフェー"
+"スを指定する必要があります。例:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"第一に、 <literal>Cat</literal> のインスタンスは <literal>DomesticCat</"
+"literal> にキャストできません。たとえ基となるインスタンスが "
+"<literal>DomesticCat</literal> であったとしてもです:"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>full join</literal> (たいていの場合使いづらい)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"関連も遅延初期化されます。これはプロパティを <literal>Cat</literal> 型で宣言"
+"しなければならないことを意味します。 <literal>CatImpl</literal> ではありませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+"プロキシの初期化を <emphasis>必要としない</emphasis> 操作も存在します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal> (永続クラスが <literal>equals()</literal> をオー"
+"バーライドしないとき)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal> (永続クラスが <literal>hashCode()</literal> を"
+"オーバーライドしないとき)"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "識別子の getter メソッド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate は <literal>equals()</literal> や <literal>hashCode()</literal> を"
+"オーバーライドした永続クラスを検出します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"デフォルトの <literal>lazy=\"proxy\"</literal> の代わりに、 <literal>lazy="
+"\"no-proxy\"</literal> を選んだことで、型変換に関連する問題を回避することが出"
+"来ます。しかし、ビルド時のバイトコード組み込みが必要になり、どのような操作で"
+"あっても、ただちにプロキシの初期化を行うことになるでしょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "コレクションとプロキシの初期化"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"<literal>LazyInitializationException</literal> は、 <literal>Session</"
+"literal> のスコープ外から初期化していないコレクションやプロキシにアクセスされ"
+"たときに、 Hibernate によってスローされます。すなわち、コレクションやプロキシ"
+"への参照を持つエンティティが分離された状態の時です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"<literal>Session</literal> をクローズする前にプロキシやコレクションの初期化を"
+"確実に行いたいときがあります。もちろん、 <literal>cat.getSex()</literal> や "
+"<literal>cat.getKittens().size()</literal> などを常に呼び出すことで初期化を強"
+"制することはできます。しかしこれはコードを読む人を混乱させ、汎用的なコードと"
+"いう点からも不便です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"static メソッドの <literal>Hibernate.initialize()</literal> や "
+"<literal>Hibernate.isInitialized()</literal> は遅延初期化のコレクションやプロ"
+"キシを扱うときに便利な方法をアプリケーションに提供します。 "
+"<literal>Hibernate.initialize(cat)</literal> は、 <literal>Session</literal> "
+"がオープンしている限りは <literal>cat</literal> プロキシを強制的に初期化しま"
+"す。 <literal>Hibernate.initialize( cat.getKittens() )</literal> は kittens "
+"コレクションに対して同様の効果があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"別の選択肢として、必要なすべてのコレクションやプロキシがロードされるまで "
+"<literal>Session</literal> をオープンにしておく方法があります。いくつかのアプ"
+"リケーションのアーキテクチャでは、特に Hibernate によるデータアクセスを行う"
+"コードと、それを使うコードが異なるアプリケーションのレイヤーや、物理的に異な"
+"るプロセッサのときには、コレクションが初期化されるときに <literal>Session</"
+"literal> がオープンしていることを保証する問題があります。この問題に対しては2"
+"つの基本的な方法があります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"Web ベースのアプリケーションでは、ビューのレンダリングが完了し、リクエストが"
+"終わる一番最後で <literal>Session</literal> をクローズするために、サーブレッ"
+"トフィルタを使うことができます( <emphasis>Open Session in View</emphasis> パ"
+"ターンです)。もちろん、アプリケーション基盤の例外処理の正確性が非常に重要に"
+"なります。ビューのレンダリング中に例外が発生したときでさえ、ユーザーに処理が"
+"戻る前に <literal>Session</literal> のクローズとトランザクションの終了を行う"
+"ことが不可欠になります。 Hibernate の Wiki に載っている \"Open Session in "
+"View\" パターンの例を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"ビジネス層が分離しているアプリケーションでは、ビジネスロジックは Web 層で必要"
+"になるすべてのコレクションを事前に「準備」する必要があります。これは特定の"
+"ユースケースで必要となるプレゼンテーション/ Web 層に対し、ビジネス層がすべて"
+"のデータをロードし、すべてのデータを初期化して返すべきということを意味してい"
+"ます。通常は、アプリケーションは Web 層で必要なコレクションそれぞれに対して "
+"<literal>Hibernate.initialize()</literal> を呼び出すか(この呼び出しはセッ"
+"ションをクローズする前に行う必要があります)、 Hibernate クエリの "
+"<literal>FETCH</literal> 節や <literal>Criteria</literal> の "
+"<literal>FetchMode.JOIN</literal> を使ってコレクションを先に復元します。普通"
+"は <emphasis>Session Facade</emphasis> パターンの代わりに <emphasis>Command</"
+"emphasis> パターンを採用するほうがより簡単です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"初期化されていないコレクション(もしくは他のプロキシ)にアクセスする前に、 "
+"<literal>merge()</literal> や <literal>lock()</literal> を使って新しい "
+"<literal>Session</literal> に以前にロードされたオブジェクトを追加することも出"
+"来ます。アドホックなトランザクションのセマンティクスを導入したので、 "
+"Hibernate はこれを自動的に行わず、 <emphasis>行うべきでもありません</"
+"emphasis> 。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"大きなコレクションを初期化したくはないが、コレクションについてのなんらかの情"
+"報(サイズのような)やデータのサブセットを必要とすることがあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"コレクションフィルタを使うことで、初期化せずにコレクションのサイズを取得する"
+"ことが出来ます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"<literal>createFilter()</literal> メソッドは、コレクション全体を初期化する必"
+"要なしに、コレクションのサブセットを復元するために効果的に使えます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "バッチフェッチの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"Hibernate はバッチフェッチを効率的に使用できます。一つのプロキシ(もしくはコ"
+"レクション)がアクセスされると、 Hibernate はいくつかの初期化していないプロキ"
+"シをロードすることができます。バッチフェッチは遅延セレクトフェッチ戦略に対す"
+"る最適化です。バッチフェッチの調整には2つの方法があります。クラスレベルとコ"
+"レクションレベルです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"クラス、要素のバッチフェッチは理解が簡単です。実行時の次の場面を想像してくだ"
+"さい。 <literal>Session</literal> にロードされた25個の <literal>Cat</"
+"literal> インスタンスが存在し、それぞれの <literal>Cat</literal> は "
+"<literal>owner</literal> である <literal>Person</literal> への関連を持ちま"
+"す。 <literal>Person</literal> クラスは <literal>lazy=\"true\"</literal> のプ"
+"ロキシでマッピングされています。もし今すべての Cat に対して繰り返し "
+"<literal>getOwner()</literal> を呼び出すと、 Hibernate はデフォルトでは25回"
+"の <literal>SELECT</literal> を実し、 owner プロキシの復元をします。この振る"
+"舞いを <literal>Person</literal> のマッピングの <literal>batch-size</"
+"literal> の指定で調整できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+"Hibernate はクエリを3回だけを実行するようになります。パターンは 10, 10, 5 で"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"コレクションのバッチフェッチも有効にすることが出来ます。例として、それぞれの "
+"<literal>Person</literal> が <literal>Cat</literal> の遅延コレクションを持っ"
+"ており、 10 個の Person が <literal>Sesssion</literal> にロードされたとする"
+"と、すべての Person に対して繰り返し <literal>getCats()</literal> を呼び出す"
+"ことで、計10回の <literal>SELECT</literal> が発生します。もし "
+"<literal>Person</literal> のマッピングで <literal>cats</literal> コレクション"
+"のバッチフェッチを有効にすれば、 Hibernate はコレクションの事前フェッチが出来"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"<literal>batch-size</literal> が 3 なので、 Hibernate は 4 回の "
+"<literal>SELECT</literal> で 3 個、 3 個、 3 個、 1 個をロードします。繰り返"
+"すと、属性の値は特定の <literal>Session</literal> の中の初期化されていないコ"
+"レクションの期待数に依存します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"コレクションのバッチフェッチはアイテムのネストしたツリー、すなわち、代表的な"
+"部品表のパターンがある場合に特に有用です。(しかし、読み込みが多いツリーでは "
+"<emphasis>ネストした set</emphasis> や <emphasis>具体化したパス</emphasis> が"
+"よりよい選択になります。)"
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "サブセレクトフェッチの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"一つの遅延コレクションや単一値プロキシがフェッチされなければいけないとき、 "
+"Hibernate はそれらすべてをロードし、サブセレクトのオリジナルクエリが再度実行"
+"されます。これはバッチフェッチと同じ方法で動き、少しずつのロードは行いませ"
+"ん。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Fetch profiles"
+msgstr "フェッチ戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "遅延プロパティフェッチの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"Hibernate3 はプロパティごとの遅延フェッチをサポートしています。この最適化手法"
+"は <emphasis>グループのフェッチ</emphasis> としても知られています。これはほと"
+"んど要望から出た機能であることに注意してください。実際には列読み込みの最適化"
+"よりも、行読み込みの最適化が非常に重要です。しかし、クラスのいくつかのプロパ"
+"ティだけを読み込むことは、既存のテーブルが何百もの列を持ち、データモデルを改"
+"善できないなどの極端な場合には有用です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"遅延プロパティ読み込みを有効にするには、対象のプロパティのマッピングで "
+"<literal>lazy</literal> 属性をセットしてください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"遅延プロパティ読み込みはビルド時のバイトコード組み込みを必要とします。もし永"
+"続クラスに組み込みがされていないなら、 Hibernate は黙って遅延プロパティの設定"
+"を無視して、即時フェッチに戻します。"
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr "バイトコード組み込みは以下の Ant タスクを使ってください: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"不要な列を読み込まないための、別の(よりよい?)方法は、少なくとも読み込みの"
+"みのトランザクションにおいては、 HQL や Criteria クエリの射影機能を使うことで"
+"す。この方法はビルド時のバイトコード組み込みが不要になり、より良い解決方法で"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"HQL で <literal>fetch all properties</literal> を使うことで、普通どおりのプロ"
+"パティの即時フェッチングを強制することが出来ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "第2レベルキャッシュ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Hibernate の <literal>Session</literal> は永続データのトランザクションレベル"
+"のキャッシュです。 class-by-class と collection-by-collection ごとの、クラス"
+"タレベルや JVM レベル ( <literal>SessionFactory</literal> レベル)のキャッ"
+"シュを設定することが出来ます。クラスタ化されたキャッシュにつなぐことさえ出来"
+"ます。しかし注意してください。キャッシュは他のアプリケーションによる永続層の"
+"変更を考慮しません(キャッシュデータを定期的に期限切れにする設定は出来ま"
+"す)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"Hibernate が使用するキャッシュ実装は、 <literal>hibernate.cache."
+"provider_class</literal> プロパティに <literal>org.hibernate.cache."
+"CacheProvider</literal> を実装したクラス名を指定することで変更できます。 "
+"Hibernate は多くのオープンソースのキャッシュプロバイダをビルトイン実装で持っ"
+"ています(後にリストがあります)。加えて、前に説明したように、あなた自身が独"
+"自の実装をして、それを組み込むことも出来ます。バージョン3.2より前では "
+"EhCache がデフォルトのキャッシュプロバイダであることに注意してください。バー"
+"ジョン3.2ではこれは当てはまりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "キャッシュプロバイダ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "キャッシュ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "プロバイダクラス"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "タイプ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "クラスタセーフ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "クエリキャッシュのサポート"
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr "Hashtable(製品用として意図していません)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "メモリ"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "メモリ、ディスク"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "クラスタ(ip マルチキャスト)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "yes(クラスタ無効化)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "クラスタ(ip マルチキャスト)、トランザクショナル"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "yes(複製)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "yes(時刻同期が必要)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 2"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "<literal>org.hibernate.cache.jbc2.JBossCacheRegionFactory</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "yes(クラスタ無効化)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "キャッシュのマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"クラスやコレクションのマッピングの <literal>&lt;cache&gt;</literal> 要素は以"
+"下の形式です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal> (必須) キャッシング戦略を指定します: "
+"<literal>transactional</literal>、 <literal>read-write</literal>、 "
+"<literal>nonstrict-read-write</literal> または <literal>read-only</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (オプション、クラスまたはコレクションのロールネーム"
+"のデフォルト) 2次レベルのキャッシュ領域の名前を指定します"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (オプション、 <literal>all</literal> に対してデ"
+"フォルト) <literal>non-lazy</literal> は、 属性レベルの lazy フェチが有効に"
+"なっている場合 <literal>lazy=\"true\"</literal> でマッピングされるエンティ"
+"ティのプロパティはキャッシュされなくてもよいことを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"または(よりよい方法として?)、 <literal>hibernate.cfg.xml</literal> に "
+"<literal>&lt;class-cache&gt;</literal> と <literal>&lt;collection-cache&gt;</"
+"literal> 要素を指定することも出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"<literal>usage</literal> 属性は <emphasis>キャッシュの並列性戦略</emphasis> "
+"を指定します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "read only 戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"もしアプリケーションが読み込みのみ必要で、永続クラスのインスタンスを変更しな"
+"いなら、 <literal>read-only</literal> キャッシュを使うことが出来ます。これは"
+"もっとも単純でもっともパフォーマンスの良い戦略です。クラスタでの使用も完全に"
+"安全です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "read/write 戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"アプリケーションがデータを更新する必要があるなら、 <literal>read-write</"
+"literal> キャッシュが適当かもしれません。このキャッシュ戦略は、シリアライザブ"
+"ルなトランザクション分離レベルが要求されるなら、決して使うべきではありませ"
+"ん。もしキャッシュが JTA 環境で使われるなら、 JTA "
+"<literal>TransactionManager</literal> を取得するための方法を示す "
+"<literal>hibernate.transaction.manager_lookup_class</literal> プロパティを指"
+"定しなければなりません。他の環境では、 <literal>Session.close()</literal> や "
+"<literal>Session.disconnect()</literal> が呼ばれたときに、確実にトランザク"
+"ションが完了していなければなりません。もしクラスタでこの戦略を使いたいなら、"
+"基となるキャッシュの実装がロックをサポートしていることを保証しなければなりま"
+"せん。組み込みのキャッシュプロバイダは <emphasis>サポートしていません</"
+"emphasis> 。"
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "厳密ではない read/write 戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"アプリケーションがたまにしかデータを更新する必要はなく(すなわち二つのトラン"
+"ザクションが同時に同じアイテムを更新しようとすることはほとんど起こらない)、"
+"厳密なトランザクション分離が要求されないなら、 <literal>nonstrict-read-"
+"write</literal> キャッシュが適当かもしれません。もしキャッシュが JTA 環境で使"
+"われるなら、 <literal>hibernate.transaction.manager_lookup_class</literal> を"
+"指定しなければなりません。他の環境では、 <literal>Session.close()</literal> "
+"や <literal>Session.disconnect()</literal> が呼ばれたときに、確実にトランザク"
+"ションが完了していなければなりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "transactional 戦略"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"<literal>transactional</literal> キャッシュ戦略は JBoss TreeCache のような完"
+"全なトランザクショナルキャッシュプロバイダのサポートを提供します。このような"
+"キャッシュは JTA 環境でのみ使用可能で、 <literal>hibernate.transaction."
+"manager_lookup_class</literal> を指定しなければなりません。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "同時並行性キャッシュ戦略のサポート"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"すべての同時並行性キャッシュ戦略をサポートしているキャッシュプロバイダはあり"
+"ません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"以下の表はどのプロバイダがどの同時並列性戦略に対応するかを表しています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr "同時並行性キャッシュ戦略のサポート"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "read-only"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "厳密ではない read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transactional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "キャッシュの管理"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"オブジェクトを <literal>save()</literal> 、 <literal>update()</literal> 、 "
+"<literal>saveOrUpdate()</literal> に渡すとき、そして <literal>load()</"
+"literal> 、 <literal>get()</literal> 、 <literal>list()</literal> 、 "
+"<literal>iterate()</literal> 、 <literal>scroll()</literal> を使ってオブジェ"
+"クトを復元するときには常に、そのオブジェクトは <literal>Session</literal> の"
+"内部キャッシュに追加されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"次に <literal>flush()</literal> が呼ばれると、オブジェクトの状態はデータベー"
+"スと同期化されます。もしこの同期が起こることを望まないときや、膨大な数のオブ"
+"ジェクトを処理していてメモリを効率的に扱う必要があるときは、 <literal>evict()"
+"</literal> メソッドを使って一次キャッシュからオブジェクトやコレクションを削除"
+"することが出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"<literal>Session</literal> はインスタンスがセッションキャッシュに含まれるかど"
+"うかを判断するための <literal>contains()</literal> メソッドも提供します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"すべてのオブジェクトをセッションキャッシュから完全に取り除くには、 "
+"<literal>Session.clear()</literal> を呼び出してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"二次キャッシュのために、 <literal>SessionFactory</literal> にはインスタンス、"
+"クラス全体、コレクションのインスタンス、コレクション全体をキャッシュから削除"
+"するためのメソッドがそれぞれ定義されています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"<literal>CacheMode</literal> は特定のセッションが二次キャッシュとどのように相"
+"互作用するかを指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - アイテムの読み込みと書き込みで二次"
+"キャッシュを使います"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal> - 読み込みは二次キャッシュから行いますが、"
+"データを更新した場合を除いて二次キャッシュに書き込みをしません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal> - 二次キャッシュにアイテムを書き込みますが、"
+"読み込みには二次キャッシュを使いません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal> - 二次キャッシュにアイテムを書き込みます"
+"が、読み込みには二次キャッシュを使わず、 <literal>hibernate.cache."
+"use_minimal_puts</literal> の影響を受けずに、データベースから読み込むすべての"
+"アイテムの二次キャッシュを強制的にリフレッシュします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"二次キャッシュの内容やクエリキャッシュ領域を見るために、 "
+"<literal>Statistics</literal> API を使ってください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"統計情報を有効にして、さらにオプションとして、キャッシュエントリを人がより理"
+"解可能な形式で保持することを Hibernate に強制します:"
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "クエリキャッシュ"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"クエリのリザルトセットもキャッシュ出来ます。これは同じパラメータで何度も実行"
+"されるクエリに対してのみ有用です。クエリキャッシュを使うには、まず設定で有効"
+"にしなくてはなりません:"
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"ほとんどのクエリはキャッシュの恩恵を受けないので、デフォルトではクエリは"
+"キャッシュされません。キャッシュを有効にするには、 <literal>Query."
+"setCacheable(true)</literal> を呼び出してください。そうすればクエリが既存の"
+"キャッシュ結果を探し、クエリ実行時にその結果をキャッシュに追加するようになり"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Query cache regions"
+msgstr "クエリキャッシュのサポート"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"クエリキャッシュの破棄ポリシーを細かく制御したいときは、 <literal>Query."
+"setCacheRegion()</literal> を呼び出して特定のクエリに対するキャッシュ領域を指"
+"定することが出来ます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"クエリが自身のクエリキャッシュ領域のリフレッシュを強制しなければならないな"
+"ら、 <literal>Query.setCacheMode(CacheMode.REFRESH)</literal> を呼び出すべき"
+"です。これは元となるデータが別のプロセスによって更新されたり(すなわち "
+"Hibernate を通じて更新されない)、アプリケーションに特定のクエリリザルトセッ"
+"トを選択してリフレッシュさせる場合に特に有用です。さらに有用なもう一つの方法"
+"は、 <literal>SessionFactory.evictQueries()</literal> によってクエリキャッ"
+"シュ領域を消去することです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "コレクションのパフォーマンスの理解"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "分類"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "Hibernate は3つの基本的なコレクションの種類を定義しています:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "値のコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid "one-to-many associations"
+msgstr "一対多関連"
+
+#. Tag: para
+#, no-c-format
+msgid "many-to-many associations"
+msgstr "多対多関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"この分類はさまざまなテーブルや外部キー関連を区別しますが、私たちが知る必要の"
+"ある関連モデルについてほとんどなにも教えてくれません。関連構造やパフォーマン"
+"スの特徴を完全に理解するには、 Hibernate がコレクションの行を更新、削除するた"
+"めに使う主キーの構造もまた考えなければなりません。これは以下の分類を提示しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "インデックス付きコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "set"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "bag"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"すべてのインデックス付きコレクション (マップ、リスト、配列) は "
+"<literal>&lt;key&gt;</literal> と <literal>&lt;index&gt;</literal> カラムから"
+"なる主キーを持っています。この場合はコレクションの更新は非常に効率的です。主"
+"キーは有用なインデックスになり、 Hibernate が特定の行を更新または削除するとき"
+"に、その行を効率的に見つけることができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"set は <literal>&lt;key&gt;</literal> からなる主キーと要素のカラムを持ってい"
+"ます。これはコレクション要素のいくつかの型については効率的ではないかもしれま"
+"せん。特に複合要素、大きなテキスト、バイナリフィールドでは非効率です。データ"
+"ベースは複合主キーに効率的にインデックスを付けることができないからです。一"
+"方、一対多や多対多関連において、特に人工識別子の場合は同じぐらい効率的です。"
+"(余談: <literal>SchemaExport</literal> で実際に <literal>&lt;set&gt;</"
+"literal> の主キーを作りたいなら、すべてのカラムで <literal>not-null=\"true"
+"\"</literal> を宣言しなければなりません。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal> マッピングは代理キーを定義します。そのため更"
+"新は常に非常に効率的です。事実上、これは最善のケースです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"bag は最悪のケースです。 bag は要素の値の重複が可能で、インデックスカラムを持"
+"たないため、主キーは定義されないかもしれません。 Hibernate には重複した行を区"
+"別する方法がありません。 Hibernate はこの問題の解決のために、変更があったとき"
+"には常に完全な削除(一つの <literal>DELETE</literal> による)を行い、コレク"
+"ションの再作成を行います。これは非常に非効率的かもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"一対多関連では、「主キー」はデータベースのテーブルの物理的な主キーではないか"
+"もしれないことに注意してください。しかしこの場合でさえ、上記の分類はまだ有用"
+"です。(Hibernateがコレクションの個々の行をどうやって「見つけるか」を表してい"
+"ます。)"
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr "更新にもっとも効率的なコレクション list、map、idbag、set"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"上での議論から、インデックス付きコレクションと(普通の) set は要素の追加、削"
+"除、更新でもっとも効率的な操作が出来ることは明らかです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"ほぼ間違いなく、多対多関連や値のコレクションにおいて、インデックス付きコレク"
+"ションが set よりも優れている点が一つ以上あります。 <literal>Set</literal> は"
+"その構造のために、 Hibernate は要素が「変更」されたときに行を決して "
+"<literal>UPDATE</literal> しません。 <literal>Set</literal> への変更は常に"
+"(個々の行の) <literal>INSERT</literal> と <literal>DELETE</literal> によっ"
+"て行います。繰り返しますが、これは一対多関連には当てはまりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"配列は遅延処理ができないという決まりなので、結論として、list、map、idbag が"
+"もっともパフォーマンスの良い(inverse ではない)コレクションタイプとなりま"
+"す。 set もそれほど違いはありません。 Hibernate のアプリケーションでは、 set "
+"はコレクションのもっとも共通の種類として期待されます。 \"set\" の表現は関連モ"
+"デルではもっとも自然だからです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"しかし、よくデザインされた Hibernate のドメインモデルでは、通常もっとも多いコ"
+"レクションは事実上 <literal>inverse=\"true\"</literal> を指定した一対多関連で"
+"す。これらの関連では、更新は多対一の関連端で扱われ、コレクションの更新パ"
+"フォーマンスの問題は当てはまりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "inverse コレクションにもっとも最適な bag と list"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"bag を見放してしまう前に、 bag (そして list も)が set よりもずっとパフォー"
+"マンスが良い特別なケースを紹介します。 <literal>inverse=\"true\"</literal> の"
+"コレクション(一般的な一対多関連の使い方など)で、 bag の要素を初期化(フェッ"
+"チ)する必要なく bag や list に要素を追加できます。これは "
+"<literal>Collection.add()</literal> ã‚„ <literal>Collection.addAll()</"
+"literal> は bag や <literal>List</literal> では常に true を返さなければならな"
+"いからです ( <literal>Set</literal> とは異なります)。これは以下の共通処理を"
+"より速くすることができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "一括削除"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"時々、コレクションの要素を一つ一つ削除することは極めて非効率的になることがあ"
+"ります。 Hibernate は愚かではないので、新しい空のコレクションの場合"
+"( <literal>list.clear()</literal> を呼び出した場合など)ではこれをすべきでな"
+"いことを知っています。この場合は、 Hibernate は <literal>DELETE</literal> を"
+"一回発行して、それですべて終わります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"サイズ20のコレクションに一つの要素を追加し、それから二つの要素を削除するとし"
+"ます。 Hibernate は一つの <literal>INSERT</literal> 文と二つの "
+"<literal>DELETE</literal> 文を発行します (コレクションが bag でなければ)。"
+"これは確かに望ましい動作です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"しかし、18個の要素を削除して2つを残し、それから3つ新しい要素を追加するとしま"
+"す。このとき二つの方法があります。"
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr "18行を一つ一つ削除して、3行を追加する"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr ""
+"コレクション全体を削除( <literal>DELETE</literal> の SQL を一回)し、そして5"
+"つの要素すべてを(一つずつ)追加する"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"Hibernate はこの場合に2番目の方法がより速いだろうとわかるほど賢くはありませ"
+"ん。(そして Hibernate がこのように賢いことも望ましくないでしょう。このような"
+"振る舞いはデータベースのトリガなどを混乱させるかもしれません。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"幸いにも、元のコレクションを捨て(つまり参照をやめて)、現在の要素をすべて持"
+"つ新しいコレクションのインスタンスを返すことで、いつでもこの振る舞い(2番目の"
+"戦略)を強制することが出来ます。時にこれはとても便利で強力です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"もちろん、一括削除は <literal>inverse=\"true\"</literal> を指定したコレクショ"
+"ンには行いません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "パフォーマンスのモニタリング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"最適化はモニタリングやパフォーマンスを示す数値がなければ十分に行えません。 "
+"Hibernate は内部処理のすべての範囲の数値を提供します。 Hibernate の統計情報"
+"は <literal>SessionFactory</literal> 単位で取得可能です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "SessionFactory のモニタリング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"<literal>SessionFactory</literal> のメトリクスにアクセスするには2つの方法があ"
+"ります。最初の方法は、 <literal>sessionFactory.getStatistics()</literal> を呼"
+"び出し、自分で <literal>Statistics</literal> の読み込みや表示を行います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"<literal>StatisticsService</literal> MBean を有効にしていれば、 Hibernate は "
+"JMX を使ってメトリクスを発行することもできます。1つの MBean をすべての "
+"<literal>SessionFactory</literal> に対して有効にするか、 SessionFactory ごと"
+"に一つの MBean を有効にすることが出来ます。最小限の設定例である以下のコードを"
+"見てください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"<literal>SessionFactory</literal> に対してモニタリングの開始(終了)を行うこ"
+"とが出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"設定時には、 <literal>hibernate.generate_statistics</literal> を "
+"<literal>false</literal> にします"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"実行時に、 <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"または <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal> を呼"
+"び出します"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"統計は <literal>clear()</literal> メソッドを使って手動でリセットすることが出"
+"来ます。サマリは <literal>logSummary()</literal> メソッドを使って logger に送"
+"ることが出来ます(info レベルです)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "メトリクス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"多くのものがあります。すべての使用可能なカウンタは <literal>Statistics</"
+"literal> インターフェースの API に書かれており、3つの分類があります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"メトリクスは一般的な <literal>Session</literal> の使い方と関係しています。"
+"オープンしたセッションの数が JDBC コネクションと関連しているのと同じです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr ""
+"メトリクスは要素、コレクション、クエリやキャッシュなど全体に関係しています"
+"(別名はグローバルメトリクスです)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr ""
+"メトリクスの詳細は特定のエンティティ、コレクション、クエリ、キャッシュ領域に"
+"関係しています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"例として、キャッシュのヒット、ヒットミスや、要素、コレクション、クエリの割"
+"合、クエリの実行に必要な平均時間を確認できます。ミリ秒の数値は Java の近似を"
+"受けることに注意してください。 Hibernate は JVM の精度に制限され、プラット"
+"フォームによっては10秒単位でしか正確でないかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"単純な getter はグローバルメトリクス(すなわち特定のエンティティ、コレクショ"
+"ン、キャッシュ領域などに縛られない)にアクセスするために使います。特定のエン"
+"ティティ、コレクション、キャッシュ領域のメトリクスは、それらの名前や、クエリ"
+"の HQL 、 SQL 表現によってアクセスすることが出来ます。さらに詳しい情報は、 "
+"<literal>Statistics</literal> 、 <literal>EntityStatistics</literal> 、 "
+"<literal>CollectionStatistics</literal> 、 "
+"<literal>SecondLevelCacheStatistics</literal> 、 <literal>QueryStatistics</"
+"literal> API の javadoc を参照してください。以下のコードは簡単な例です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"すべてのエンティティ、コレクション、クエリ、キャッシュ領域に対して行う場合"
+"は、 <literal>getQueries()</literal> 、 <literal>getEntityNames()</"
+"literal>、 <literal>getCollectionRoleNames()</literal> 、 "
+"<literal>getSecondLevelCacheRegionNames()</literal> メソッドでそれぞれの名前"
+"のリストを取得することが出来ます。"
+
+#~ msgid ""
+#~ "This setting creates two new cache regions: one holding cached query "
+#~ "result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), "
+#~ "the other holding timestamps of the most recent updates to queryable "
+#~ "tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). "
+#~ "Note that the query cache does not cache the state of the actual entities "
+#~ "in the result set; it caches only identifier values and results of value "
+#~ "type. The query cache should always be used in conjunction with the "
+#~ "second-level cache."
+#~ msgstr ""
+#~ "この設定は新たに二つのキャッシュ領域の作成を行います。一つはクエリのリザル"
+#~ "トセットのキャッシュ( <literal>org.hibernate.cache.StandardQueryCache</"
+#~ "literal> )を保持し、もう1つはクエリ可能なテーブルへの最新の更新タイムスタ"
+#~ "ンプ ( <literal>org.hibernate.cache.UpdateTimestampsCache</literal> )を"
+#~ "保持します。クエリキャッシュはリザルトセットの実際の要素の状態はキャッシュ"
+#~ "しないことに注意してください。キャッシュするのは識別子の値と、値型の結果の"
+#~ "みです。そのため、クエリキャッシュは常に二次キャッシュと一緒に使うべきで"
+#~ "す。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // "
+#~ "Error!]]>"
+#~ msgstr ""
+#~ "s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // Error!"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"permissions\" \n"
+#~ "            fetch=\"join\">\n"
+#~ "    <key column=\"userId\"/>\n"
+#~ "    <one-to-many class=\"Permission\"/>\n"
+#~ "</set]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"permissions\" \n"
+#~ "            fetch=\"join\"&gt;\n"
+#~ "    &lt;key column=\"userId\"/&gt;\n"
+#~ "    &lt;one-to-many class=\"Permission\"/&gt;\n"
+#~ "&lt;/set"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
+#~ msgstr "&lt;many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();]]>"
+#~ msgstr ""
+#~ "User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Cat\" proxy=\"Cat\"&gt;\n"
+#~ "    ......\n"
+#~ "    &lt;subclass name=\"DomesticCat\"&gt;\n"
+#~ "        .....\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a "
+#~ "proxy (does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a proxy "
+#~ "(does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);            // "
+#~ "instantiate a Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(Cat.class, id);            // instantiate a "
+#~ "Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0]]>"
+#~ msgstr ""
+#~ "cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CatImpl\" proxy=\"Cat\"&gt;\n"
+#~ "    ......\n"
+#~ "    &lt;subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\"&gt;\n"
+#~ "        .....\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+#~ "name='fritz'\").iterate();\n"
+#~ "Cat fritz = (Cat) iter.next();]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.iterate(\"from CatImpl as cat where cat."
+#~ "name='fritz'\");\n"
+#~ "Cat fritz = (Cat) iter.next();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" )."
+#~ "list().get(0) ).intValue()]]>"
+#~ msgstr ""
+#~ "( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get"
+#~ "(0) ).intValue()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+#~ "setMaxResults(10).list();]]>"
+#~ msgstr ""
+#~ "s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10)."
+#~ "list();"
+
+#, fuzzy
+#~ msgid "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+#~ msgstr "&lt;class name=\"Person\" batch-size=\"10\"&gt;...&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <set name=\"cats\" batch-size=\"3\">\n"
+#~ "        ...\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;set name=\"cats\" batch-size=\"3\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Document\">\n"
+#~ "       <id name=\"id\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+#~ "    <property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/>\n"
+#~ "    <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true"
+#~ "\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Document\"&gt;\n"
+#~ "       &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\" length=\"50\"/&gt;\n"
+#~ "    &lt;property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/&gt;\n"
+#~ "    &lt;property name=\"text\" not-null=\"true\" length=\"2000\" lazy="
+#~ "\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+#~ "    <taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\">\n"
+#~ "        <classpath path=\"${jar.path}\"/>\n"
+#~ "        <classpath path=\"${classes.dir}\"/>\n"
+#~ "        <classpath refid=\"lib.class.path\"/>\n"
+#~ "    </taskdef>\n"
+#~ "\n"
+#~ "    <instrument verbose=\"true\">\n"
+#~ "        <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+#~ "            <include name=\"*.class\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </instrument>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"instrument\" depends=\"compile\"&gt;\n"
+#~ "    &lt;taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\"&gt;\n"
+#~ "        &lt;classpath path=\"&#36;{jar.path}\"/&gt;\n"
+#~ "        &lt;classpath path=\"&#36;{classes.dir}\"/&gt;\n"
+#~ "        &lt;classpath refid=\"lib.class.path\"/&gt;\n"
+#~ "    &lt;/taskdef&gt;\n"
+#~ "\n"
+#~ "    &lt;instrument verbose=\"true\"&gt;\n"
+#~ "        &lt;fileset dir=\"&#36;{testclasses.dir}/org/hibernate/auction/"
+#~ "model\"&gt;\n"
+#~ "            &lt;include name=\"*.class\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/instrument&gt;\n"
+#~ "&lt;/target&gt;"
+
+#~ msgid "<entry>yes</entry>"
+#~ msgstr "<entry>yes</entry>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+#~ "    <cache usage=\"read-only\"/>\n"
+#~ "    ....\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Immutable\" mutable=\"false\"&gt;\n"
+#~ "    &lt;cache usage=\"read-only\"/&gt;\n"
+#~ "    ....\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Cat\" .... >\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"kittens\" ... >\n"
+#~ "        <cache usage=\"read-write\"/>\n"
+#~ "        ....\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Cat\" .... &gt;\n"
+#~ "    &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"kittens\" ... &gt;\n"
+#~ "        &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "        ....\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\")."
+#~ "scroll(); //a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll(); //"
+#~ "a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular "
+#~ "Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections]]>"
+#~ msgstr ""
+#~ "sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();]]>"
+#~ msgstr ""
+#~ "Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true]]>"
+#~ msgstr ""
+#~ "hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true"
+
+#, fuzzy
+#~ msgid "<![CDATA[hibernate.cache.use_query_cache true]]>"
+#~ msgstr "hibernate.cache.use_query_cache true"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog."
+#~ "blogger = :blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :"
+#~ "blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();]]>"
+#~ msgstr ""
+#~ "Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+#~ msgstr ""
+#~ "// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+#~ msgstr ""
+#~ "// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics"
+#~ "();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );]]>"
+#~ msgstr ""
+#~ "Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1066 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-04 13:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "永続クラス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state. For example, an instance can instead be transient "
+"or detached."
+msgstr ""
+"永続クラスはビジネス上の問題のエンティティ(例えば、 E コマースアプリケーショ"
+"ンの顧客や注文) を実装するアプリケーションのクラスです。永続クラスのすべての"
+"インスタンスが永続状態であると見なされるわけではありません。インスタンスは逆"
+"に一時的(transient)であったり、分離状態(detached)であったりするかもしれま"
+"せん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You can express a domain model "
+"in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+"Plain Old Java Object (POJO)プログラミングモデルとしても知られるいくつかの単"
+"純なルールに従うなら、 Hibernate は最もよく働きます。しかしこれらのルールは難"
+"しいものではありません。実際 Hibernate3 は永続オブジェクトの性質にほとんど何"
+"の前提も置いていません。ドメインモデルは他の方法で表現することもできます。例"
+"えば <literal>Map</literal> インスタンスのツリーを使う方法があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "単純な POJO の例"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Most Java applications require a persistent class representing felines. For "
+"example:"
+msgstr "以下はネコ科の動物を表現する永続クラスです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The four main rules of persistent classes are explored in more detail in the "
+"following sections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "引数のないコンストラクタを実装する"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which can be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. It "
+"is recommended that you have a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal> には引数のないコンストラクタがあります。 Hibernate が "
+"<literal>Constructor.newInstance()</literal> を使って永続クラスのインスタンス"
+"化を行えるように、すべての永続クラスにはデフォルトコンストラクタ (public で"
+"なくても構いません) がなければなりません。 Hibernate の実行時プロキシ生成の"
+"ために、少なくとも <emphasis>package</emphasis> の可視性を持つデフォルトコン"
+"ストラクタを強くお勧めします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "識別子プロパティを用意する(オプション)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. If your legacy database table has "
+"composite keys, you can use a user-defined class with properties of these "
+"types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+"<literal>Cat</literal> には <literal>id</literal> というプロパティがありま"
+"す。このプロパティはデータベーステーブルの主キーカラムへマッピングされます。"
+"このプロパティの名前は何でも構いませんし、型はどのようなプリミティブ型でも、"
+"プリミティブの「ラッパー」型でも、 <literal>java.lang.String</literal> や "
+"<literal>java.util.Date</literal> でも構いません。 (もしレガシーデータベース"
+"テーブルが複合キーを持つならば、今述べたような型のプロパティを持つユーザー定"
+"義のクラスを使うことさえ可能です。後で複合識別子のセクションを見てくださ"
+"い。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"識別子プロパティは厳密にはオプションです。これを省略して、 Hibernate に内部的"
+"にオブジェクトの識別子を追跡させることは可能です。しかしお勧めはしません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes that declare an "
+"identifier property:"
+msgstr ""
+"実際に、識別子プロパティを宣言するクラスだけが利用可能な機能がいくつかありま"
+"す:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+"分離オブジェクトの連鎖的な再追加(カスケード更新やカスケードマージ) - <xref "
+"linkend=\"objectstate-transitive\" />次を参照してください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "<xref linkend=\"objectstate-transitive\" />"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "<literal>Session.merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We recommend that you declare consistently-named identifier properties on "
+"persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+"永続クラスには、一貫した名前の識別子プロパティを定義することをお勧めします。"
+"さらに null 値を取れる(つまりプリミティブではない)型を使った方がよいでしょ"
+"う。"
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "final クラスにしない(オプション)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Hibernate の中心的な特徴である <emphasis>プロキシ</emphasis> は、永続クラス"
+"が final でないこと、またはメソッドを全部 public で宣言しているインターフェー"
+"スが実装されているかに依存しています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate. You will not, however, be able to use proxies for "
+"lazy association fetching which will ultimately limit your options for "
+"performance tuning."
+msgstr ""
+"Hibernate でインターフェースを実装していない <literal>final</literal> クラス"
+"を永続化することはできますが、遅延関連フェッチに対してプロキシを使うことはで"
+"きなくなります。これはパフォーマンスチューニングへの選択肢を狭めることになり"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"final ではないクラスで <literal>public final</literal> メソッドを定義すること"
+"も避けるべきです。 <literal>public final</literal> メソッドを持つクラスを使い"
+"たければ、 <literal>lazy=\"false\"</literal> と設定して明示的にプロキシを無効"
+"にしなければなりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr "永続フィールドに対するアクセサとミューテータを定義する(オプション)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. It is "
+"better to provide an indirection between the relational schema and internal "
+"data structures of the class. By default, Hibernate persists JavaBeans style "
+"properties and recognizes method names of the form <literal>getFoo</"
+"literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If "
+"required, you can switch to direct field access for particular properties."
+msgstr ""
+"<literal>Cat</literal> ではすべての永続フィールドに対してアクセサメソッドを定"
+"義しています。他の多くの ORM ツールは、永続インスタンス変数を直接永続化しま"
+"す。私たちはリレーショナルスキーマとクラスの内部構造を分離する方が良いと信じ"
+"ています。デフォルトでは、 Hibernate は JavaBean スタイルのプロパティを永続化"
+"し、 <literal>getFoo</literal>, <literal>isFoo</literal>, <literal>setFoo</"
+"literal> 形式のメソッド名を認識します。しかし必要なら、特定のプロパティに対し"
+"て、直接のフィールドアクセスに切り替えることは可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"プロパティは public で宣言する必要は <emphasis>ありません</emphasis> 。 "
+"Hibernate はデフォルトで、 <literal>protected</literal> もしくは "
+"<literal>private</literal> の get / set のペアを持つプロパティを永続化するこ"
+"とができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "継承の実装"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+"サブクラスも1番目と2番目のルールを守らなければなりません。サブクラスはスー"
+"パークラス <literal>Cat</literal> から識別子プロパティを継承します。"
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr "<literal>equals()</literal> と <literal>hashCode()</literal>の実装"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you:"
+msgstr ""
+"以下の条件の場合、 <literal>equals()</literal> と <literal>hashCode()</"
+"literal> メソッドをオーバーライドしなければなりません、"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations); <emphasis>and</"
+"emphasis>"
+msgstr ""
+"永続クラスのインスタンスを <literal>Set</literal> に置く場合。 (これは多値の"
+"関連を表現するおすすめの方法です) <emphasis>そして同時に</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "分離インスタンスをセッションへ再追加する場合。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. When you mix instances "
+"retrieved in different sessions, you must implement <literal>equals()</"
+"literal> and <literal>hashCode()</literal> if you wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate は、永続 ID (データベースの行)と、特定のセッションスコープ内に限"
+"定ですが Java ID とが等価であることを保証します。ですから異なるセッションで検"
+"索したインスタンスを組み合わせる場合、 <literal>Set</literal> に意味のあるセ"
+"マンティクスを持たせようと思っているならすぐに <literal>equals()</literal> "
+"と <literal>hashCode()</literal> を実装しなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, "
+"because they are equal. If both are added to a <literal>Set</literal>, you "
+"will only have one element in the <literal>Set</literal>). Unfortunately, "
+"you cannot use that approach with generated identifiers. Hibernate will only "
+"assign identifier values to objects that are persistent; a newly created "
+"instance will not have any identifier value. Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. This is not a "
+"Hibernate issue, but normal Java semantics of object identity and equality."
+msgstr ""
+"最も明白な方法は、両方のオブジェクトの識別子の値の比較によって "
+"<literal>equals()</literal>と <literal>hashCode()</literal> を実装する方法で"
+"す。値が同じなら、両者はデータベースの同じ行でなければならないため等しくなり"
+"ます。 (両者が <literal>Set</literal> に追加されても、 <literal>Set</"
+"literal> には1個の要素しかないことになります) 残念なことに、生成された識別子"
+"にはこのアプローチを使うことができません。 Hibernate は永続化されたオブジェク"
+"トへ識別子の値を代入するだけであり、新しく作成されたインスタンスはどのような"
+"識別子の値も持っていません。さらに、インスタンスがセーブされておらず、現在 "
+"<literal>Set</literal> の中にあれば、セーブするとオブジェクトへ識別子の値を代"
+"入することになります。もし <literal>equals()</literal> と <literal>hashCode()"
+"</literal> が識別子の値に基づいているなら、ハッシュコードが変更されると "
+"<literal>Set</literal> の規約が破られます。この問題についての完全な議論は、 "
+"Hibernate のウェブサイトを見てください。これは Hibernate の問題ではなく、オブ"
+"ジェクトの同一性と等価性についての、通常の Java のセマンティクスであることに"
+"注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> using <emphasis>Business key equality</"
+"emphasis>. Business key equality means that the <literal>equals()</literal> "
+"method compares only the properties that form the business key. It is a key "
+"that would identify our instance in the real world (a <emphasis>natural</"
+"emphasis> candidate key):"
+msgstr ""
+"<emphasis>ビジネスキーの等価性</emphasis> を使って、 <literal>equals()</"
+"literal> と <literal>hashCode()</literal> を実装することをお勧めします。ビジ"
+"ネスキーの等価性とは、 <literal>equals()</literal> メソッドが、ビジネスキー、"
+"つまり現実の世界においてインスタンスを特定するキー(<emphasis>自然</"
+"emphasis> 候補キー) を形成するプロパティだけを比較することを意味します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A business key does not have to be as solid as a database primary key "
+"candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable "
+"or unique properties are usually good candidates for a business key."
+msgstr ""
+"ビジネスキーはデータベースの主キー候補ほど安定である必要はないことに注意して"
+"ください (<xref linkend=\"transactions-basics-identity\"/> を参照してくださ"
+"い)。更新不可なプロパティやユニークなプロパティは、通常ビジネスキーのよい候"
+"補です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "動的モデル"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>The following features are currently considered experimental and "
+"may change in the near future.</emphasis>"
+msgstr ""
+"以下の機能は現在実験段階にあると見なされており、近い将来変更される可能性があ"
+"ることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent entities do not necessarily have to be represented as POJO "
+"classes or as JavaBean objects at runtime. Hibernate also supports dynamic "
+"models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) "
+"and the representation of entities as DOM4J trees. With this approach, you "
+"do not write persistent classes, only mapping files."
+msgstr ""
+"永続エンティティは、必ずしも実行時に POJO クラスや JavaBean オブジェクトで表"
+"現する必要はありません。 Hibernate は(実行時に <literal>Map</literal> の "
+"<literal>Map</literal> を使う)動的モデルと、 DOM4J ツリーとしてのエンティ"
+"ティの表現もサポートします。このアプローチを使うと永続クラスを書かず、マッピ"
+"ングファイルだけを書くことになります。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You can set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+"デフォルトでは、 Hibernate は通常の POJO モードで動作します。 "
+"<literal>default_entity_mode</literal> 設定オプションを使って、特定の "
+"<literal>SessionFactory</literal> に対するデフォルトのエンティティ表現モード"
+"を設定することができます (<xref linkend=\"configuration-optional-properties"
+"\"/> を見てください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following examples demonstrate the representation using <literal>Map</"
+"literal>s. First, in the mapping file an <literal>entity-name</literal> has "
+"to be declared instead of, or in addition to, a class name:"
+msgstr ""
+"以下の例では <literal>Map</literal> を使った表現を紹介します。まずマッピング"
+"ファイルで、クラス名の代わりに(またはそれに加えて) <literal>entity-name</"
+"literal> を定義しなければなりません:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though associations are declared using target class names, the target "
+"type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+"関連がターゲットのクラス名を使って定義していたとしても、関連のターゲット型も "
+"POJO ではなく動的なエンティティでも構わないことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, you can, at runtime, work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"<literal>SessionFactory</literal> に対してデフォルトのエンティティモードを "
+"<literal>dynamic-map</literal> に設定した後、実行時に <literal>Map</literal> "
+"の <literal>Map</literal> を使うことができます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the main advantages of dynamic mapping is quick turnaround time for "
+"prototyping, without the need for entity class implementation. However, you "
+"lose compile-time type checking and will likely deal with many exceptions at "
+"runtime. As a result of the Hibernate mapping, the database schema can "
+"easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"動的なマッピングの利点は、エンティティクラスの実装を必要としないため、プロト"
+"タイピングに要するターンアラウンドタイムが早いということです。しかしコンパイ"
+"ル時の型チェックがないので、実行時に非常に多くの例外処理を扱わなければならな"
+"いでしょう。 Hibernate マッピングのおかげで、データベーススキーマは容易に正規"
+"化でき、健全になり、後で適切なドメインモデルの実装を追加することが可能になり"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"エンティティ表現モードは <literal>Session</literal> ごとに設定することも可能"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you do not have to call <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"<literal>EntityMode</literal> を使った <literal>getSession()</literal> の呼び"
+"出しは <literal>SessionFactory</literal> ではなく <literal>Session</literal> "
+"APIにあることに注意してください。その方法では、新しい <literal>Session</"
+"literal> は、ベースとなる JDBC コネクション、トランザクション、その他のコンテ"
+"キスト情報を共有します。これは2番目の <literal>Session</literal> では "
+"<literal>flush()</literal> と <literal>close()</literal> を呼ぶ必要がないとい"
+"うこと、そのためトランザクションとコネクションの管理を1番目の作業単位(Unit "
+"of Work)に任せることができるということです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\" />."
+msgstr ""
+"XML 表現の能力についてのさらなる情報は <xref linkend=\"xml\"/> に記述されてい"
+"ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "Tuplizer"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing that knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the corresponding tuplizer knows how create the POJO "
+"through its constructor. It also knows how to access the POJO properties "
+"using the defined property accessors."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal> とそのサブインターフェース"
+"は、表現の <literal>org.hibernate.EntityMode</literal> を利用して、データ断片"
+"のある表現の管理に責任を持ちます。与えられたデータ断片をデータ構造として考え"
+"るなら、 Tuplizer はそのようなデータ構造をどのように作成するかを知り、そのよ"
+"うなデータ構造からどのように値を抽出し、注入するかを知っています。例えば "
+"POJO エンティティモードでは、対応する Tuplizer はコンストラクタを通して、 "
+"POJO をどのように作成するか、定義されたプロパティアクセサを使い、 POJO プロパ"
+"ティにどのようにアクセスするかを知ります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two high-level types of Tuplizers, represented by the <literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> interfaces. "
+"<literal>EntityTuplizer</literal>s are responsible for managing the above "
+"mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+"Tuplizer には二つのハイレベルの型があります。それらは、<literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> と <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> インターフェースで表現されます。 "
+"<literal>EntityTuplizer</literal> は上で述べたようなエンティティに関する契約"
+"の管理に責任を持ちます。一方、 <literal>ComponentTuplizer</literal> はコン"
+"ポーネントに関する契約の管理に責任を持ちます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Users can also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode. Or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizer definitions are attached to the entity or component "
+"mapping they are meant to manage. Going back to the example of our customer "
+"entity:"
+msgstr ""
+"ユーザーは独自の Tuplizer に差し替えることも可能です。おそらく dynamic-map "
+"entity-mode の際に <literal>java.util.HashMap</literal> を使うのではなく、 "
+"<literal>java.util.Map</literal> の実装が必要でしょう。もしくは、おそらくデ"
+"フォルトのものではなく、別のプロキシ生成戦略の定義が必要でしょう。両者とも、"
+"カスタムの Tuplizer 実装を定義することで達成されます。 Tuplizer の定義は、管"
+"理しようとするエンティティやコンポーネントのマッピングに結び付けられます。顧"
+"客エンティティの例は以下になります:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "EntityNameResolvers"
+msgstr "エンティティリゾルバ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"interface is a contract for resolving the entity name of a given entity "
+"instance. The interface defines a single method "
+"<methodname>resolveEntityName</methodname> which is passed the entity "
+"instance and is expected to return the appropriate entity name (null is "
+"allowed and would indicate that the resolver does not know how to resolve "
+"the entity name of the given entity instance). Generally speaking, an "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> is going to "
+"be most useful in the case of dynamic models. One example might be using "
+"proxied interfaces as your domain model. The hibernate test suite has an "
+"example of this exact style of usage under the <package>org.hibernate.test."
+"dynamicentity.tuplizer2</package>. Here is some of the code from that "
+"package for illustration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to register an <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> users must either:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link>, implementing the <methodname>getEntityNameResolvers</methodname> "
+"method."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (which is the implementation class for <interfacename>org."
+"hibernate.SessionFactory</interfacename>) using the "
+"<methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "            kitten.setMother(this);\n"
+#~ "        kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "    kitten.setMother(this);\n"
+#~ "kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "\n"
+#~ "        <id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/>\n"
+#~ "\n"
+#~ "        <bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "            <key column=\"CUSTOMER_ID\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "    \n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class entity-name=\"Customer\"&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\"&gt;\n"
+#~ "            &lt;key column=\"CUSTOMER_ID\"/&gt;\n"
+#~ "            &lt;one-to-many class=\"Order\"/&gt;\n"
+#~ "        &lt;/bag&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "    \n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();]]>"
+#~ msgstr ""
+#~ "Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode."
+#~ "MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "        <!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        -->\n"
+#~ "        <tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/>\n"
+#~ "\n"
+#~ "        <id name=\"id\" type=\"long\" column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <!-- other properties -->\n"
+#~ "        ...\n"
+#~ "    </class>\n"
+#~ "</hibernate-mapping>\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "            protected final Map generateMap() {\n"
+#~ "                    return new CustomMap();\n"
+#~ "            }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    &lt;class entity-name=\"Customer\"&gt;\n"
+#~ "        &lt;!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        --&gt;\n"
+#~ "        &lt;tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/&gt;\n"
+#~ "\n"
+#~ "        &lt;id name=\"id\" type=\"long\" column=\"ID\"&gt;\n"
+#~ "            &lt;generator class=\"sequence\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- other properties --&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/class&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "    protected final Map generateMap() {\n"
+#~ "    return new CustomMap();\n"
+#~ "    }\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,244 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-01-20 17:03+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: portability.xml:31
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr ""
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:77
+#, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException]]></"
+"programlisting>. The basic contract here is that if the resolver "
+"'understands' the given database metadata then it returns the corresponding "
+"Dialect; if not it returns null and the process continues to the next "
+"resolver. The signature also identifies <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname> as possibly being thrown. "
+"A JDBCConnectionException here is interpreted to imply a \"non transient"
+"\" (aka non-recoverable) connection problem and is used to indicate an "
+"immediate stop to resolution attempts. All other exceptions result in a "
+"warning and continuing on to the next resolver."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:103
+#, no-c-format
+msgid "Identifier generation"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:105
+#, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics. <note> <para> Hibernate was changed slightly once the implication "
+"of this was better understood so that the insert is delayed in cases where "
+"that is feasible. </para> </note> The underlying issue is that the actual "
+"semanctics of the application itself changes in these cases."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way. <note> <para> There are "
+"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
+"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
+"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
+"listitem> </itemizedlist> </para> </note> The idea behind these generators "
+"is to port the actual semantics of the identifer value generation to the "
+"different databases. For example, the <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
+"databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, no-c-format
+msgid "Database functions"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr ""
+
+#, fuzzy
+#~ msgid ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+#~ msgstr ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+
+#, fuzzy
+#~ msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+#~ msgstr "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,189 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2009-12-21 17:17+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "前書き"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an Object/Relational Mapping tool for Java environments. The term Object/"
+"Relational Mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"オブジェクト指向のソフトウェアやリレーショナルデータベースの使用は、 今日のエ"
+"ンタープライズ環境では非常に繁雑で時間のかかる作業となります。 Hibernate は "
+"Java 環境用のオブジェクト/リレーショナルマッピングツールです。 オブジェクト/"
+"リレーショナルマッピング (ORM) とはデータ表現をオブジェクトモデルから SQL "
+"ベースのスキーマによるリレーショナルデータモデルにマッピングする技術のことを"
+"指します。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities. It can also significantly reduce development "
+"time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate は Java クラスからデータベーステーブルへのマッピング(及び Java デー"
+"タタイプから SQL データタイプへのマッピング)を行うだけでなくデータのクエリや"
+"検索機能も提供するため、 SQL や JDBC での手作業によるデータ処理を除き開発に要"
+"する時間を大幅に削減することが可能になります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"Hibernate の目標は、 開発者にとってのプログラミングにおける一般的なデータ永続"
+"性の作業の 95 % を軽減することです。 Hibernate データベース内でビジネスロジッ"
+"クを実現するストアドプロシージャのみを使用するデータ処理中心のアプリケーショ"
+"ンに対しては最適ではないかもしれませんが、 Java ベースの中間層でのビジネスロ"
+"ジック及びオブジェクト指向のドメインモデルを使用する場合に最も役に立ちます。 "
+"Hibernate は開発者がベンダー固有の SQL コードの除去あるいはカプセル化を行う際"
+"に便利なため、 表形式の表現からオブジェクトのグラフへの結果セットの変換に関す"
+"る一般的な作業に役立ちます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"Hibernate 及びオブジェクト/リレーショナルマッピング、 あるいは Java が不慣れ"
+"な方は、 次の手順を行ってください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"ステップバイステップの解説が行われているチュートリアルとして <xref linkend="
+"\"tutorial\"/> をお読みください。 チュートリアルのソースコードはそのディスト"
+"リビューションの <literal>doc/reference/tutorial/</literal> ディレクトリ配下"
+"にあります。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\" /> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Hibernate が使用できる環境について理解するため、 <xref linkend=\"architecture"
+"\"/> をお読みください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"View the <literal>eg/</literal> directory in the Hibernate distribution. It "
+"contains a simple standalone application. Copy your JDBC driver to the "
+"<literal>lib/</literal> directory and edit <literal>etc/hibernate."
+"properties</literal>, specifying correct values for your database. From a "
+"command prompt in the distribution directory, type <literal>ant eg</literal> "
+"(using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Hibernate ディストリビューション内の <literal>eg/</literal> ディレクトリ内を"
+"見てください。 シンプルなスタンドアローンのアプリケーションが含まれていま"
+"す。 ご使用の JDBC ドライバを <literal>lib/</literal> ディレクトリにコピーし"
+"てから使用するデータベースに対して正しい値を指定するよう <literal>etc/"
+"hibernate.properties</literal> を編集します。 ディストリビューションディレク"
+"トリ内のコマンドプロンプトから、 <literal>ant eg</literal> (Ant を使用)と入力"
+"するか、 Windows 環境の場合は <literal>build eg</literal> と入力します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need "
+"more help with application design, or if you prefer a step-by-step tutorial. "
+"Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download "
+"the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+"おもな情報源として本リファレンスドキュメントをご利用ください。 アプリケーショ"
+"ンのデザインに関する詳細、 ステップバイステップによる解説が必要な場合は、 "
+"<emphasis>Hibernate in Action</emphasis> (http://www.manning.com/bauer) をお"
+"読みになってもいいでしょう。 また、 http://caveatemptor.hibernate.org から "
+"Hibernate in Action のサンプルアプリケーションをダウンロードすることもできま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr "よくある質問とその答え (FAQ) は Hibernate ウェブサイトでご覧ください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Links to third party demos, examples, and tutorials are maintained on the "
+"Hibernate website."
+msgstr ""
+"サードパーティのデモ、 サンプル、 チュートリアルなどは Hibernate のウェブサイ"
+"ト上にリンクされています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"Hibernate ウェブサイト上の Community Area はデザインのパターンやさまざまな統"
+"合ソリューション (Tomcat、 JBoss AS、 Struts、 EJB など)を検索する上で興味深"
+"いリソースになります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue tracking system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"質問がある場合は、 Hibernate ウェブサイト上にリンクされたユーザーフォーラムを"
+"ご利用ください。 また、 バグ報告及び今後のリクエストに関しては JIRA (問題追跡"
+"システム) を提供しています。 Hibernate, の開発に興味がある方は、 開発者用メー"
+"リングリストにご参加ください。 本ドキュメントの翻訳に興味がある方は、 開発者"
+"用メーリングリストよりご連絡ください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"Hibernate に関する商業用開発サポート、 実稼働サポート、 トレーニングについて"
+"は JBoss Inc よりご利用頂けます (http://www.hibernate.org/SupportTraining/ を"
+"参照)。 Hibernate はプロフェッショナルなオープンソースプロジェクトであり、 "
+"JBoss Enterprise Middleware System (JEMS) スィート製品の重要なコンポーネント"
+"になります。"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,903 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-18 13:38+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "Criteria クエリ"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr ""
+"Hibernate には、直感的で拡張可能な criteria クエリ API が用意されています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "<literal>Criteria</literal> インスタンスの作成"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"<literal>org.hibernate.Criteria</literal> インターフェースは特定の永続性クラ"
+"スに対するクエリを表現します。 <literal>Session</literal> は "
+"<literal>Criteria</literal> インスタンスのファクトリです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "リザルトセットの絞込み"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"<literal>org.hibernate.criterion.Criterion</literal> インターフェースのインス"
+"タンスは、個別のクエリクライテリオン(問い合わせの判定基準)を表します。 "
+"<literal>org.hibernate.criterion.Restrictions</literal> クラスは、ある組み込"
+"みの <literal>Criterion</literal> 型を取得するためのファクトリメソッドを持っ"
+"ています。"
+
+#. Tag: para
+#, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "Restriction (限定)は、論理的にグループ化できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses). One of the most useful allows you to specify SQL "
+"directly."
+msgstr ""
+"元々ある Criterion 型(<literal>Restrictions</literal> のサブクラス) はかな"
+"りの範囲に及びますが、特に有用なのは SQL を直接指定できるものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"<literal>{alias}</literal> というプレースホルダは、問い合わせを受けたエンティ"
+"ティの行の別名によって置き換えられます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also obtain a criterion from a <literal>Property</literal> instance. "
+"You can create a <literal>Property</literal> by calling <literal>Property."
+"forName()</literal>:"
+msgstr ""
+"criterion を得る別の手段は、 <literal>Property</literal> インスタンスから取得"
+"することです。 <literal>Property.forName()</literal> を呼び出して、 "
+"<literal>Property</literal> インスタンスを作成できます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "結果の整列"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"<literal>org.hibernate.criterion.Order</literal> を使って結果を並び替えること"
+"ができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By navigating associations using <literal>createCriteria()</literal> you can "
+"specify constraints upon related entities:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second <literal>createCriteria()</literal> returns a new instance of "
+"<literal>Criteria</literal> that refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"2番目の <literal>createCriteria()</literal> は、 <literal>kittens</literal> "
+"コレクションの要素を参照する新しい <literal>Criteria</literal> インスタンスを"
+"返すことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is also an alternate form that is useful in certain circumstances:"
+msgstr "以下のような方法も、状況により有用です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal> は新しい <literal>Criteria</literal> イン"
+"スタンスを作成しません。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The kittens collections held by the <literal>Cat</literal> instances "
+"returned by the previous two queries are <emphasis>not</emphasis> pre-"
+"filtered by the criteria. If you want to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"前の2つのクエリによって返される <literal>Cat</literal> インスタンスによって保"
+"持される kittens コレクションは、 criteria によって事前にフィルタリング "
+"<emphasis>されない</emphasis> ことに注意してください。もし criteria に適合す"
+"る kitten を取得したいなら、 <literal>ResultTransformer</literal> を使わなけ"
+"ればなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return all of the <literal>Cat</literal>s with a mate whose name "
+"starts with \"good\" ordered by their mate's age, and all cats who do not "
+"have a mate. This is useful when there is a need to order or limit in the "
+"database prior to returning complex/large result sets, and removes many "
+"instances where multiple queries would have to be performed and the results "
+"unioned by java in memory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Without this feature, first all of the cats without a mate would need to be "
+"loaded in one query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second query would need to retreive the cats with mates who's name started "
+"with \"good\" sorted by the mates age."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "関連の動的フェッチ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"<literal>setFetchMode()</literal> を使い、実行時に関連の復元方法を指定しても"
+"よいです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\" /> for "
+"more information."
+msgstr ""
+"このクエリは外部結合により <literal>mate</literal> と <literal>kittens</"
+"literal> の両方をフェッチします。詳細については <xref linkend=\"performance-"
+"fetching\"/> を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "クエリの例"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"<literal>org.hibernate.criterion.Example</literal> クラスは、与えられたインス"
+"タンスからクエリクライテリオンを構築できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"バージョンプロパティ、識別子、関連は無視されます。デフォルトでは null 値のプ"
+"ロパティは除外されます。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr ""
+"どのように <literal>Example</literal> を適用するか調整することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr ""
+"関連オブジェクトに criteria を指定するために、 example を使うことも可能です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "射影、集約、グループ化"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. You can apply a "
+"projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"<literal>org.hibernate.criterion.Projections</literal> クラスは "
+"<literal>Projection</literal> インスタンスのファクトリです。 "
+"<literal>setProjection()</literal> を呼び出すことで、クエリに射影を適用しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"必要であっても、 criteria クエリに「group by」を明示する必要はありません。あ"
+"る種の Projection 型は <emphasis>グループ化射影</emphasis> として定義され、 "
+"SQL の <literal>group by</literal> 節にも現れます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An alias can be assigned to a projection so that the projected value can be "
+"referred to in restrictions or orderings. Here are two different ways to do "
+"this:"
+msgstr ""
+"任意で射影に別名を付けられるため、射影される値は restriction や ordering 内か"
+"ら参照できます。別名をつける2つの異なる方法を示します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"<literal>alias()</literal> と <literal>as()</literal> メソッドは、 "
+"Projection インスタンスを別の名前の <literal>Projection</literal> インスタン"
+"スでラップするだけです。ショートカットとして、射影を射影リストに追加する際"
+"に、別名をつけられます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr "射影の式に <literal>Property.forName()</literal> も使用できます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "クエリおよびサブクエリの分離"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class allows you to create a query "
+"outside the scope of a session and then execute it using an arbitrary "
+"<literal>Session</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal> クラスにより、セッションスコープ外にクエ"
+"リを作成できます。後で、任意の <literal>Session</literal> を使って、実行でき"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> can also be used to express a "
+"subquery. Criterion instances involving subqueries can be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal> は、サブクエリを表現するためにも使えま"
+"す。サブクエリを伴う Criterion インスタンスは、 <literal>Subqueries</"
+"literal> もしくは <literal>Property</literal> から得られます。"
+
+#. Tag: para
+#, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "相互関係があるサブクエリでさえも可能です:"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "自然識別子によるクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not "
+"efficient because query cache invalidation occurs too frequently. However, "
+"there is a special kind of query where you can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"criteria クエリを含むたいていのクエリにとって、クエリキャッシュはあまり効率が"
+"よくないです。なぜなら、クエリキャッシュが頻繁に無効になるためです。しかしな"
+"がら、キャッシュを無効にするアルゴリズムを最適化できる特別なクエリの種類が1"
+"つあります。更新されない自然キーによる検索です。いくつかのアプリケーションで"
+"は、この種類のクエリが頻繁に現れます。このような使われ方のために、 criteria "
+"API は特別な対策を提供します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, map the natural key of your entity using <literal>&lt;natural-id&gt;</"
+"literal> and enable use of the second-level cache."
+msgstr ""
+"最初に、 <literal>&lt;natural-id&gt;</literal> を使って、エンティティの自然"
+"キーをマップしてください。そして、二次キャッシュを有効にします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"注記: <emphasis>変更される</emphasis> 自然キーを持つエンティティにこの機能を"
+"使うのは、意図されていない使い方です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you have enabled the Hibernate query cache, the <literal>Restrictions."
+"naturalId()</literal> allows you to make use of the more efficient cache "
+"algorithm."
+msgstr ""
+"これで、 <literal>Restrictions.naturalId()</literal> により、より効率的な"
+"キャッシュアルゴリズムを使用できます。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz%\", Hibernate.STRING) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz&#37;\", \n"
+#~ "        Hibernate.STRING) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F%\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F&#37;\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F%\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F&#37;\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat."
+#~ "class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat."
+#~ "class, \"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "
+#~ "\"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeightForSex) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\">\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <natural-id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <property name=\"org\"/>\n"
+#~ "    </natural-id>\n"
+#~ "    <property name=\"password\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"User\"&gt;\n"
+#~ "    &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;natural-id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;property name=\"org\"/&gt;\n"
+#~ "    &lt;/natural-id&gt;\n"
+#~ "    &lt;property name=\"password\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();]]>"
+#~ msgstr ""
+#~ "session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2326 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-01-13 17:08+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: Hibernate クエリ言語"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a powerful query language (HQL) that is similar in appearance "
+"to SQL. Compared with SQL, however, HQL is fully object-oriented and "
+"understands notions like inheritance, polymorphism and association."
+msgstr ""
+"Hibernate は SQL に非常によく似た (意図的に似せた) 強力な問い合わせ言語を備え"
+"ています。しかし SQL に似た構文に惑わされないでください。 HQL は完全にオブ"
+"ジェクト指向であり、継承、ポリモーフィズム、関連といった概念を理解します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "大文字と小文字の区別"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of names of Java classes and properties, queries are case-"
+"insensitive. 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 ""
+"クエリは Java のクラス名とプロパティ名を除いて大文字、小文字を区別しません。"
+"従って <literal>SeLeCT</literal> は <literal>sELEct</literal> と同じで、かつ "
+"<literal>SELECT</literal> とも同じですが <literal>org.hibernate.eg.FOO</"
+"literal> は <literal>org.hibernate.eg.Foo</literal> とは違い、かつ "
+"<literal>foo.barSet</literal> は <literal>foo.BARSET</literal> とも違います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but this convention is unsuitable for "
+"queries embedded in Java code."
+msgstr ""
+"このマニュアルでは小文字の HQL キーワードを使用します。大文字のキーワードのク"
+"エリの方が読みやすいと感じるユーザーもいると思います。ですが、 Java コード内"
+"に埋め込まれたときには見づらいと思います。"
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "from 節"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "もっとも単純な Hibernate クエリは次の形式です:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This returns all instances of the class <literal>eg.Cat</literal>. You do "
+"not usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. For example:"
+msgstr ""
+"これは単純に  <literal>eg.Cat</literal>  クラスのインスタンスをすべて返しま"
+"す。必ずしもクラス名を修飾する(クラスにパッケージ名を付ける)必要はありませ"
+"ん。というのも、 <literal>auto-import</literal> がデフォルトになっているから"
+"です。そのためほとんどの場合、このように書くだけで十分です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to refer to the <literal>Cat</literal> in other parts of the query, "
+"you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so you can use that alias later in the query. The "
+"<literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+"このクエリでは <literal>Cat</literal> インスタンスに <literal>cat</literal> "
+"という別名を付けています。そのため、後でこのクエリ内で、この別名を使うことが"
+"できます。 <literal>as</literal> キーワードはオプションです。つまりこのように"
+"書くこともできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Multiple classes can appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"直積、あるいは「クロス」結合によって多数のクラスが出現することもあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is good practice to name query aliases using an initial lowercase as this "
+"is consistent with Java naming standards for local variables (e.g. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"ローカル変数の Java のネーミング基準と一致した、頭文字に小文字を使ったクエリ"
+"の別名を付けることはいい習慣です (例えば <literal>domesticCat</literal>)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "関連と結合"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also assign aliases to associated entities or to elements of a "
+"collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+"関連するエンティティあるいは値コレクションの要素にも、 <literal>結合</"
+"literal> を使って別名を割り当てることが出来ます。"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "サポートしている結合のタイプは ANSI SQL と同じです。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "<literal>inner join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>left outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "<literal>right outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>full join</literal> (たいていの場合使いづらい)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"<literal>inner join</literal>、 <literal>left outer join</literal>、 "
+"<literal>right outer join</literal> には省略形を使うこともできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"HQL の <literal>with</literal> キーワードを使うと、結合条件を付け加えることが"
+"できます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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 outer join and lazy declarations of the mapping file for associations "
+"and collections. See <xref linkend=\"performance-fetching\" /> for more "
+"information."
+msgstr ""
+"加えて、「フェッチ」結合は関連や値のコレクションを親オブジェクトと一緒に1度"
+"の select 句で初期化します。これは特にコレクションの場合に有用です。これは実"
+"質上、関連とコレクションに対するマッピング定義ファイルの外部結合と lazy 初期"
+"化の定義を上書きすることになります。 <xref linkend=\"performance-fetching\"/"
+"> により多くの情報があります。"
+
+#. Tag: para
+#, 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). The associated objects are also not returned directly "
+"in the query results. Instead, they may be accessed via the parent object. "
+"The only reason you might need an alias is if you are recursively join "
+"fetching a further collection:"
+msgstr ""
+"結合によるフェッチは関連するオブジェクトが <literal>where</literal> 節 (また"
+"は他のどんな節でも) で使われてはならないので、通常別名を割り当てる必要があり"
+"ません。また関連オブジェクトは問い合わせ結果として直接返されません。代わりに"
+"親オブジェクトを通してアクセスできます。コレクションを再帰的に結合フェッチす"
+"る場合のみ、別名が必要になります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> construct cannot be used in queries called "
+"using <literal>iterate()</literal> (though <literal>scroll()</literal> can "
+"be used). <literal>Fetch</literal> should be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, "
+"as these operations are based on the result rows which usually contain "
+"duplicates for eager collection fetching, hence, the number of rows is not "
+"what you would expect. <literal>Fetch</literal> should also not be used "
+"together with impromptu <literal>with</literal> condition. It is possible to "
+"create a cartesian product by join fetching more than one collection in a "
+"query, so take care in this case. Join fetching multiple collection roles "
+"can produce unexpected results for bag mappings, so user discretion is "
+"advised when formulating queries in this case. Finally, note that "
+"<literal>full join fetch</literal> and <literal>right join fetch</literal> "
+"are not meaningful."
+msgstr ""
+"<literal>fetch</literal> 構文は <literal>iterate()</literal> を使ったクエリ呼"
+"び出しで使用できないことに注意してください (一方で <literal>scroll()</"
+"literal> は使用できます)。また、これらの操作は結果の行に基づいているため、 "
+"<literal>fetch</literal> は <literal>setMaxResults()</literal> や "
+"<literal>setFirstResult()</literal> と一緒に使用すべきではありません。通常 "
+"eager なコレクションフェッチをすると重複が出てしまうため、あなたが期待するよ"
+"うな行数にはならないのです。そしてまた <literal>fetch</literal> は、アドホッ"
+"クな <literal>with</literal> 条件を一緒に使うこともできません。一つのクエリで"
+"複数のコレクションを結合フェッチすることにより直積を作成できるので、この場合"
+"注意してください。また、複数のコレクションに対する結合フェッチは bag マッピン"
+"グに対して予期せぬ結果をもたらすことがあるので、この場合のクエリの作成には注"
+"意してください。最後に <literal>全外部結合によるフェッチ</literal> と "
+"<literal>右外部結合によるフェッチ</literal> は有用ではないことに注意してくだ"
+"さい。"
+
+#. Tag: para
+#, 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 in the first query immediately using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"もしプロパティレベルの遅延フェッチを使う場合(内部的にバイトコード処理をする"
+"場合)、 <literal>fetch all properties</literal> を使うことで Hibernate に遅"
+"延プロパティを速やかに(最初のクエリで)フェッチさせることができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "結合構文の形式"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL は2つの関連結合形式をサポートします: <literal>暗黙的</literal> と "
+"<literal>明示的</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form, that is, where the join keyword is explicitly used in the "
+"from clause. This is the recommended form."
+msgstr ""
+"これまでのセクションでお見せした使い方はすべて <literal>明示的な</literal> 形"
+"式で、 from 節で明示的に join キーワードを使っています。この形式をおすすめし"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"<literal>暗黙的</literal> フォームは、 join キーワードを使いません。代わり"
+"に、参照する関連にドット表記を使います。 <literal>暗黙的</literal> 結合は、さ"
+"まざまな HQL に出てきます。 <literal>暗黙的</literal> 結合の結果は、 SQL ス"
+"テートメントの内部結合結果です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Referring to identifier property"
+msgstr "識別子プロパティの参照"
+
+#. Tag: para
+#, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr "エンティティの識別子プロパティは、一般的に2つの方法で参照されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that the "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"特別なプロパティ (小文字) <literal>id</literal> は、 <emphasis>id と名付けら"
+"れた非識別子プロパティを定義しないエンティティを与えられた</emphasis> エン"
+"ティティの識別子プロパティを参照するのに使用されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you can use that property "
+"name."
+msgstr ""
+"もしエンティティが名付けられた識別子プロパティを定義したら、そのプロパティ名"
+"を使用できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named. Otherwise, "
+"the special <literal>id</literal> property can be used to reference the "
+"identifier property."
+msgstr ""
+"複合識別子プロパティへの参照は同じ命名ルールに従います。もしエンティティが "
+"id と名付けられた非識別子プロパティを持っていたら、複合識別子プロパティはその"
+"定義された名前で参照することができます。そうでないと、特別な <literal>id</"
+"literal> プロパティは、識別子プロパティを参照するのに使用されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that, starting in version 3.2.2, this has changed significantly. "
+"In previous versions, <literal>id</literal> <emphasis>always</emphasis> "
+"referred to the identifier property regardless of its actual name. A "
+"ramification of that decision was that non-identifier properties named "
+"<literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+"注記: これは、バージョン 3.2.2 から大幅に変更しました。前バージョンでは、 "
+"<literal>id</literal> は、その実際の名前に関係なく <emphasis>常に</emphasis> "
+"識別子プロパティを参照していました。その結果、 <literal>id</literal> と名付け"
+"られた非識別子プロパティは、 Hibernate で決して参照されませんでした。"
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "Select 節"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider the following:"
+msgstr ""
+"<literal>select</literal> 節は以下のようにどのオブジェクトと属性をクエリリザ"
+"ルトセットに返すかを選択します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. You can express this query more compactly as:"
+msgstr ""
+"上記のクエリは他の <literal>Cat</literal> の <literal>mate</literal> を選択し"
+"ます。実際には次のように、より簡潔に表現できます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"クエリはコンポーネント型のプロパティを含む、あらゆる値型のプロパティも返せま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>:"
+msgstr ""
+"クエリは複数のオブジェクトと (または) プロパティを <literal>Object[]</"
+"literal> 型の配列として返せます。"
+
+#. Tag: para
+#, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "もしくは <literal>List</literal> として、"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Or - assuming that the class <literal>Family</literal> has an appropriate "
+"constructor - as an actual typesafe Java object:"
+msgstr ""
+"あるいは <literal>Family</literal> クラスが適切なコンストラクタを持っていると"
+"するならば、"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr "select 節に <literal>as</literal> を使って別名をつけることもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr "<literal>select new map</literal> と一緒に使うときに最も役立ちます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"このクエリは別名から select した値へ <literal>Map</literal> を返します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "集約関数"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL queries can even return the results of aggregate functions on properties:"
+msgstr "HQL のクエリはプロパティの集約関数の結果も返せます:"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "サポートしている集約関数は以下のものです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "<literal>count(*)</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "<literal>count(...), count(distinct ...), count(all...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"select 節において算術操作、連結と承認された SQL 関数を使うことができます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords can be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"SQL と同じ意味を持つ <literal>distinct</literal> と <literal>all</literal> "
+"キーワードを使うことができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "ポリモーフィズムを使ったクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "次のようなクエリ:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries can name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. 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 ""
+"<literal>Cat</literal> インスタンスだけではなく、 <literal>DomesticCat</"
+"literal> のようなサブクラスも返されます。 Hibernate クエリは <emphasis>どんな"
+"</emphasis> Java クラスやインターフェースも <literal>from</literal> 節に入れ"
+"ることができます。クエリはそのクラスを拡張した、もしくはインターフェースを実"
+"装した全ての永続クラスを返します。次のクエリは永続オブジェクトをすべて返しま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"<literal>Named</literal> インターフェースは様々な永続クラスによって実装されま"
+"す。:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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 cannot call these "
+"queries using <literal>Query.scroll()</literal>."
+msgstr ""
+"最後の2つのクエリは、2つ以上の SQL <literal>SELECT</literal> を要求しているこ"
+"とに注意してください。このことは <literal>order by</literal> 節がリザルトセッ"
+"ト全体を正確には整列しないことを意味します (さらにそれは、 <literal>Query."
+"scroll()</literal> を使用してこれらのクエリを呼ぶことができないことを意味しま"
+"す。)。"
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "where 節"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to refine the list of "
+"instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+"<literal>where</literal> 節は返されるインスタンスのリストを絞ることができま"
+"す。もし別名がない場合、名前でプロパティを参照します。"
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr "もし別名がある場合、修飾名を使ってください:"
+
+#. Tag: para
+#, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr ""
+"名前が 'Fritz' という <literal>Cat</literal> のインスタンスを返します。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+"上の HQL は、 <literal>Foo</literal> の <literal>startDate</literal> プロパ"
+"ティと等しい <literal>date</literal> プロパティを持った <literal>bar</"
+"literal> インスタンスが存在する、すべての <literal>Foo</literal> インスタンス"
+"を返します。コンパウンドパス式は <literal>where</literal> 節を非常に強力にし"
+"ます。注目:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+"このクエリはテーブル結合(内部結合)を持つ SQL クエリに変換されます。その代わ"
+"りに以下のように書くと、"
+
+#. Tag: para
+#, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr ""
+"もし上のクエリを記述したらクエリ内に4つのテーブル結合を必要とする SQL クエリ"
+"に変換されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator can be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"<literal>=</literal> 演算子は以下のように、プロパティだけでなくインスタンスを"
+"比較するためにも使われます。:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> can be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\" /> for more information."
+msgstr ""
+"<literal>id</literal> (小文字) は特別なプロパティであり、オブジェクトのユニー"
+"クな識別子を参照するために使用できます。詳細については <xref linkend="
+"\"queryhql-identifier-property\"/> を参照ください。"
+
+#. Tag: para
+#, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "2番目のクエリは効率的です。テーブル結合が必要ありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties of composite identifiers can also be used. Consider the following "
+"example where <literal>Person</literal> has composite identifiers consisting "
+"of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+"また複合識別子のプロパティも使用できます。ここで <literal>Person</literal> "
+"が <literal>country</literal> と <literal>medicareNumber</literal> からなる複"
+"合識別子を持つと仮定します。識別子プロパティ参照についての詳細は、前回と同様"
+"に <xref linkend=\"queryhql-identifier-property\"/> を参照ください。"
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "繰り返しますが、2番目のクエリにはテーブル結合が必要ありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"queryhql-identifier-property\" /> for more information "
+"regarding referencing identifier properties)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+"同様に <literal>class</literal> は特別なプロパティであり、ポリモーフィックな"
+"永続化におけるインスタンスの discriminator 値にアクセスします。 where 節に埋"
+"め込まれた Java のクラス名はその discriminator 値に変換されます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\" /> for more "
+"information."
+msgstr ""
+"またコンポーネントや複合ユーザー型、又はそのコンポーネントのプロパティも使用"
+"できます。詳細については、 <xref linkend=\"queryhql-components\"/> を参照下さ"
+"い。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal> that allows you to express a join in the following "
+"way (where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>):"
+msgstr ""
+"\"any\" 型は特別なプロパティである <literal>id</literal> と <literal>class</"
+"literal> を持ち、以下の方法で結合を表現することを可能にします "
+"(<literal>AuditLog.item</literal> は <literal>&lt;any&gt;</literal> でマッピ"
+"ングされたプロパティです)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <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 ""
+"<literal>log.item.class</literal> と <literal>payment.class</literal> が上記"
+"のクエリ中で全く異なるデータベースカラムの値を参照するということに注意してく"
+"ださい。"
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "Expressions 式"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Expressions used in the <literal>where</literal> clause include the "
+"following:"
+msgstr ""
+"SQL の <literal>where</literal> 節で記述することが出来る式のほとんどを HQL で"
+"も記述できます:"
+
+#. Tag: para
+#, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "算術演算子:<literal>+, -, *, /</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr "2項比較演算子:<literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "論理演算子:<literal>and, or, not</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "グループ分けを表す括弧:<literal>( )</literal>"
+
+#. Tag: para
+#, 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 ""
+"<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>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"\"シンプル\"な case <literal>case ... when ... then ... else ... end</"
+"literal>、 \"探索的\"な case <literal>case when ... then ... else ... end</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"ストリングの連結 <literal>...||...</literal> または <literal>concat(...,...)"
+"</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, and "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
+
+#. Tag: para
+#, 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(), mod()"
+"</literal>"
+msgstr ""
+"EJB-QL 3.0 で定義されている関数や演算子: <literal>substring(), trim(), lower"
+"(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> と <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr "数字や時間の値を String にコンバートする <literal>str()</literal>"
+
+#. Tag: para
+#, 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 ""
+"2番目の引数が Hibernate 型の名前である <literal>cast(... as ...)</literal> "
+"と <literal>extract(... from ...)</literal>。ただし使用するデータベースが "
+"ANSI <literal>cast()</literal> と <literal>extract()</literal> をサポートする"
+"場合に限ります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"結合したインデックス付きのコレクションの別名に適用される HQL の "
+"<literal>index()</literal> 関数。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions that can be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"コレクション値のパス式を取る HQL 関数: <literal>size(), minelement(), "
+"maxelement(), minindex(), maxindex()</literal> 。 <literal>some, all, "
+"exists, any, in</literal> を使って修飾することができる特別な "
+"<literal>elements()</literal> と <literal>indices</literal> 関数と一緒に使い"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</"
+"literal>"
+msgstr ""
+"<literal>sign()</literal>、 <literal>trunc()</literal>、 <literal>rtrim()</"
+"literal>、 <literal>sin()</literal> のようなデータベースがサポートする SQL ス"
+"カラ関数。"
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "JDBC スタイルの位置パラメータ <literal>?</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"and <literal>:x1</literal>"
+msgstr ""
+"名前付きパラメータ: <literal>:name</literal>, <literal>:start_date</"
+"literal>, <literal>:x1</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"SQL リテラル: <literal>'foo'</literal>、 <literal>69</literal>、 "
+"<literal>6.66E+2</literal>、 <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"Java の <literal>public static final</literal> 定数: <literal>eg.Color."
+"TABBY</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr ""
+"<literal>in</literal> と <literal>between</literal> は以下のように使用できま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "また、否定形で記述することもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, <literal>is null</literal> and <literal>is not null</literal> can "
+"be used to test for null values."
+msgstr ""
+"同様に <literal>is null</literal> や <literal>is not null</literal> は null "
+"値をテストするために使用できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Booleans can be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Hibernate 設定ファイルで HQL query substitutions を定義すれば、 boolean 値を"
+"式の中で簡単に使用できます:"
+
+#. Tag: para
+#, 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 ""
+"こうすることで下記の HQL を SQL に変換するときに <literal>true</literal> 、 "
+"<literal>false</literal> キーワードは <literal>1</literal> 、 <literal>0</"
+"literal> に置き換えられます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can test the size of a collection with the special property "
+"<literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+"特別なプロパティ <literal>size</literal>、または特別な関数 <literal>size()</"
+"literal> を使ってコレクションのサイズをテストできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For indexed collections, you can refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you can refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. For example:"
+msgstr ""
+"インデックス付きのコレクションでは、 <literal>minindex</literal> と "
+"<literal>maxindex</literal> 関数を使って、インデックスの最小値と最大値を参照"
+"できます。同様に、 <literal>minelement</literal> と <literal>maxelement</"
+"literal> を使って、基本型のコレクション要素の最小値と最大値を参照できます。"
+
+#. Tag: para
+#, 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):"
+msgstr ""
+"コレクションの要素やインデックスのセット(<literal>elements</literal> と "
+"<literal>indices</literal> 関数)、または副問い合わせ(後述)の結果が受け取れ"
+"るときは、 SQL 関数 <literal>any, some, all, exists, in</literal> がサポート"
+"されます。"
+
+#. Tag: para
+#, 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> - can only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"<literal>size</literal>、 <literal>elements</literal>、 <literal>indices</"
+"literal>、 <literal>minindex</literal>、 <literal>maxindex</literal>、 "
+"<literal>minelement</literal>、 <literal>maxelement</literal> は Hibernate3 "
+"の where 節だけで利用可能であることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, and maps) can be referred to "
+"by index in a where clause only:"
+msgstr ""
+"インデックス付きのコレクション(arrays, lists, maps)の要素は、インデックスで"
+"参照できます(where節内でのみ):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> can even be an arithmetic "
+"expression:"
+msgstr "<literal>[]</literal> 内部の式は、算術式でも構いません。"
+
+#. Tag: para
+#, 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 ""
+"一対多関連や値のコレクションの要素に対しては、 HQL は組み込みの "
+"<literal>index()</literal> 関数も用意しています。"
+
+#. Tag: para
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr ""
+"ベースとなるデータベースがサポートしているスカラー SQL 関数が使用できます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider how much longer and less readable the following query would be in "
+"SQL:"
+msgstr ""
+"もしまだ全てを理解していないなら、下のクエリを SQL でどれだけ長く、読みづらく"
+"出来るか考えてください:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>ヒント:</emphasis> 例えばこのように出来ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "order by 節"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The list returned by a query can be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"クエリが返す list は、返されるクラスやコンポーネントの任意の属性によって並べ"
+"替えられます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"オプションの <literal>asc</literal> と <literal>desc</literal> はそれぞれ昇順"
+"か降順の整列を示します。"
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "group by 節"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query that returns aggregate values can be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"集約値を返すクエリは、返されるクラスやコンポーネントの任意のプロパティによっ"
+"てグループ化できます:"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "<literal>having</literal> 節も使えます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses if they are supported by "
+"the underlying database (i.e., not in MySQL)."
+msgstr ""
+"もし使用するデータベースがサポートしているなら、 <literal>having</literal> "
+"と <literal>order by</literal> 節で SQL 関数と集約関数が使えます(例えば "
+"MySQL にはありません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Neither the <literal>group by</literal> clause nor the <literal>order by</"
+"literal> clause can contain arithmetic expressions. Hibernate also does not "
+"currently expand a grouped entity, so you cannot write <literal>group by "
+"cat</literal> if all properties of <literal>cat</literal> are non-"
+"aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+"<literal>group by</literal> 節や <literal>order by</literal> 節に算術式を含む"
+"ことができないことに注意してください。また、  Hibernate は今のところグループ"
+"エンティティを拡張しないことにも注意してください。したがって、もし "
+"<literal>cat</literal> の全てのプロパティが非集合体の場合、 <literal>group "
+"by cat</literal> を書くことはできません。全ての非集合体のプロパティを明示的に"
+"リストする必要があります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "副問い合わせ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate 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 ""
+"サブセレクトをサポートするデータベースのため、 Hibernate は副問い合わせをサ"
+"ポートしています。副問い合わせは括弧で囲まなければなりません( SQL の集約関数"
+"呼び出しによる事が多いです)。関連副問い合わせ (外部クエリ中の別名を参照する"
+"副問い合わせのこと) さえ許可されます。"
+
+#. Tag: para
+#, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+"HQL 副問い合わせは、 select または where 節だけで使われることに注意してくださ"
+"い。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more "
+"information."
+msgstr ""
+"サブクエリは <literal>row value constructor</literal> 構文も使用できることを"
+"覚えておいてください。詳細については <xref linkend=\"queryhql-tuple\"/> を参"
+"照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "HQL の例"
+
+#. Tag: para
+#, 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 main strengths. The following "
+"example queries are similar to queries that have been used on recent "
+"projects. Please note that most queries you will write will be much simpler "
+"than the following examples."
+msgstr ""
+"Hibernate クエリは非常に強力で複雑にできます。実際、クエリ言語の威力は "
+"Hibernate の主要なセールスポイントの一つです。ここに最近のプロジェクトで使用"
+"したクエリと非常によく似た例があります。ほとんどのクエリはこれらの例より簡単"
+"に記述できることに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items, the given minimum "
+"total value and the total value of the order for all unpaid orders for a "
+"particular customer. The results are ordered 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 ""
+"以下のクエリは特定の顧客と与えられた最小の合計値に対する未払い注文の注文 "
+"ID 、商品の数、注文の合計を合計値で整列して返します。価格を決定する際、現在の"
+"カタログを使います。結果として返される SQL クエリは <literal>ORDER</"
+"literal>、 <literal>ORDER_LINE</literal>、 <literal>PRODUCT</literal>、 "
+"<literal>CATALOG</literal> および <literal>PRICE</literal> テーブルに対し4つ"
+"の内部結合と (関連しない) 副問い合わせを持ちます。"
+
+#. Tag: para
+#, 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: para
+#, 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 ""
+"次のクエリは各ステータスの支払い数を数えます。ただしすべての支払いが現在の利"
+"用者による最新のステータス変更である <literal>AWAITING_APPROVAL</literal> で"
+"ある場合を除きます。このクエリは2つの内部結合と <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal> および <literal>PAYMENT_STATUS_CHANGE</"
+"literal> テーブルに対する関連副問い合わせを備えた SQL クエリに変換されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>statusChanges</literal> collection was mapped as a list, "
+"instead of a set, the query would have been much simpler to write."
+msgstr ""
+"もし set の代わりに list として <literal>statusChanges</literal> コレクション"
+"をマッピングしたならば、はるかに簡単にクエリを記述できるでしょう。"
+
+#. Tag: para
+#, 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 ""
+"次のクエリは現在のユーザーが所属する組織に対するアカウントおよび未払いの支払"
+"いをすべて返す MS SQL Server の <literal>isNull()</literal> 関数を使用してい"
+"ます。このクエリは3つの内部結合と1つの外部結合、そして <literal>ACCOUNT</"
+"literal>、 <literal>PAYMENT</literal>、 <literal>PAYMENT_STATUS</literal>、 "
+"<literal>ACCOUNT_TYPE</literal>、 <literal>ORGANIZATION</literal> および "
+"<literal>ORG_USER</literal> テーブルに対する副問い合わせ持った SQL に変換され"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"いくつかのデータベースについては、 (関連させられた) 副問い合わせの使用を避け"
+"る必要があるでしょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "大量の UPDATE と DELETE"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\" /> for more information."
+msgstr ""
+"HQL は現在 <literal>update</literal> と <literal>delete</literal>、 "
+"<literal>insert ... select ...</literal> ステートメントをサポートしています。"
+"詳細については <xref linkend=\"batch-direct\"/> を参照ください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "Tips &amp; Tricks"
+
+#. Tag: para
+#, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr "実際に結果を返さなくてもクエリの結果数を数えることができます:"
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+"コレクションのサイズにより結果を並べ替えるためには以下のクエリを使用します:"
+
+#. Tag: para
+#, 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 ""
+"使用しているデータベースがサブセレクトをサポートする場合、クエリの where 節で"
+"サイズによる選択条件を設定できます:"
+
+#. Tag: para
+#, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr ""
+"使用しているデータベースがサブセレクトをサポートしない場合は、次のクエリを使"
+"用してください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As this solution cannot return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"内部結合をしているせいで上の解決法が message の件数がゼロの <literal>User</"
+"literal> を返すことができないならば、以下の形式が使えます:"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+"JavaBean のプロパティは、名前付きのクエリパラメータに結びつけることが出来ま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"コレクションはフィルタ付き <literal>Query</literal> インターフェースを使用す"
+"ることでページをつけることができます:"
+
+#. Tag: para
+#, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+"コレクションの要素はクエリフィルタを使って、並べ替えやグループ分けが出来ます:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr "コレクションを初期化せずにコレクションのサイズを得ることができます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "コンポーネント"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Components can be used similarly to the simple value types that are used in "
+"HQL queries. They can appear in the <literal>select</literal> clause as "
+"follows:"
+msgstr ""
+"HQL クエリでシンプルな値型を使用できるので、コンポーネントは、あらゆる点で使"
+"用できます。これは <literal>select</literal> 節の中に現われます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"人名のプロパティがコンポーネントの場所。コンポーネントは、 <literal>where</"
+"literal> 節でも使用可能です:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr "コンポーネントは <literal>order by</literal> 節でも使用可能です:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"コンポーネントの他の一般的な使用は、 <xref linkend=\"queryhql-tuple\"/> 行値"
+"コンストラクタにあります。"
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "行値コンストラクタ構文"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax, sometimes referred to AS <literal>tuple</literal> syntax, even "
+"though the underlying database may not support that notion. Here, we are "
+"generally referring to multi-valued comparisons, typically associated with "
+"components. Consider an entity Person which defines a name component:"
+msgstr ""
+"下に位置するデータベースが ANSI SQL <literal>row value constructor</literal> "
+"構文 (<literal>tuple</literal> 構文とよばれることもあります) をサポートしてい"
+"ないとしても、 HQL はその使用をサポートしています。ここでは、一般的にコンポー"
+"ネントと連繋するマルチバリュー比較について触れます。ネームコンポーネントを定"
+"義する Person エンティティを考えましょう:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"That is valid syntax although it is a little verbose. You can make this more "
+"concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+"それは少々詳細になりますが、有効な構文です。より簡潔にし、 <literal>row "
+"value constructor</literal> 構文を使用するのがよいでしょう:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr "それを <literal>select</literal> 節で指定するのも効果的です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using <literal>row value constructor</literal> syntax can also be beneficial "
+"when using subqueries that need to compare against multiple values:"
+msgstr ""
+"次に <literal>row value constructor</literal> 構文の使用が有効なときは、サブ"
+"クエリを使用して複数の値と比較する必要があるときです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax, is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"この構文を使用するかどうか決定するときに考慮しなければならないことは、クエリ"
+"がメタデータ内のコンポーネントのサブプロパティの順番に依存していることです。"
+
+#, fuzzy
+#~ msgid "<![CDATA[from eg.Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat]]>"
+#~ msgstr "from Cat as cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat]]>"
+#~ msgstr "from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula, Parameter]]>"
+#~ msgstr "from Formula, Parameter"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula as form, Parameter as param]]>"
+#~ msgstr "from Formula as form, Parameter as param"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
+#~ msgstr "from Cat as cat left join cat.mate.kittens as kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula form full join form.parameter param]]>"
+#~ msgstr "from Formula form full join form.parameter param"
+
+#~ msgid "inner join"
+#~ msgstr "inner join"
+
+#~ msgid "left outer join"
+#~ msgstr "left outer join"
+
+#, fuzzy
+#~ msgid "right outer join"
+#~ msgstr "left outer join"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight > 10.0]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight &gt; 10.0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Document fetch all properties order by name]]>"
+#~ msgstr "from Document fetch all properties order by name"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Document doc fetch all properties where lower(doc.name) "
+#~ "like '%cats%']]>"
+#~ msgstr ""
+#~ "from Document doc fetch all properties where lower(doc.name) like '&#37;"
+#~ "cats&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
+#~ msgstr "from Cat as cat where cat.mate.name like '&#37;s&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate]]>"
+#~ msgstr ""
+#~ "select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cat.mate from Cat cat]]>"
+#~ msgstr "select cat.mate from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri%']]>"
+#~ msgstr ""
+#~ "select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cust.name.firstName from Customer as cust]]>"
+#~ msgstr "select cust.name.firstName from Customer as cust"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "select new Family(mother, mate, offspr)\n"
+#~ "from DomesticCat as mother\n"
+#~ "    join mother.mate as mate\n"
+#~ "    left join mother.kittens as offspr"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, "
+#~ "count(*) as n )\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n )\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count"
+#~ "(cat)\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
+#~ "from Cat cat"
+
+#~ msgid "count(*)"
+#~ msgstr "count(*)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight]]>"
+#~ msgstr ""
+#~ "select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from "
+#~ "Person]]>"
+#~ msgstr "select firstName||' '||initial||' '||upper(lastName) from Person"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat]]>"
+#~ msgstr ""
+#~ "select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from java.lang.Object o]]>"
+#~ msgstr "from java.lang.Object o"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Named n, Named m where n.name = m.name]]>"
+#~ msgstr "from Named n, Named m where n.name = m.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat where name='Fritz']]>"
+#~ msgstr "from Cat where name='Fritz'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
+#~ msgstr "from Cat as cat where cat.name='Fritz'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date]]>"
+#~ msgstr ""
+#~ "select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
+#~ msgstr "from Cat cat where cat.mate.name is not null"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null]]>"
+#~ msgstr ""
+#~ "from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
+#~ msgstr "from Cat cat, Cat rival where cat.mate = rival.mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate]]>"
+#~ msgstr ""
+#~ "select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69]]>"
+#~ msgstr ""
+#~ "from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
+#~ msgstr "from Cat cat where cat.class = DomesticCat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
+#~ msgstr ""
+#~ "from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name not between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', "
+#~ "'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false "
+#~ "0</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"hibernate.query.substitutions\"&gt;true 1, false "
+#~ "0&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.alive = true]]>"
+#~ msgstr "from Cat cat where cat.alive = true"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
+#~ msgstr "from Cat cat where cat.kittens.size &gt; 0"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
+#~ msgstr "from Cat cat where size(cat.kittens) &gt; 0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]"
+#~ ">"
+#~ msgstr "from Calendar cal where maxelement(cal.holidays) &gt; current_date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
+#~ msgstr "from Order order where maxindex(order.items) &gt; 100"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
+#~ msgstr "from Order order where minelement(order.items) &gt; 10000"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)]]>"
+#~ msgstr ""
+#~ "select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)]]>"
+#~ msgstr ""
+#~ "select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
+#~ msgstr "from Cat cat where exists elements(cat.kittens)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
+#~ msgstr "from Player p where 3 &gt; all elements(p.scores)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
+#~ msgstr "from Show show where 'fizard' in indices(show.acts)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where order.items[0].id = 1234]]>"
+#~ msgstr "from Order order where order.items[0].id = 1234"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar]]>"
+#~ msgstr ""
+#~ "select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) < 5]]>"
+#~ msgstr ""
+#~ "select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) &lt; 5"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
+#~ msgstr "from DomesticCat cat where upper(cat.name) like 'FRI&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+#~ "    )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+#~ msgstr ""
+#~ "from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color]]>"
+#~ msgstr ""
+#~ "select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id]]>"
+#~ msgstr ""
+#~ "select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) > 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc]]>"
+#~ msgstr ""
+#~ "select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) &gt; 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as fatcat\n"
+#~ "where fatcat.weight > (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as fatcat\n"
+#~ "where fatcat.weight &gt; (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat]]>"
+#~ msgstr ""
+#~ "select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 < sysdate\n"
+#~ "    and catalog.effectiveDate >= all (\n"
+#~ "        select cat.effectiveDate\n"
+#~ "        from Catalog as cat\n"
+#~ "        where cat.effectiveDate < sysdate\n"
+#~ "    )\n"
+#~ "group by order\n"
+#~ "having sum(price.amount) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 <> 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 <> :currentUser\n"
+#~ "    )\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select count(payment), status.name\n"
+#~ "from Payment as payment\n"
+#~ "    join payment.currentStatus as status\n"
+#~ "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+#~ "    or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :"
+#~ "currentUser\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+#~ msgstr ""
+#~ "select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue()]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
+#~ msgstr "from User usr where size(usr.messages) &gt;= 1"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) >= 1]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:"
+#~ "name and foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and "
+#~ "foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial "
+#~ "filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by "
+#~ "this.amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );]]>"
+#~ msgstr ""
+#~ "Collection orderedCollection = s.filter( collection, \"order by this."
+#~ "amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue();]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue();"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name from Person p]]>"
+#~ msgstr "select p.name from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name.first from Person p]]>"
+#~ msgstr "select p.name.first from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name = :name]]>"
+#~ msgstr "from from Person p where p.name = :name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name.first = :firstName]]>"
+#~ msgstr "from from Person p where p.name.first = :firstName"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name]]>"
+#~ msgstr "from from Person p order by p.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name.first]]>"
+#~ msgstr "from from Person p order by p.name.first"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name.first='John' and p.name."
+#~ "last='Jingleheimer-Schmidt']]>"
+#~ msgstr ""
+#~ "from Person p where p.name.first='John' and p.name.last='Jingleheimer-"
+#~ "Schmidt'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
+#~ msgstr "from Person p where p.name=('John', 'Jingleheimer-Schmidt')"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1618 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:47\n"
+"PO-Revision-Date: 2010-01-18 15:09+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "ネイティブ SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can 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 <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"データベースのネイティブ SQL 方言を使ってクエリを表現することもできます。クエ"
+"リヒントや Oracle の <literal>CONNECT</literal> キーワードのように、データ"
+"ベース独自の機能を利用したいときに使えます。 SQL/JDBC を直接使用しているアプ"
+"リケーションから Hibernate への移行も容易にしています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL, including stored "
+"procedures, for all create, update, delete, and load operations."
+msgstr ""
+"Hibernate3 では、生成、更新、削除、読み込み処理のようなすべての SQL (ストア"
+"ドプロシージャを含む)を手書きできます。"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "もしくは <literal>List</literal> として、"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following sections describe how to use this "
+"API for querying."
+msgstr ""
+"ネイティブな SQL クエリの実行は <literal>SQLQuery</literal> インターフェース"
+"を通して制御します。 <literal>SQLQuery</literal> インターフェースは "
+"<literal>Session.createSQLQuery()</literal> を呼び出して取得します。この API "
+"を使って問い合わせする方法を以下で説明します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "スカラーのクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr "最も基本的な SQL クエリはスカラー(値)のリストを得ることです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These will return a List of Object arrays (Object[]) with scalar values for "
+"each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"これらはどちらも、 CATS テーブルの各カラムのスカラー値を含む Object 配列"
+"(Object[])のリストを返します。返すスカラー値の実際の順番と型を推定するため"
+"に、 Hibernate は ResultSetMetadata を使用します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal>, or "
+"simply to be more explicit in what is returned, one can use "
+"<literal>addScalar()</literal>:"
+msgstr ""
+"<literal>ResultSetMetadata</literal> を使用するオーバーヘッドを避けるため、も"
+"しくは単に何が返されるか明確にするため、 <literal>addScalar()</literal> を使"
+"えます。"
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "このクエリで指定されているものを下記に示します:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "SQL クエリ文字列"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "返されるカラムと型"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return Object arrays, but now it will not use "
+"<literal>ResultSetMetadata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"これはまだ Object 配列を返しますが、 <literal>ResultSetMetdata</literal> を使"
+"用しません。ただし、その代わりに基礎にあるリザルトセットから ID、NAME、"
+"BIRTHDATE カラムをそれぞれ Long、String、Short として明示的に取得します。これ"
+"は3つのカラムを返すのみであることも意味します。たとえ、クエリが <literal>*</"
+"literal> を使用し、列挙した3つより多くのカラムを返せるとしてもです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr "スカラーの型情報を省くこともできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to determine the type of NAME "
+"and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+"これは本質的に前と同じクエリですが、 NAME と BIRTHDATE の型を決めるために "
+"<literal>ResultSetMetaData</literal> を使用します。一方、 ID の型は明示的に指"
+"定されています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped, or does not result in the expected type, it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"ResultSetMetaData から返される java.sql.Types を Hibernate の型に マッピング"
+"することは、 Dialect が制御します。明示された型がマッピングされていないか、結"
+"果の型が期待したものと異なる場合、 Dialect の "
+"<literal>registerHibernateType</literal> を呼び出し、カスタマイズできます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "エンティティのクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"ここまでのクエリは、すべてスカラー値を返すものでした。基本的に、リザルトセッ"
+"トから「未加工」の値を返します。以降では、 <literal>addEntity()</literal> に"
+"より、ネイティブ SQL クエリからエンティティオブジェクトを取得する方法を示しま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "クエリが返すエンティティと SQL テーブルの別名"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Cat が ID 、 NAME 、 BIRTHDATE のカラムを使ってクラスにマッピングされる場合、"
+"上記のクエリはどちらも、要素が Cat エンティティであるリストを返します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"エンティティを別のエンティティに <literal>多対一</literal> でマッピングしてい"
+"る場合は、ネイティブクエリを実行する際に、この別のエンティティを返すことも要"
+"求します。さもなければ、データベース固有の「column not found(カラムが見つかり"
+"ません)」エラーが発生します。 * 表記を使用した際は、追加のカラムが自動的に返"
+"されますが、次の例のように、 <literal>Dog</literal> に <literal>多対一</"
+"literal> であることを明示することを私たちは好みます。"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "これにより cat.getDog() が正しく機能します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "関連とコレクションの操作"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"プロキシを初期化するための余分な処理を避けるため、 <literal>Dog</literal> の"
+"中で即時結合できます。これは <literal>addJoin()</literal> メソッドにより行い"
+"ます。関連もしくはコレクションに結合できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that you added an alias name (\"cat\") to "
+"be able to specify the target property path of the join. It is possible to "
+"do the same eager joining for collections, e.g. if the <literal>Cat</"
+"literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"この例の中で、返される <literal>Cat</literal> は、データベースへの余分処理な"
+"しで、完全に初期化された <literal>dog</literal> プロパティを持ちます。結合対"
+"象のプロパティへのパスを指定できるように、別名(「cat」)を追加したことに注意"
+"してください。コレクションの即時結合も同じようにできます。たとえば、 "
+"<literal>Cat</literal> が一対多で <literal>Dog</literal> を持っていた場合、次"
+"のようになります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this stage you are reaching the limits of what is possible with native "
+"queries, without starting to enhance the sql queries to make them usable in "
+"Hibernate. Problems can arise when returning multiple entities of the same "
+"type or when the default alias/column names are not enough."
+msgstr ""
+"現在のところ、 Hibernate で使いやすくするための SQL クエリの拡張なしに、ネイ"
+"ティブクエリで何かを可能にする限界に来ています。同じ型のエンティティを複数返"
+"す際や、デフォルトの別名や列名で十分ではない場合に、問題は起こり始めます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "複数エンティティの取得"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries that join multiple tables, since the same column names can "
+"appear in more than one table."
+msgstr ""
+"ここまでは、リザルトセットのカラム名は、マッピングドキュメントで指定されたカ"
+"ラム名と同じであると仮定していました。複数のテーブルが同じカラム名を持つ場合"
+"があるため、複数テーブルを結合する SQL クエリで問題となる場合があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr ""
+"下記のような(失敗しそうな)クエリでは、カラム別名インジェクション(column "
+"alias injection)が必要です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query was intended to return two Cat instances per row: a cat and its "
+"mother. The query will, however, fail because there is a conflict of names; "
+"the instances are mapped to the same column names. Also, on some databases "
+"the returned column aliases will most likely be on the form \"c.ID\", \"c."
+"NAME\", etc. which are not equal to the columns specified in the mappings "
+"(\"ID\" and \"NAME\")."
+msgstr ""
+"このクエリの意図は、1行ごとに2つの Cat インスタンス、つまり猫とその母親を返"
+"すということです。同じカラム名にマッピングすることにより名前が衝突するため、"
+"このクエリは失敗します。ベータベースによっては、返されるカラムの別名が \"c.ID"
+"\"、\"c.NAME\" などの形式であり、マッピングで指定されたカラム(\"ID\" と "
+"\"NAME\")と等しくないため、失敗します。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr "下記の形式は、カラム名が重複しても大丈夫です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"SQL クエリ文字列 (Hibernate がカラムの別名を挿入するためのプレースホルダを含"
+"む)"
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "クエリによって返されるエンティティ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you can list the columns explicitly, but even "
+"in this case Hibernate injects the SQL column aliases for each property. The "
+"placeholder for a column alias is just the property name qualified by the "
+"table alias. In the following example, you retrieve Cats and their mothers "
+"from a different table (cat_log) to the one declared in the mapping "
+"metadata. You can even use the property aliases in the where clause."
+msgstr ""
+"上記で使用している {cat.*} と {mother.*} という表記は、「すべてのプロパティ」"
+"を表す省略形です。代わりに、明示的にカラムを列挙してもよいですが、その場合"
+"は、 Hibernate に各プロパティに対応する SQL カラムの別名を挿入させるべきで"
+"しょう。カラムの別名のためのプレースホルダは、テーブルの別名によって修飾され"
+"たプロパティ名です。下記の例では、別のテーブル cat_log から マッピングメタ"
+"データで定義された Cat とその母親を復元します。もし好むなら、 where 節の中で"
+"も、プロパティの別名を使えます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "別名とプロパティのリファレンス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases the above alias injection is needed. For queries relating to "
+"more complex mappings, like composite properties, inheritance "
+"discriminators, collections etc., you can use specific aliases that allow "
+"Hibernate to inject the proper aliases."
+msgstr ""
+"多くの場合、上記のような別名インジェクションが必要です。ただし、複合プロパ"
+"ティ、継承識別子、コレクションなどのようなより複雑なマッピングと関連するクエ"
+"リがなければです。ある特定の別名を使用することにより、 Hibernate は適切な別名"
+"を挿入できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the different ways you can use the alias "
+"injection. Please note that the alias names in the result are simply "
+"examples; each alias will have a unique and probably different name when "
+"used."
+msgstr ""
+"別名インジェクションとして使用できるものを下表に示します。注記:下表の別名は"
+"一例です。それぞれの別名は一意であり、使用する際にはおそらく異なる名前を持ち"
+"ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "別名に挿入する名前"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "説明"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "æ§‹æ–‡"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "例"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "単純なプロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "<literal>{[aliasname].[propertyname]</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "複合プロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+msgstr ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "エンティティのクラスを識別する値"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "エンティティの全プロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "コレクションのキー"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "コレクションの ID"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "コレクションの要素"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "property of the element in the collection"
+msgstr "コレクションの要素のプロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].element.[propertyname]}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "コレクションの要素の全プロパティ"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "All properties of the collection"
+msgstr "コレクションの全プロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "管理されていないエンティティの取得"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native SQL queries, allowing "
+"it to return non-managed entities."
+msgstr ""
+"ネイティブ SQL クエリに ResultTransformer を適用できます。下記のように、例え"
+"ば、管理されていないエンティティを返します。"
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "結果を変換したもの"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"上記のクエリは、インスタンス化し、 NAME と BIRTHDATE の値を対応するプロパティ"
+"もしくはフィールドに挿入した <literal>CatDTO</literal> のリストを返します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "継承の制御"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Native SQL queries which query for entities that are mapped as part of an "
+"inheritance must include all properties for the baseclass and all its "
+"subclasses."
+msgstr ""
+"継承の一部としてマッピングされたエンティティを問い合わせるネイティブ SQL クエ"
+"リは、ベースのクラスとそのすべてのサブクラスのプロパティすべてを含まなければ"
+"なりません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "パラメータ"
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+"ネイティブ SQL クエリは、以下のように、名前付きパラメータ(:name)と同様に位"
+"置パラメータをサポートします:"
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "名前付き SQL クエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Named SQL queries can be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, you do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"名前付き SQL クエリはマッピングドキュメントで定義することができ、名前付き "
+"HQL クエリと全く同じ方法で呼ぶことができます。この場合、 <literal>addEntity()"
+"</literal> を呼び出す必要は <emphasis>ありません</emphasis> 。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;return-join&gt;</literal> element is use to join "
+"associations and the <literal>&lt;load-collection&gt;</literal> element is "
+"used to define queries which initialize collections,"
+msgstr ""
+"関連を結合するためとコレクションを初期化するクエリを定義するために、それぞれ "
+"<literal>&lt;return-join&gt;</literal> と <literal>&lt;load-collection&gt;</"
+"literal> 要素を使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> "
+"element:"
+msgstr ""
+"名前付き SQL クエリはスカラ値を返すこともできます。 <literal>&lt;return-"
+"scalar&gt;</literal> 要素を使って、列の別名と Hibernate の型を宣言しなければ"
+"なりません:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can externalize the resultset mapping information in a <literal>&lt;"
+"resultset&gt;</literal> element which will allow you to either reuse them "
+"across several named queries or through the <literal>setResultSetMapping()</"
+"literal> API."
+msgstr ""
+"リザルトセットのマッピング情報を <literal>&lt;resultset&gt;</literal> に外部"
+"化することができます。複数の名前付きクエリで再利用したり、 "
+"<literal>setResultSetMapping()</literal> API を通して再利用したりできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can, alternatively, use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"代わりに、 hbm ファイル内のリザルトセットのマッピング情報を直接 Java コードの"
+"中で使用できます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr "列と列の別名を明示的に指定するために return-property を使う"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can explicitly tell Hibernate what column aliases to use with "
+"<literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}"
+"</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+"別名を挿入するために <literal>{}</literal> 構文を使う代わりに、 <literal>&lt;"
+"return-property&gt;</literal> を使い、どの列の別名を使うのかを明示できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;return-property&gt;</literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which cannot "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal>&lt;return-property&gt;</literal> は複数の列も扱えます。これは、複数"
+"列のプロパティをきめ細かく制御できないという、 <literal>{}</literal> 構文の制"
+"限を解決します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example <literal>&lt;return-property&gt;</literal> was used in "
+"combination with the <literal>{}</literal>-syntax for injection. This allows "
+"users to choose how they want to refer column and properties."
+msgstr ""
+"この例では、挿入のための <literal>{}</literal> 構文といっしょに、 "
+"<literal>&lt;return-property&gt;</literal> を使っていることに注意してくださ"
+"い。列とプロパティをどのように参照するかを選べます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal>&lt;return-"
+"discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+"マッピングに discriminator が含まれている場合、 discriminator の列を指定する"
+"ために、 <literal>&lt;return-discriminator&gt;</literal> を使わなければなりま"
+"せん。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "問い合わせするためにストアドプロシージャを使う"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides support for queries via stored procedures and functions. "
+"Most of the following documentation is equivalent for both. The stored "
+"procedure/function must return a resultset as the first out-parameter to be "
+"able to work with Hibernate. An example of such a stored function in Oracle "
+"9 and higher is as follows:"
+msgstr ""
+"Hibernate はバージョン3から、ストアドプロシージャとストアド関数経由の問い合わ"
+"せがサポートされました。以降の文書の多くは、両方に当てはまります。ストアドプ"
+"ロシージャやストアド関数を Hibernate で使うためには、1番目の出力パラメータと"
+"してリザルトセットを返さなければなりません。 Oracle 9(もしくはそれ以上のバー"
+"ジョン)のストアドプロシージャの例を以下に示します:"
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+"Hibernate でこのクエリを使うためには、名前付きクエリでマッピングする必要があ"
+"ります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures currently only return scalars and entities. <literal>&lt;"
+"return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are "
+"not supported."
+msgstr ""
+"注記:今のところ、ストアドプロシージャはスカラとエンティティを返すのみです。 "
+"<literal>&lt;return-join&gt;</literal> と <literal>&lt;load-collection&gt;</"
+"literal> はサポートされていません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "ストアドプロシージャを使う上でのルールと制限"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use stored procedures with Hibernate unless you follow some "
+"procedure/function rules. If they do not follow those rules they are not "
+"usable with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Hibernate でストアドプロシージャや関数を使うためには、そのプロシージャはいく"
+"つかのルールに準拠する必要があります。ルールに準拠していないプロシージャは、 "
+"Hibernate で使うことはできません。それでも、準拠していないプロシージャを使い"
+"たいのであれば、 <literal>session.connection()</literal> を通じて実行しなけれ"
+"ばなりません。ルールはデータベースごとに異なります。ストアドプロシージャのセ"
+"マンティックスとシンタックスは、データベースベンダごとに異なるためです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedure queries cannot be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"<literal>setFirstResult()/setMaxResults()</literal> を使って、ストアドプロ"
+"シージャクエリをページ分けすることはできません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+"推奨する呼び出し方は、標準である SQL92 に従うことです。 <literal>{ ? = call "
+"functionName(&lt;parameters&gt;) }</literal> ã‚„ <literal>{ ? = call "
+"procedureName(&lt;parameters&gt;}</literal> です。ネイティブな呼び出し構文は"
+"サポートされていません。"
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "Oracle には下記のルールが適用されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type. See Oracle "
+"literature for further information."
+msgstr ""
+"関数はリザルトセットを返さなければなりません。プロシージャの第一引数はリザル"
+"トセットを返すため、 <literal>OUT</literal> でなければなりません。 Oracle 9 "
+"と 10 では、 <literal>SYS_REFCURSOR</literal> を使うことによってできます。 "
+"Oracle では <literal>REF CURSOR</literal> 型を定義する必要があります。 "
+"Oracle の文献を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "Sybase と MS SQL サーバーに適用されるルールを下記に示します:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can "
+"return multiple result sets and update counts, Hibernate will iterate the "
+"results and take the first result that is a result set as its return value. "
+"Everything else will be discarded."
+msgstr ""
+"プロシージャはリザルトセットを返さなければなりません。サーバーは複数のリザル"
+"トセットと更新カウントを返しますが、 Hibernate は1つ目のリザルトセットだけを"
+"返すことに注意してください。その他はすべて捨てられます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"プロシージャの中で <literal>SET NOCOUNT ON</literal> を有効にできれば、おそら"
+"く効率がよくなるでしょう。しかし、これは必要条件ではありません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr "作成、更新、削除のためのカスタム SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL for create, update, and delete operations. The "
+"SQL can be overridden at the statement level or inidividual column level. "
+"This section describes statement overrides. For columns, see <xref linkend="
+"\"mapping-column-read-and-write\" />."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class and collection persisters in Hibernate already contain a set of "
+"configuration time generated strings (insertsql, deletesql, updatesql etc.). "
+"The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-"
+"delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override "
+"these strings:"
+msgstr ""
+"Hibernate3 は作成、更新、削除処理のためのカスタム SQL 文を使用できます。クラ"
+"スとコレクションの永続化機構は、コンフィグレーション時に生成された文字列 "
+"(insertsql、deletesql、updatesql など)のセットをすでに保持しています。これ"
+"らの文字列より、 <literal>&lt;sql-insert&gt;</literal>、 <literal>&lt;sql-"
+"delete&gt;</literal>、 <literal>&lt;sql-update&gt;</literal> というマッピング"
+"タグが優先されます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you can use any dialect "
+"you like. This will reduce the portability of your mapping if you use "
+"database specific SQL."
+msgstr ""
+"SQL を直接データベースで実行するため、好みの方言を自由に使用できます。データ"
+"ベース独自の SQL を使えば、当然マッピングのポータビリティが下がります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"<literal>callable</literal> 属性をセットすれば、ストアドプロシージャを使用で"
+"きます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The order of the positional parameters is vital, as they must be in the same "
+"sequence as Hibernate expects them."
+msgstr ""
+"今のところ、位置パラメータの順番はとても重要です。すなわち、 Hibernate が期待"
+"する順序でなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can view the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled, Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. To view the expected sequence, do not include "
+"your custom SQL in the mapping files, as this will override the Hibernate "
+"generated static SQL."
+msgstr ""
+"<literal>org.hiberante.persister.entity</literal> レベルのデバッグログを有効"
+"にすることによって、期待される順番を確かめられます。このレベルを有効にするこ"
+"とにより、エンティティの作成、更新、削除などで使用される静的な SQL が出力され"
+"ます。(期待される順序を確認するためには、 Hibernate が生成する静的な SQL を"
+"オーバーライドするカスタム SQL をマッピングファイルに含めないことを忘れないで"
+"ください。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The stored procedures are in most cases required to return the number of "
+"rows inserted, updated and deleted, as Hibernate has some runtime checks for "
+"the success of the statement. Hibernate always registers the first statement "
+"parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+"ストアドプロシージャは挿入/更新/削除された行数を返す必要があります(読み込み"
+"の場合は、返さないよりは返す方がよいです)。実行時に Hibernate が SQL 文の成"
+"功をチェックするからです。 Hibernate は、 CUD 処理のための数値の出力パラメー"
+"タとして、 SQL 文の最初のパラメータをいつも記録します:"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "ロードのためのカスタム SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also declare your own SQL (or HQL) queries for entity loading. As "
+"with inserts, updates, and deletes, this can be done at the individual "
+"column level as described in <xref linkend=\"mapping-column-read-and-write"
+"\" /> or at the statement level. Here is an example of a statement level "
+"override:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You can "
+"reference this named query in a class mapping:"
+msgstr ""
+"これは、まさに(以前議論した)名前付きクエリの宣言です。この名前付きクエリを"
+"クラスのマッピングから参照できます:"
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "これはストアドプロシージャでさえも動作します。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr "次のように、コレクションをロードするためのクエリさえ定義してよいです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"次のように、結合フェッチによりコレクションをロードするエンティティローダーを"
+"定義できます:"
+
+#~ msgid ""
+#~ "You can also declare your own SQL (or HQL) queries for entity loading:"
+#~ msgstr ""
+#~ "エンティティを読み込むための独自の SQL (もしくは HQL)クエリも宣言できま"
+#~ "す:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat."
+#~ "class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM "
+#~ "CATS\").addEntity(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\")."
+#~ "addEntity(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, "
+#~ "D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME "
+#~ "FROM CATS c, DOGS d \n"
+#~ "    WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, "
+#~ "CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID "
+#~ "FROM CATS c, DOGS d\n"
+#~ "    WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE "
+#~ "c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE c."
+#~ "MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, "
+#~ "CATS m WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, CATS m "
+#~ "WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()"
+
+#, fuzzy
+#~ msgid "A_NAME as {item.name}"
+#~ msgstr "<literal>A_NAME as {item.name}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].class}"
+#~ msgstr "<literal>{[aliasname].class}</literal>"
+
+#, fuzzy
+#~ msgid "DISC as {item.class}"
+#~ msgstr "<literal>DISC as {item.class}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].*}"
+#~ msgstr "<literal>{[aliasname].*}</literal>"
+
+#~ msgid "{item.*}"
+#~ msgstr "{item.*}"
+
+#, fuzzy
+#~ msgid "{[aliasname].key}"
+#~ msgstr "<literal>{[aliasname].key}</literal>"
+
+#, fuzzy
+#~ msgid "ORGID as {coll.key}"
+#~ msgstr "<literal>ORGID as {coll.key}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].id}"
+#~ msgstr "<literal>{[aliasname].id}</literal>"
+
+#, fuzzy
+#~ msgid "EMPID as {coll.id}"
+#~ msgstr "<literal>EMPID as {coll.id}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].element}"
+#~ msgstr "<literal>{[aliasname].element}</literal>"
+
+#, fuzzy
+#~ msgid "XID as {coll.element}"
+#~ msgstr "<literal>XID as {coll.element}</literal>"
+
+#, fuzzy
+#~ msgid "NAME as {coll.element.name}"
+#~ msgstr "<literal>NAME as {coll.element.name}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].element.*}"
+#~ msgstr "<literal>{[aliasname].element.*}</literal>"
+
+#, fuzzy
+#~ msgid "{coll.element.*}"
+#~ msgstr "{coll.*}"
+
+#~ msgid "{coll.*}"
+#~ msgstr "{coll.*}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE "
+#~ "NAME like ?\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus%\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus%\").list();          ]]>"
+#~ msgstr ""
+#~ "Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?"
+#~ "\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus&#37;\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus&#37;\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"persons\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"persons\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"personsWith\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"personsWith\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return-scalar column=\"name\" type=\"string\"/>\n"
+#~ "    <return-scalar column=\"age\" type=\"long\"/>\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return-scalar column=\"name\" type=\"string\"/&gt;\n"
+#~ "    &lt;return-scalar column=\"age\" type=\"long\"/&gt;\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber&#37;'\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<resultset name=\"personAddress\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "</resultset>\n"
+#~ "\n"
+#~ "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;resultset name=\"personAddress\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "&lt;/resultset&gt;\n"
+#~ "\n"
+#~ "&lt;sql-query name=\"personsWith\" resultset-ref=\"personAddress\"&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\">\n"
+#~ "        <return-property name=\"name\" column=\"myName\"/>\n"
+#~ "        <return-property name=\"age\" column=\"myAge\"/>\n"
+#~ "        <return-property name=\"sex\" column=\"mySex\"/>\n"
+#~ "    </return>\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "</sql-query>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"&gt;\n"
+#~ "        &lt;return-property name=\"name\" column=\"myName\"/&gt;\n"
+#~ "        &lt;return-property name=\"age\" column=\"myAge\"/&gt;\n"
+#~ "        &lt;return-property name=\"sex\" column=\"mySex\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "        <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
+#~ "    </return>\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"organizationCurrentEmployments\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"myEndDate\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
+#~ "        <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
+#~ "        <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
+#~ "        <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
+#~ "        <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
+#~ "        <return-property name=\"id\" column=\"EID\"/>\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "    </return>\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"selectAllEmployees_SP\" callable=\"true\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"employee\" column=\"EMPLOYEE\"/&gt;\n"
+#~ "        &lt;return-property name=\"employer\" column=\"EMPLOYER\"/&gt;\n"
+#~ "        &lt;return-property name=\"startDate\" column=\"STARTDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"ENDDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"regionCode\" column=\"REGIONCODE\"/"
+#~ "&gt;\n"
+#~ "        &lt;return-property name=\"id\" column=\"EID\"/&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-"
+#~ "insert>\n"
+#~ "    <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
+#~ "    <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert&gt;INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )"
+#~ "&lt;/sql-insert&gt;\n"
+#~ "    &lt;sql-update&gt;UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?&lt;/sql-"
+#~ "update&gt;\n"
+#~ "    &lt;sql-delete&gt;DELETE FROM PERSON WHERE ID=?&lt;/sql-delete&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-"
+#~ "insert>\n"
+#~ "    <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-"
+#~ "delete>\n"
+#~ "    <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-"
+#~ "update>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert callable=\"true\"&gt;{call createPerson (?, ?)}&lt;/"
+#~ "sql-insert&gt;\n"
+#~ "    &lt;sql-delete callable=\"true\"&gt;{? = call deletePerson (?)}&lt;/"
+#~ "sql-delete&gt;\n"
+#~ "    &lt;sql-update callable=\"true\"&gt;{? = call updatePerson (?, ?)}"
+#~ "&lt;/sql-update&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL%ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL&#37;ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/"
+#~ "&gt;\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <loader query-ref=\"person\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"person\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
+#~ "    <key/>\n"
+#~ "    <one-to-many class=\"Employment\"/>\n"
+#~ "    <loader query-ref=\"employments\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"employments\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key/&gt;\n"
+#~ "    &lt;one-to-many class=\"Employment\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"employments\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"employments\">\n"
+#~ "    <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"employments\"&gt;\n"
+#~ "    &lt;load-collection alias=\"emp\" role=\"Person.employments\"/&gt;\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\"/>\n"
+#~ "    <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"emp\" property=\"pers.employments\"/&gt;\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "&lt;/sql-query&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/quickstart.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/quickstart.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/quickstart.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,12 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=utf-8\n"
+msgid "ROLES_OF_TRANSLATORS"
+msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+msgid "CREDIT_FOR_TRANSLATORS"
+msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/readonly.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/readonly.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/readonly.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1124 @@
+# Language ja-JP translations for PACKAGE package.
+# Automatically generated, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-25 06:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid ""
+"Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ "
+"from what you may have encountered elsewhere. Incorrect usage may cause "
+"unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check the entity's simple properties or single-"
+"ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid ""
+"Hibernate will not update simple properties or updatable single-ended "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid ""
+"Hibernate will not update the version of the read-only entity if only simple "
+"properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid ""
+"In some ways, Hibernate treats read-only entities the same as entities that "
+"are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid ""
+"Hibernate cascades operations to associations as defined in the entity "
+"mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid ""
+"Hibernate updates the version if the entity has a collection with changes "
+"that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid ""
+"Even if an entity is not read-only, its collection association can be "
+"affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid ""
+"For details about the affect of read-only entities on different property and "
+"association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid ""
+"It saves execution time by not dirty-checking simple properties or single-"
+"ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid ""
+"Only persistent entities can be made read-only. Transient and detached "
+"entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid ""
+"Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid ""
+"you can map an entity class as <emphasis>immutable</emphasis>; when an "
+"entity of an immutable class is made persistent, Hibernate automatically "
+"makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for "
+"details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid ""
+"you can change a default so that entities loaded into the session by "
+"Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-"
+"loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid ""
+"you can make an HQL query or criteria read-only so that entities loaded when "
+"the query or criteria executes, scrolls, or iterates, are automatically made "
+"read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid ""
+"you can make a persistent entity that is already in the in the session read-"
+"only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid ""
+"When an entity instance of an immutable class is made persistent, Hibernate "
+"automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid ""
+"An entity of an immutable class can created and deleted the same as an "
+"entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid ""
+"Hibernate treats a persistent entity of an immutable class the same way as a "
+"read-only persistent entity of a mutable class. The only exception is that "
+"Hibernate will not allow an entity of an immutable class to be changed so it "
+"is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid ""
+"To change the default behavior so Hibernate loads entity instances of "
+"mutable classes into the session and automatically makes them read-only, "
+"call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid ""
+"To change the default back so entities loaded by Hibernate are not made read-"
+"only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, entities loaded by the "
+"following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid ""
+"executing, scrolling, or iterating HQL queries and criteria; to override "
+"this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid ""
+"persistent entities that are refreshed via Session.refresh(); a refreshed "
+"persistent entity will only be read-only if it was read-only before "
+"refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid ""
+"persistent entities added by the application via Session.persist(), Session."
+"save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns false (the default) when an HQL query "
+"or criteria executes, then entities and proxies of mutable classes loaded by "
+"the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid ""
+"You can override this behavior so that entities and proxies loaded by an HQL "
+"query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid ""
+"<literal>Query.setReadOnly( true )</literal> must be called before "
+"<literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, "
+"<literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid ""
+"<literal>Criteria.setReadOnly( true )</literal> must be called before "
+"<literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</"
+"literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid ""
+"Entities and proxies that exist in the session before being returned by an "
+"HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid ""
+"Uninitialized persistent collections returned by the query are not affected. "
+"Later, when the collection is initialized, entities loaded into the session "
+"will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid ""
+"Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria."
+"setReadOnly( true )</literal> works well when a single HQL query or criteria "
+"loads all the entities and intializes all the proxies and collections that "
+"the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid ""
+"When it is not possible to load and initialize all necessary entities in a "
+"single query or criteria, you can temporarily change the session default to "
+"load entities as read-only before the query is executed. Then you can "
+"explicitly initialize proxies and collections before restoring the session "
+"default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"setDefaultReadOnly( true );\n"
+"Contract contract = \n"
+"   ( Contract ) session.createQuery(\n"
+"           \"from Contract where customerName = 'Sherman'\" )\n"
+"           .uniqueResult();\n"
+"Hibernate.initialize( contract.getPlan() );\n"
+"Hibernate.initialize( contract.getVariations() );\n"
+"Hibernate.initialize( contract.getNotes() );\n"
+"setDefaultReadOnly( false );\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, then you can use Query."
+"setReadOnly( false ) and Criteria.setReadOnly( false ) to override this "
+"session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid ""
+"Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid ""
+"To change a read-only entity or proxy of a mutable class so it is no longer "
+"read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid ""
+"When a read-only entity or proxy is changed so it is no longer read-only, "
+"Hibernate assumes that the current state of the read-only entity is "
+"consistent with its database representation. If this is not true, then any "
+"non-flushed changes made before or while the entity was read-only, will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid ""
+"To throw away non-flushed changes and make the persistent entity consistent "
+"with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid ""
+"To flush changes made before or while the entity was read-only and make the "
+"database representation consistent with the current state of the persistent "
+"entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+"// evict the read-only entity so it is detached\n"
+"session.evict( entity );\n"
+"\n"
+"// make the detached entity (with the non-flushed changes) persistent\n"
+"session.update( entity );\n"
+"\n"
+"// now entity is no longer read-only and its changes can be flushed\n"
+"s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid ""
+"The following table summarizes how different property types are affected by "
+"making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid ""
+"* Behavior is different when the entity having the property/association is "
+"read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid ""
+"When a persistent object is read-only, Hibernate does not dirty-check simple "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid ""
+"Hibernate will not synchronize simple property state changes to the "
+"database. If you have automatic versioning, Hibernate will not increment the "
+"version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"// get a contract and make it read-only\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"\n"
+"// contract.getCustomerName() is \"Sherman\"\n"
+"contract.setCustomerName( \"Yogi\" );\n"
+"tx.commit();\n"
+"\n"
+"tx = session.beginTransaction();\n"
+"\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"// contract.getCustomerName() is still \"Sherman\"\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-one and many-to-one associations in "
+"the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid ""
+"We use the term <emphasis>unidirectional single-ended association</emphasis> "
+"when referring to functionality that is common to unidirectional one-to-one "
+"and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check unidirectional single-ended associations when "
+"the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid ""
+"If you change a read-only entity's reference to a unidirectional single-"
+"ended association to null, or to refer to a different entity, that change "
+"will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, then its references to unidirectional "
+"single-ended associations must be assigned when that entity is first "
+"created. Because the entity is automatically made read-only, these "
+"references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid ""
+"In the following examples, Contract has a unidirectional many-to-one "
+"association with Plan. Contract cascades save and update operations to the "
+"association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid ""
+"The following shows that changing a read-only entity's many-to-one "
+"association reference to null has no effect on the entity's database "
+"representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and set its plan to null \n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"contract.setPlan( null );\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid ""
+"The following shows that, even though an update to a read-only entity's many-"
+"to-one association has no affect on the entity's database representation, "
+"flush still cascades the save-update operation to the locally changed "
+"association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and change to a new plan\n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"Plan newPlan = new Plan( \"new plan\"\n"
+"contract.setPlan( newPlan);\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"// newPlan is non-null because it was persisted when \n"
+"// the previous transaction was committed; \n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-many and many-to-many associations "
+"owned by a read-only entity the same as when owned by an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid ""
+"Hibernate dirty-checks unidirectional one-to-many and many-to-many "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid ""
+"The collection can contain entities that are read-only, as well as entities "
+"that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid ""
+"Entities can be added and removed from the collection; changes are flushed "
+"to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid ""
+"updates that change the association reference to null or to refer to a "
+"different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, and it owns a bidirectional one-to-"
+"one association, then its reference must be assigned when that entity is "
+"first created. Because the entity is automatically made read-only, these "
+"references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid ""
+"When the owner is not read-only, Hibernate treats an association with a read-"
+"only entity the same as when the association is with an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid ""
+"A read-only entity has no impact on a bidirectional one-to-many/many-to-one "
+"association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using a non-inverse "
+"collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid ""
+"the one-to-many side uses a non-inverse collection that contains the read-"
+"only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid ""
+"a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid ""
+"a read-only entity can only be removed from the collection by an orphan "
+"delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid ""
+"Hibernate treats bidirectional many-to-many associations owned by a read-"
+"only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid ""
+"The collection on either side of the association can contain entities that "
+"are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid ""
+"Entities are added and removed from both sides of the collection; changes "
+"are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in both sides of the collection if they dirty the entity owning the "
+"respective collections."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2232 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-01-07 14:56+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "オブジェクトを扱う"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a natural object-oriented view of persistence "
+"in Java applications."
+msgstr ""
+"Hibernate は完全なオブジェクト/リレーショナルマッピングソリューションであり、"
+"データベース管理システムの詳細を開発者から隠蔽するだけでなく、オブジェクトの "
+"<emphasis>状態管理</emphasis> も行います。これは、 JDBC/SQL 永続層と同じよう"
+"な SQL <literal>statements</literal> の管理とは異なり、 Java アプリケーション"
+"における永続化に対する、とても自然なオブジェクト指向の考え方を提供します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"言いかえれば、 Hibernate を用いるアプリケーション開発者は、オブジェクトの "
+"<emphasis>状態</emphasis> については常に意識すべきであり、 SQL 文の実行につい"
+"ては必ずしもそうではありません。この部分は、通常、 Hibernate が処理し、システ"
+"ムのパフォーマンスをチューニングするときにだけ、問題になってきます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Hibernate におけるオブジェクトの状態"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr "Hibernate は次のようなオブジェクトの状態を定義し、サポートしています:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application does not hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transient</emphasis> - <literal>new</literal> 演算子を使ってインス"
+"タンス化されただけで、 Hibernate の <literal>Session</literal> に関連付けられ"
+"ていないオブジェクトは、 transient です。それは、データベースに永続的な表現を"
+"持たず、識別子となる値は割り当てられていません。 Transient インスタンスは、ア"
+"プリケーションがその参照をどこにも保持しない場合に、ガベージコレクタによって"
+"破棄されます。オブジェクトを永続的 (persistent) な状態にするためには、 "
+"Hibernate の <literal>Session</literal> を使いましょう(この状態遷移に必要と"
+"なる SQL 文の発行は、 Hibernate に任せましょう)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers do not execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>永続的 (Persistent)</emphasis> - 永続的なインスタンスはデータベース"
+"に永続的な表現を持ち、識別子となる値を持っています。それは、セーブされたり、"
+"ロードされたりするかもしれませんが、定義上は、 <literal>Session</literal> の"
+"スコープの中に存在しています。 Hibernate は、作業単位(Unit of Work)が完了し"
+"たときに、永続状態のオブジェクトに加えられた変更を検出し、オブジェクトの状態"
+"とデータベースを同期します。オブジェクトを transient にするときは、開発者は、"
+"手作業で <literal>UPDATE</literal> 文や <literal>DELETE</literal> 文を実行し"
+"ません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e., a unit of work "
+"from the point of view of the user."
+msgstr ""
+"<emphasis>Detached</emphasis> - detached インスタンスとは、永続化されている"
+"が、それと関連付いていた <literal>Session</literal> がクローズされているオブ"
+"ジェクトのことです。そのオブジェクトへの参照は、依然として有効です。そして、"
+"もちろん、detached インスタンスはこの状態に修正することさえできます。 "
+"detached インスタンスは、もう一度永続化したい(そして、すべての変更を永続化し"
+"たい)ときに、新しい <literal>Session</literal> に再追加できます。この機能"
+"は、ユーザーが考える時間を必要とするような、長期間に及ぶ作業単位に対するプロ"
+"グラミングモデルを可能にします。我々は、これを <emphasis>アプリケーションのト"
+"ランザクション(application transactions)</emphasis> と呼んでいます。すなわ"
+"ち、ユーザーから見た作業単位だということです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"これから、状態と状態遷移(そして、遷移のきっかけとなる Hibernate のメソッド)"
+"について、詳細に述べます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "オブジェクトを永続状態にする"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Newly instantiated instances of a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"新しくインスタンス化された永続クラスのインスタンスは、 Hibernate では "
+"<emphasis>transient</emphasis> と見なされます。以下のように、セッションと関連"
+"づけることで、 transient インスタンスを <emphasis>永続状態 (persistent)</"
+"emphasis> にできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You can also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"<literal>Cat</literal> クラスの識別子が自動生成されるのであれば、 "
+"<literal>save()</literal> が呼ばれるときに、識別子が生成され、 <literal>cat</"
+"literal> インスタンスに割り当てられます。 <literal>Cat</literal> の識別子が "
+"<literal>assigned</literal> 識別子を持つか、複合キーであるなら、 "
+"<literal>save()</literal> を呼び出す前に、識別子を <literal>cat</literal> イ"
+"ンスタンスを割り当てなければなりません。 <literal>save()</literal> の代わり"
+"に、 EJB3 の初期ドラフトで定義された <literal>persist()</literal> を使うこと"
+"も可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it does not guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"代わりに、識別子を引数にとる <literal>save()</literal> メソッドを使って、識別"
+"子を割り当てることもできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects can be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"永続化するオブジェクトが関連オブジェクトを持っている場合 (例えば、前の例にお"
+"ける <literal>kittens</literal> コレクションのように)、外部キーカラムに、 "
+"<literal>NOT NULL</literal> 制約をつけない限りは、これらの一連のオブジェクト"
+"をどんな順番で永続化してもかまいません。外部キー制約を違反する恐れはありませ"
+"ん。しかし、 <literal>NOT NULL</literal> 制約がある場合、間違った順番でオブ"
+"ジェクトを <literal>save()</literal> してしまうと、制約に違反するかもしれませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually you do not bother with this detail, as you will normally use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations do not occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"関連するオブジェクトを自動的に保存する、 Hibernate の <emphasis>遷移的な永続"
+"化 (transitive persistence)</emphasis> 機能を使うつもりならば、そのような詳細"
+"を気にする必要はありません。そして、 <literal>NOT NULL</literal> 制約の違反す"
+"ら起こりません。 Hibernate がすべて面倒をみてくれます。遷移的な永続化は、この"
+"章の後半に書かれています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "オブジェクトのロード"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> provide "
+"a way of retrieving a persistent instance if you know its identifier. "
+"<literal>load()</literal> takes a class object and loads the state into a "
+"newly instantiated instance of that class in a persistent state."
+msgstr ""
+"永続化されたインスタンスの識別子があらかじめ分かっているなら、 "
+"<literal>Session</literal> の <literal>load()</literal> メソッドを使って、復"
+"元できます。 <literal>load()</literal> は、 Class オブジェクトを引数にとり、"
+"そのクラスのインスタンスを新たに生成し、状態をロードします。そのインスタンス"
+"の状態は、永続 (persistent) 状態です。"
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr ""
+"あるいは、以下のように、既存のインスタンスに状態をロードすることもできます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Be aware that <literal>load()</literal> will throw an unrecoverable "
+"exception if there is no matching database row. If the class is mapped with "
+"a proxy, <literal>load()</literal> just returns an uninitialized proxy and "
+"does not actually hit the database until you invoke a method of the proxy. "
+"This is useful if you wish to create an association to an object without "
+"actually loading it from the database. It also allows multiple instances to "
+"be loaded as a batch if <literal>batch-size</literal> is defined for the "
+"class mapping."
+msgstr ""
+"DB に該当する行が無い場合、 <literal>load()</literal> は回復不可能な例外を投"
+"げることに注意しましょう。そのクラスがプロキシを使ってマッピングされている場"
+"合、 <literal>load()</literal> は初期化されていないプロキシを返し、プロキシの"
+"メソッドが呼ばれるまで実際にはデータベースにアクセスしません。もし、実際に"
+"データベースからロードせずに、オブジェクトに対する関連を作りたい場合、この振"
+"る舞いはとても役立ちます。 <literal>batch-size</literal> がクラスマッピングに"
+"定義されているならば、複数のインスタンスを一括でロードすることが可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"該当する行が存在することを確信できない場合は、 <literal>get()</literal> メ"
+"ソッドを使うべきです。それは、データベースにすぐにアクセスし、該当する行が無"
+"い場合は null を返します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"<literal>LockMode</literal> を使えば、 <literal>SELECT ... FOR UPDATE</"
+"literal> という SQL を使ってオブジェクトをロードすることができます。詳細な情"
+"報は、 API ドキュメントを参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any associated instances or contained collections will <emphasis>not</"
+"emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to "
+"specify <literal>lock</literal> or <literal>all</literal> as a cascade style "
+"for the association."
+msgstr ""
+"関連に対するカスケード方法として <literal>lock</literal> や <literal>all</"
+"literal> を指定しない限り、関連するインスタンスや含まれるコレクションは "
+"<literal>FOR UPDATE</literal> で復元 <emphasis>されない</emphasis> ことに注意"
+"しましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"<literal>refresh()</literal> メソッドを使うことで、どんなときでも、オブジェク"
+"トやそのコレクションをリロードすることができます。データベースのトリガがテー"
+"ブルを更新した際に、そのテーブルに対応するオブジェクトのプロパティを同期する"
+"場合、このメソッドが役に立ちます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"How much does Hibernate load from the database and how many SQL "
+"<literal>SELECT</literal>s will it use? This depends on the "
+"<emphasis>fetching strategy</emphasis>. This is explained in <xref linkend="
+"\"performance-fetching\" />."
+msgstr ""
+"大切な問題は、いつも次の点に関するものです。それは、 Hibernate がデータベース"
+"から、どのくらいの量を復元するのかと、どのくらいの数の SQL の "
+"<literal>SELECT</literal> 文が使われるのかです。これは、 <emphasis>フェッチの"
+"戦略</emphasis> によります。これについては、 <xref linkend=\"performance-"
+"fetching\"/> で説明しています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "クエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You can also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"探したいオブジェクトの識別子が分からない場合は、クエリが必要になります。 "
+"Hibernate は使いやすくて強力なオブジェクト指向のクエリ言語 (HQL) をサポートし"
+"ています。プログラムによってクエリが作成できるように、 Hibernate は洗練され"
+"た Criteria と Example クエリ機能 (QBC と QBE) をサポートしています。 "
+"ResultSet をオブジェクトに変換する Hibernate のオプション機能を使うことで、"
+"データベースのネイティブな SQL でクエリを表現することもできます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "クエリの実行"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
+msgstr ""
+"HQL やネイティブな SQL クエリは、 <literal>org.hibernate.Query</literal> のイ"
+"ンスタンスとして表現されます。このインタフェースは、パラメータバインディング"
+"や ResultSet のハンドリングやクエリの実行を行うメソッドを用意しています。通"
+"常、 <literal>Query</literal> は、以下に示すように、その時点の "
+"<literal>Session</literal> を使って取得します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query is usually executed by invoking <literal>list()</literal>. The "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in a persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Queries that make use of eager "
+"fetching of collections usually return duplicates of the root objects, but "
+"with their collections initialized. You can filter these duplicates through "
+"a <literal>Set</literal>."
+msgstr ""
+"クエリは、普通、 <literal>list()</literal> を呼び出すことによって実行されま"
+"す。クエリの結果は、メモリ上にあるコレクションにすべてロードされます。クエリ"
+"によって復元されたエンティティのインスタンスは、永続状態です。もし、クエリが"
+"たった1個のインスタンスを返すと分かっているなら、 <literal>uniqueResult()</"
+"literal> メソッドが手っ取り早い方法です。即時フェッチを利用したクエリの場合、"
+"ふつう、得られたコレクションには、ルートのオブジェクトが重複して含まれていま"
+"す(しかし、ルートが持つコレクションは初期化 (ロード)されています)。この重"
+"複は <literal>Set</literal> を使って取り除くことができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "結果をイテレートする"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will usually "
+"be the case if you expect that the actual entity instances returned by the "
+"query will already be in the session or second-level cache. If they are not "
+"already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"時々、 <literal>iterate()</literal> メソッドを使ってクエリを実行することで、"
+"より良いパフォーマンスを得ることができます。これは、通常、クエリによって得ら"
+"れた実際のエンティティのインスタンスが、すでにセッションまたは二次キャッシュ"
+"に存在することが期待できる場合だけです。それらが、まだキャッシュされていない"
+"なら、 <literal>iterate()</literal> は、 <literal>list()</literal> よりも遅"
+"く、簡単なクエリに対しても多くのデータベースアクセスを必要とします。そのアク"
+"セスとは、識別子だけを取得するための最初の select <emphasis>1回</emphasis> "
+"と、実際のインスタンスを初期化するために後から行う <emphasis>n回</emphasis> "
+"の select のことです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "オブジェクトの組(tuple)を返すクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate queries sometimes return tuples of objects. Each tuple is returned "
+"as an array:"
+msgstr ""
+"Hibernate のクエリでは、時々、オブジェクトの組を返すことがあります。その場合"
+"は、各タプルは配列として返されます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "スカラーの結果"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can specify a property of a class in the <literal>select</literal> "
+"clause. They can even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+"クエリでは、 <literal>select</literal> 節でクラスのプロパティを指定できま"
+"す。 SQL の集合関数を呼ぶこともできます。プロパティや集合関数は、(永続状態の"
+"エンティティではなく)「スカラー値」であると見なされます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "パラメータのバインド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are as follows:"
+msgstr ""
+"<literal>Query</literal> は、名前付きのパラメータや JDBC スタイルの "
+"<literal>?</literal> パラメータに値をバインドするためのメソッドを持っていま"
+"す。 <emphasis> JDBC とは違い、 Hibernate はパラメータにゼロから番号を振って"
+"いきます。</emphasis>名前付きのパラメータとは、クエリ文字列のなかにある "
+"<literal>:name</literal> 形式の識別子です。名前付きパラメータの利点は次の通り"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters are insensitive to the order they occur in the query string"
+msgstr "名前付きパラメータは、クエリ文字列に登場する順番と無関係です"
+
+#. Tag: para
+#, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "同じクエリ内に複数回登場することができます"
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "自分自身を説明します"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "ページ分け"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set, that is, the maximum "
+"number of rows you want to retrieve and/or the first row you want to "
+"retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"ResultSet に制限(復元したい最大行数や復元したい最初の行)を加える必要があれ"
+"ば、以下のように、 <literal>Query</literal> インターフェースのメソッドを使い"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"制限付きのクエリを DBMS のネイティブな SQL に変換する方法を、 Hibernate は"
+"知っています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "スクロール可能なイテレーション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface can be used to obtain a "
+"<literal>ScrollableResults</literal> object that allows flexible navigation "
+"of the query results."
+msgstr ""
+"JDBC ドライバがスクロール可能な <literal>ResultSet</literal> をサポートしてい"
+"れば、 <literal>Query</literal> インターフェースを使って、 "
+"<literal>ScrollableResults</literal> オブジェクトを取得できます。それを使う"
+"と、クエリの結果に対して柔軟にナビゲーションできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that an open database connection and cursor is required for this "
+"functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"この機能にはオープン状態のデータベースコネクションが必要であることに注意して"
+"ください。もし、オフラインのページ分け機能が必要であれば、 "
+"<literal>setMaxResult()</literal> / <literal>setFirstResult()</literal> を使"
+"いましょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "名前付きクエリの外出し"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define named queries in the mapping document. Remember to use a "
+"<literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup."
+msgstr ""
+"マッピングドキュメントに名前付きのクエリを定義することができます。(マーク"
+"アップと解釈される文字がクエリに含まれるなら、 <literal>CDATA</literal> セク"
+"ションを使うことを忘れないようにしましょう。)"
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr ""
+"パラメータのバインディングと実行は、以下のようなプログラムで行われます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual program code is independent of the query language that is used. "
+"You can also define native SQL queries in metadata, or migrate existing "
+"queries to Hibernate by placing them in mapping files."
+msgstr ""
+"実際のプログラムコードは、使われるクエリ言語に依存していないことに注意しま"
+"しょう。メタデータには、ネイティブ SQL クエリを定義することもできます。また、"
+"既存のクエリをマッピングファイルに移すことで、 Hibernate に移行することもでき"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal>&lt;hibernate-"
+"mapping&gt;</literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal>&lt;class&gt;</literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"<literal>&lt;hibernate-mapping&gt;</literal> 要素の中のクエリ定義は、クエリに"
+"対するユニークな名前が必要なことにも注意してください。それに対して、 "
+"<literal>&lt;class&gt;</literal> 要素の中のクエリ定義は、クラスの完全限定名が"
+"前に付けられるので、自動的にユニークな名前になります。例: <literal>eg.Cat."
+"ByNameAndMaximumWeight</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "フィルタリングコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that can "
+"be applied to a persistent collection or array. The query string can refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"コレクション <emphasis>フィルタ</emphasis> は、永続化されているコレクションや"
+"配列に適用される特殊なタイプのクエリです。そのクエリ文字列では、コレクション"
+"のその時点での要素を意味する <literal>this</literal> を使います。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The returned collection is considered a bag that is a copy of the given "
+"collection. The original collection is not modified. This is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+"返されるコレクションは Bag とみなされます。そして、それはもとのコレクションの"
+"コピーになります。元のコレクションは修正されません(これは、 \"filter\" とい"
+"う名前の意味とは異なりますが、期待される動きとは一致しています)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause, "
+"although they can have one if required. Filters are not limited to returning "
+"the collection elements themselves."
+msgstr ""
+"フィルタには <literal>from</literal> 節が不要であることに気づくでしょう(必要"
+"なら、持つことも可能ですが)。フィルタは、コレクションの要素自体を返して構い"
+"ません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"large collection:"
+msgstr ""
+"クエリを含まないフィルタも役に立ちます。例えば、非常に大きなコレクションの部"
+"分集合をロードするために使えます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "クライテリアのクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL is extremely powerful, but some developers prefer to build queries "
+"dynamically using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL は非常に強力ですが、クエリ文字列を作るよりも、オブジェクト指向の API を"
+"使って動的にクエリを作る方を好む開発者もいます。こういった場合のために、 "
+"Hibernate は直感的な <literal>Criteria</literal> クエリ API を提供していま"
+"す。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria"
+"\" />."
+msgstr ""
+"<literal>Criteria</literal> と <literal>Example</literal> API の詳細は、 "
+"<xref linkend=\"querycriteria\"/> に述べられています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "ネイティブ SQL のクエリ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate manage the mapping from result sets to objects. You can at "
+"any time call <literal>session.connection()</literal> and use the JDBC "
+"<literal>Connection</literal> directly. If you choose to use the Hibernate "
+"API, you must enclose SQL aliases in braces:"
+msgstr ""
+"<literal>createSQLQuery()</literal> を使って、 SQL でクエリを表現することもで"
+"きます。そして、 Hibernate に、 ResultSet からオブジェクトへのマッピングをま"
+"かせます。 <literal>session.connection()</literal> を呼べばどんなときでも、直"
+"接、 JDBC <literal>Connection</literal> を使用できることを覚えておきましょ"
+"う。もし、 Hibernate API を使うのであれば、下記のように SQL の別名を括弧でく"
+"くらなければなりません。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"SQL queries can contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\" />."
+msgstr ""
+"SQL クエリは、 Hibernate クエリと同じように、名前付きのパラメータと位置パラ"
+"メータを持つことができます。 Hibernate におけるネイティブな SQL クエリの詳細"
+"については、 <xref linkend=\"querysql\"/> を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "永続オブジェクトの修正"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (i.e. objects "
+"loaded, saved, created or queried by the <literal>Session</literal>) can be "
+"manipulated by the application, and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis>. This is discussed later in this chapter. There is no need to call "
+"a particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. The most straightforward way "
+"to update the state of an object is to <literal>load()</literal> it and then "
+"manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+"<emphasis>処理中の永続インスタンス</emphasis> (例: <literal>Session</"
+"literal> によって、ロード、セーブ、作成、クエリされたオブジェクト)は、アプリ"
+"ケーションに操作されます。その際に変更された永続状態は、 <literal>Session</"
+"literal> が <emphasis>フラッシュ</emphasis> されるときに、永続化されます(こ"
+"れは、この章の後半で述べています)。変更を永続化するために、特殊なメソッド"
+"( <literal>update()</literal> のようなもの。これは、別の目的で使用します)を"
+"呼ぶ必要はありません。オブジェクトの状態を更新する一番簡単な方法は、オブジェ"
+"クトを <literal>load()</literal> し、 <literal>Session</literal> をオープンに"
+"している間に、直接操作することです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient, as it requires in the same "
+"session both an SQL <literal>SELECT</literal> to load an object and an SQL "
+"<literal>UPDATE</literal> to persist its updated state. Hibernate offers an "
+"alternate approach by using detached instances."
+msgstr ""
+"(オブジェクトをロードするための) SQL の <literal>SELECT</literal> と(更新"
+"された状態を永続化するための) SQL の <literal>UPDATE</literal> が同じセッ"
+"ションで必要となるので、このプログラミングモデルは、効率が悪くなる場合があり"
+"ます。そのため、 Hibernate は別の方法を用意しています。それは、 detached イン"
+"スタンスを使用する方法です。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you do not have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate can, however, provide special mass operation functions. See <xref "
+"linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+"Hibernate は、 <literal>UPDATE</literal> 文や <literal>DELETE</literal> 文を"
+"直接実行する API を用意していません。 Hibernate は、 <emphasis>ステートマネー"
+"ジメント</emphasis> サービスであり、それを使うのに <emphasis>ステートメント</"
+"emphasis> のことを開発者が考える必要はありません。 JDBC は SQL 文を実行する完"
+"璧な API であり、 <literal>session.connection()</literal> を呼ぶことでいつで"
+"も、 JDBC <literal>Connection</literal> を開発者は取得できます。さらに、大量"
+"のデータ操作の考え方は、オンライントランザクション処理向きアプリケーションの"
+"オブジェクト/リレーショナルマッピングと衝突します。しかし、 Hibernate の今後"
+"のバージョンでは、大量データを処理する特別な機能を提供するかもしれません。"
+"バッチ操作に利用できるいくつかの工夫については、 <xref linkend=\"batch\"/> を"
+"参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "detached オブジェクトの修正"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"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 ""
+"多くのアプリケーションでは次のことが必要になります。それは、あるトランザク"
+"ションでオブジェクトを復元し、操作するためにそれを UI 層に送り、その後に、新"
+"しいトランザクションで変更をセーブするといったことです。並行性の高い環境で、"
+"このタイプのアプローチを使うアプリケーションでは、「期間の長い」作業単位の隔"
+"離性を保証するために、バージョンデータが通常使われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate は、 <literal>Session.update()</literal> や <literal>Session.merge"
+"()</literal> メソッドを使って、 detached インスタンスを再追加することで、この"
+"モデルに対応します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"識別子 <literal>catId</literal> を持つ <literal>Cat</literal> が、既に "
+"<literal>secondSession</literal> でロードされていた場合は、再追加しようとした"
+"ときに、例外が投げられます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are certain that the session does not "
+"contain an already persistent instance with the same identifier. Use "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that the reattachment of your detached instances is "
+"the first operation that is executed."
+msgstr ""
+"同じ識別子を持つ永続インスタンスをセッションが既に保持していないことを確信で"
+"きるなら <literal>update()</literal> を使います。そして、セッションの状態を考"
+"えずに、どんな場合でも変更をマージしたい場合は、 <literal>merge()</literal> "
+"を使います。すなわち、 detached インスタンスの再追加操作が、最初に実行される"
+"ことを確実にするために、通常は <literal>update()</literal> が新しいセッション"
+"のなかで最初に呼ばれるメソッドになります。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances that are reachable from the given detached instance "
+"<emphasis>only</emphasis> if it wants their state to be updated. This can be "
+"automated using <emphasis>transitive persistence</emphasis>. See <xref "
+"linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+"detached インスタンスから到達可能な、 detached インスタンスをアプリケーション"
+"は個別に <literal>update()</literal> すべきです。それは、その状態を更新したい"
+"場合に <emphasis>限ります。</emphasis>  <emphasis>遷移的な永続化</emphasis> "
+"を使えば、もちろん自動化できます。<xref linkend=\"objectstate-transitive\"/> "
+"を参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified."
+msgstr ""
+"<literal>lock()</literal> メソッドでもまた、新しいセッションにオブジェクトを"
+"再関連付けできます。しかし、 detached インスタンスは無修正でなければなりませ"
+"ん。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s. See the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"<literal>lock()</literal> は、さまざまな <literal>LockMode</literal> とともに"
+"使うことができます。詳細は、 API ドキュメントとトランザクション処理の章を参照"
+"してください。再追加のときにだけ、 <literal>lock()</literal> が使われるわけで"
+"はありません。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\" />."
+msgstr ""
+"期間の長い作業単位の、その他のモデルは、 <xref linkend=\"transactions-"
+"optimistic\"/> で述べています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "自動的な状態検出"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Hibernate のユーザーは次の2つのケースのどちらにも使える汎用的なメソッドを要求"
+"していました。それは、新しい識別子を生成して transient インスタンスをセーブす"
+"ることと、その時点の識別子と関連づいている detached インスタンスを更新/再追加"
+"することのできるメソッドです。 <literal>saveOrUpdate()</literal> はこのような"
+"機能を実現したメソッドです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"<literal>saveOrUpdate()</literal> の使用方法と意味は、新しいユーザーにとって"
+"混乱を招くかもしれません。まず第一に、あるセッションで使用したインスタンスを"
+"別の新しいセッションで使おうとしない限り、 <literal>update()</literal> や "
+"<literal>saveOrUpdate()</literal> や <literal>merge()</literal> を使う必要は"
+"ありません。アプリケーション全体を通じて、これらのメソッドを全く使わないこと"
+"もあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"通常、 <literal>update()</literal> や <literal>saveOrUpdate()</literal> は次"
+"のシナリオで使われます:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "アプリケーションが最初のセッションでオブジェクトをロードします。"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "オブジェクトが UI 層に送られます。"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "オブジェクトに対して変更が加えられます。"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "オブジェクトがビジネスロジック層に送られます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"アプリケーションは、2番目のセッションで <literal>update()</literal> を呼ぶこ"
+"とで、これらの変更を永続化します。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal> は以下のことを行います:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr ""
+"オブジェクトがこのセッションで、すでに永続化されていれば、何もしません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"そのセッションに関連づいている別のオブジェクトが同じ識別子を持っているなら、"
+"例外を投げます。"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+"オブジェクトの識別子が値を持たないならば、 <literal>save()</literal> します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"オブジェクトの識別子が値を持ち、その値が新たにインスタンス化されたオブジェク"
+"トのための値である場合、そのオブジェクトを <literal>save()</literal> します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object is versioned by a <literal>&lt;version&gt;</literal> or "
+"<literal>&lt;timestamp&gt;</literal>, and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"オブジェクトが( <literal>&lt;version&gt;</literal> や <literal>&lt;"
+"timestamp&gt;</literal> によって)バージョンづけされていて、バージョンのプロ"
+"パティが値を持ち、その値が新しくインスタンス化されたオブジェクトのための値で"
+"ある場合、そのオブジェクトを <literal>save()</literal> します。"
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr ""
+"そうでない場合は、そのオブジェクトを <literal>update()</literal> します。"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "そして、 <literal>merge()</literal> は以下のように非常に異なります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"同じ識別子を持つ永続化インスタンスがその時点でセッションと関連付いているなら"
+"ば、引数で受け取ったオブジェクトの状態を永続化インスタンスにコピーします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"永続化インスタンスがその時点でセッションに関連付いていないなら、データベース"
+"からそれをロードするか、あるいは、新しい永続化インスタンスを作成します。"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "永続化インスタンスが返されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"引数として与えたインスタンスはセッションと関連を持ちません。それは、分離状態"
+"のままです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "永続オブジェクトの削除"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Your application, however, can still hold a reference to a deleted "
+"object. It is best to think of <literal>delete()</literal> as making a "
+"persistent instance, transient."
+msgstr ""
+"<literal>Session.delete()</literal> はオブジェクトの状態をデータベースから削"
+"除します。もちろん、削除したオブジェクトをアプリケーションが保持したままでも"
+"よいです。そのため、 <literal>delete()</literal> は永続インスタンスを "
+"transient にするものと考えるのが一番です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can delete objects in any order, without risk of foreign key constraint "
+"violations. It is still possible to violate a <literal>NOT NULL</literal> "
+"constraint on a foreign key column by deleting objects in the wrong order, e."
+"g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"外部キー制約に違反するリスクもなく、好きな順番でオブジェクトを削除することが"
+"できます。ただし、間違った順番でオブジェクトを削除すると、外部キーカラムの "
+"<literal>NOT NULL</literal> 制約に違反する可能性があります。例えば、親オブ"
+"ジェクトを削除したときに、子供オブジェクトを削除し忘れた場合です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "異なる二つのデータストア間でのオブジェクトのレプリケーション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is sometimes useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"永続インスタンスのグラフを別のデータストアに永続化する場合に、識別子の値を再"
+"生成せずにすむと便利な場合があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+"レプリケーション先のデータベースに行が既にある場合、 <literal>replicate()</"
+"literal> が衝突をどのように扱うかを <literal>ReplicationMode</literal> で指定"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal> - 同じ識別子を持つ行がデータベース"
+"に存在するなら、そのオブジェクトを無視します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal> - 同じ識別子を持つ既存の行をすべ"
+"て上書きします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal> - 同じ識別子を持つ行がデータベー"
+"スに存在するなら、例外を投げます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - 行に保存されているバー"
+"ジョン番号が、引数のオブジェクトのバージョン番号より古いならば、その行を上書"
+"きします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"次のようなケースで、この機能を使用します。異なるデータベースインスタンスに入"
+"れられたデータの同期、製品更新時におけるシステム設定情報の更新、非 ACID トラ"
+"ンザクションのなかで加えられた変更のロールバックなどです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "セッションのフラッシュ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the <literal>Session</literal> will execute the SQL statements "
+"needed to synchronize the JDBC connection's state with the state of objects "
+"held in memory. This process, called <emphasis>flush</emphasis>, occurs by "
+"default at the following points:"
+msgstr ""
+"JDBC コネクションの状態とメモリ上のオブジェクトの状態を同期させるために必要"
+"な SQL 文を <literal>Session</literal> が実行することがときどきあります。この"
+"処理 <emphasis>flush</emphasis> は、デフォルトでは次のときに起こります。"
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "クエリを実行する前"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "<literal>org.hibernate.Transaction.commit()</literal> を実行したとき"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "<literal>Session.flush()</literal> を実行したとき"
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "SQL 文は以下の順番で発行されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity insertions in the same order the corresponding objects were saved "
+"using <literal>Session.save()</literal>"
+msgstr ""
+"すべてのエンティティの挿入。これは、 <literal>Session.save()</literal> を使っ"
+"てセーブしたオブジェクトの順に実行していきます。"
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "すべてのエンティティの更新"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "すべてのコレクションの削除"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr "すべてのコレクションの要素に対する削除、更新、挿入"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "すべてのコレクションの挿入"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity deletions in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"すべてのエンティティの削除。これは、 <literal>Session.delete()</literal> を"
+"使って削除したオブジェクトの順に実行していきます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved."
+msgstr ""
+"(1つ例外があります。 <literal>native</literal> ID 生成を使ったオブジェクト"
+"は、それらがセーブされたときに挿入されます。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Except when you explicitly <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale or incorrect data."
+msgstr ""
+"明示的に <literal>flush()</literal> するときを除いて、 <emphasis>いつ</"
+"emphasis> <literal>Session</literal> が JDBC をコールするのかについて絶対的な"
+"保証はありません。ただし、それらが実行される <emphasis>順番</emphasis> だけは"
+"保証されます。また、 Hibernate は、 <literal>Query.list(..)</literal> が古い"
+"データや間違ったデータ返さないことを保証しています。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time when the Hibernate <literal>Transaction</"
+"literal> API is used, flush automatically using the explained routine, or "
+"never flush unless <literal>flush()</literal> is called explicitly. The last "
+"mode is useful for long running units of work, where a <literal>Session</"
+"literal> is kept open and disconnected for a long time (see <xref linkend="
+"\"transactions-optimistic-longsession\" />)."
+msgstr ""
+"フラッシュが頻繁に起こらないようにデフォルトの振る舞いを変えることができま"
+"す。 <literal>FlushMode</literal> クラスは3つの異なるモードを定義します。それ"
+"は、コミット時にだけフラッシュするモード(Hibernate の <literal>Transaction</"
+"literal> API が使われる場合だけです)、説明のあった処理順に基づいて自動でフ"
+"ラッシュするモード、 <literal>flush()</literal> が明示的に呼ばれない限りフ"
+"ラッシュしないモードの3つです。最後のモードは、作業単位が長期間に及ぶ場合に"
+"役に立ちます ( <xref linkend=\"transactions-optimistic-longsession\"/> を参照"
+"してください)。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\" />."
+msgstr ""
+"フラッシュのとき、例外が発生するかもしれません(例えば、 DML 操作が制約を違反"
+"するような場合です)。例外処理を理解するためには、 Hibernate のトランザクショ"
+"ンの振る舞いを理解する必要があるため、 <xref linkend=\"transactions\"/> で説"
+"明します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "連鎖的な永続化"
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved and when the parent is deleted, the children will be deleted, etc. "
+"This works for operations such as the removal of a child from the "
+"collection. Since value-typed objects cannot have shared references, "
+"Hibernate will detect this and delete the child from the database."
+msgstr ""
+"もし、親子関係の子が値型なら(例えば、住所や文字列のコレクション)、それらの"
+"ライフサイクルは親に依存しており、便利な状態変化の「カスケード」を使うため"
+"に、追加の作業は必要はありません。親がセーブされたとき、値型の子オブジェクト"
+"も同じようにセーブされますし、親が削除されたときは、子も削除されます。その他"
+"の操作も同じです。コレクションから1つの子を削除するような操作でもうまくいきま"
+"す。すなわち、 Hibernate はこの削除操作を検出すると、値型のオブジェクトは参照"
+"を共有できないので、データベースからその子供を削除します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"ここで、親と子が値型でなくエンティティであるとして同じシナリオを考えてみま"
+"しょう。(例えば、カテゴリーと品目の関係や親と子の猫の関係です。)エンティ"
+"ティは、それ自身がライフサイクルを持ち、参照の共有をサポートします。(そのた"
+"め、コレクションからエンティティを削除することは、エンティティ自身の削除を意"
+"味しません。)また、エンティティは、デフォルトでは、関連する他のエンティティ"
+"へ状態をカスケードすることはありません。 Hibernate は <emphasis>到達可能性に"
+"よる永続化</emphasis> をデフォルトでは実行しません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"Hibernate の Session の基本操作( <literal>persist(), merge(), saveOrUpdate"
+"(), delete(), lock(), refresh(), evict(), replicate()</literal> が含まれま"
+"す)に対して、それぞれに対応するカスケードスタイルがあります。それぞれのカス"
+"ケードスタイルには、 <literal>create, merge, save-update, delete, lock, "
+"refresh, evict, replicate</literal> という名前がついています。もし、関連に"
+"沿ってカスケードさせたい操作があるなら、マッピングファイルにそう指定しなけれ"
+"ばなりません。例えば、以下のようにします:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr "カスケードスタイルは、組み合わせることができます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"<emphasis>すべての</emphasis> 操作を関連に沿ってカスケードするよう指定すると"
+"きは、 <literal>cascade=\"all\"</literal> を使います。デフォルトの "
+"<literal>cascade=\"none\"</literal> は、どの操作もカスケードしないことを意味"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"特殊なカスケードスタイル <literal>delete-orphan</literal> は、一対多関連にだ"
+"け適用できます。これは、関連から削除された子供のオブジェクトに対して、 "
+"<literal>delete()</literal> 操作が適用されることを意味します。"
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "おすすめ:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It does not usually make sense to enable cascade on a <literal>&lt;many-to-"
+"one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. "
+"Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and "
+"<literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+"普通、 <literal>&lt;many-to-one&gt;</literal> や <literal>&lt;many-to-"
+"many&gt;</literal> 関連に対しては、カスケードを設定する意味はありません。 "
+"<literal>&lt;one-to-one&gt;</literal> と <literal>&lt;one-to-many&gt;</"
+"literal> 関連に対しては、カスケードが役に立つことがあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"子供オブジェクトの寿命が親オブジェクトの寿命に制限を受けるならば、 "
+"<literal>cascade=\"all,delete-orphan\"</literal> を指定し、子供オブジェクト"
+"を <emphasis>ライフサイクルオブジェクト</emphasis> にします。"
+
+#. Tag: para
+#, 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 "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"それ以外の場合は、カスケードはほとんど必要ないでしょう。しかし、同じトランザ"
+"クションのなかで親と子が一緒に動作することが多いと思い、いくらかのコードを書"
+"く手間を省きたいのであれば、 <literal>cascade=\"persist,merge,save-update\"</"
+"literal> を使うことを考えましょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"<literal>cascade=\"all\"</literal> でマッピングした関連(単値関連やコレクショ"
+"ン)は、 <emphasis>親子</emphasis> スタイルの関連とマークされます。それは、親"
+"のセーブ/更新/削除が、子のセーブ/更新/削除を引き起こす関係のことです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Furthermore, a mere reference to a child from a persistent parent will "
+"result in save/update of the child. This metaphor is incomplete, however. A "
+"child which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"さらに、永続化された親が子を単に参照しているだけで、子のセーブ/更新を引き起こ"
+"します。しかし、このメタファーは不完全です。親から参照されなくなった子は、自"
+"動的に削除 <emphasis>されません</emphasis> 。ただし、 <literal>cascade="
+"\"delete-orphan\"</literal> でマッピングされた <literal>&lt;one-to-many&gt;</"
+"literal> 関連を除いてです。親子関係のカスケード操作の正確な意味は以下のように"
+"なります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"親が <literal>persist()</literal> に渡されたならば、すべての子は "
+"<literal>persist()</literal> に渡されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"<literal>merge()</literal> に渡されたならば、すべての子は <literal>merge()</"
+"literal> に渡されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"親が <literal>save()</literal> 、 <literal>update()</literal> 、 "
+"<literal>saveOrUpdate()</literal> に渡されたならば、すべての子は "
+"<literal>saveOrUpdate()</literal> に渡されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"transient または detached の子が、永続化された親に参照されたならば、 "
+"<literal>saveOrUpdate()</literal> に渡されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"親が削除されたならば、すべての子は、 <literal>delete()</literal> に渡されま"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"子が永続化された親から参照されなくなったときは、 <emphasis>特に何も起こりませ"
+"ん</emphasis> 。よって、アプリケーションが必要であれば、明示的に削除する必要"
+"があります。ただし、 <literal>cascade=\"delete-orphan\"</literal> の場合を除"
+"きます。この場合、「親のない」子は削除されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-update</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"最後に、操作のカスケードがオブジェクトグラフに適用されるのは、 <emphasis>コー"
+"ルした時</emphasis> あるいは、 <emphasis>flushした時</emphasis> であることに"
+"注意してください。すべての操作は、その操作が実行されたときに、到達可能な関連"
+"するエンティティに対してカスケードが可能ならカスケードします。しかし、 "
+"<literal>save-upate</literal> と <literal>delete-orphan</literal> は、 "
+"<literal>Session</literal> が flush している間に、すべての到達可能な関連する"
+"エンティティに伝播します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "メタデータの使用"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires a rich meta-level model of all entity and value types. "
+"This model can be useful to the application itself. For example, the "
+"application might use Hibernate's metadata to implement a \"smart\" deep-"
+"copy algorithm that understands which objects should be copied (eg. mutable "
+"value types) and which objects that should not (e.g. immutable value types "
+"and, possibly, associated entities)."
+msgstr ""
+"Hibernate は、すべてのエンティティと値型の非常にリッチなメタレベルのモデルを"
+"必要とします。ときどき、このモデルはアプリケーションにとってとても役に立ちま"
+"す。例えば、アプリケーションは、 Hibernate のメタデータを使って、「賢い」"
+"ディープコピーアルゴリズムを実装できるかもしません。そのアルゴリズムとは、ど"
+"のオブジェクトがコピーされるべきか(例:可変の値型)やどのオブジェクトはコ"
+"ピーされないべきか(例:不変な値型や可能なら関連するエンティティ)を判断でき"
+"るものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces can be obtained "
+"from the <literal>SessionFactory</literal>."
+msgstr ""
+"Hibernate は <literal>ClassMetadata</literal> と "
+"<literal>CollectionMetadata</literal> インタフェースと <literal>Type</"
+"literal> 階層を通してメタデータを公開します。メタデータインターフェースのイン"
+"スタンスは、 <literal>SessionFactory</literal> から得られます。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);]]>"
+#~ msgstr ""
+#~ "DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );]]>"
+#~ msgstr ""
+#~ "DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );"
+
+#, fuzzy
+#~ msgid "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+#~ msgstr "Cat fritz = (Cat) sess.load(Cat.class, generatedId);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );]]>"
+#~ msgstr ""
+#~ "// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();]]>"
+#~ msgstr ""
+#~ "Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;]]>"
+#~ msgstr ""
+#~ "Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+#~ msgstr "Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+#~ msgstr ""
+#~ "sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate < ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+#~ msgstr ""
+#~ "List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate &lt; ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten = (Cat) tuple[0];\n"
+#~ "    Cat mother = (Cat) tuple[1];\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten  = tuple[0];\n"
+#~ "    Cat mother  = tuple[1];\n"
+#~ "    ....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from "
+#~ "DomesticCat cat \" +\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+#~ "(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()]]>"
+#~ msgstr ""
+#~ "Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" "
+#~ "+\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE &gt; i++ ) &amp;&amp; cats.next() ) pageOfCats.add"
+#~ "( cats.get(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight > ?\n"
+#~ "] ]></query>]]>"
+#~ msgstr ""
+#~ "&lt;query name=\"ByNameAndMaximumWeight\"&gt;&lt;![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight &gt; ?\n"
+#~ "] ]&gt;&lt;/query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");]]>"
+#~ msgstr ""
+#~ "Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Expression.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT "
+#~ "{cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list();]]>"
+#~ msgstr ""
+#~ "List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM&lt;10\",\n"
+#~ "    \"cat\",\n"
+#~ "    Cat.class\n"
+#~ ").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list()]]>"
+#~ msgstr ""
+#~ "List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM&lt;10\",\n"
+#~ "    \"cat\",\n"
+#~ "    Cat.class\n"
+#~ ").list()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+#~ "(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and "
+#~ "persisted]]>"
+#~ msgstr ""
+#~ "DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and persisted"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate]]>"
+#~ msgstr ""
+#~ "// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);]]>"
+#~ msgstr ""
+#~ "//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)]]>"
+#~ msgstr ""
+#~ "// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)"
+
+#, fuzzy
+#~ msgid "<![CDATA[sess.delete(cat);]]>"
+#~ msgstr "sess.delete(cat);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();]]>"
+#~ msgstr ""
+#~ "//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();]]>"
+#~ msgstr ""
+#~ "sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();"
+
+#, fuzzy
+#~ msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" cascade=\"persist\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" cascade=\"persist,delete,lock\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i&lt;propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() &amp;&amp; !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1181 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-01-20 15:00+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "ツールセットガイド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, and Ant tasks."
+msgstr ""
+"Hibernate を使ったラウンドトリップエンジニアリングは、 Eclipse プラグインやコ"
+"マンドラインツール、もちろん Ant タスクを使うことで可能です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"<emphasis>Hibernate Tools</emphasis> は現在、既存データベースのリバースエンジ"
+"ニアリングの Ant タスクに加えて、 Eclipse IDE のプラグインを含みます:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping "
+"files that supports auto-completion and syntax highlighting. It also "
+"supports semantic auto-completion for class names and property/field names, "
+"making it more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>マッピングエディタ:</emphasis> Hibernate の XML マッピングファイル"
+"用のエディタで、自動補完と構文強調表示をサポートしています。クラス名やプロパ"
+"ティ/フィールド名に対する自動補完もサポートし、通常の XML エディタよりも強力"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> the console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you are also "
+"provided with an interactive view of your persistent classes and their "
+"relationships. The console allows you to execute HQL queries against your "
+"database and browse the result directly in Eclipse."
+msgstr ""
+"<emphasis>Console:</emphasis> コンソールはエクリプスの新しいビューです。コン"
+"ソールコンフィギュレーションのツリーオーバービューに加えて、永続クラスとその"
+"関連の相互作用ビューも得られます。データベースに HQL を実行し、結果を直接エク"
+"リプス上で見ることができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> several wizards are provided with "
+"the Hibernate Eclipse tools. You can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or to reverse engineer an existing "
+"database schema into POJO source files and Hibernate mapping files. The "
+"reverse engineering wizard supports customizable templates."
+msgstr ""
+"<emphasis>開発ウィザード</emphasis> Hibernate の Eclipse ツールはいくつかの"
+"ウィザードを提供します。ウィザードを使って Hibernate の設定ファイル (cfg."
+"xml) をすばやく生成したり、既存のデータベーススキーマを POJO のソースファイル"
+"と Hibernate のマッピングファイルへと、完全にリバースエンジニアリングすること"
+"ができます。リバースエンジニアリングウィザードはカスタマイズ可能なテンプレー"
+"トをサポートします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package "
+"documentation for more information."
+msgstr ""
+"より詳しい情報は <emphasis>Hibernate Tools</emphasis> パッケージとそのドキュ"
+"メントを参照してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool : "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even "
+"be used from \"inside\" Hibernate."
+msgstr ""
+"しかし、 Hibernate のメインパッケージは <emphasis>SchemaExport</emphasis> 、"
+"別名 <literal>hbm2ddl</literal> も含みます(Hibernate 「内」でオンザフライで使"
+"用できます)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "スキーマの自動生成"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"DDL can be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints, primary and "
+"foreign keys, for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"DDL は Hibernate ユーティリティによりマッピングファイルから生成することができ"
+"ます。生成されたスキーマはエンティティやコレクションのテーブルに対する参照整"
+"合性制約 (主キーと外部キー) を含みます。テーブルとシーケンスはマッピングする"
+"識別子ジェネレータに対して生成されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor-specific."
+msgstr ""
+"DDL はベンダー依存なので、このツールを使うときは、 <literal>hibernate."
+"dialect</literal> プロパティで SQL の <literal>方言</literal> を指定 "
+"<emphasis>しなければなりません</emphasis> 。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must customize your mapping files to improve the generated "
+"schema. The next section covers schema customization."
+msgstr ""
+"まず、生成されるスキーマを改善するように、マッピングファイルをカスタマイズし"
+"てください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "スキーマのカスタマイズ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You can set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"多くの Hibernate のマッピング要素では、オプションの <literal>length</"
+"literal>、 <literal>precision</literal>、 <literal>scale</literal> という名の"
+"属性を定義しています。この属性でカラムの長さ、精度、スケールを設定することが"
+"できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute for generating "
+"a <literal>NOT NULL</literal> constraint on table columns, and a "
+"<literal>unique</literal> attribute for generating <literal>UNIQUE</literal> "
+"constraint on table columns."
+msgstr ""
+"<literal>not-null</literal> 属性(テーブルのカラムへ <literal>NOT NULL</"
+"literal> 制約を生成する)と <literal>unique</literal> 属性(テーブルのカラム"
+"へ <literal>UNIQUE</literal> 制約を生成する)が設定できるタグもあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute can be used to group columns in a "
+"single, unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL. It is only used to group the "
+"columns in the mapping file."
+msgstr ""
+"<literal>unique-key</literal> 属性はカラムをグループ化して一つのキー制約にす"
+"るために使われます。現在、 <literal>unique-key</literal> 属性で指定された値は"
+"制約の指定には <emphasis>使われず</emphasis> 、マッピングファイルでカラムをグ"
+"ループ化することにのみ使われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns can be "
+"grouped into the same index by simply specifying the same index name."
+msgstr ""
+"<literal>index</literal> 属性はマッピングするカラムを使って生成したインデック"
+"スの名前を指定します。複数カラムを1つのインデックスにグループ化できます。単"
+"に、同じインデックス名を指定するだけです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute can be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"<literal>foreign-key</literal> 属性は、生成された外部キー制約の名前をオーバー"
+"ライドするために使用できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal>&lt;column&gt;</literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"多くのマッピング要素は、子 <literal>&lt;column&gt;</literal> 要素を記述できま"
+"す。これは複数カラム型のマッピングには特に有用です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>default</literal> attribute allows you to specify a default "
+"value for a column.You should assign the same value to the mapped property "
+"before saving a new instance of the mapped class."
+msgstr ""
+"<literal>default</literal> 属性はカラムのデフォルト値を指定します (マッピング"
+"したクラスの新しいインスタンスを保存する前に、マッピングしたプロパティへ同じ"
+"値を代入すべきです)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"<literal>sql-type</literal> 属性で、デフォルトの Hibernate 型から SQL のデー"
+"タ型へのマッピングをオーバーライドできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr "<literal>check</literal> 属性でチェック制約を指定することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "要約"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "値"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "説明"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>length</literal>"
+msgstr "<literal>length</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "数値"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "カラムの長さ"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "<literal>precision</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "カラムの DECIMAL 型の精度(precision)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "<literal>scale</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "カラムの DECIMAL 型のスケール(scale)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "<literal>not-null</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "<literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "カラムが null 値を取らないことを指定します"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "<literal>unique</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "カラムがユニーク制約を持つことを指定します"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index</literal>"
+msgstr "<literal>index</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "インデックス名"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "(複数カラムの)インデックスの名前を指定します"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "<literal>unique-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "ユニークキー名"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "複数カラムのユニーク制約の名前を指定します"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "<literal>foreign-key</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "外部キー名"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-"
+"to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-"
+"to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"<literal>&lt;one-to-one&gt;</literal>、 <literal>&lt;many-to-one&gt;</"
+"literal>、 <literal>&lt;key&gt;</literal>、 または <literal>&lt;many-to-"
+"many&gt;</literal> マッピングエレメントのために、関連に対して生成された外部"
+"キー制約の名前を指定します。 <literal>inverse=\"true\"</literal> 側は "
+"<literal>SchemaExport</literal> によって考慮されないことに注意してください。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "<literal>sql-type</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "<literal>sql-type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal>&lt;column&gt;</"
+"literal> element only)"
+msgstr ""
+"デフォルトのカラム型をオーバーライドします ( <literal>&lt;column&gt;</"
+"literal> 要素の属性に限る)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>default</literal>"
+msgstr "<literal>default</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "SQL 式"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "カラムのデフォルト値を指定します"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>check</literal>"
+msgstr "<literal>check</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr "カラムかテーブルに SQL のチェック制約を作成します"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;comment&gt;</literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"<literal>&lt;comment&gt;</literal> 要素で生成するスキーマにコメントを指定する"
+"ことができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL where supported."
+msgstr ""
+"これにより、生成した DDL に <literal>comment on table</literal> や "
+"<literal>comment on column</literal> 文が書かれます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "ツールの実行"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"<literal>SchemaExport</literal> は標準出力に対して DDL スクリプトを書き出"
+"し、 DDL 文を実行したりもします。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaExport</literal> command "
+"line options"
+msgstr "<literal>SchemaExport</literal> のコマンドラインオプション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "<literal>SchemaExport</literal> のコマンドラインオプション"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "オプション"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "説明"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "<literal>--quiet</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not output the script to stdout"
+msgstr "標準出力にスクリプトを出力しません"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "<literal>--drop</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "テーブルの削除だけを行います"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "<literal>--create</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "テーブルの生成のみを行います"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "<literal>--text</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export to the database"
+msgstr "データベースにエクスポートしません"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "<literal>scale</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "DDL スクリプトをファイルに出力します"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "<literal>--naming=eg.MyNamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "<literal>NamingStrategy</literal> を選択"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "<literal>hibernate.dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "XML ファイルから Hibernate の定義情報を読み込みます"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "<literal>--properties=hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr "ファイルからデータベースのプロパティを読み込みます"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "<literal>--format</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "スクリプト内に生成する SQL を読みやすいようにフォーマットします"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "<literal>--delimiter=;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "スクリプトの行区切り文字を設定します"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr ""
+"アプリケーションに <literal>SchemaExport</literal> を組み込むこともできます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "プロパティ"
+
+#. Tag: para
+#, no-c-format
+msgid "Database properties can be specified:"
+msgstr "次のように、データベースのプロパティを指定することができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+msgstr ""
+"<literal>-D</literal><emphasis>&lt;property&gt;</emphasis> を使って、システム"
+"プロパティとして"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "<literal>hibernate.properties</literal> ファイル内で"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr "<literal>--properties</literal> を使って指定したプロパティファイル内で"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "必要なプロパティは以下のものです:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "SchemaExport コネクションプロパティ"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "プロパティ名"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "<literal>hibernate.connection.driver_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "jdbc のドライバークラス"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "<literal>hibernate.connection.url</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "jdbc の url"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "<literal>hibernate.connection.username</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "データベースのユーザー"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "<literal>hibernate.connection.password</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "ユーザーパスワード"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "<literal>hibernate.dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "データベース方言"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "Ant を使用する"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"Ant のビルドスクリプトから <literal>SchemaExport</literal> を呼び出すことがで"
+"きます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "インクリメンタルなスキーマ更新"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon "
+"the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+"<literal>SchemaUpdate</literal> ツールは既存のスキーマをインクリメンタルに更"
+"新します。 <literal>SchemaUpdate</literal> は JDBC のメタデータ API に強く依"
+"存します。そのため、すべての JDBC ドライバでうまくいくとは限らないことに注意"
+"してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "<literal>SchemaUpdate</literal> のコマンドラインオプション"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export the script to the database"
+msgstr "データベースにスクリプトをエクスポートしません"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "<literal>.cfg.xml</literal> ファイルを指定"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr ""
+"アプリケーションに <literal>SchemaUpdate</literal> を組み込むことができます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "インクリメンタルなスキーマ更新に対する Ant の使用"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr ""
+"Ant スクリプトから <literal>SchemaUpdate</literal> を呼び出すことができます:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "Schema validation"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. The "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API and, as such, will not work with all JDBC drivers. This tool is "
+"extremely useful for testing."
+msgstr ""
+"<literal>SchemaValidator</literal> ツールは、既存のデータベーススキーマと作成"
+"したマッピングドキュメントが「一致する」ことを検証します。 "
+"<literal>SchemaValidator</literal> は JDBC のメタデータ API に強く依存するこ"
+"とに注意してください。そのため、すべての JDBC ドライバーで作動するものではあ"
+"りません。このツールはテスト時に非常に有用です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaValidator</literal> command "
+"line options:"
+msgstr "<literal>SchemaValidator</literal> のコマンドラインオプション"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "<literal>SchemaValidator</literal> のコマンドラインオプション"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr ""
+"<literal>SchemaValidator</literal> をアプリケーションに組み込むことが出来ま"
+"す:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "スキーマのバリデーションに Ant を使用します"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr "Ant スクリプトから <literal>SchemaValidator</literal> を呼び出せます:"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
+#~ msgstr "&lt;property name=\"zip\" length=\"5\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
+#~ msgstr "&lt;property name=\"balance\" precision=\"12\" scale=\"2\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key="
+#~ "\"OrgEmployeeId\"/>\n"
+#~ "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId"
+#~ "\"/&gt;\n"
+#~ "&lt;property name=\"employeeId\" unique-key=\"OrgEmployee\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
+#~ "<property name=\"firstName\" index=\"CustName\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"lastName\" index=\"CustName\"/&gt;\n"
+#~ "&lt;property name=\"firstName\" index=\"CustName\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
+#~ "    <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30"
+#~ "\"/>\n"
+#~ "    <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20"
+#~ "\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"name\" type=\"my.customtypes.Name\"/&gt;\n"
+#~ "    &lt;column name=\"last\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"30\"/&gt;\n"
+#~ "    &lt;column name=\"first\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"20\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"credits\" default=\"10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"credits\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"credits\" default=\"10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"version\" default=\"0\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;version name=\"version\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"version\" default=\"0\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" type=\"float\">\n"
+#~ "    <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\" type=\"float\"&gt;\n"
+#~ "    &lt;column name=\"balance\" sql-type=\"decimal(13,3)\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
+#~ "    <column name=\"foo\" check=\"foo > 10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"foo\" type=\"integer\"&gt;\n"
+#~ "    &lt;column name=\"foo\" check=\"foo &gt; 10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
+#~ "    ...\n"
+#~ "    <property name=\"bar\" type=\"float\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Foo\" table=\"foos\" check=\"bar &lt; 100.0\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;property name=\"bar\" type=\"float\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#~ msgid "length"
+#~ msgstr "length"
+
+#~ msgid "precision"
+#~ msgstr "precision"
+
+#~ msgid "scale"
+#~ msgstr "scale"
+
+#~ msgid "not-null"
+#~ msgstr "not-null"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "unique"
+#~ msgstr "unique"
+
+#~ msgid "index"
+#~ msgstr "index"
+
+#~ msgid "index_name"
+#~ msgstr "インデックス名"
+
+#~ msgid "unique-key"
+#~ msgstr "unique-key"
+
+#~ msgid "unique_key_name"
+#~ msgstr "ユニークキー名"
+
+#~ msgid "foreign-key"
+#~ msgstr "foreign-key"
+
+#, fuzzy
+#~ msgid "foreign_key_name"
+#~ msgstr "foreign-key"
+
+#~ msgid "sql-type"
+#~ msgstr "sql-type"
+
+#, fuzzy
+#~ msgid "SQL column type"
+#~ msgstr "SQL のカラム型"
+
+#~ msgid "default"
+#~ msgstr "default"
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
+#~ "    <comment>Current customers only</comment>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\" table=\"CurCust\"&gt;\n"
+#~ "    &lt;comment&gt;Current customers only&lt;/comment&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\">\n"
+#~ "    <column name=\"bal\">\n"
+#~ "        <comment>Balance in USD</comment>\n"
+#~ "    </column>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\"&gt;\n"
+#~ "    &lt;column name=\"bal\"&gt;\n"
+#~ "        &lt;comment&gt;Balance in USD&lt;/comment&gt;\n"
+#~ "    &lt;/column&gt;\n"
+#~ "&lt;/property&gt;"
+
+#~ msgid "--quiet"
+#~ msgstr "--quiet"
+
+#~ msgid "--drop"
+#~ msgstr "--drop"
+
+#~ msgid "--create"
+#~ msgstr "--create"
+
+#~ msgid "--text"
+#~ msgstr "--text"
+
+#, fuzzy
+#~ msgid "--output=my_schema.ddl"
+#~ msgstr "<literal>--output=my_schema.ddl</literal>"
+
+#, fuzzy
+#~ msgid "--config=hibernate.cfg.xml"
+#~ msgstr "<literal>--config=hibernate.cfg.xml</literal>"
+
+#~ msgid "--properties=hibernate.properties"
+#~ msgstr "--properties=hibernate.properties"
+
+#~ msgid "--format"
+#~ msgstr "--format"
+
+#~ msgid "--delimiter=;"
+#~ msgstr "--delimiter=x"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);"
+
+#, fuzzy
+#~ msgid "hibernate.connection.driver_class"
+#~ msgstr "hibernate.connection.url"
+
+#~ msgid "hibernate.connection.url"
+#~ msgstr "hibernate.connection.url"
+
+#~ msgid "hibernate.connection.username"
+#~ msgstr "hibernate.connection.username"
+
+#~ msgid "hibernate.connection.password"
+#~ msgstr "hibernate.connection.password"
+
+#~ msgid "hibernate.dialect"
+#~ msgstr "hibernate.dialect"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaexport\">\n"
+#~ "    <taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaexport>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaexport\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaexport&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaupdate\">\n"
+#~ "    <taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaupdate>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaupdate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemavalidate\">\n"
+#~ "    <taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemavalidator\n"
+#~ "        properties=\"hibernate.properties\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemavalidator>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemavalidate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemavalidator\n"
+#~ "        properties=\"hibernate.properties\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2059 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-01-13 11:23+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "トランザクションと並行性"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. It is recommended "
+"that you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"Hibernate と同時実行制御について最も重要な点は、容易に理解できることです。 "
+"Hibernate は新たなロックの振る舞いを追加しておらず、直接 JDBC コネクションと "
+"JTA リソースを使用します。 JDBC 、 ANSI 、およびデータベース管理システム"
+"(DBMS)のトランザクション分離の仕様を少し時間をかけて勉強することを強く推奨"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Through <literal>Session</literal>, which is also a transaction-scoped "
+"cache, Hibernate provides repeatable reads for lookup by identifier and "
+"entity queries and not reporting queries that return scalar values."
+msgstr ""
+"Hibernate はメモリ内のオブジェクトをロックしません。アプリケーションは、デー"
+"タベーストランザクションの分離レベルで定義した振る舞いを期待できます。トラン"
+"ザクションスコープのキャッシュでもある <literal>Session</literal> のお陰で、"
+"識別子やクエリにより検索したエンティティはリピータブルリードになります(スカ"
+"ラー値を返すようなレポートクエリは違います)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> "
+"syntax, a (minor) API for pessimistic locking of rows. Optimistic "
+"concurrency control and this API are discussed later in this chapter."
+msgstr ""
+"バージョニングによる自動的な楽観的同時実行制御に加えて、 <literal>SELECT FOR "
+"UPDATE</literal> 文を使用して、行を悲観的ロックするための(マイナーな) API "
+"も提供します。楽観的同時実行制御とこの API については、この章の後のほうで議論"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The discussion of concurrency control in Hibernate begins with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"データベーストランザクションや長い対話(conversation、ロングトランザクショ"
+"ン)だけでなく、 <literal>Configuration</literal>、<literal>SessionFactory</"
+"literal>、および <literal>Session</literal> という粒度で Hibernate が行う同時"
+"実行制御の議論を始めます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "session スコープと transaction スコープ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object, intended to be shared by all application threads. It is created "
+"once, usually on application startup, from a <literal>Configuration</"
+"literal> instance."
+msgstr ""
+"<literal>SessionFactory</literal> は生成することが高価で、スレッドセーフなオ"
+"ブジェクトです。よって、アプリケーションのすべてのスレッドで共有すべきです。"
+"通常、アプリケーションの起動時に、 <literal>Configuration</literal> インスタ"
+"ンスから1度だけ生成します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once and then discarded for: a single request, a conversation "
+"or a single unit of work. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, "
+"unless it is needed. It will not consume any resources until used."
+msgstr ""
+"<literal>Session</literal> は高価ではなく、スレッドセーフなオブジェクトでもあ"
+"りません。よって、1つの要求や1つの対話、1つの作業単位(unit of work)に対"
+"して1度だけ使い、その後で捨てるべきです。 <literal>Session</literal> は必要"
+"になるまで、 JDBC <literal>Connection</literal>(もしくは "
+"<literal>DataSource</literal>)を獲得しません。ゆえに、実際に使用するときまで"
+"リソースを消費しません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to reduce lock contention in the database, a database transaction "
+"has to be as short as possible. Long database transactions will prevent your "
+"application from scaling to a highly concurrent load. It is not recommended "
+"that you hold a database transaction open during user think time until the "
+"unit of work is complete."
+msgstr ""
+"この状況を完了させるために、データベーストランザクションについても考えなけれ"
+"ばなりません。データベース内のロックの競合を少なくするために、データベースト"
+"ランザクションは可能な限り短くするべきです。長いデータベーストランザクション"
+"は、アプリケーションの高い並列実行性を阻害します。ゆえに、ユーザーが考えてい"
+"る間(作業単位が完了するまで)データベーストランザクションを開いたままにする"
+"のは、たいていの場合よい設計とはいえません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+"作業単位というスコープとは何でしょうか?1つの Hibernate <literal>Session</"
+"literal> は、いくつかのデータベーストランザクションをまたがることができるで"
+"しょうか?または、スコープと一対一の関係でしょうか?いつ <literal>Session</"
+"literal> を開き、閉じるべきでしょうか?そして、データベーストランザクション境"
+"界をどのように分けるのでしょうか?"
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "作業単位(Unit of work)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, let's define a unit of work. A unit of work is a design pattern "
+"described by Martin Fowler as <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation> In other words, its a series of operations we wish to carry out "
+"against the database together. Basically, it is a transaction, though "
+"fulfilling a unit of work will often span multiple physical database "
+"transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really "
+"we are talking about a more abstract notion of a transaction. The term "
+"\"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the <emphasis>session-per-operation</emphasis> antipattern: do "
+"not open and close a <literal>Session</literal> for every simple database "
+"call in a single thread. 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. This also means that auto-commit after "
+"every single SQL statement is useless in an application as this mode is "
+"intended for ad-hoc SQL console work. Hibernate disables, or expects the "
+"application server to disable, auto-commit mode immediately. Database "
+"transactions are never optional. All communication with a database has to "
+"occur inside a transaction. Auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also more maintainable and "
+"extensible."
+msgstr ""
+"1つ目は、 <emphasis>session-per-operation</emphasis> アンチパターンを使って"
+"はいけません。すなわち、1つのスレッドの中で、単純なデータベース呼び出しの度"
+"に <literal>Session</literal> を開いて、閉じてはいけません。もちろん、データ"
+"ベーストランザクションについても同様です。アプリケーション中のデータベース呼"
+"び出しは、計画されたシーケンス(planned sequence)を使い、アトミックな作業単"
+"位に分類されます。(1つの SQL 文ごとにコミットする自動コミットが、使われない"
+"という意味でもあることに注意してください。自動コミットは、 SQL コンソールでア"
+"ドホックな作業をする際に使うものです。 Hibernate は直ちに自動コミットモードを"
+"無効にします。もしくは、アプリケーションサーバーが無効化することを期待しま"
+"す。)データベーストランザクションはオプションではありません。データベースと"
+"のすべての通信は、データの読み込みであっても、書き込みであっても、トランザク"
+"ションの中で行わなければなりません。説明すると、データ読み込みに対して、自動"
+"コミットは避けるべきです。なぜなら、多数の小さなトランザクションは、明確に定"
+"義された1つの作業単位と比べて、パフォーマンスがよくなることはありません。後"
+"者は保守性や拡張性もよりすぐれています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is sent to the server, where the Hibernate persistence layer runs. A "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. On completion of the work, and "
+"once the response for the client has been prepared, the session is flushed "
+"and closed. Use a single database transaction to serve the clients request, "
+"starting and committing it when you open and close the <literal>Session</"
+"literal>. The relationship between the two is one-to-one and this model is a "
+"perfect fit for many applications."
+msgstr ""
+"マルチユーザーのクライアント/サーバーアプリケーションの中で、最もよく使われ"
+"るパターンは、 <emphasis>session-per-request</emphasis> です。このモデルの中"
+"では、クライアントから( Hibernate 永続化層が動作する)サーバーへリクエストが"
+"送られ、新しい Hibernate <literal>Session</literal> が開かれます。そして、こ"
+"の作業単位の中ですべてのデータベース処理が実行されます。作業が完了した(そし"
+"て、クライアントへのレスポンスが準備できた)時点で、 session をフラッシュし、"
+"閉じます。クライアントの要求を処理するために、1つのデータベーストランザク"
+"ションを使用するでしょう。 <literal>Session</literal> を開き、閉じる際に、"
+"データベーストランザクションを開始し、コミットします。二つの関係は一対一で"
+"す。このモデルは多くのアプリケーションに完全に適合します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. Start a "
+"transaction when a server request has to be processed, and end the "
+"transaction before the response is sent to the client. Common solutions are "
+"<literal>ServletFilter</literal>, AOP interceptor with a pointcut on the "
+"service methods, or a proxy/interception container. An EJB container is a "
+"standardized way to implement cross-cutting aspects such as transaction "
+"demarcation on EJB session beans, declaratively with CMT. If you use "
+"programmatic transaction demarcation, for ease of use and code portability "
+"use the Hibernate <literal>Transaction</literal> API shown later in this "
+"chapter."
+msgstr ""
+"以降の実装にチャレンジしてください。 Hibernate は単純なこのパターンのために、"
+"予め組み込まれた \"current session\" の管理を提供します。サーバーリクエストを"
+"処理する際はトランザクションを開始しなければなりません。そして、レスポンスを"
+"クライアントに送信する前にトランザクションを終わらせます。好きな方法で実現で"
+"きます。一般的な解決策は <literal>ServletFilter</literal> やサービスメソッド"
+"をポイントカットして AOP インターセプター、 proxy/interception コンテナで"
+"す。 EJB コンテナは EJB セッション Bean をトランザクション境界としてアスペク"
+"トをクロスカットする実装の標準的な方法です( CMT による宣言的)。プログラムに"
+"よるトランザクション境界を使うと決めた場合、簡単に使うため、互換性のあるコー"
+"ドにするために、この章の後のほうにある Hibernate <literal>Transaction</"
+"literal> API のほうがよいです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by calling <literal>sessionFactory.getCurrentSession()</literal>. "
+"You will always get a <literal>Session</literal> scoped to the current "
+"database transaction. This has to be configured for either resource-local or "
+"JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+"アプリケーションのコードは、必要なときにどこでも、何回でも、単に "
+"<literal>sessionFactory.getCurrentSession()</literal> を呼び出すだけで「現在"
+"のセッション」にアクセスできます。現在のデータベーストランザクションへの "
+"<literal>セッション</literal> を常に取得します。リソースローカルな環境、もし"
+"くは JTA 環境を構成しなければなりません (<xref linkend=\"architecture-"
+"current-session\"/> を参照してください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can extend the scope of a <literal>Session</literal> and database "
+"transaction until the \"view has been rendered\". This is especially useful "
+"in servlet applications that utilize a separate rendering phase after the "
+"request has been processed. Extending the database transaction until view "
+"rendering, is achieved by implementing your own interceptor. However, this "
+"will be difficult if you rely on EJBs with container-managed transactions. A "
+"transaction will be completed when an EJB method returns, before rendering "
+"of any view can start. See the Hibernate website and forum for tips and "
+"examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+"ときどき、「ビューを描画する」まで <literal>セッション</literal> とデータベー"
+"ストランザクションのスコープを拡張すると便利なことがあります。これは、要求の"
+"処理と描画のフェーズを分けているサーブレットアプリケーションにおいて特に役立"
+"ちます。独自のインターセプタを実装すれば、ビューを描画するまでデータベースト"
+"ランザクションを拡張するのは簡単です。しかし、コンテナ管理トランザクションの "
+"EJB に頼る場合は、簡単にはできません。なぜなら、ビューの描画を開始する前に、 "
+"EJB のメソッドがリターンした際に、トランザクションが完了するためです。この "
+"<emphasis>Open Session in View</emphasis> パターンに関連するヒントと例につい"
+"ては、 Hibernate の Web サイトやフォーラムを参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "長い対話"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The session-per-request pattern is not the only way of designing units of "
+"work. Many business processes require a whole series of interactions with "
+"the user that are interleaved with database accesses. In web and enterprise "
+"applications, it is not acceptable for a database transaction to span a user "
+"interaction. Consider the following example:"
+msgstr ""
+"session-per-request パターンは、作業単位を設計する際に役立つ考えというだけで"
+"はありません。多くのビジネスプロセスは、ユーザーとの一連の相互作用全体を要求"
+"します。その相互作用には、データベースアクセスが含まれます。 Web とエンタープ"
+"ライズアプリケーションでは、データベーストランザクションがユーザーとの相互作"
+"用にまで渡ることは許されません。次の例をよく考えてみてください: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens. The data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"ダイアログの最初の画面が開き、個々の <literal>Session</literal> とデータベー"
+"ストランザクションの中でロードされたデータをユーザーに見せます。ユーザーはオ"
+"ブジェクトを自由に修正できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects their modifications to "
+"be made persistent. The user also expects that they were the only person "
+"editing this information and that no conflicting modification has occurred."
+msgstr ""
+"5分後にユーザーは \"Save\" をクリックし、修正が永続化されるのを期待します。ま"
+"た、この情報を編集したのは自分1人だけで、修正のコンフリクトは発生しないと期"
+"待します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the point of view of the user, we call this unit of work a long-running "
+"<emphasis>conversation</emphasis> or <emphasis>application transaction</"
+"emphasis>. There are many ways to implement this in your application."
+msgstr ""
+"この作業単位を(ユーザーの視点で)長期の <emphasis>対話</emphasis> (もしく"
+"は、<emphasis>アプリケーショントランザクション</emphasis> )と呼びます。アプ"
+"リケーションにこれを実装する方法はたくさんあります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow "
+"the application to scale with the number of concurrent users."
+msgstr ""
+"最初に思いつく実装は、ユーザーが考えている間、 <literal>Session</literal> と"
+"データベーストランザクションを開いたままにしておくことです。同時に修正され"
+"ず、分離と原子性が保証されるように、データベース内のロックは保持したままにし"
+"ます。もちろん、これはアンチパターンです。なぜなら、ロックの競合が発生する"
+"と、アプリケーションが同時ユーザー数に応じてスケールアップできなくなるからで"
+"す。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to use several database transactions to implement the conversation. "
+"In this case, maintaining isolation of business processes becomes the "
+"partial responsibility of the application tier. A single conversation "
+"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 (for example, in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+"明らかに、対話を実装するためには、いくつかのデータベーストランザクションを使"
+"用するべきです。この場合、ビジネスプロセスの分離を維持することは、アプリケー"
+"ション層の責務の1つになります。1つの対話は、通常いくつかのデータベーストラ"
+"ンザクションに及びます。データベーストランザクションの1つのみ(最後の1つ)"
+"が更新したデータを保存し、他はデータを読むだけであれば、それはアトミックです"
+"(例えば、いくつかの要求/応答を繰り返すウィザード形式のダイアログ)。これは"
+"聞くより、実装したほうが簡単です。 Hibernate の機能を使うのであれば、特に簡単"
+"です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic "
+"optimistic concurrency control for you. It can automatically detect if a "
+"concurrent modification occurred during user think time. Check for this at "
+"the end of the conversation."
+msgstr ""
+"<emphasis>自動バージョニング</emphasis> - Hibernate は自動的に楽観的同時実行"
+"制御ができます。ユーザーが考えている間に同時に修正がおきた場合、自動的に検出"
+"できます。通常、対話の終了時にチェックするだけです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis>: if you decide to use the "
+"<emphasis>session-per-request</emphasis> pattern, all loaded instances will "
+"be in the detached state during user think time. Hibernate allows you to "
+"reattach the objects and persist the modifications. The pattern is called "
+"<emphasis>session-per-request-with-detached-objects</emphasis>. Automatic "
+"versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>分離(Detached)オブジェクト</emphasis> - すでに議論した "
+"<emphasis>session-per-request</emphasis> パターンを使うと決定した場合、ロード"
+"されたすべてのインスタンスは、ユーザーが考えている間は、セッションから分離さ"
+"れた状態になります。オブジェクトをセッションに再追加し、修正を永続化できま"
+"す。これを <emphasis>session-per-request-with-detached-objects</emphasis> パ"
+"ターンと呼びます。自動バージョニングを使うことで、同時に行われる修正を分離で"
+"きます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis>: the Hibernate "
+"<literal>Session</literal> can be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed and reconnected "
+"when a new client request occurs. This pattern is known as <emphasis>session-"
+"per-conversation</emphasis> and makes even reattachment unnecessary. "
+"Automatic versioning is used to isolate concurrent modifications and the "
+"<literal>Session</literal> will not be allowed to be flushed automatically, "
+"but explicitly."
+msgstr ""
+"<emphasis>拡張(もしくは、長い)セッション</emphasis> - Hibernate の "
+"<literal>Session</literal> は、データベーストランザクションをコミットした後、"
+"裏で結びついている JDBC コネクションを切断できます。そして、クライアントから"
+"の新しい要求が発生した際に、再接続できます。このパターンは、 "
+"<emphasis>session-per-conversation</emphasis> という名で知られており、オブ"
+"ジェクトをセッションへ再追加することさえ不要にします。自動バージョニングを使"
+"うことで、同時に行われる修正を分離できます。通常 <literal>Session</literal> "
+"を自動的にフラッシュさせず、明示的にフラッシュします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages. These disadvantages are discussed later in this chapter in "
+"the context of optimistic concurrency control."
+msgstr ""
+"<emphasis>session-per-request-with-detached-objects</emphasis> と "
+"<emphasis>session-per-conversation</emphasis> の2つは、利点と欠点を持ってい"
+"ます。これについては、この章の後のほうで、楽観的同時実行制御の文脈の中で議論"
+"します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "オブジェクト識別子を考える"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An application can concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. It "
+"is for this reason that there are two different notions of identity:"
+msgstr ""
+"アプリケーションは、2つの異なる <literal>Session</literal> から同じ永続状態"
+"に同時にアクセスできます。しかし、2つの <literal>Session</literal> インスタ"
+"ンスが永続性クラスの1つのインスタンスを共有することはできません。ゆえに、識"
+"別子には2つの異なる概念があるということになります。"
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "データベース識別子"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "<literal>foo.getId().equals( bar.getId() )</literal>"
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "JVM 識別子"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For objects attached to a <emphasis>particular</emphasis> <literal>Session</"
+"literal> (i.e., in the scope of a <literal>Session</literal>), the two "
+"notions are equivalent and JVM identity for database identity is guaranteed "
+"by Hibernate. While the application might concurrently access the \"same"
+"\" (persistent identity) business object in two different sessions, the two "
+"instances will actually be \"different\" (JVM identity). Conflicts are "
+"resolved using an optimistic approach and automatic versioning at flush/"
+"commit time."
+msgstr ""
+"<emphasis>特定の</emphasis><literal>Session</literal> に追加されたオブジェク"
+"トにとって (すなわち、1つの <literal>Session</literal> のスコープの中で"
+"は) 、2つの概念は同じです。データベース同一性と JVM 同一性が一致すること"
+"を、 Hibernate が保証します。しかし、アプリケーションが2つの異なるセッション"
+"から「同じ」(永続性識別子の)ビジネスオブジェクトに同時にアクセスする限り、"
+"2つのインスタンスは実際に( JVM 識別子が)「異なり」ます。楽観的アプローチに"
+"よって、 (自動バージョニングの) フラッシュ/コミット時にコンフリクトが解決"
+"されます。"
+
+#. Tag: para
+#, 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 means that it does not need expensive locking or "
+"other means of synchronization. The application does not need to synchronize "
+"on any business object, as long as it maintains a single thread per "
+"<literal>Session</literal>. Within a <literal>Session</literal> the "
+"application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+"このアプローチでは、 Hibernate とデータベースに同時実行についての心配が残りま"
+"す。一方で、最高のスケーラビリティが提供されます。なぜなら、1スレッドの作業"
+"単位の中で一意性が保証されれば、高価なロックや同期化が不要になるためです。 "
+"<literal>Session</literal> ごとに1つのスレッドを貼り付ける限り、アプリケー"
+"ションはビジネスオブジェクトを synchronize する必要はありません。 "
+"<literal>Session</literal> 内では、アプリケーションはオブジェクトを比較するた"
+"めに、 <literal>==</literal> を安全に使用できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal> might produce 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). JVM identity, "
+"however, is by definition not guaranteed for instances in a detached state. "
+"The developer has to override the <literal>equals()</literal> and "
+"<literal>hashCode()</literal> methods in persistent classes and implement "
+"their own notion of object equality. There is one caveat: never use the "
+"database identifier to implement equality. Use a business key that is a "
+"combination of unique, usually immutable, attributes. The database "
+"identifier will change if a transient object is made persistent. 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 business keys do not 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. Please note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+"けれども、 <literal>Session</literal> の外で <literal>==</literal> を使うアプ"
+"リケーションは、予期しない結果に遭遇します。これは予期しない場所で起こりえま"
+"す。例えば、2つの分離インスタンスを同じ <literal>Set</literal> に put したと"
+"きなどです。両方とも同じデータベース識別子を持ちます(すなわち、同じ行を表し"
+"ます)。しかし、分離状態のインスタンスの JVM 識別子は当然保証されません。開発"
+"者は、永続性クラスの <literal>equals()</literal> と <literal>hashCode()</"
+"literal> メソッドをオーバーライドし、オブジェクト等価性の概念を実装すべきで"
+"す。警告が1つあります。等価性の実装にデータベース識別子を使わないでくださ"
+"い。ユニークな(普通は不変の)属性の組み合わせであるビジネスキーを使ってくだ"
+"さい。もし、一時オブジェクトが永続化された場合、データベース識別子が変わりま"
+"す。一時オブジェクトを(通常分離インスタンスと共に) <literal>Set</literal> "
+"に保持する場合、ハッシュコードが変わるということは、 <literal>Set</literal> "
+"の契約を破るということです。ビジネスキーのための属性は、データベースの主キー"
+"ほど安定すべきではないです。オブジェクトが同じ <literal>Set</literal> の中に"
+"いる間だけ、安定を保証すべきです。この問題のより徹底的な議論は、 Hibernate "
+"の Web サイトを参照してください。また、これは Hibernate の問題ではなく、単に "
+"Java オブジェクトの識別子や等価性をどのように実装すべきかということです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "一般的な問題"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> "
+"or <emphasis>session-per-application</emphasis> (there are, however, rare "
+"exceptions to this rule). Some of the following issues might also arise "
+"within the recommended patterns, so ensure that you understand the "
+"implications before making a design decision:"
+msgstr ""
+"<emphasis>session-per-user-session</emphasis> と <emphasis>session-per-"
+"application</emphasis> アンチパターンは使ってはいけません(もちろん、まれに例"
+"外があります)。注記:下記の問題のいくつかは、推奨されるパターンとしても出現"
+"します。設計を決定する前に、裏の意味を理解するようにしてください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things that work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if a <literal>Session</literal> instance is shared. If "
+"you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (this is discussed later in the chapter), you "
+"should consider synchronizing access to your Http session. Otherwise, a user "
+"that clicks reload fast enough can use the same <literal>Session</literal> "
+"in two concurrently running threads."
+msgstr ""
+"<literal>Session</literal> はスレッドセーフではありません。 HTTP リクエスト、"
+"セッション Bean 、 Swing ワーカーのように、同時実行が可能なものが "
+"<literal>Session</literal> インスタンスを共有すると、競合状態を引き起こしま"
+"す。(後で議論する) <literal>HttpSession</literal> の中で Hibernate "
+"<literal>Session</literal> を保持する場合、 HttpSession へのアクセスを同期化"
+"することを考慮すべきです。さもなければ、ユーザーが十分早くリロードをクリック"
+"すると、同時に走る2つのスレッドの中で、同じ <literal>Session</literal> が使"
+"われます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (this is "
+"discussed in more detail later in the chapter). If your <literal>Session</"
+"literal> is bound to the application, you have to stop the application. "
+"Rolling back the database transaction does not put your business objects "
+"back into the state they were at the start of the transaction. This means "
+"that the database state and the business objects will be out of sync. "
+"Usually this is not a problem, because exceptions are not recoverable and "
+"you will have to start over after rollback anyway."
+msgstr ""
+"Hibernate が例外を投げた場合は、データベーストランザクションをロールバック"
+"し、直ちに <literal>Session</literal> を閉じるべきです (詳細を後で議論しま"
+"す) 。 <literal>Session</literal> がアプリケーションに結び付けられているので"
+"あれば、アプリケーションを停止すべきです。データベーストランザクションをロー"
+"ルバックしても、ビジネスオブジェクトはトランザクションを開始したときの状態に"
+"戻りません。これは、データベースの状態とビジネスオブジェクトは同期していない"
+"ことを意味します。通常これは問題になりません。なぜなら、例外は回復できないか"
+"らです。とにかくロールバックした後にやり直すべきです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in a persistent "
+"state (watched and checked for dirty state by Hibernate). If you keep it "
+"open for a long time or simply load too much data, it will grow endlessly "
+"until you get an OutOfMemoryException. One solution is to call <literal>clear"
+"()</literal> and <literal>evict()</literal> to manage the <literal>Session</"
+"literal> cache, but you should consider a Stored Procedure if you need mass "
+"data operations. Some solutions are shown in <xref linkend=\"batch\" />. "
+"Keeping a <literal>Session</literal> open for the duration of a user session "
+"also means a higher probability of stale data."
+msgstr ""
+"<literal>Session</literal> は永続 (persistent) 状態のすべてのオブジェクトを"
+"キャッシュします( Hibernate は監視し、ダーティ状態かチェックします)。これ"
+"は、長い間セッションを開いたままにするか、非常に多くのデータをロードし続ける"
+"かした場合は、 OutOfMemoryException が発生するまで無限に大きくなることを意味"
+"します。解決策の1つは、<literal>Session</literal> キャッシュを管理するため"
+"に、 <literal>clear()</literal> か <literal>evict()</literal> を呼ぶことで"
+"す。しかし、大きなデータを処理する必要があるなら、たぶんストアドプロシージャ"
+"を考慮するべきでしょう。いくつかの解決策は、 <xref linkend=\"batch\"/> で紹介"
+"されています。ユーザーセッションの間、 <literal>Session</literal> を開いたま"
+"まにするということは、データが新鮮でなくなる確率が高くなることを意味します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "データベーストランザクション境界"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database, 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. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"データベース (もしくはシステム) トランザクションの境界は、常に必要です。"
+"データベーストランザクションの外で、データベースとの通信は起きません (これは"
+"自動コミットモードに慣れている多くの開発者を混乱させるかもしれません) 。読み"
+"込むだけの操作にでも、いつも明確なトランザクション境界を使用してください。分"
+"離レベルとデータベースの能力次第で、これは必要ないかもしれませんが、常にトラ"
+"ンザクション境界を明示的に指定しても、マイナス面は全くありません。確かに、1"
+"つのデータベーストランザクションは多数の小さなトランザクションより (データの"
+"読み込みであっても) パフォーマンスがすぐれています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e., standalone, simple "
+"Web- or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries (begin, commit, or rollback database transactions) themselves. A "
+"managed environment usually provides container-managed transactions (CMT), "
+"with the transaction assembly defined declaratively (in deployment "
+"descriptors of EJB session beans, for example). Programmatic transaction "
+"demarcation is then no longer necessary."
+msgstr ""
+"J2EE 環境に管理されていない状態 (すなわち、スタンドアロン、単純な Web や "
+"Swing アプリケーション)でも、管理された状態でも、 Hibernate アプリケーション"
+"を実行できます。管理されていない環境では、 Hiberante がデータベースのコネク"
+"ションプールを提供します。アプリケーション開発者は、トランザクション境界を手"
+"動で設定しなければなりません。言い換えると、データベーストランザクションの開"
+"始、コミット、ロールバックを開発者自身が設定する必要があるということです。通"
+"常、管理された環境では、コンテナ管理によるトランザクション (CMT) が提供され"
+"ます。例えば、セッション Bean のデプロイメントディスクリプタで宣言的に定義"
+"し、トランザクションを組み立てます。プログラムによるトランザクション境界はも"
+"う必要ありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, it is often desirable to keep your persistence layer portable "
+"between non-managed resource-local environments, and systems that can rely "
+"on JTA but use BMT instead of CMT. In both cases use programmatic "
+"transaction demarcation. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"しかしながら、管理されていないリソースローカルな環境と JTA に依存したシステ"
+"ム (CMT ではなく BMT) の両方に、永続化層をポータブルに保つのは、しばしば望"
+"ましいことです。デプロイ環境のネイティブのトランザクションシステムを呼び出す "
+"<literal>Transaction</literal> というラッパー API を Hibernate が提供します。"
+"この API を使うかは任意ですが、 CMT のセッション Bean を使わないのであれば、"
+"使うことを強く推奨します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+"通常、 <literal>Session</literal> 終了は、4つの異なるフェーズを含みます:"
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "セッションのフラッシュ"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "トランザクションのコミット"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "セッションのクローズ"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "例外のハンドリング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We discussed Flushing the session earlier, so we will now have a closer look "
+"at transaction demarcation and exception handling in both managed and non-"
+"managed environments."
+msgstr ""
+"セッションのフラッシュについては、前の方で既に議論しました。管理された環境と"
+"管理されていない環境の両方について、トランザクション境界と例外ハンドリングを"
+"もっと詳しく見ていきましょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "管理されていない環境"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e., non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"Hibernate 永続化層を管理されていない環境で実装する場合は、通常単純なコネク"
+"ションプール (すなわち DataSource ではない) によって、データベースコネク"
+"ションを制御します。 Hibernate はそのコネクションプールから必要なコネクション"
+"を取得します。セッション/トランザクション制御のイディオムは次のようになりま"
+"す:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You do not have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly: the call to <literal>commit()</literal> automatically triggers "
+"the synchronization depending on the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"明示的に <literal>Session</literal> の <literal>flush()</literal> を呼び出す"
+"べきではなく、 <literal>commit()</literal> を呼び出すことにより、自動的に同期"
+"化処理が実行されます (セッションの <xref linkend=\"objectstate-flushing\"/> "
+"FlushMode に依存している)。 <literal>close()</literal> を呼び出すことによ"
+"り、セッションの終わりを明確にします。 <literal>close()</literal> が暗黙的に"
+"行う主なことは、セッションが JDBC コネクションを開放することです。上記の "
+"Java コードはポータブルであり、管理されていない環境と JTA 環境の両方で実行で"
+"きます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As outlined earlier, a much more flexible solution is Hibernate's built-in "
+"\"current session\" context management:"
+msgstr ""
+"より適応性のある解決策は、 Hibernate に予め組み込まれている \"current session"
+"\" コンテキスト管理です。言葉で説明するより下記を見たほうが速いでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will not see these code snippets in a regular application; fatal "
+"(system) exceptions should always be caught at the \"top\". In other words, "
+"the code that executes Hibernate 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. The current context management "
+"by Hibernate can significantly simplify this design by accessing a "
+"<literal>SessionFactory</literal>. Exception handling is discussed later in "
+"this chapter."
+msgstr ""
+"正規のアプリケーションの中では、このようなコードの切れ端を決して見ないでしょ"
+"う。致命的な (システム) 例外は、常に「最上位」でキャッチすべきです。言い換"
+"えれば、 (永続化層で) Hibernate 呼び出しを実行するコードと、 "
+"<literal>RuntimeException</literal> を制御する (通常はクリーンアップと終了の"
+"み行うことができる) コードは、別々の層の中にあります。 Hibernate によるカレ"
+"ントコンテキスト管理は、この設計をかなり単純にします。必要なのは、 "
+"<literal>SessionFactory</literal> にアクセスすることだけです。例外処理は、こ"
+"の章の後のほうで議論します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, which is the default, and for the second example select <literal>"
+"\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"注記:(デフォルトですが) <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal> を選択するべきです。第2の用例としては、 "
+"<literal>hibernate.current_session_context_class</literal> ã‚’ <literal>"
+"\"thread\"</literal> とするとよいでしょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "JTA を使用する"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (for example, behind "
+"EJB session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"永続化層をアプリケーションサーバー (例えば、 EJB セッション Bean の背後) で"
+"実行する場合、 Hibernate から取得するすべてのデータソースコネクションは、自動"
+"的にグローバル JTA トランザクションの一部になります。 EJB を使わずに、スタン"
+"ドアロンの JTA 実装を導入することもできます。 JTA 統合のために、 Hibernate は"
+"2つの戦略を提供します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. The transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"Bean 管理トランザクション(BMT)を使い、 <literal>Transaction</literal> API "
+"を使う場合、 Hibernate はアプリケーションサーバーに BMT トランザクションの開"
+"始と終わりを告げます。すなわち、トランザクション管理のコードは、管理されない"
+"環境と同じになります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+"トランザクション境界として <literal>Session</literal> を使いたい場合、簡単に"
+"コンテキストを伝播する機能である <literal>getCurrentSession()</literal> があ"
+"るので、 JTAの <literal>UserTransaction</literal> API を直接使用すべきでしょ"
+"う。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With CMT, transaction demarcation is completed in session bean deployment "
+"descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+"CMT では、トランザクション境界をセッション Bean のデプロイメントディスクリプ"
+"タで定義し、プログラムでは行いません。ゆえに、コードは次のように少なくなりま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a CMT/EJB, even rollback happens automatically. An unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>You do "
+"not need to use the Hibernate <literal>Transaction</literal> API at all with "
+"BMT or CMT, and you get automatic propagation of the \"current\" Session "
+"bound to the transaction.</emphasis>"
+msgstr ""
+"CMT/EJB の中では、常にロールバックが自動的に実施されます。なぜなら、セッショ"
+"ン Bean のメソッドにより投げられた制御されていない "
+"<literal>RuntimeException</literal> は、グローバルトランザクションをロール"
+"バックするようにコンテナに伝えるためです。 <emphasis>これは、 BMT もしくは "
+"CMT と一緒に Hibernate <literal>Transaction</literal> API を使う必要はまった"
+"くないということを意味し、トランザクションにバインドする「現在の」セッション"
+"を自動伝搬できます。</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When configuring Hibernate's transaction factory, choose <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> if you use JTA "
+"directly (BMT), and <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> in a CMT session bean. Remember to also set "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that "
+"your <literal>hibernate.current_session_context_class</literal> is either "
+"unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+"Hibernate のトランザクションファクトリを設定する際に、 JTA を直接使う (BMT"
+"の) 場合は <literal>org.hibernate.transaction.JTATransactionFactory</"
+"literal> を、 CMT セッション Bean の中では <literal>org.hibernate."
+"transaction.CMTTransactionFactory</literal> を選択すべきだということに注意し"
+"てください。 <literal>hibernate.transaction.manager_lookup_class</literal> を"
+"セットすることも思い出してください。なお、 <literal>hibernate."
+"current_session_context_class</literal> は、セットしないか(後方互換)、 "
+"<literal>\"jta\"</literal> をセットしてください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. 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. Most applications can easily avoid "
+"using <literal>scroll()</literal> or <literal>iterate()</literal> from the "
+"JTA or CMT code.)"
+msgstr ""
+"<literal>getCurrentSession()</literal> オペレーションは、 JTA 環境では1つの"
+"欠点を持ちます。デフォルトで使われる <literal>after_statement</literal> コネ"
+"クションリリースモードを使用する上で、警告が1つあります。 JTA 仕様の愚かな制"
+"約のために、 <literal>scroll()</literal> または <literal>iterate()</literal> "
+"が返した、閉じられていない <literal>ScrollableResults</literal> または "
+"<literal>Iterator</literal> インスタンスを Hibernate が自動的にクリーンアップ"
+"することはできません。 <literal>finally</literal> ブロックの中で、 "
+"<literal>ScrollableResults.close()</literal> または <literal>Hibernate.close"
+"(Iterator)</literal> を明示的に呼び出して、裏に潜んだデータベースカーソルを解"
+"放 <emphasis>しなければなりません</emphasis>。 (もちろん、多くのアプリケー"
+"ションでは、 JTA か CMT コードで <literal>scroll()</literal> や "
+"<literal>iterate()</literal> の使用を避けるのは容易です。)"
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "例外ハンドリング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception, including any "
+"<literal>SQLException</literal>, immediately rollback the database "
+"transaction, call <literal>Session.close()</literal> and discard the "
+"<literal>Session</literal> instance. Certain methods of <literal>Session</"
+"literal> will <emphasis>not</emphasis> leave the session in a consistent "
+"state. No exception thrown by Hibernate can be treated as recoverable. "
+"Ensure that the <literal>Session</literal> will be closed by calling "
+"<literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"<literal>Session</literal> が例外 (<literal>SQLException</literal>を含む) "
+"を投げた場合、直ちに、データベーストランザクションをロールバックし、 "
+"<literal>Session.close()</literal> を呼び、 <literal>Session</literal> インス"
+"タンスを破棄すべきです。 <literal>Session</literal> のいくつかのメソッドは、"
+"セッションの状態を <emphasis>矛盾したまま</emphasis> にします。 Hibernate が"
+"投げた例外を、回復できるものとして扱うことはできません。 <literal>finally</"
+"literal> ブロックの中で <literal>close()</literal> を呼んで、 "
+"<literal>Session</literal> を確実に閉じてください。"
+
+#. Tag: para
+#, 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. "
+"It was not in older versions of Hibernate. In our opinion, we should not "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e., in higher layers) and "
+"either an error message is presented to the application user or some other "
+"appropriate action is taken. Note that Hibernate might also throw other "
+"unchecked exceptions that are not a <literal>HibernateException</literal>. "
+"These are not recoverable and appropriate action should be taken."
+msgstr ""
+"<literal>HibernateException</literal> は、 Hibernate 永続化層の中で発生する多"
+"くのエラーをラップする、検査されない例外です ( Hibernate の古いバージョンは"
+"違いました) 。私たちの意見は、アプリケーション開発者に回復不可能な例外を下層"
+"でキャッチすることを強要すべきではないということです。多くのシステムでは、検"
+"査されない例外と致命的な例外は、コールスタックの最初のフレームの1つ (例え"
+"ば、最上位の層で) でハンドリングし、エラーメッセージをアプリケーションユー"
+"ザーに表示します (もしくは、他の適切な処理を実施します) 。 Hibernate は、"
+"<literal>HibernateException</literal> 以外の検査されない例外も投げることに注"
+"意してください。これらもまた、回復不可能であり、適切な処理を実施すべきです。"
+
+#. Tag: para
+#, 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 ""
+"Hibernate は、データベースとの対話中に投げられた <literal>SQLException</"
+"literal> を <literal>JDBCException</literal> でラップします。実は、例外をより"
+"意味のある <literal>JDBCException</literal> のサブクラスに変換しようと試みま"
+"す。元の <literal>SQLException</literal> は、 <literal>JDBCException.getCause"
+"()</literal> によりいつでも得られます。 Hibernate は、 "
+"<literal>SessionFactory</literal> に追加されている "
+"<literal>SQLExceptionConverter</literal> を使い、 <literal>SQLException</"
+"literal> を適当な <literal>JDBCException</literal> サブクラスに変換します。デ"
+"フォルトでは、 <literal>SQLExceptionConverter</literal> は設定されている SQL "
+"方言により定義されます。一方で、独自の実装に差し替えることもできます (詳細"
+"は、 <literal>SQLExceptionConverterFactory</literal> クラスの Javadoc を参照"
+"してください)。標準的な <literal>JDBCException</literal> のサブタイプを下記"
+"に示します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal>: indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal> - 基礎となる JDBC 通信のエラーを表"
+"します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal>: indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal> - 発行する SQL の文法もしくは構文の問"
+"題を表します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal>: indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal> - 何らかの形式の完全性制約違"
+"反を表します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal>: indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal> - 要求された操作を実施するのに必"
+"要なロックレベルを得る際のエラーを表します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal>: a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal> - 他のカテゴリに一致しなかった一般的"
+"な例外です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "トランザクションのタイムアウト"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An important feature provided by a managed environment like EJB, that is "
+"never provided for non-managed code, is transaction timeout. Transaction "
+"timeouts ensure that no misbehaving transaction can indefinitely tie up "
+"resources while returning no response to the user. Outside a managed (JTA) "
+"environment, Hibernate cannot fully provide this functionality. However, "
+"Hibernate can at least control data access operations, ensuring that "
+"database level deadlocks and queries with huge result sets are limited by a "
+"defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functionality is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"EJB のような管理された環境が提供するきわめて重要な特徴の1つは、トランザク"
+"ションのタイムアウトです。これは管理されていないコードには提供できません。ト"
+"ランザクションタイムアウトは、不品行なトランザクションがユーザーにレスポンス"
+"を返さないまま、無期限にリソースを使い続けないことを保障します。管理された環"
+"境 (JTA) の外では、 Hibernate はこの機能をフルに提供できません。しかしなが"
+"ら、 Hibernate は次のようなデータアクセス操作の制御くらいはできます。データ"
+"ベースレベルのデッドロックや大きなリザルトセットを返すクエリを定義されたタイ"
+"ムアウトによって確実に制限します。管理された環境では、 Hibernate はトランザク"
+"ションタイムアウトを JTA に委譲します。この機能は、 Hibernate の "
+"<literal>Transaction</literal> オブジェクトによって抽象化されています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>setTimeout()</literal> cannot be called in a CMT bean, where "
+"transaction timeouts must be defined declaratively."
+msgstr ""
+"CMT Bean の中では <literal>setTimeout()</literal> を呼び出せないことに注意し"
+"てください。トランザクションタイムアウトは宣言的に定義されるべきです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "楽観的同時実行制御"
+
+#. Tag: para
+#, 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 three possible approaches to "
+"writing application code that uses optimistic concurrency. The use cases we "
+"discuss are in the context of long conversations, but version checking also "
+"has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+"高い並列性と高いスケーラビリティの両方を実現するアプローチは、バージョニング"
+"を使った楽観的同時実行制御のみです。更新の衝突を見つけるために(および、更新"
+"が失われるのを防ぐために)、バージョン番号もしくはタイムスタンプを使って、"
+"バージョンをチェックします。 Hibernate は、楽観的同時実行を行うアプリケーショ"
+"ンコードを書くためのアプローチを3つ提供します。私たちが見せるユースケース"
+"は、長い対話を持ちますが、バージョンチェックはまだ1つのデータベーストランザ"
+"クションの中で更新を失うことを防ぐ利点も持っています。"
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "アプリケーションによるバージョンチェック"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. The application is forced to carry out its own version "
+"checking to ensure conversation transaction isolation. This approach is the "
+"least efficient in terms of database access. It is the approach most similar "
+"to entity EJBs."
+msgstr ""
+"Hibernate にほとんど助けてもらわずに実装するケースです。データベースとのやり"
+"取りは、それぞれ新しい <literal>Session</literal> の中で起こります。開発者"
+"は、すべての永続性インスタンスを操作する前に、データベースから再読み込みする"
+"責務があります。このアプローチでは、対話トランザクションの分離を守るために、"
+"アプリケーション自身がバージョンチェックを行う必要があります。このアプローチ"
+"は、データベースアクセスの中では、最も非効率です。エンティティ EJB と最も似て"
+"いるアプローチです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>&lt;"
+"version&gt;</literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"<literal>&lt;version&gt;</literal> を使って、 <literal>version</literal> プロ"
+"パティをマッピングします。 Hibernate は、エンティティがダーティである場合、フ"
+"ラッシュし、その間に <literal>version</literal> プロパティを自動的にインクリ"
+"メントします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are operating in a low-data-concurrency environment, and do not "
+"require version checking, you can use this approach and skip the version "
+"check. In this case, <emphasis>last commit wins</emphasis> is the default "
+"strategy for long conversations. Be aware 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 ""
+"もちろん、データの並列性が低い環境で運用しており、バージョンチェックが不要な"
+"ら、このアプローチを使い、バージョンチェックをスキップするだけです。その場合"
+"は、長い対話には、 <emphasis>最後にコミットしたものが勝つ</emphasis> がデフォ"
+"ルトの戦略でしょう。このアプローチは、アプリケーションのユーザーを混乱させる"
+"かもしれないことを心に留めて置いてください。それは、エラーメッセージや競合し"
+"た変更をマージする機会がないまま、更新を失う可能性があるからです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Manual version checking is only feasible in 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 an extended <literal>Session</"
+"literal> or detached instances as the design paradigm."
+msgstr ""
+"確かに、マニュアルによるバージョンチェックは、些細な儀式だけで実行できます"
+"が、多くのアプリケーションにとって実用的ではありません。しばしば、1つのイン"
+"スタンスだけでなく、修正されたオブジェクトの完全なグラフをチェックしなければ"
+"なりません。 Hibernate は、設計パラダイムとして、拡張 <literal>Session</"
+"literal> か分離されたインスタンスを自動的にバージョンチェックします。"
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "拡張セッションと自動バージョニング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"that are used for the whole conversation are known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It is up to "
+"the developer to catch and handle this exception. Common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data."
+msgstr ""
+"1つの <literal>Session</literal> インスタンスとその永続性インスタンスは、 "
+"<emphasis>session-per-conversation</emphasis> として知られる、対話全体で使わ"
+"れます。 Hibernate はフラッシュする際に、インスタンスのバージョンをチェックし"
+"ます。同時に修正されたことを検出すると、例外を投げます。この例外をキャッチし"
+"て扱うのは、開発者の責任です (一般的な選択肢は、変更をマージするか古くない"
+"データでビジネス対話を再スタートする機会をユーザーに提供することです)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application does not version "
+"check or reattach detached instances, nor does it have to reload instances "
+"in every database transaction."
+msgstr ""
+"ユーザーの対話を待っているときは、 <literal>Session</literal> を基礎となる "
+"JDBC コネクションから切り離します。このアプローチは、データベースアクセスの中"
+"では、最も効率的です。アプリケーションは、バージョンチェックや分離されたイン"
+"スタンスを再追加することに関心を持つ必要はありません。また、あらゆるデータ"
+"ベーストランザクションの中でインスタンスを再読み込みする必要はありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object knows which <literal>Session</literal> it "
+"was loaded in. Beginning a new database transaction on an old session "
+"obtains a new connection and resumes the session. Committing a database "
+"transaction disconnects a session from the JDBC connection and returns the "
+"connection to the pool. After reconnection, to force a version check on data "
+"you are not updating, you can call <literal>Session.lock()</literal> with "
+"<literal>LockMode.READ</literal> on any objects that might have been updated "
+"by another transaction. You do not need to lock any data that you "
+"<emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode."
+"MANUAL</literal> on an extended <literal>Session</literal>, so that only the "
+"last database transaction cycle is allowed to actually persist all "
+"modifications made in this conversation. Only this last database transaction "
+"will include the <literal>flush()</literal> operation, and then "
+"<literal>close()</literal> the session to end the conversation."
+msgstr ""
+"<literal>foo</literal> オブジェクトは、自分をロードした <literal>Session</"
+"literal> をまだ知っています。古いセッションの上で新しいデータベーストランザク"
+"ションを開始することで、新しいコネクションを取得し、そのセッションが再開され"
+"ます。データベーストランザクションをコミットすることで、セッションから JDBC "
+"コネクションを切断し、コネクションをプールに返します。再接続した後、更新して"
+"いないデータのバージョンチェックを強制するために、他のトランザクションにより"
+"更新されているかもしれないオブジェクトに関して、 <literal>LockMode.READ</"
+"literal> をつけて <literal>Session.lock()</literal> を呼び出すことができま"
+"す。更新して <emphasis>いる</emphasis> データをロックする必要はありません。通"
+"常、拡張 <literal>Session</literal> に <literal>FlushMode.MANUAL</literal> を"
+"セットします。最後のデータベーストランザクションの周期でのみ、対話の中で変更"
+"されたすべてを実際に永続化させるためです。ゆえに、最後のデータベーストランザ"
+"クションのみ <literal>flush()</literal> オペレーションを含みます。そして、対"
+"話を終わらせるために、セッションも <literal>close()</literal> します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time (for example, an <literal>HttpSession</"
+"literal> should be kept as small as possible). As the <literal>Session</"
+"literal> is also the first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. Use a "
+"<literal>Session</literal> only for a single conversation as it will soon "
+"have stale data."
+msgstr ""
+"ユーザーが考慮中に、格納することができないくらい <literal>Session</literal> "
+"が大きいのであれば、このパターンは問題があります。例えば、 "
+"<literal>HttpSession</literal> は可能な限り小さく保つべきです。 "
+"<literal>Session</literal> は (強制的に) 1次キャッシュでもあり、ロードした"
+"オブジェクトをすべて保持します。おそらく、リクエスト/レスポンスのサイクルが"
+"数回であれば、この戦略が使えます。1つの対話のためだけに <literal>Session</"
+"literal> を使うべきです。なぜなら、すぐに新鮮でないデータを持つためです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注記"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Earlier versions of Hibernate required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect."
+msgstr ""
+"Hibernate の以前のバージョンは、明示的な <literal>Session</literal> の切断と"
+"再接続が必要だったことに注意してください。これらのメソッドは非推奨になりまし"
+"た。なぜなら、トランザクションの開始と終了は同じ効果があるためです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Keep the disconnected <literal>Session</literal> close to the persistence "
+"layer. Use an EJB stateful session bean to hold the <literal>Session</"
+"literal> in a three-tier environment. Do not transfer it to the web layer, "
+"or even serialize it to a separate tier, to store it in the "
+"<literal>HttpSession</literal>."
+msgstr ""
+"切断した <literal>Session</literal> を永続化層の近くで保持すべきであることに"
+"注意してください。言い換えると、3層環境の中で <literal>Session</literal> を"
+"保持するために、 EJB ステートフルセッション Bean を使ってください。 "
+"<literal>HttpSession</literal> に格納するために、 Web 層に転送しないでくださ"
+"い (別の層へのシリアライズもしないでください)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki "
+"for examples."
+msgstr ""
+"拡張セッションパターン (もしくは、 <emphasis>session-per-conversation</"
+"emphasis> ) は、自動的なカレントセッションコンテキスト管理を実施するより難し"
+"い。このために、あなたは <literal>CurrentSessionContext</literal> の実装を供"
+"給する必要があります。 Hibernate Wiki にある例を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "デタッチされたオブジェクトと自動バージョニング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. 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 <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"新しい <literal>Session</literal> により、永続化ストア (訳注:DB) との対"
+"話が発生します。また一方、同じ永続性インスタンスが、データベースとの対話ごと"
+"に再利用されます。アプリケーションは、元々は他の <literal>Session</literal> "
+"でロードされ、デタッチされたインスタンスの状態を操作します。そして、 "
+"<literal>Session.update()</literal> もしくは、 <literal>Session.saveOrUpdate"
+"()</literal> 、 <literal>Session.merge()</literal> を使って、それらのインスタ"
+"ンスを再追加します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occurred."
+msgstr ""
+"この場合もやはり、 Hibernate はフラッシュする際に、インスタンスのバージョンを"
+"チェックします。更新の競合が発生した場合には、例外を投げます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also call <literal>lock()</literal> instead of <literal>update()</"
+"literal>, and use <literal>LockMode.READ</literal> (performing a version "
+"check and bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"オブジェクトが修正されていないことを確信している場合は、 <literal>update()</"
+"literal> の代わりに、 <literal>LockMode.READ</literal> を使って、 "
+"<literal>lock()</literal> を呼び出すこともできます (すべてのキャッシュを迂回"
+"し、バージョンチェックを実施します)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "自動バージョニングのカスタマイズ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"マッピングの <literal>optimistic-lock</literal> 属性に <literal>false</"
+"literal> を設定することにより、特定のプロパティやコレクションのために自動バー"
+"ジョンインクリメントを無効にできます。プロパティがダーティであっても、バー"
+"ジョンをインクリメントしません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Legacy database schemas are often static and cannot be modified. Or, other "
+"applications might access the same database and will not know how to handle "
+"version numbers or even timestamps. In both cases, versioning cannot rely on "
+"a particular column in a table. To force a version check with a comparison "
+"of the state of all fields in a row but without a version or timestamp "
+"property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal>&lt;class&gt;</literal> mapping. This conceptually only works if "
+"Hibernate can compare the old and the new state (i.e., if you use a single "
+"long <literal>Session</literal> and not session-per-request-with-detached-"
+"objects)."
+msgstr ""
+"レガシーのデータベーススキーマは、しばしば固定的であり、変更できません。また"
+"は、他のアプリケーションが同じデータベースにアクセスしなければならず、そのア"
+"プリケーションはバージョン番号やタイムスタンプさえ操作する方法を知りません。"
+"どちらの場合も、テーブルの特定のカラムを当てにして、バージョニングを行えませ"
+"ん。バージョンやタイムスタンプのプロパティをマッピングせずに、バージョン"
+"チェックさせるために、 <literal>&lt;class&gt;</literal> マッピングに "
+"<literal>optimistic-lock=\"all\"</literal> を指定してください。行のすべての"
+"フィールドの状態を比較するようになります。これは、 Hibernate が古い状態と新し"
+"い状態を比較できる場合に、理論的に動作するだけであることに注意してください。"
+"例えば、 session-per-request-with-detached-objects ではなく、1つの長い "
+"<literal>Session</literal> を使う場合です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Concurrent modification can be permitted in instances where the changes that "
+"have been made do not overlap. If you set <literal>optimistic-lock=\"dirty"
+"\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate "
+"will only compare dirty fields during flush."
+msgstr ""
+"ときどき、行われた変更が重ならない限り、同時に行われた変更を受け入れることが"
+"できます。 <literal>&lt;class&gt;</literal> マッピングに <literal>optimistic-"
+"lock=\"dirty\"</literal> を設定した場合、フラッシュする際に、 Hibernate は"
+"ダーティフィールドのみを比較します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with a full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement, with an appropriate <literal>WHERE</literal> clause, per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate may execute unnecessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did occur "
+"before updating the row."
+msgstr ""
+"専用のバージョン/タイムスタンプのカラムを使う場合、もしくはすべて/ダーティ"
+"のフィールドを比較する場合どちらであっても、 Hibernate はエンティティごとに1"
+"つの <literal>UPDATE</literal> 文を (適切な <literal>WHERE</literal> 節と共"
+"に) 使い、バージョンチェックと情報の更新を行います。関連するエンティティの再"
+"追加をカスケードするために、連鎖的な永続化を使用した場合、不必要な更新を実行"
+"するかもしれません。これは通常問題になりません。しかし、分離したインスタンス"
+"を変更していなくとも、データベースの <emphasis>on update</emphasis> トリガー"
+"が実行されるかもしれません。 <literal>&lt;class&gt;</literal> マッピングに "
+"<literal>select-before-update=\"true\"</literal> を設定することによって、この"
+"振る舞いをカスタマイズできます。確実に変更されたかを確認するために、行を更新"
+"する前に、必ずインスタンスを <literal>SELECT</literal> します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Pessimistic locking"
+msgstr "悲観的ロック"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not intended that users spend much time worrying about locking "
+"strategies. It is usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may wish to obtain exclusive pessimistic locks or re-obtain "
+"locks at the start of a new transaction."
+msgstr ""
+"ユーザーがロック戦略に悩むのに多くの時間を費やすことを意図していません。通常"
+"は、 JDBC コネクションに分離レベルを指定し、単にデータベースにすべての仕事を"
+"させれば十分です。しかしながら、高度なユーザーは、排他的な悲観的ロックを獲得"
+"することか、新しいトランザクションが開始される際にロックを再獲得することをと"
+"きどき望むかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database; it never "
+"lock objects in memory."
+msgstr ""
+"Hibernate はいつもデータベースのロックの仕組みを使います。メモリ内のオブジェ"
+"クトを決してロックしません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"<literal>LockMode</literal> クラスは、 Hibernate が獲得できる異なるロックレベ"
+"ルを定義します。以下の仕組みにより、ロックを獲得できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal> は、 Hibernate が行を更新もしくは挿入する際"
+"に自動的に得られます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal> は、データベースでサポートされている文法 "
+"<literal>SELECT ... FOR UPDATE</literal> を使った、明示的なユーザー要求により"
+"得られるかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> は、 Oracle で "
+"<literal>SELECT ... FOR UPDATE NOWAIT</literal> を使った、明示的なユーザー要"
+"求により得られるかもしれません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. It can be "
+"re-acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal> は、 Repeatable Read もしくは Serializable "
+"の分離レベルで、データを読んだ際に自動的に得られます。おそらく、明示的なユー"
+"ザー要求により、再取得されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal> は、ロックしないことを表します。 "
+"<literal>Transaction</literal> の終わりに、すべてのオブジェクトはこのロック"
+"モードに切り替わります。 <literal>update()</literal> や <literal>saveOrUpdate"
+"()</literal> を呼び出すことによって、セッションに関連付けられたオブジェクト"
+"も、このロックモードで出発します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"explicit user request\" is expressed in one of the following ways:"
+msgstr "「明示的なユーザー要求」とは、下記の方法の1つで言い表せます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"<literal>LockMode</literal> を指定した <literal>Session.load()</literal> の呼"
+"び出し。"
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "<literal>Session.lock()</literal> の呼び出し。"
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "<literal>Query.setLockMode()</literal> の呼び出し。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"<literal>UPGRADE</literal> もしくは <literal>UPGRADE_NOWAIT</literal> が指定"
+"された <literal>Session.load()</literal> が呼び出され、かつ要求されたオブジェ"
+"クトがセッションによってまだロードされていなかった場合は、 "
+"<literal>SELECT ... FOR UPDATE</literal> を使って、オブジェクトがロードされま"
+"す。 <literal>load()</literal> で呼び出されたオブジェクトが、要求されているよ"
+"り制限が少ないロックですでにロードされていた場合は、 Hibernate はそのオブジェ"
+"クトのために、 <literal>lock()</literal> を呼び出します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used."
+msgstr ""
+"指定されたロックモードが <literal>READ</literal> もしくは、 "
+"<literal>UPGRADE</literal> 、 <literal>UPGRADE_NOWAIT</literal> だった場合、 "
+"<literal>Session.lock()</literal> は、バージョン番号のチェックを実施します。 "
+"(<literal>UPGRADE</literal> もしくは <literal>UPGRADE_NOWAIT</literal> の場"
+"合、 <literal>SELECT ... FOR UPDATE</literal> が使われます。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the requested lock mode is not supported by the database, Hibernate uses "
+"an appropriate alternate mode instead of throwing an exception. This ensures "
+"that applications are portable."
+msgstr ""
+"データベースが要求されたロックモードをサポートしていない場合、 Hibernate は"
+"(例外を投げる代わりに、)適切な代わりのモードを使います。これは、アプリケー"
+"ションがポータブルであることを保証します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Connection release modes"
+msgstr "コネクション開放モード"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the legacies of Hibernate 2.x JDBC connection management meant that a "
+"<literal>Session</literal> would obtain a connection when it was first "
+"required and then maintain that connection until the session was closed. "
+"Hibernate 3.x introduced the notion of connection release modes that would "
+"instruct a session how to handle its JDBC connections. The following "
+"discussion is pertinent only to connections provided through a configured "
+"<literal>ConnectionProvider</literal>. User-supplied connections are outside "
+"the breadth of this discussion. The different release modes are identified "
+"by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</"
+"literal>:"
+msgstr ""
+"Hibernate のレガシー(2.x)の JDBC コネクション管理に関する振る舞いは、最初に"
+"必要とした際に <literal>Session</literal> がコネクションを得るというものでし"
+"た。そして、セッションが閉じられるまで、そのコネクションを保持しました。 "
+"Hibernate 3.x は、セッションに JDBC コネクションをどのように制御するかを伝え"
+"るコネクション開放モードという概念を導入しました。以降の議論は、構成された "
+"<literal>ConnectionProvider</literal> を通して提供されるコネクションに適切で"
+"あることに注意してください。異なる開放モードは、 <literal>org.hibernate."
+"ConnectionReleaseMode</literal> に列挙された値により確認されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal>: is the legacy behavior described above. The "
+"Hibernate session obtains a connection when it first needs to perform some "
+"JDBC access and maintains that connection until the session is closed."
+msgstr ""
+"<literal>ON_CLOSE</literal> - 本質的に上記で述べたレガシーの振る舞いです。 "
+"Hibernate セッションは最初に JDBC アクセスを実行する必要がある際にコネクショ"
+"ンを得ます。そして、セッションが閉じられるまで、コネクションを保持します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal>: releases connections after a "
+"<literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal> - <literal>org.hibernate.Transaction</"
+"literal> が完了した後、コネクションを開放します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): "
+"releases connections after every statement execution. This aggressive "
+"releasing is skipped if that statement leaves open resources associated with "
+"the given session. Currently the only situation where this occurs is through "
+"the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (積極的な開放とも呼ばれる) - すべてのス"
+"テートメントがそれぞれ実行された後、コネクションが開放されます。ステートメン"
+"トがセッションに関連するリソースを開いたままにする場合は、この積極的な開放は"
+"スキップされます。今のところ、これが起こるのは <literal>org.hibernate."
+"ScrollableResults</literal> が使われる場合のみです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values "
+"are as follows:"
+msgstr ""
+"コンフィグレーションパラメータの <literal>hibernate.connection.release_mode</"
+"literal> は、使用する開放モードを指定するために使います。指定できる値は次の通"
+"りです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto</literal> (the default): this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this "
+"default behavior as failures due to the value of this setting tend to "
+"indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (デフォルト) - これを選択すると <literal>org."
+"hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> メ"
+"ソッドによって返される開放モードに委譲されます。このメソッドは、 "
+"JTATransactionFactory には ConnectionReleaseMode.AFTER_STATEMENT を返し、 "
+"JDBCTransactionFactory には ConnectionReleaseMode.AFTER_TRANSACTION を返しま"
+"す。このデフォルトの振る舞いを変えてうまくいった試しがありません。それは、こ"
+"の設定値が原因で起こる障害は、ユーザーコードの中でバグや間違った条件になりや"
+"すいからです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This "
+"setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+"<literal>on_close</literal> - ConnectionReleaseMode.ON_CLOSE を使います。この"
+"設定は後方互換のために残されていますが、使わないことを強く勧めます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_transaction</literal>: uses ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode, connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal> - ConnectionReleaseMode."
+"AFTER_TRANSACTION を使います。この設定は JTA 環境の中では使うべきではありませ"
+"ん。 ConnectionReleaseMode.AFTER_TRANSACTION を指定し、自動コミットモードの中"
+"では、開放モードが AFTER_STATEMENT であるかのように、コネクションは開放される"
+"ことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_statement</literal>: uses ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time you make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter if we re-establish the same connection."
+msgstr ""
+"<literal>after_statement</literal> - ConnectionReleaseMode.AFTER_STATEMENT ã‚’"
+"使います。さらに、設定された <literal>ConnectionProvider</literal> は、この設"
+"定 (<literal>supportsAggressiveRelease()</literal>) をサポートするかどうかを"
+"調べるために使用します。もしそうでない場合、開放モードは "
+"ConnectionReleaseMode.AFTER_TRANSACTION にリセットされます。この設定は次の環"
+"境でのみ安全です。それは、 <literal>ConnectionProvider.getConnection()</"
+"literal> を呼び出すたびに基盤となる JDBC コネクションが同じものを取得できる"
+"か、同じコネクションが得られることが問題とならない自動コミット環境の中です。"
+
+#~ msgid "foo==bar"
+#~ msgstr "foo==bar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ...\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ..."
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+#~ "();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion!=foo.getVersion ) throw new StaleObjectStateException();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2795 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-01-21 16:43+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Intended for new users, this chapter provides an step-by-step introduction "
+"to Hibernate, starting with a simple application using an in-memory "
+"database. The tutorial is based on an earlier tutorial developed by Michael "
+"Gloegl. All code is contained in the <filename>tutorials/web</filename> "
+"directory of the project source."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial expects the user have knowledge of both Java and SQL. If you "
+"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
+"good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The distribution contains another example application under the "
+"<filename>tutorial/eg</filename> project source directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "パート1 - 初めての Hibernate アプリケーション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this example, we will set up a small database application that can store "
+"events we want to attend and information about the host(s) of these events."
+msgstr ""
+"仮に小さなデータベースアプリケーションが必要だとしましょう。そのアプリケー"
+"ションには出席したいイベントと、そのイベントのホストについての情報を格納する"
+"ものとします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although you can use whatever database you feel comfortable using, we will "
+"use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java "
+"database) to avoid describing installation/setup of any particular database "
+"servers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first thing we need to do is to set up the development environment. We "
+"will be using the \"standard layout\" advocated by alot of build tools such "
+"as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has "
+"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
+"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
+"ulink>. As this tutorial is to be a web application, we will be creating and "
+"making use of <filename>src/main/java</filename>, <filename>src/main/"
+"resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will be using Maven in this tutorial, taking advantage of its transitive "
+"dependency management capabilities as well as the ability of many IDEs to "
+"automatically set up a project for us based on the maven descriptor."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not a requirement to use Maven. If you wish to use something else to "
+"build this tutoial (such as Ant), the layout will remain the same. The only "
+"change is that you will need to manually account for all the needed "
+"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> providing transitive dependency management you would "
+"still use the dependencies mentioned below. Otherwise, you'd need to grab "
+"<emphasis>all</emphasis> dependencies, both explicit and transitive, and add "
+"them to the project's classpath. If working from the Hibernate distribution "
+"bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts "
+"in the <filename>lib/required</filename> directory and all files from either "
+"the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/"
+"javassist</filename> directory; additionally you will need both the servlet-"
+"api jar and one of the slf4j logging backends."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "最初のクラス"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, we create a class that represents the event we want to store in the "
+"database; it is a simple JavaBean class with some properties:"
+msgstr "次にデータベースに格納するイベントを表すクラスを作成します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class uses standard JavaBean naming conventions for property getter and "
+"setter methods, as well as private visibility for the fields. Although this "
+"is the recommended design, it is not required. Hibernate can also access "
+"fields directly, the benefit of accessor methods is robustness for "
+"refactoring."
+msgstr ""
+"ご覧のとおり、このクラスはフィールドが private の可視性を持っているのと同時"
+"に、 JavaBean 標準のゲッター、セッターメソッドの命名規約に従っています。この"
+"ような設計は推奨されていますが必須ではありません。アクセサメソッドを設けるの"
+"はリファクタリングを考えた頑健性のためで、 Hibernate はフィールドに直接アクセ"
+"スすることも可能です。引数のないコンストラクタは、リフレクションでこのクラス"
+"のインスタンスを作成するために必要です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> property holds a unique identifier value for a "
+"particular event. All persistent entity classes (there are less important "
+"dependent classes as well) will need such an identifier property if we want "
+"to use the full feature set of Hibernate. In fact, most applications, "
+"especially web applications, need to distinguish objects by identifier, so "
+"you should consider this a feature rather than a limitation. However, we "
+"usually do not manipulate the identity of an object, hence the setter method "
+"should be private. Only Hibernate will assign identifiers when an object is "
+"saved. Hibernate can access public, private, and protected accessor methods, "
+"as well as public, private and protected fields directly. The choice is up "
+"to you and you can match it to fit your application design."
+msgstr ""
+"<literal>id</literal> プロパティは、ある特定のイベントに対するユニークな識別"
+"子の値を保持します。 Hibernate の完全な機能を使いたければ、すべての永続エン"
+"ティティクラス (それほど重要ではない依存クラスというものもあります) にこの"
+"ような識別子プロパティが必要になります。事実上ほとんどのアプリケーション "
+"( 特に web アプリケーション) では、識別子でオブジェクトを区別する必要がある"
+"ため、これは制限というよりも特徴であると考えるべきです。しかし通常オブジェク"
+"トの ID を操作するようなことはしません。そのためセッターメソッドは private に"
+"するべきです。 Hibernate だけがオブジェクトがセーブされたときに識別子へ値を代"
+"入します。 Hibernate が(public, private, protected)フィールドに直接アクセス"
+"できるのと同様に、 public, private, protected のアクセサメソッドにアクセスで"
+"きるということがわかるでしょう。選択はあなたに任されているので、あなたのアプ"
+"リケーションの設計に合わせることができます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The no-argument constructor is a requirement for all persistent classes; "
+"Hibernate has to create objects for you, using Java Reflection. The "
+"constructor can be private, however package or public visibility is required "
+"for runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"引数のないコンストラクタはすべての永続クラスに必須です。これは Hibernate が "
+"Java のリフレクションを使って、オブジェクトを作成しなければならないためです。"
+"コンストラクタを private にすることは可能ですが、実行時のプロキシ生成と、バイ"
+"トコード操作なしの効率的なデータの抽出には、 package 可視性が必要です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</"
+"filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "マッピングファイル"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate は、どのように永続クラスのオブジェクトをロードし格納すればよいかを"
+"知る必要があります。ここで Hibernate マッピングファイルが登場します。マッピン"
+"グファイルは、データベース内のどのテーブルにアクセスしなければならないか、そ"
+"のテーブルのどのカラムを使うべきかを、 Hibernate に教えます。"
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "マッピングファイルの基本的な構造はこのようになります:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate DTD is sophisticated. You can use it for auto-completion of XML "
+"mapping elements and attributes in your editor or IDE. Opening up the DTD "
+"file in your text editor is the easiest way to get an overview of all "
+"elements and attributes, and to view the defaults, as well as some comments. "
+"Hibernate will not load the DTD file from the web, but first look it up from "
+"the classpath of the application. The DTD file is included in "
+"<filename>hibernate-core.jar</filename> (it is also included in the "
+"<filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+"Hibernate DTD が非常に洗練されていることに注目してください。この DTD は、エ"
+"ディタや IDE での XML マッピング要素と属性のオートコンプリーション機能に利用"
+"できます。また DTD ファイルをテキストエディタで開けてみてください。というの"
+"も、すべての要素と属性を概観し、コメントやデフォルトの値を見るには一番簡単な"
+"方法だからです。 Hibernate は、 web から DTD ファイルをロードせずに、まずアプ"
+"リケーションのクラスパスからこれを探し出そうとすることに注意してください。 "
+"DTD ファイルは Hibernate ディストリビューションの <literal>src/</literal> "
+"ディレクトリと同様、<literal>hibernate3.jar</literal> にも含まれています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is, of course, not optional."
+msgstr ""
+"以降の例ではコードを短くするために DTD 宣言を省略します。当然ですがこれはオプ"
+"ションではありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need a mapping to a table in the SQL database:"
+msgstr ""
+"2つの <literal>hibernate-mapping</literal> タグの間に <literal>class</"
+"literal> 要素を含めてください。すべての永続エンティティクラス(念を押します"
+"が、ファーストクラスのエンティティではない依存クラスというものが後ほど登場し"
+"ます)は SQL データベース内のテーブルへのこのようなマッピングを必要とします。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>. Each "
+"instance is now represented by a row in that table. Now we can continue by "
+"mapping the unique identifier property to the tables primary key. As we do "
+"not want to care about handling this identifier, we configure Hibernate's "
+"identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+"これまで私たちは、 <literal>Event</literal> クラスのオブジェクトを "
+"<literal>EVENTS</literal> テーブルに対して、どのように永続化したりロードした"
+"りするのかを Hibernate に教えてきました。そして個々のインスタンスはテーブルの"
+"行として表現されます。それでは引き続きテーブルの主キーに対するユニークな識別"
+"子プロパティをマッピングしていきます。さらに、この識別子の扱いに気を使いたく"
+"なかったのと同様に、代理の主キーカラムに対する Hibernate の識別子生成戦略を設"
+"定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifier "
+"property. The <literal>name=\"id\"</literal> mapping attribute declares the "
+"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
+"</literal> and <literal>setId()</literal> methods to access the property. "
+"The column attribute tells Hibernate which column of the <literal>EVENTS</"
+"literal> table holds the primary key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The nested <literal>generator</literal> element specifies the identifier "
+"generation strategy (aka how are identifier values generated?). In this case "
+"we choose <literal>native</literal>, which offers a level of portability "
+"depending on the configured database dialect. Hibernate supports database "
+"generated, globally unique, as well as application assigned, identifiers. "
+"Identifier value generation is also one of Hibernate's many extension points "
+"and you can plugin in your own strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>native</literal> is no longer consider the best strategy in terms "
+"of portability. for further discussion, see <xref linkend=\"portability-idgen"
+"\" />"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lastly, we need to tell Hibernate about the remaining entity class "
+"properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+"最後にクラスの永続プロパティの宣言をマッピングファイルに含めます。デフォルト"
+"では、クラスのプロパティは永続と見なされません:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similar to the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. In this case, Hibernate will search for "
+"<literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle"
+"()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+"<literal>id</literal> 要素の場合と同様に、 <literal>property</literal> 要素"
+"の <literal>name</literal> 属性で、どのゲッターとセッターメソッドを使うべきか"
+"を Hibernate に教えます。この例では、 Hibernate は <literal>getDate()/setDate"
+"()</literal> と <literal>getTitle()/setTitle()</literal> を探します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> does "
+"not? Without the <literal>column</literal> attribute, Hibernate by default "
+"uses the property name as the column name. This works for <literal>title</"
+"literal>, however, <literal>date</literal> is a reserved keyword in most "
+"databases so you will need to map it to a different name."
+msgstr ""
+"なぜ <literal>date</literal> プロパティのマッピングには <literal>column</"
+"literal> 属性があり、 <literal>title</literal> プロパティにはないのでしょう"
+"か? <literal>column</literal> 属性がなければ、 Hibernate はデフォルトでプロ"
+"パティ名をカラム名として使います。これは <literal>title</literal> では上手く"
+"いきます。しかし <literal>date</literal> は、ほとんどのデータベースで予約語な"
+"ので、違う名前でマッピングした方がよいのです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>title</literal> mapping also lacks a <literal>type</literal> "
+"attribute. The types declared and used in the mapping files are not Java "
+"data types; they are not SQL database types either. These types are called "
+"<emphasis>Hibernate mapping types</emphasis>, converters which can translate "
+"from Java to SQL data types and vice versa. Again, Hibernate will try to "
+"determine the correct conversion and mapping type itself if the "
+"<literal>type</literal> attribute is not present in the mapping. In some "
+"cases this automatic detection using Reflection on the Java class might not "
+"have the default you expect or need. This is the case with the "
+"<literal>date</literal> property. Hibernate cannot know if the property, "
+"which is of <literal>java.util.Date</literal>, should map to a SQL "
+"<literal>date</literal>, <literal>timestamp</literal>, or <literal>time</"
+"literal> column. Full date and time information is preserved by mapping the "
+"property with a <literal>timestamp</literal> converter."
+msgstr ""
+"次に興味深いのは <literal>title</literal> マッピングが <literal>type</"
+"literal> 属性をも欠いている点です。マッピングファイルで宣言して使う type は、"
+"おわかりかもしれませんが Java のデータ型ではありません。 SQL データベースの型"
+"でもありません。これは <emphasis>Hibernateマッピング型</emphasis> と呼ばれ"
+"る、 Java から SQL データの型へまたは SQL から Java データ型へ翻訳するコン"
+"バータです。繰り返しになりますが、 Hibernate は <literal>type</literal> 属性"
+"がマッピングファイル内になければ、正しいコンバージョンとマッピング型を自分で"
+"解決しようとします。 (Javaクラスのリフレクションを使った)この自動検知は、場"
+"合によってはあなたが期待または必要とするデフォルト値にならないかもしれませ"
+"ん。 <literal>date</literal> プロパティの場合がそうでした。 Hibernate はこの"
+"( <literal>java.util.Date</literal> の)プロパティを SQL の <literal>date</"
+"literal> , <literal>timestamp</literal> , <literal>time</literal> のうち、ど"
+"のカラムにマッピングするべきなのかわかりません。 <literal>timestamp</"
+"literal> コンバータでプロパティをマッピングすることにより、完全な日時を保存し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes this mapping type determination using reflection when the "
+"mapping files are processed. This can take time and resources, so if startup "
+"performance is important you should consider explicitly defining the type to "
+"use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this mapping file as <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Hibernate の設定"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this point, you should have the persistent class and its mapping file in "
+"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
+"run in \"server mode\""
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will utilize the Maven exec plugin to launch the HSQLDB server by "
+"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
+"it start up and bind to a TCP/IP socket; this is where our application will "
+"connect later. If you want to start with a fresh database during this "
+"tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</"
+"filename> directory, and start HSQLDB again."
+msgstr ""
+"<literal>data</literal> というディレクトリを開発ディレクトリのルートに作成し"
+"てください。 HSQL DB はここにデータファイルを格納します。このデータディレクト"
+"リにおいて <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</"
+"literal> を実行し、データベースを起動させてください。動作の開始と、 TCP/IP ソ"
+"ケットのバインドが確認できます。後ほど作成するアプリケーションはここに接続し"
+"ます。もしこのチュートリアル中にデータベースを初期化したければ、 HSQL DB を"
+"シャットダウンして(作業ウィンドウで <literal>CTRL + C</literal> を押しま"
+"す) <literal>data/</literal> ディレクトリ内のファイルを全て消去した後、 "
+"HSQL DB を再起動します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will be connecting to the database on behalf of your application, "
+"so it needs to know how to obtain connections. For this tutorial we will be "
+"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate comes with support for two third-"
+"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. However, we will be using the Hibernate built-in "
+"connection pool for this tutorial."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in Hibernate connection pool is in no way intended for production "
+"use. It lacks several features found on any decent connection pool."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</"
+"literal> file, or even complete programmatic setup. Most users prefer the "
+"XML configuration file:"
+msgstr ""
+"Hibernate の設定では、単純な <literal>hibernate.properties</literal> ファイ"
+"ル、それより少し洗練されている <literal>hibernate.cfg.xml</literal> ファイ"
+"ル、または完全にプログラム上でセットアップする方法が利用できます。ほとんどの"
+"ユーザーが好むのは XML 設定ファイルです:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr "この XML の設定が異なる DTD を使うことに注意してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory "
+"is a global factory responsible for a particular database. If you have "
+"several databases, for easier startup you should use several <literal>&lt;"
+"session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+"特定のデータベースを受け持つグローバルファクトリである Hibernate の "
+"<literal>SessionFactory</literal> を設定します。もし複数のデータベースがある"
+"場合には、 (スタートアップを簡単にするため)通常いくつかの設定ファイル内で、"
+"いくつかの <literal>&lt;session-factory&gt;</literal> を使う設定にしてくださ"
+"い。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+"最初の4つの <literal>property</literal> 要素は JDBC コネクションに必要な設定"
+"を含んでいます。 dialect という名前の <literal>property</literal> 要素は、 "
+"Hibernate が生成する特定の SQL 方言を指定します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases, Hibernate is able to properly determine which dialect to use. "
+"See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's automatic session management for persistence contexts is "
+"particularly useful in this context. The <literal>hbm2ddl.auto</literal> "
+"option turns on automatic generation of database schemas directly into the "
+"database. This can also be turned off by removing the configuration option, "
+"or redirected to a file with the help of the <literal>SchemaExport</literal> "
+"Ant task. Finally, add the mapping file(s) for persistent classes to the "
+"configuration."
+msgstr ""
+"永続的なコンテキストに対する Hibernate のセッションの自動管理は、後の例ですぐ"
+"にわかるように、役に立つことでしょう。 <literal>hbm2ddl.auto</literal> オプ"
+"ションはデータベーススキーマの自動生成を on にします。これは直接データベース"
+"に対して生成されます。当然(config オプションを削除して) off にしたり、 "
+"<literal>SchemaExport</literal> という Ant タスクの助けを借りてファイルにリダ"
+"イレクトしたりできます。最後に永続クラスのためのマッピングファイルを設定に追"
+"加します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>hibernate.cfg.xml</filename> into the "
+"<filename>src/main/resources</filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Building with Maven"
+msgstr "Maven によるビルド"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now build the tutorial with Maven. You will need to have Maven "
+"installed; it is available from the <ulink url=\"http://maven.apache.org/"
+"download.html\">Maven download page</ulink>. Maven will read the <filename>/"
+"pom.xml</filename> file we created earlier and know how to perform some "
+"basic project tasks. First, lets run the <literal>compile</literal> goal to "
+"make sure we can compile everything so far:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "スタートアップとヘルパ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is time to load and store some <literal>Event</literal> objects, but "
+"first you have to complete the setup with some infrastructure code. You have "
+"to startup Hibernate by building a global <interfacename>org.hibernate."
+"SessionFactory</interfacename> object and storing it somewhere for easy "
+"access in application code. A <interfacename>org.hibernate.SessionFactory</"
+"interfacename> is used to obtain <interfacename>org.hibernate.Session</"
+"interfacename> instances. A <interfacename>org.hibernate.Session</"
+"interfacename> represents a single-threaded unit of work. The "
+"<interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe "
+"global object that is instantiated once."
+msgstr ""
+"さて <literal>Event</literal> オブジェクトをロードしたり格納したりする準備が"
+"できました。しかしまずはインフラストラクチャのコードを書いて、セットアップを"
+"完了する必要があります。まずは Hibernate をスタートアップしなければなりませ"
+"ん。このスタートアップには、グローバルの <literal>SessionFactory</literal> オ"
+"ブジェクトを生成して、それをアプリケーションのコードでアクセスしやすい場所に"
+"格納することが含まれます。 <interfacename>org.hibernate.SessionFactory</"
+"interfacename> は新しく <interfacename>org.hibernate.Session</interfacename> "
+"をオープンすることができます。 <interfacename>org.hibernate.Session</"
+"interfacename> はシングルスレッドの作業単位(Unit of Work)を表現します。それに"
+"対し <interfacename>org.hibernate.SessionFactory</interfacename> はスレッド"
+"セーフのグローバルオブジェクトであり、一度だけインスタンス化されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will create a <literal>HibernateUtil</literal> helper class that takes "
+"care of startup and makes accessing the <interfacename>org.hibernate."
+"SessionFactory</interfacename> more convenient."
+msgstr ""
+"ここでスタートアップを行い、便利に <interfacename>org.hibernate."
+"SessionFactory</interfacename> へアクセスする <literal>HibernateUtil</"
+"literal> ヘルパクラスを作成します。実装を見てみましょう:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class not only produces the global <interfacename>org.hibernate."
+"SessionFactory</interfacename> reference in its static initializer; it also "
+"hides the fact that it uses a static singleton. We might just as well have "
+"looked up the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"reference from JNDI in an application server or any other location for that "
+"matter."
+msgstr ""
+"このクラスは静的初期化ブロック(クラスがロードされるときに JVM によって一度だ"
+"け呼ばれる) でグローバルの <interfacename>org.hibernate.SessionFactory</"
+"interfacename> を生成するだけではなく、静的シングルトンの使用を隠蔽します。ア"
+"プリケーションサーバーの JNDI から <interfacename>org.hibernate."
+"SessionFactory</interfacename> をルックアップするのと同様です。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you give the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"a name in your configuration, Hibernate will try to bind it to JNDI under "
+"that name after it has been built. Another, better option is to use a JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. Such advanced options are "
+"discussed later."
+msgstr ""
+"設定ファイル内で <interfacename>org.hibernate.SessionFactory</interfacename> "
+"に名前を与えると、 Hibernate は <interfacename>org.hibernate.SessionFactory</"
+"interfacename> 構築後に JNDI に対しバインドを行おうとします。このコードを完全"
+"に排除するためには、 JMX デプロイメントを利用して JMX を利用できるコンテナを"
+"インスタンス化し、 <literal>HibernateService</literal> を JNDI へバインドする"
+"こともできます。これらの高度なオプションは、 Hibernate のリファレンスドキュメ"
+"ントで説明されています。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You now need to configure a logging system. Hibernate uses commons logging "
+"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
+"Log4j: copy <literal>log4j.properties</literal> from the Hibernate "
+"distribution in the <literal>etc/</literal> directory to your <literal>src</"
+"literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you "
+"prefer to have more verbose output than that provided in the example "
+"configuration, you can change the settings. By default, only the Hibernate "
+"startup message is shown on stdout."
+msgstr ""
+"これは問題なく再コンパイルできるはずです。最後にロギングシステムを設定する必"
+"要があります。 Hibernate は commons logging を使うため、 Log4j と JDK 1.4 "
+"logging の選択をする必要がありません。ほとんどの開発者が好むのは Log4j で"
+"す。 Hibernate ディストリビューションの( <literal>etc/</literal> ディレクト"
+"リ)から <literal>log4j.properties</literal> をあなたの <literal>src</"
+"literal> ディレクトリ内の <literal>hibernate.cfg.xml</literal> の隣にコピーし"
+"てください。設定例を見て、冗長な出力がよければ設定を変更してください。デフォ"
+"ルトでは Hibernate のスタートアップメッセージだけが標準出力に表示されます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The tutorial infrastructure is complete and you are now ready to do some "
+"real work with Hibernate."
+msgstr ""
+"チュートリアルのインフラは完全です。 Hibernate を使って実際の作業をする準備が"
+"整いました。"
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "オブジェクトのロードと格納"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We are now ready to start doing some real worjk with Hibernate. Let's start "
+"by writing an <literal>EventManager</literal> class with a <literal>main()</"
+"literal> method:"
+msgstr ""
+"ついにオブジェクトのロードと格納に Hibernate を使うことができます。 "
+"<literal>main()</literal> メソッドを持つ <literal>EventManager</literal> クラ"
+"スを書きます:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</"
+"literal> object and handed it over to Hibernate. At that point, Hibernate "
+"takes care of the SQL and executes an <literal>INSERT</literal> on the "
+"database."
+msgstr ""
+"新しい <literal>Event</literal> オブジェクトを生成し、それを Hibernate に渡し"
+"ます。 Hibernate が SQL を処理し、データベースで <literal>INSERT</literal> を"
+"実行します。実行前にl <literal>Session</literal> と <literal>Transaction</"
+"literal> を処理するコードを確認してください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> is designed to represent a "
+"single unit of work (a single atmoic piece of work to be performed). For now "
+"we will keep things simple and assume a one-to-one granularity between a "
+"Hibernate <interface>org.hibernate.Session</interface> and a database "
+"transaction. To shield our code from the actual underlying transaction "
+"system we use the Hibernate <interfacename>org.hibernate.Transaction</"
+"interfacename> API. In this particular case we are using JDBC-based "
+"transactional semantics, but it could also run with JTA."
+msgstr ""
+"<interface>org.hibernate.Session</interface> は1つの作業単位 (Unit of Work) "
+"です。当分の間、話を簡単にするために、 <interface>org.hibernate.Session</"
+"interface> と <literal>Transaction</literal> の対応を一対一と仮定します。使用"
+"しているトランザクションシステム(このケースでは JTA と共存できる単純な "
+"JDBC)からコードを保護するために、 Hibernate <literal>Session</literal> 上で"
+"利用可能な <interfacename>org.hibernate.Transaction</interfacename> API を使"
+"用します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like once you get hold of "
+"your <interfacename>org.hibernate.SessionFactory</interfacename>. The "
+"<literal>getCurrentSession()</literal> method always returns the \"current\" "
+"unit of work. Remember that we switched the configuration option for this "
+"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
+"xml</filename>? Due to that setting, the context of a current unit of work "
+"is bound to the current Java thread that executes the application."
+msgstr ""
+"<literal>sessionFactory.getCurrentSession()</literal> は何をするのでしょう"
+"か?まず、いったん <interfacename>org.hibernate.SessionFactory</"
+"interfacename> を取得し保持すれば ( <literal>HibernateUtil</literal> のおか"
+"げで簡単です)、このメソッドを何度でも、どこからでも呼び出すことができます。 "
+"<literal>getCurrentSession()</literal> メソッドは常に「現在の」作業単位(Unit "
+"of Work)を返します。 <filename>src/main/resources/hibernate.cfg.xml</"
+"filename> のこの機能の設定で、\"thread\"を指定したことを思い出してください。"
+"このため現在の作業単位のスコープは、このアプリケーションを実行する現在の "
+"Java スレッドです。しかしこれで全てではありません。作業単位の開始時と終了時に"
+"はスコープも考慮する必要があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers three methods of current session tracking. The \"thread\" "
+"based method is not intended for production use; it is merely useful for "
+"prototyping and tutorials such as this one. Current session tracking is "
+"discussed in more detail later on."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> begins when the first call to "
+"<literal>getCurrentSession()</literal> is made for the current thread. It is "
+"then bound by Hibernate to the current thread. When the transaction ends, "
+"either through commit or rollback, Hibernate automatically unbinds the "
+"<interface>org.hibernate.Session</interface> from the thread and closes it "
+"for you. If you call <literal>getCurrentSession()</literal> again, you get a "
+"new <interface>org.hibernate.Session</interface> and can start a new unit of "
+"work."
+msgstr ""
+"<interface>org.hibernate.Session</interface> は最初に必要となったとき、つまり"
+"最初に <literal>getCurrentSession()</literal> が呼ばれたときに開始します。そ"
+"のとき Hibernate により現在のスレッドに結び付けられます。トランザクションが終"
+"了(コミットもしくはロールバック)したとき、 Hibernate もスレッドから "
+"<interface>org.hibernate.Session</interface> を切り離し、クローズします。再"
+"び <literal>getCurrentSession()</literal> を呼ぶと、新しい <interface>org."
+"hibernate.Session</interface> を取得して新しい作業単位をスタートできます。こ"
+"の <emphasis>thread-bound</emphasis> プログラミングモデルは、コードのフレキシ"
+"ブルなレイヤリングを可能にするので、 Hibernate を利用する上で最も人気がありま"
+"す (このチュートリアルで後ほど触れますがトランザクション境界コードはデータア"
+"クセスコードとは区別されます)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <interface>org."
+"hibernate.Session</interface> be used to execute one or several database "
+"operations? The above example uses one <interface>org.hibernate.Session</"
+"interface> for one operation. However this is pure coincidence; the example "
+"is just not complex enough to show any other approach. The scope of a "
+"Hibernate <interface>org.hibernate.Session</interface> is flexible but you "
+"should never design your application to use a new Hibernate <interface>org."
+"hibernate.Session</interface> for <emphasis>every</emphasis> database "
+"operation. Even though it is used in the following examples, consider "
+"<emphasis>session-per-operation</emphasis> an anti-pattern. A real web "
+"application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+"作業単位 (Unit of Work) の範囲に関して、 Hibernate の <interface>org."
+"hibernate.Session</interface> は1つまたはいくつかのデータベースオペレーション"
+"を実行するために使用されるべきでしょうか?上記の例は、1つのオペレーションで1"
+"つの <interface>org.hibernate.Session</interface> を使用します。これは純粋な"
+"偶然で、例はその他のアプローチを示すほど込み入っていません。 Hibernate の "
+"<interface>org.hibernate.Session</interface> の範囲は柔軟ですが、 <emphasis>"
+"全ての</emphasis> データベースオペレーションのために新しい Hibernate "
+"<interface>org.hibernate.Session</interface> を使用するようにアプリケーション"
+"をデザインするべきではありません。従って、もしそれを以下の (普通の) 例で何度"
+"か見たとしても、アンチパターンである <emphasis>オペレーション毎の Session</"
+"emphasis> を考慮してください。実際の (ウェブ) アプリケーションは、このチュー"
+"トリアルで後に見ることができます。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"See <xref linkend=\"transactions\" /> for more information about transaction "
+"handling and demarcation. The previous example also skipped any error "
+"handling and rollback."
+msgstr ""
+"トランザクションの扱いと境界の詳しい情報については、 <xref linkend="
+"\"transactions\"/> を見てください。この例ではエラー処理やロールバックも割愛し"
+"ます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To run this, we will make use of the Maven exec plugin to call our class "
+"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
+"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should see Hibernate starting up and, depending on your configuration, "
+"lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+"コンパイルすると、 Hibernate がスタートし、設定によりますが、多くのログ出力が"
+"あるはずです。その最後には以下の行があるでしょう:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr "HQL の <literal>INSERT</literal> 文の実行例です:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr ""
+"それでは同じように格納されたイベントの一覧を見ようと思います。そのためメイン"
+"メソッドにオプションを追加します:"
+
+#. Tag: para
+#, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr "新しい <literal>listEvents()メソッド</literal> も追加します。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here, we are using a Hibernate Query Language (HQL) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+"ここですることは、データベースから存在するすべての <literal>Event</literal> "
+"オブジェクトをロードする HQL (Hibernate Query Language) クエリを使うことで"
+"す。 Hibernate は適切な SQL を生成し、それをデータベースに送り、そのデータを"
+"使って <literal>Event</literal> オブジェクトを生成します。当然 HQL でさらに複"
+"雑なクエリを作成できます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we can call our new functionality, again using the Maven exec plugin: "
+"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
+"\" -Dexec.args=\"list\"</command>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "パート2 - 関連のマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have mapped a single persistent entity class to a table in "
+"isolation. Let's expand on that a bit and add some class associations. We "
+"will add people to the application and store a list of events in which they "
+"participate."
+msgstr ""
+"永続エンティティクラスをテーブルにマッピングしました。さらにこの上にいくつか"
+"のクラスの関連を追加しましょう。まず初めにアプリケーションに人々を追加し、彼"
+"らが参加するイベントのリストを格納します。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "Person クラスのマッピング"
+
+#. Tag: para
+#, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "最初の <literal>Person</literal> クラスは単純です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, create the new mapping file as <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr "最後に Hibernate の設定に新しいマッピングを追加してください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Create an association between these two entities. Persons can participate in "
+"events, and events have participants. The design questions you have to deal "
+"with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+"それではこれら2つのエンティティ間の関連を作成します。人々がイベントに参加で"
+"き、イベントが参加者を持つのは明らかです。扱わなければならない設計の問題は、"
+"方向、多重度、コレクションの振る舞いです。"
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "単方向 Set ベース関連"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By adding a collection of events to the <literal>Person</literal> class, you "
+"can easily navigate to the events for a particular person, without executing "
+"an explicit query - by calling <literal>Person#getEvents</literal>. Multi-"
+"valued associations are represented in Hibernate by one of the Java "
+"Collection Framework contracts; here we choose a <interfacename>java.util."
+"Set</interfacename> because the collection will not contain duplicate "
+"elements and the ordering is not relevant to our examples:"
+msgstr ""
+"イベントのコレクションを <literal>Person</literal> クラスに追加します。こうし"
+"ておくと、明示的なクエリ、つまりわざわざ <literal>aPerson.getEvents()</"
+"literal> を呼び出さずに、特定の人に紐付くイベントを簡単にナビゲートすることが"
+"できます。私たちは Java のコレクション、<interfacename>java.util.Set</"
+"interfacename> を使います。コレクションは重複要素を持たないし、順番は私たちに"
+"は意味がないからです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Before mapping this association, let's consider the other side. We could "
+"just keep this unidirectional or create another collection on the "
+"<literal>Event</literal>, if we wanted to be able to navigate it from both "
+"directions. This is not necessary, from a functional perspective. You can "
+"always execute an explicit query to retrieve the participants for a "
+"particular event. This is a design choice left to you, but what is clear "
+"from this discussion is the multiplicity of the association: \"many\" valued "
+"on both sides is called a <emphasis>many-to-many</emphasis> association. "
+"Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+"この関連をマッピングする前に、反対側について考えてください。明らかなことです"
+"が、今はこれを単方向にしただけです。逆に、 <literal>Event</literal> 側にも別"
+"のコレクションを作ることもできます。例えば <literal>anEvent.getParticipants()"
+"</literal> のように、双方向にナビゲートしたければ、そうすることもできます。こ"
+"れは機能的にみて必要ではありません。特定のイベントに関係するデータを取得する"
+"明確なクエリを、いつでも実行することが出来ました。この設計の選択は開発者に任"
+"されていて、この議論により明らかなのは関連の多重度です。つまり両側を「多」値"
+"にする、 <emphasis>多対多</emphasis> と呼ばれる関連です。そのため Hibernate "
+"の多対多マッピングを使います:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports a broad range of collection mappings, a <literal>set</"
+"literal> being most common. For a many-to-many association, or <emphasis>n:"
+"m</emphasis> entity relationship, an association table is required. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is decalred using the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person side, is defined with the <literal>key</literal> "
+"element, the column name for the event's side with the <literal>column</"
+"literal> attribute of the <literal>many-to-many</literal>. You also have to "
+"tell Hibernate the class of the objects in your collection (the class on the "
+"other side of the collection of references)."
+msgstr ""
+"Hibernate はありとあらゆる種類のコレクションマッピングをサポートしています"
+"が、最も一般的なものが <literal>set</literal> です。 多対多関連(または "
+"<emphasis>n:m</emphasis> エンティティリレーションシップ)には、関連テーブルが"
+"必要です。このテーブルのそれぞれの行は、人とイベント間のリンクを表現します。"
+"テーブル名は <literal>set</literal> 要素の <literal>table</literal> 属性で設"
+"定します。人側の関連の識別子カラム名は <literal>key</literal> 要素で、イベン"
+"ト側のカラム名は <literal>many-to-many</literal> の <literal>column</"
+"literal> 属性で定義します。 Hibernate にコレクションのオブジェクトのクラス "
+"(正確には、参照のコレクションの反対側のクラス)を教えなければなりません。"
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "そのためこのマッピングのデータベーススキーマは以下のようになります:"
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "関連を働かせる"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we will bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"<literal>EventManager</literal> の新しいメソッドで人々とイベントを一緒にしま"
+"しょう:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. There is "
+"no explicit call to <literal>update()</literal> or <literal>save()</"
+"literal>; Hibernate automatically detects that the collection has been "
+"modified and needs to be updated. This is called <emphasis>automatic dirty "
+"checking</emphasis>. You can also try it by modifying the name or the date "
+"property of any of your objects. As long as they are in "
+"<emphasis>persistent</emphasis> state, that is, bound to a particular "
+"Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate "
+"monitors any changes and executes SQL in a write-behind fashion. The process "
+"of synchronizing the memory state with the database, usually only at the end "
+"of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the "
+"unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+"<literal>Person</literal> と <literal>Event</literal> をロードした後、普通の"
+"コレクションメソッドを使って単純にそのコレクションを修正してください。ご覧の"
+"とおり <literal>update()</literal> や <literal>save()</literal> の明示的な呼"
+"び出しはありません。 Hibernate は、修正されたことにより更新する必要のあるコレ"
+"クションを自動的に検知します。これは <emphasis>自動ダーティチェック</"
+"emphasis> と呼ばれ、オブジェクトの名前や date プロパティを修正することで試す"
+"ことも可能です。それらが <emphasis>永続</emphasis> 状態にある限り、つまり特定"
+"の Hibernate <literal>Session</literal> にバインドされている限り (例えば作業"
+"単位 (Unit of Work) の中で単にロードまたはセーブされた)、 Hibernate はどんな"
+"変更もモニターし、遅延書き込み (write-behind) で SQL を実行します。通常、作業"
+"単位 (Unit of Work) の最後にだけ行われるデータベースとメモリの状態を同期させ"
+"る処理は、 <emphasis>フラッシュ</emphasis> と呼ばれます。このコードでは、作業"
+"単位 (Unit of Work) はデータベーストランザクションのコミット(もしくはロール"
+"バック)で終了します。これは、 <literal>CurrentSessionContext</literal> クラ"
+"スに対して <literal>thread</literal> を設定したためです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can load person and event in different units of work. Or you can modify "
+"an object outside of a <interfacename>org.hibernate.Session</interfacename>, "
+"when it is not in persistent state (if it was persistent before, this state "
+"is called <emphasis>detached</emphasis>). You can even modify a collection "
+"when it is detached:"
+msgstr ""
+"異なる作業単位 (Unit of Work) で人々とイベントをロードすることも当然できま"
+"す。そうでなければ、永続状態にないとき(以前に永続であったなら、この状態を "
+"<emphasis>分離(detached)</emphasis> と呼びます)、 <interfacename>org."
+"hibernate.Session</interfacename> の外部でオブジェクトを修正します。分離され"
+"るときにはコレクションを変更することも可能です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again by binding it to a new unit of work, so any modifications you made to "
+"it while detached can be saved to the database. This includes any "
+"modifications (additions/deletions) you made to a collection of that entity "
+"object."
+msgstr ""
+"<literal>update</literal> の呼び出しは分離オブジェクトを再び永続化します。こ"
+"れは、新しい作業単位 (Unit of Work) にバインドすると言えるでしょう。そのため"
+"分離の間に加えられたどのような修正もデータベースにセーブできます。エンティ"
+"ティオブジェクトのコレクションへの修正(追加・削除)も同様にセーブできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not much use in our example, but it is an important concept you can "
+"incorporate into your own application. Complete this exercise by adding a "
+"new action to the main method of the <literal>EventManager</literal> and "
+"call it from the command line. If you need the identifiers of a person and "
+"an event - the <literal>save()</literal> method returns it (you might have "
+"to modify some of the previous methods to return that identifier):"
+msgstr ""
+"これは今はあまり使いみちがありませんが、自分のアプリケーションの設計に組み込"
+"むことができる重要なコンセプトです。それではこのエクササイズの最後に、 "
+"<literal>EventManager</literal> のメインメソッドに新しいアクションを追加して"
+"コマンドラインから呼び出してみましょう。人やイベントの識別子が必要なら、 "
+"<literal>save()</literal> メソッドが返してくれます (場合によっては識別子を返"
+"すためにメソッドを修正する必要があるかもしれません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is an example of an association between two equally important classes : "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <classname>java.lang.String</classname>. We "
+"call these classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"do not have their own identity, nor are they shared between entities. Two "
+"persons do not reference the same <literal>firstname</literal> object, even "
+"if they have the same first name. Value types cannot only be found in the "
+"JDK , but you can also write dependent classes yourself such as an "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal> class. In "
+"fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+"これは同じように重要な2つのクラス、つまり2つのエンティティ間の関連の例でし"
+"た。前に述べたように、典型的なモデルには、普通「比較的重要ではない」他のクラ"
+"スと型があります。これまでに見たような <literal>int</literal> や "
+"<classname>java.lang.String</classname> のようなものです。このようなクラスを "
+"<emphasis>値型</emphasis> と言います。このインスタンスは特定のエンティティに "
+"<emphasis>依存</emphasis> します。この型のインスタンスは独自の ID を持ちませ"
+"んし、エンティティ間で共有されることもありません (ファーストネームが同じだっ"
+"たとしても、2人の人は同じ <literal>firstname</literal> オブジェクトを参照しま"
+"せん)。値型はもちろん JDK 内に見つかりますが、それだけではなく (実際、 "
+"Hibernate アプリケーションにおいてすべての JDK クラスは値型と見なせます)、 "
+"例えば <literal>Address</literal> や <literal>MonetaryAmount</literal> のよう"
+"な独自の依存クラスを書くこともできます。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"値型のコレクションを設計することもできます。これは他のエンティティへの参照の"
+"コレクションとは概念的に非常に異なりますが、 Java ではほとんど同じように見え"
+"ます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "値のコレクション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Let's add a collection of email addresses to the <literal>Person</literal> "
+"entity. This will be represented as a <interfacename>java.util.Set</"
+"interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "この <literal>Set</literal> のマッピングです:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the use of the "
+"<literal>element</literal> part which tells Hibernate that the collection "
+"does not contain references to another entity, but is rather a collection "
+"whose elements are values types, here specifically of type <literal>string</"
+"literal>. The lowercase name tells you it is a Hibernate mapping type/"
+"converter. Again the <literal>table</literal> attribute of the <literal>set</"
+"literal> element determines the table name for the collection. The "
+"<literal>key</literal> element defines the foreign-key column name in the "
+"collection table. The <literal>column</literal> attribute in the "
+"<literal>element</literal> element defines the column name where the email "
+"address values will actually be stored."
+msgstr ""
+"前のマッピングと比べて違うのは <literal>element</literal> の部分ですが、 "
+"Hibernate にこのコレクションが他のエンティティへの参照を含まず、 "
+"<literal>string</literal> 型の要素のコレクションを含むことを教えます(小文字"
+"の名前 (string) は Hibernate のマッピング型またはコンバータであるということで"
+"す)。繰り返しますが、<literal>set</literal> 要素の <literal>table</literal> "
+"属性は、コレクションのためのテーブル名を指定します。 <literal>key</literal> "
+"要素はコレクションテーブルの外部キーカラム名を定義します。 <literal>element</"
+"literal> 要素の <literal>column</literal> 属性は <literal>string</literal> の"
+"値が実際に格納されるカラムの名前を定義します。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the updated schema:"
+msgstr "更新したスキーマを見てください:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key that uses both columns. This also implies that there cannot be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"コレクションテーブルの主キーは、実際は両方のカラムを使った複合キーであること"
+"がわかります。これは人ごとに E メールアドレスが重複できないということで、 "
+"Java の set に要求されるセマンティクスそのものです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can now try to add elements to this collection, just like we did before "
+"by linking persons and events. It is the same code in Java:"
+msgstr ""
+"以前人とイベントを関連づけたときと全く同じように、今や試しにコレクションに要"
+"素を追加することができるようになりました。 両方とも Java では同じコードです。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This time we did not use a <emphasis>fetch</emphasis> query to initialize "
+"the collection. Monitor the SQL log and try to optimize this with an eager "
+"fetch."
+msgstr ""
+"今回、コレクションの初期化に <emphasis>fetch</emphasis> クエリを使用しません"
+"でした。そのため、 getter メソッドの呼び出しによってコレクションを初期化する"
+"ための SELECT が実行されるので、コレクションに要素を追加できます。 SQL のログ"
+"を監視して、即時フェッチを使って最適化してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "双方向関連"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next you will map a bi-directional association. You will make the "
+"association between person and event work from both sides in Java. The "
+"database schema does not change, so you will still have many-to-many "
+"multiplicity."
+msgstr ""
+"次に双方向関連をマッピングします。 Java で両側から人とイベントの関連を動作さ"
+"せます。もちろん、データベーススキーマは変わりませんが、多重度は多対多のまま"
+"です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A relational database is more flexible than a network programming language, "
+"in that it does not need a navigation direction; data can be viewed and "
+"retrieved in any possible way."
+msgstr ""
+"リレーショナルデータベースはネットワークプログラミング言語よりも柔軟なので、"
+"ナビゲーションの方向のようなものを必要としません。データはあらゆる方法で見た"
+"り復元できるということです。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"class:"
+msgstr ""
+"まず <literal>Event</literal> イベントクラスに参加者のコレクションを追加しま"
+"す:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr ""
+"それでは <literal>Event.hbm.xml</literal> で関連のこちら側をマッピングしてく"
+"ださい。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These are normal <literal>set</literal> mappings in both mapping documents. "
+"Notice that the column names in <literal>key</literal> and <literal>many-to-"
+"many</literal> swap in both mapping documents. The most important addition "
+"here is the <literal>inverse=\"true\"</literal> attribute in the "
+"<literal>set</literal> element of the <literal>Event</literal>'s collection "
+"mapping."
+msgstr ""
+"ご覧のとおり、いずれのマッピングドキュメント (XMLファイル) でも、普通の "
+"<literal>set</literal> マッピングを使っています。 <literal>key</literal> と "
+"<literal>many-to-many</literal> のカラム名が、両方のマッピングドキュメントで"
+"入れ替えになっていることに注目してください。ここで最も重要な追加項目は、 "
+"<literal>Event</literal> のコレクションマッピングの <literal>set</literal> 要"
+"素にある <literal>inverse=\"true\"</literal> 属性です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side, the "
+"<literal>Person</literal> class, when it needs to find out information about "
+"the link between the two. This will be a lot easier to understand once you "
+"see how the bi-directional link between our two entities is created."
+msgstr ""
+"この指定の意味は、2つの間のエンティティ間のリンクについての情報を探す必要があ"
+"るとき、 Hibernate は反対側のエンティティ、つまり <literal>Person</literal> "
+"クラスから探すということです。一度2つのエンティティ間の双方向リンクがどのよう"
+"に作成されるかがわかれば、これを理解することはとても簡単です。"
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "双方向リンクの動作"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, keep in mind that Hibernate does not affect normal Java semantics. "
+"How did we create a link between a <literal>Person</literal> and an "
+"<literal>Event</literal> in the unidirectional example? You add an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. If you want to make this link bi-"
+"directional, you have to do the same on the other side by adding a "
+"<literal>Person</literal> reference to the collection in an <literal>Event</"
+"literal>. This process of \"setting the link on both sides\" is absolutely "
+"necessary with bi-directional links."
+msgstr ""
+"まず、 Hibernate が通常の Java のセマンティクスに影響を及ぼさないことを心に留"
+"めておいてください。私たちは、単方向の例としてどのように <literal>Person</"
+"literal> と <literal>Event</literal> の間のリンクを作成したでしょうか? "
+"<literal>Person</literal> のインスタンスのイベントへの参照のコレクションに "
+"<literal>Event</literal> のインスタンスを追加しました。そのためこのリンクを双"
+"方向にしたければ、当たり前ですが反対側にも同じことをしなければなりません。 "
+"<literal>Event</literal> のコレクションに <literal>Person</literal> への参照"
+"を追加するということです。この「両側でリンクを設定すること」は絶対に必要なの"
+"で、決して忘れないでください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many developers program defensively and create link management methods to "
+"correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+"多くの開発者は慎重にプログラムするので、エンティティの両側に正しく関連を設定"
+"するリンク管理メソッドを作成します。例えば <literal>Person</literal> では以下"
+"のようになります。:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The get and set methods for the collection are now protected. This allows "
+"classes in the same package and subclasses to still access the methods, but "
+"prevents everybody else from altering the collections directly. Repeat the "
+"steps for the collection on the other side."
+msgstr ""
+"コレクションのゲットとセットメソッドが現在 protected になっていることに注意し"
+"てください。これは同じパッケージのクラスやサブクラスのメソッドは依然アクセス"
+"が可能ですが、 (ほとんど) そのパッケージ外のどのクラスでも直接そのコレク"
+"ションを台無しにすることを防ぎます。おそらく反対側のコレクションにも同じこと"
+"をした方がいいでしょう。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> mapping attribute? For you, and "
+"for Java, a bi-directional link is simply a matter of setting the references "
+"on both sides correctly. Hibernate, however, does not have enough "
+"information to correctly arrange SQL <literal>INSERT</literal> and "
+"<literal>UPDATE</literal> statements (to avoid constraint violations). "
+"Making one side of the association <literal>inverse</literal> tells "
+"Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. "
+"That is all that is necessary for Hibernate to resolve any issues that arise "
+"when transforming a directional navigation model to a SQL database schema. "
+"The rules are straightforward: all bi-directional associations need one side "
+"as <literal>inverse</literal>. In a one-to-many association it has to be the "
+"many-side, and in many-to-many association you can select either side."
+msgstr ""
+"<literal>inverse</literal> マッピング属性とはいったい何でしょうか?開発者と "
+"Java にとっては、双方向リンクは単に両側の参照を正しく設定するということです。"
+"しかし Hibernate は(制約違反を避けるために) SQL の <literal>INSERT</"
+"literal> と <literal>UPDATE</literal> 文を正確に変更するための十分な情報を"
+"持っていないので、双方向関連プロパティを扱うための何らかの助けを必要としま"
+"す。関連の片側を <literal>inverse</literal> に設定することで、 Hibernate は基"
+"本的には設定した側を無視し、反対側の <emphasis>鏡</emphasis> として考えます。"
+"これだけで、 Hibernate は方向を持つナビゲーションモデルを SQL データベースス"
+"キーマへ変換するときのすべての問題にうまく対処できます。覚えておかなければな"
+"らないルールは簡単です。双方向関連は必ず片側を <literal>inverse</literal> に"
+"する必要があるということです。一対多関連ではそれは多側でなければなりません。"
+"多対多関連ではどちら側でも構いません。どちらでも違いはありません。"
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "パート3 - EventManager Web アプリケーション"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. You can now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Hibernate の Web アプリケーションは、スタンドアローンのアプリケーションのよう"
+"に <literal>Session</literal> と <literal>Transaction</literal> を使用しま"
+"す。しかしいくつかの一般的なパターンが役立ちます。ここで "
+"<literal>EventManagerServlet</literal> を作成します。このサーブレットは、デー"
+"タベースに格納した全てのイベントをリストにでき、さらに HTML フォームから新し"
+"いイベントを入力できるものです。"
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "基本的な Servlet の記述"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First we need create our basic processing servlet. Since our servlet only "
+"handles HTTP <literal>GET</literal> requests, we will only implement the "
+"<literal>doGet()</literal> method:"
+msgstr ""
+"Servlet は HTTP の <literal>GET</literal> リクエストのみを処理するので、 "
+"<literal>doGet()</literal> を実装します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pattern applied here is called <emphasis>session-per-request</emphasis>. "
+"When a request hits the servlet, a new Hibernate <literal>Session</literal> "
+"is opened through the first call to <literal>getCurrentSession()</literal> "
+"on the <literal>SessionFactory</literal>. A database transaction is then "
+"started. All data access occurs inside a transaction irrespective of whether "
+"the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+"これは <emphasis>session-per-request</emphasis> というパターンです。 Servlet "
+"がリクエストを受け取ると、 <literal>SessionFactory</literal> の "
+"<literal>getCurrentSession()</literal> の最初の呼び出しで、 Hibernate の新し"
+"い <literal>Session</literal> が開かれます。そのときデータベーストランザク"
+"ションが開始されます。データの読み書きに関わらず、すべてのデータアクセスはト"
+"ランザクション内で行います(アプリケーション内ではオートコミットモードを使用"
+"しません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"全てのデータベースオペレーションで新しい Hibernate <literal>Session</"
+"literal> を使用 <emphasis>しないでください</emphasis> 。全てのリクエストで機"
+"能する、1つの Hibernate <literal>Session</literal> を使用してください。自動"
+"的に現在の Java スレッドにバインドされるので、 <literal>getCurrentSession()</"
+"literal> を使用してください。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We will get to that part soon."
+msgstr ""
+"次に、リクエストのアクションは処理され、レスポンスである HTML が描画されま"
+"す。これについてはすぐに説明します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering are complete. "
+"If any problems occurred during processing or rendering, an exception will "
+"be thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> pattern. Instead of the transaction "
+"demarcation code in every servlet, you could also write a servlet filter. "
+"See the Hibernate website and Wiki for more information about this pattern "
+"called <emphasis>Open Session in View</emphasis>. You will need it as soon "
+"as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"最後にリクエストの処理と HTML 描画が完了したときに、作業単位 (Unit of Work) "
+"を終了します。もし処理や描画中に問題が発生した場合、例外が送出されててデータ"
+"ベーストランザクションをロールバックします。これで <literal>session-per-"
+"request</literal> パターンが完了します。全てのサーブレットにトランザクション"
+"境界のコードを書く代わりに、サーブレットフィルタに記述することも可能です。 "
+"<emphasis>Open Session in View</emphasis> と呼ばれるこのパターンについては、 "
+"Hibernate の Web サイトや Wiki を参照してください。サーブレットではなく JSP "
+"で HTML 描画をしようとすると、すぐにこのパターンについての情報が必要になるで"
+"しょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "処理と描画"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now you can implement the processing of the request and the rendering of the "
+"page."
+msgstr "では、リクエストの処理とページの描画を実装します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This coding style, with a mix of Java and HTML, would not scale in a more "
+"complex application&mdash;keep in mind that we are only illustrating basic "
+"Hibernate concepts in this tutorial. The code prints an HTML header and a "
+"footer. Inside this page, an HTML form for event entry and a list of all "
+"events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"Java と HTML が混在するコーディングスタイルは、より複雑なアプリケーションには"
+"適していないでしょう (このチュートリアルでは、基本的な Hibernate のコンセプ"
+"トを示しているだけであることを覚えておいてください)。このコードは HTML の"
+"ヘッダーとフッターの記述です。このページには、イベントを入力する HTML フォー"
+"ムと、データベースにある全てのイベントのリストが表示されます。最初のメソッド"
+"はごく単純な HTML 出力です。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"<literal>listEvents()</literal> メソッドは、現在のスレッドに結びつく "
+"Hibernate の <literal>Session</literal> を使用して、クエリを実行します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"最後に、 <literal>store</literal> アクションが <literal>createAndStoreEvent()"
+"</literal> メソッドを呼び出します。このメソッドでも現在のスレッドの "
+"<literal>Session</literal> を利用します。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The servlet is now complete. A request to the servlet will be processed in a "
+"single <literal>Session</literal> and <literal>Transaction</literal>. As "
+"earlier in the standalone application, Hibernate can automatically bind "
+"these objects to the current thread of execution. This gives you the freedom "
+"to layer your code and access the <literal>SessionFactory</literal> in any "
+"way you like. Usually you would use a more sophisticated design and move the "
+"data access code into data access objects (the DAO pattern). See the "
+"Hibernate Wiki for more examples."
+msgstr ""
+"これでサーブレットの完成です。サーブレットへのリクエストは、1つの "
+"<literal>Session</literal> と <literal>Transaction</literal> で処理されるで"
+"しょう。最初のスタンドアローンのアプリケーションのように、 Hibernate は自動的"
+"にこれらのオブジェクトを実行するスレッドに結び付けることができます。これによ"
+"り、開発者が自由にコードをレイヤー分けでき、好きな方法で "
+"<literal>SessionFactory</literal> へのアクセスができるようになります。通常、"
+"開発者はより洗練されたデザインを使用して、データアクセスのコードをデータアク"
+"セスオブジェクトに移動するでしょう(DAOパターン)。より多くの例は、 "
+"Hibernate の Wiki を参照してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "デプロイとテスト"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To deploy this application for testing we must create a Web ARchive (WAR). "
+"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
+"web.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To build and deploy call <literal>mvn package</literal> in your project "
+"directory and copy the <filename>hibernate-tutorial.war</filename> file into "
+"your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+"ビルドとデプロイのために、プロジェクトディレクトリで <literal>mvn package</"
+"literal> を呼び出し、 <literal>hibernate-tutorial.war</literal> ファイルを "
+"Tomcat の <literal>webapp</literal> ディレクトリにコピーしてください。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you do not have Tomcat installed, download it from <ulink url=\"http://"
+"tomcat.apache.org/\" /> and follow the installation instructions. Our "
+"application requires no changes to the standard Tomcat configuration."
+msgstr ""
+"まだ Tomcat をインストールしていなければ、ダウンロードして、インストールガイ"
+"ドに従ってください。しかし、このアプリケーションのデプロイするために、 "
+"Tomcat の設定を変更する必要はありません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
+msgstr ""
+"一度デプロイして Tomcat を起動すれば、 <literal>http://localhost:8080/"
+"hibernate-tutorial/eventmanager</literal> でアプリケーションへのアクセスが可"
+"能です。最初のリクエストが作成したサーブレットに渡ったときに、 Tomcat のログ"
+"で Hibernate の初期化処理を確認してください ( <literal>HibernateUtil</"
+"literal> 内の静的初期化ブロックが呼ばれています)。また、例外が発生したなら詳"
+"細を確認してください。"
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "要約"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application. More tutorials are available from "
+"the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+"このチュートリアルでは、簡単なスタンドアローンの Hibernate アプリケーションと"
+"小規模の Web アプリケーションを書くための基本を紹介しました。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "[...]\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "[...]\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"EVENT_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/"
+#~ ">\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Event\" table=\"EVENTS\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"EVENT_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE"
+#~ "\"/&gt;\n"
+#~ "        &lt;property name=\"title\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <session-factory>\n"
+#~ "\n"
+#~ "        <!-- Database connection settings -->\n"
+#~ "        <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+#~ "property>\n"
+#~ "        <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+#~ "property>\n"
+#~ "        <property name=\"connection.username\">sa</property>\n"
+#~ "        <property name=\"connection.password\"></property>\n"
+#~ "\n"
+#~ "        <!-- JDBC connection pool (use the built-in) -->\n"
+#~ "        <property name=\"connection.pool_size\">1</property>\n"
+#~ "\n"
+#~ "        <!-- SQL dialect -->\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Enable Hibernate's automatic session context management -->\n"
+#~ "        <property name=\"current_session_context_class\">thread</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Disable the second-level cache  -->\n"
+#~ "        <property name=\"cache.provider_class\">org.hibernate.cache."
+#~ "NoCacheProvider</property>\n"
+#~ "\n"
+#~ "        <!-- Echo all executed SQL to stdout -->\n"
+#~ "        <property name=\"show_sql\">true</property>\n"
+#~ "\n"
+#~ "        <!-- Drop and re-create the database schema on startup -->\n"
+#~ "        <property name=\"hbm2ddl.auto\">update</property>\n"
+#~ "\n"
+#~ "        <mapping resource=\"org/hibernate/tutorial/domain/Event.hbm.xml\"/"
+#~ ">\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version='1.0' encoding='utf-8'?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-configuration&gt;\n"
+#~ "\n"
+#~ "    &lt;session-factory&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Database connection settings --&gt;\n"
+#~ "        &lt;property name=\"connection.driver_class\"&gt;org.hsqldb."
+#~ "jdbcDriver&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.url\"&gt;jdbc:hsqldb:hsql://"
+#~ "localhost&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.username\"&gt;sa&lt;/property&gt;\n"
+#~ "        &lt;property name=\"connection.password\"&gt;&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- JDBC connection pool (use the built-in) --&gt;\n"
+#~ "        &lt;property name=\"connection.pool_size\"&gt;1&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- SQL dialect --&gt;\n"
+#~ "        &lt;property name=\"dialect\"&gt;org.hibernate.dialect."
+#~ "HSQLDialect&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Enable Hibernate's automatic session context management --"
+#~ "&gt;\n"
+#~ "        &lt;property name=\"current_session_context_class\"&gt;thread&lt;/"
+#~ "property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Disable the second-level cache  --&gt;\n"
+#~ "        &lt;property name=\"cache.provider_class\"&gt;org.hibernate.cache."
+#~ "NoCacheProvider&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Echo all executed SQL to stdout --&gt;\n"
+#~ "        &lt;property name=\"show_sql\"&gt;true&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;!-- Drop and re-create the database schema on startup --&gt;\n"
+#~ "        &lt;property name=\"hbm2ddl.auto\"&gt;create&lt;/property&gt;\n"
+#~ "\n"
+#~ "        &lt;mapping resource=\"events/Event.hbm.xml\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;/session-factory&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-configuration&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.util;\n"
+#~ "\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory = "
+#~ "buildSessionFactory();\n"
+#~ "\n"
+#~ "    private static SessionFactory buildSessionFactory() {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            return new Configuration().configure().buildSessionFactory"
+#~ "();\n"
+#~ "        }\n"
+#~ "        catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package util;\n"
+#~ "\n"
+#~ "import org.hibernate.*;\n"
+#~ "import org.hibernate.cfg.*;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory;\n"
+#~ "\n"
+#~ "    static {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            sessionFactory = new Configuration().configure()."
+#~ "buildSessionFactory();\n"
+#~ "        } catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial;\n"
+#~ "\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.*;\n"
+#~ "\n"
+#~ "import org.hibernate.tutorial.domain.Event;\n"
+#~ "import org.hibernate.tutorial.util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "import util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, "
+#~ "EVENT_ID) values (?, ?, ?)]]>"
+#~ msgstr ""
+#~ "[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values "
+#~ "(?, ?, ?)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "        else if (args[0].equals(\"list\")) {\n"
+#~ "            List events = mgr.listEvents();\n"
+#~ "            for (int i = 0; i < events.size(); i++) {\n"
+#~ "                Event theEvent = (Event) events.get(i);\n"
+#~ "                System.out.println(\n"
+#~ "                        \"Event: \" + theEvent.getTitle() + \" Time: \" + "
+#~ "theEvent.getDate()\n"
+#~ "                );\n"
+#~ "            }\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "if (args[0].equals(\"store\")) {\n"
+#~ "    mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "}\n"
+#~ "else if (args[0].equals(\"list\")) {\n"
+#~ "    List events = mgr.listEvents();\n"
+#~ "    for (int i = 0; i &lt; events.size(); i++) {\n"
+#~ "        Event theEvent = (Event) events.get(i);\n"
+#~ "        System.out.println(\"Event: \" + theEvent.getTitle() +\n"
+#~ "                           \" Time: \" + theEvent.getDate());\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private List listEvents() {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "        List result = session.createQuery(\"from Event\").list();\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "        return result;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private List listEvents() {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    List result = session.createQuery(\"from Event\").list();\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    return result;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"PERSON\">\n"
+#~ "        <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"age\"/>\n"
+#~ "        <property name=\"firstname\"/>\n"
+#~ "        <property name=\"lastname\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"age\"/&gt;\n"
+#~ "        &lt;property name=\"firstname\"/&gt;\n"
+#~ "        &lt;property name=\"lastname\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
+#~ "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
+#~ msgstr ""
+#~ "&lt;mapping resource=\"events/Event.hbm.xml\"/&gt;\n"
+#~ "&lt;mapping resource=\"events/Person.hbm.xml\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"age\"/>\n"
+#~ "    <property name=\"firstname\"/>\n"
+#~ "    <property name=\"lastname\"/>\n"
+#~ "\n"
+#~ "    <set name=\"events\" table=\"PERSON_EVENT\">\n"
+#~ "        <key column=\"PERSON_ID\"/>\n"
+#~ "        <many-to-many column=\"EVENT_ID\" class=\"Event\"/>\n"
+#~ "    </set>\n"
+#~ "\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"age\"/&gt;\n"
+#~ "    &lt;property name=\"firstname\"/&gt;\n"
+#~ "    &lt;property name=\"lastname\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;set name=\"events\" table=\"PERSON_EVENT\"&gt;\n"
+#~ "        &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"EVENT_ID\" class=\"events.Event\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "    _____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | <--> | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "        aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session\n"
+#~ "                .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "                .setParameter(\"pid\", personId)\n"
+#~ "                .uniqueResult(); // Eager fetch the collection so we can "
+#~ "use it detached\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "\n"
+#~ "        // End of first unit of work\n"
+#~ "\n"
+#~ "        aPerson.getEvents().add(anEvent); // aPerson (and its collection) "
+#~ "is detached\n"
+#~ "\n"
+#~ "        // Begin second unit of work\n"
+#~ "\n"
+#~ "        Session session2 = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session2.beginTransaction();\n"
+#~ "        session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "        session2.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session\n"
+#~ "            .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "            .setParameter(\"pid\", personId)\n"
+#~ "            .uniqueResult(); // Eager fetch the collection so we can use "
+#~ "it detached\n"
+#~ "\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    // End of first unit of work\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent); // aPerson (and its collection) is "
+#~ "detached\n"
+#~ "\n"
+#~ "    // Begin second unit of work\n"
+#~ "\n"
+#~ "    Session session2 = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session2.beginTransaction();\n"
+#~ "\n"
+#~ "    session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "    session2.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "            Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date"
+#~ "());\n"
+#~ "            Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "            mgr.addPersonToEvent(personId, eventId);\n"
+#~ "            System.out.println(\"Added person \" + personId + \" to event "
+#~ "\" + eventId);\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "    Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "    Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "    mgr.addPersonToEvent(personId, eventId);\n"
+#~ "    System.out.println(\"Added person \" + personId + \" to event \" + "
+#~ "eventId);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEmailAddresses() {\n"
+#~ "        return emailAddresses;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "        this.emailAddresses = emailAddresses;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "public Set getEmailAddresses() {\n"
+#~ "    return emailAddresses;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "    this.emailAddresses = emailAddresses;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR"
+#~ "\">\n"
+#~ "            <key column=\"PERSON_ID\"/>\n"
+#~ "            <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\"&gt;\n"
+#~ "    &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "    &lt;element type=\"string\" column=\"EMAIL_ADDR\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "  _____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | <--> | *EVENT_ID        |      |             |      |"
+#~ "___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  | <--> |  "
+#~ "*PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             "
+#~ "|      |___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  | "
+#~ "&lt;--&gt; |  *PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addEmailToPerson(Long personId, String "
+#~ "emailAddress) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        // adding to the emailAddress collection might trigger a lazy "
+#~ "load of the collection\n"
+#~ "        aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addEmailToPerson(Long personId, String emailAddress) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "\n"
+#~ "    // The getEmailAddresses() might trigger a lazy load of the "
+#~ "collection\n"
+#~ "    aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getParticipants() {\n"
+#~ "        return participants;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setParticipants(Set participants) {\n"
+#~ "        this.participants = participants;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "public Set getParticipants() {\n"
+#~ "    return participants;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setParticipants(Set participants) {\n"
+#~ "    this.participants = participants;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"participants\" table=\"PERSON_EVENT\" "
+#~ "inverse=\"true\">\n"
+#~ "            <key column=\"EVENT_ID\"/>\n"
+#~ "            <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "    &lt;key column=\"EVENT_ID\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"PERSON_ID\" class=\"events.Person\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    protected void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void addToEvent(Event event) {\n"
+#~ "        this.getEvents().add(event);\n"
+#~ "        event.getParticipants().add(this);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void removeFromEvent(Event event) {\n"
+#~ "        this.getEvents().remove(event);\n"
+#~ "        event.getParticipants().remove(this);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected Set getEvents() {\n"
+#~ "    return events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "protected void setEvents(Set events) {\n"
+#~ "    this.events = events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void addToEvent(Event event) {\n"
+#~ "    this.getEvents().add(event);\n"
+#~ "    event.getParticipants().add(this);\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void removeFromEvent(Event event) {\n"
+#~ "    this.getEvents().remove(event);\n"
+#~ "    event.getParticipants().remove(this);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.web;\n"
+#~ "\n"
+#~ "// Imports\n"
+#~ "\n"
+#~ "public class EventManagerServlet extends HttpServlet {\n"
+#~ "\n"
+#~ "    protected void doGet(\n"
+#~ "            HttpServletRequest request,\n"
+#~ "            HttpServletResponse response) throws ServletException, "
+#~ "IOException {\n"
+#~ "\n"
+#~ "        SimpleDateFormat dateFormatter = new SimpleDateFormat( \"dd.MM."
+#~ "yyyy\" );\n"
+#~ "\n"
+#~ "        try {\n"
+#~ "            // Begin unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "beginTransaction();\n"
+#~ "\n"
+#~ "            // Process request and render page...\n"
+#~ "\n"
+#~ "            // End unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().commit();\n"
+#~ "        }\n"
+#~ "        catch (Exception ex) {\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().rollback();\n"
+#~ "            if ( ServletException.class.isInstance( ex ) ) {\n"
+#~ "                throw ( ServletException ) ex;\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                throw new ServletException( ex );\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "protected void doGet(HttpServletRequest request,\n"
+#~ "                     HttpServletResponse response)\n"
+#~ "        throws ServletException, IOException {\n"
+#~ "\n"
+#~ "    SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy"
+#~ "\");\n"
+#~ "\n"
+#~ "    try {\n"
+#~ "        // Begin unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "        // Process request and render page...\n"
+#~ "\n"
+#~ "        // End unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().commit();\n"
+#~ "\n"
+#~ "    } catch (Exception ex) {\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().rollback();\n"
+#~ "        throw new ServletException(ex);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        // Write HTML header\n"
+#~ "        PrintWriter out = response.getWriter();\n"
+#~ "        out.println(\"<html><head><title>Event Manager</title></"
+#~ "head><body>\");\n"
+#~ "\n"
+#~ "        // Handle actions\n"
+#~ "        if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "            String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "            String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "            if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "                out.println(\"<b><i>Please enter event title and date.</"
+#~ "i></b>\");\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                createAndStoreEvent(eventTitle, dateFormatter.parse"
+#~ "(eventDate));\n"
+#~ "                out.println(\"<b><i>Added event.</i></b>\");\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        // Print page\n"
+#~ "       printEventForm(out);\n"
+#~ "       listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "       // Write HTML footer\n"
+#~ "       out.println(\"</body></html>\");\n"
+#~ "       out.flush();\n"
+#~ "       out.close();]]>"
+#~ msgstr ""
+#~ "// Write HTML header\n"
+#~ "PrintWriter out = response.getWriter();\n"
+#~ "out.println(\"&lt;html&gt;&lt;head&gt;&lt;title&gt;Event Manager&lt;/"
+#~ "title&gt;&lt;/head&gt;&lt;body&gt;\");\n"
+#~ "\n"
+#~ "// Handle actions\n"
+#~ "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "    String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "    String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "    if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Please enter event title and date."
+#~ "&lt;/i&gt;&lt;/b&gt;\");\n"
+#~ "    } else {\n"
+#~ "        createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Added event.&lt;/i&gt;&lt;/b&gt;"
+#~ "\");\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ "// Print page\n"
+#~ "printEventForm(out);\n"
+#~ "listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "// Write HTML footer\n"
+#~ "out.println(\"&lt;/body&gt;&lt;/html&gt;\");\n"
+#~ "out.flush();\n"
+#~ "out.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void printEventForm(PrintWriter out) {\n"
+#~ "        out.println(\"<h2>Add new event:</h2>\");\n"
+#~ "        out.println(\"<form>\");\n"
+#~ "        out.println(\"Title: <input name='eventTitle' length='50'/><br/>"
+#~ "\");\n"
+#~ "        out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' "
+#~ "length='10'/><br/>\");\n"
+#~ "        out.println(\"<input type='submit' name='action' value='store'/>"
+#~ "\");\n"
+#~ "        out.println(\"</form>\");\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void printEventForm(PrintWriter out) {\n"
+#~ "    out.println(\"&lt;h2&gt;Add new event:&lt;/h2&gt;\");\n"
+#~ "    out.println(\"&lt;form&gt;\");\n"
+#~ "    out.println(\"Title: &lt;input name='eventTitle' length='50'/&gt;&lt;"
+#~ "br/&gt;\");\n"
+#~ "    out.println(\"Date (e.g. 24.12.2009): &lt;input name='eventDate' "
+#~ "length='10'/&gt;&lt;br/&gt;\");\n"
+#~ "    out.println(\"&lt;input type='submit' name='action' value='store'/&gt;"
+#~ "\");\n"
+#~ "    out.println(\"&lt;/form&gt;\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void listEvents(PrintWriter out, SimpleDateFormat "
+#~ "dateFormatter) {\n"
+#~ "\n"
+#~ "        List result = HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().createCriteria(Event.class).list();\n"
+#~ "        if (result.size() > 0) {\n"
+#~ "            out.println(\"<h2>Events in database:</h2>\");\n"
+#~ "            out.println(\"<table border='1'>\");\n"
+#~ "            out.println(\"<tr>\");\n"
+#~ "            out.println(\"<th>Event title</th>\");\n"
+#~ "            out.println(\"<th>Event date</th>\");\n"
+#~ "            out.println(\"</tr>\");\n"
+#~ "            Iterator it = result.iterator();\n"
+#~ "            while (it.hasNext()) {\n"
+#~ "                Event event = (Event) it.next();\n"
+#~ "                out.println(\"<tr>\");\n"
+#~ "                out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
+#~ "                out.println(\"<td>\" + dateFormatter.format(event.getDate"
+#~ "()) + \"</td>\");\n"
+#~ "                out.println(\"</tr>\");\n"
+#~ "            }\n"
+#~ "            out.println(\"</table>\");\n"
+#~ "        }\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) "
+#~ "{\n"
+#~ "\n"
+#~ "    List result = HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().createCriteria(Event.class).list"
+#~ "();\n"
+#~ "    if (result.size() &gt; 0) {\n"
+#~ "        out.println(\"&lt;h2&gt;Events in database:&lt;/h2&gt;\");\n"
+#~ "        out.println(\"&lt;table border='1'&gt;\");\n"
+#~ "        out.println(\"&lt;tr&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event title&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event date&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;/tr&gt;\");\n"
+#~ "        for (Iterator it = result.iterator(); it.hasNext();) {\n"
+#~ "            Event event = (Event) it.next();\n"
+#~ "            out.println(\"&lt;tr&gt;\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + event.getTitle() + \"&lt;/td&gt;"
+#~ "\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + dateFormatter.format(event."
+#~ "getDate()) + \"&lt;/td&gt;\");\n"
+#~ "            out.println(\"&lt;/tr&gt;\");\n"
+#~ "        }\n"
+#~ "        out.println(\"&lt;/table&gt;\");\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected void createAndStoreEvent(String title, Date "
+#~ "theDate) {\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().save(theEvent);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "    Event theEvent = new Event();\n"
+#~ "    theEvent.setTitle(title);\n"
+#~ "    theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "    HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().save(theEvent);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+#~ "<web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun."
+#~ "com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
+#~ "\n"
+#~ "    <servlet>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <servlet-class>org.hibernate.tutorial.web.EventManagerServlet</"
+#~ "servlet-class>\n"
+#~ "    </servlet>\n"
+#~ "\n"
+#~ "    <servlet-mapping>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <url-pattern>/eventmanager</url-pattern>\n"
+#~ "    </servlet-mapping>\n"
+#~ "</web-app>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+#~ "&lt;web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n"
+#~ "        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\"&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;servlet-class&gt;events.EventManagerServlet&lt;/servlet-"
+#~ "class&gt;\n"
+#~ "    &lt;/servlet&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet-mapping&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;url-pattern&gt;/eventmanager&lt;/url-pattern&gt;\n"
+#~ "    &lt;/servlet-mapping&gt;\n"
+#~ "&lt;/web-app&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,541 @@
+# translation of Collection_Mapping.po to
+# Xi HUANG <xhuang at redhat.com>, 2007, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-01-18 15:42+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "XML マッピング"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is "
+"currently under active development. </emphasis>"
+msgstr ""
+"XML マッピングは Hibernate3.0 では試験的な機能であり、非常に活動的に開発中で"
+"す。"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "XML データでの作業"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to work with persistent XML data in much the same way "
+"you work with persistent POJOs. A parsed XML tree can be thought of as "
+"another way of representing the relational data at the object level, instead "
+"of POJOs."
+msgstr ""
+"Hibernate では永続性の POJO を使って作業するのとほぼ同じようなやり方で、永続"
+"性の XML データを使って作業できます。解析された XML ツリーは POJO の代わりに"
+"オブジェクトレベルで関係データを表わす別の方法であるとみなされています。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate は XML ツリーを操作するための API として dom4j をサポートしていま"
+"す。データベースから dom4j のツリーを復元するクエリを書くことができ、ツリーに"
+"対して行った修正は自動的にデータベースと同期されます。また XML ドキュメントを"
+"取得することができ、 dom4j を使ってドキュメントをパースし、 Hibernate の任意"
+"の基本操作を使ってデータベースへ書き込むことができます。: つまり、 "
+"<literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> "
+"操作です (マージはまだサポートしていません)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"データのインポート/エクスポート、 JMS によるエンティティデータの外部化や "
+"SOAP 、 XSLT ベースのレポートなど、この機能には多くの用途があります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single mapping can be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it can be used to map just the XML."
+msgstr ""
+"単一のマッピングは、クラスのプロパティと XML ドキュメントのノードを同時にデー"
+"タベースへマッピングするために使うことができます。またマッピングするクラスが"
+"なければ、 XML だけをマッピングするために使うことができます。"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "XML とクラスのマッピングを同時に指定する"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "これは POJO と XML を同時にマッピングする例です:"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "XML マッピングだけを指定する"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "これは POJO クラスがないマッピングの例です:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs or java <literal>Map</literal>s. The property "
+"names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+"このマッピングにより、 dom4j ツリーか、プロパティ名/値の組のグラフ(java の "
+"<literal>Map</literal>)としてデータにアクセスできます。プロパティの名前は、 "
+"HQL クエリ内で参照できる純粋な論理構造です。"
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "XML マッピングのメタデータ"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A range of Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This lets you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"多くの Hibernate のマッピング要素は <literal>node</literal> 属性が使用できま"
+"す。これにより XML 属性の名前やプロパティやエンティティデータを保持する要素を"
+"指定できます。 <literal>node</literal> 属性のフォーマットは以下の中の1つでな"
+"ければなりません:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr ""
+"<literal>\"element-name\"</literal> - 指定した XML 要素へマッピングします"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr ""
+"<literal>\"@attribute-name\"</literal> - 指定した XML 属性へマッピングします"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal> - 親要素へマッピングします"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal>: map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal> - 指定したエレメントの指"
+"定した属性へマッピングします"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will not appear at all."
+msgstr ""
+"コレクションと単一の値の関連に対して、おまけの <literal>embed-xml</literal> "
+"属性があります。デフォルトの <literal>embed-xml=\"true\"</literal> と設定した"
+"場合、関連するエンティティ (値型のコレクション) の XML ツリーは、直接関連を所"
+"有するエンティティの XML ツリー内に埋め込まれます。反対に、 <literal>embed-"
+"xml=\"false\"</literal> と設定した場合、参照される識別子の値だけが多重度1側"
+"の関連に対する XML に現れ、単純にコレクションはまったく現れなくなります。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not leave <literal>embed-xml=\"true\"</literal> for too many "
+"associations, since XML does not deal well with circularity."
+msgstr ""
+"あまりに多くの関連に対して <literal>embed-xml=\"true\"</literal> としたままに"
+"するのは注意すべきです。 XML は循環をうまく扱えません。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this case, the collection of account ids is embedded, but not the actual "
+"account data. The following HQL query:"
+msgstr ""
+"この例では、実際の account のデータではなく、 account の id のコレクションを"
+"埋め込むことにしました。続きの HQL クエリです:"
+
+#. Tag: para
+#, no-c-format
+msgid "would return datasets such as this:"
+msgstr "このようなデータセットを返すでしょう:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
+"many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> マッピングで <literal>embed-xml=\"true"
+"\"</literal> と設定した場合、データはこのようになるでしょう。"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "XML データを扱う"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also re-read and update XML documents in the application. You can do "
+"this by obtaining a dom4j session:"
+msgstr ""
+"XML ドキュメントを、アプリケーション内で再読み込みや更新をしてみましょう。以"
+"下では dom4j のセッションを取得することで行います:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When implementing XML-based data import/export, it is useful to combine this "
+"feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+"XML ベースのデータのインポート/エクスポートを実装するために、 Hibernate の "
+"<literal>replicate()</literal> 操作をこの機能に結びつけるのは極めて有効です。"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/&gt;\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/&gt;\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\">\n"
+#~ "        <key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/>\n"
+#~ "        <map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/>\n"
+#~ "        <one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/>\n"
+#~ "    </map>\n"
+#~ "    \n"
+#~ "    <component name=\"name\" \n"
+#~ "            node=\"name\">\n"
+#~ "        <property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/>\n"
+#~ "        <property name=\"initial\" \n"
+#~ "                node=\"initial\"/>\n"
+#~ "        <property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\"&gt;\n"
+#~ "        \n"
+#~ "    &lt;id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/&gt;\n"
+#~ "            \n"
+#~ "    &lt;map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\"&gt;\n"
+#~ "        &lt;key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/&gt;\n"
+#~ "        &lt;map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/&gt;\n"
+#~ "        &lt;one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/&gt;\n"
+#~ "    &lt;/map&gt;\n"
+#~ "    \n"
+#~ "    &lt;component name=\"name\" \n"
+#~ "            node=\"name\"&gt;\n"
+#~ "        &lt;property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/&gt;\n"
+#~ "        &lt;property name=\"initial\" \n"
+#~ "                node=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/&gt;\n"
+#~ "    &lt;/component&gt;\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Customer c left join fetch c.accounts where c.lastName "
+#~ "like :lastName]]>"
+#~ msgstr ""
+#~ "from Customer c left join fetch c.accounts where c.lastName like :lastName"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account short-desc=\"Savings\">987632567</account>\n"
+#~ "    <account short-desc=\"Credit Card\">985612323</account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "&lt;customer id=\"123456789\"&gt;\n"
+#~ "    &lt;account short-desc=\"Savings\"&gt;987632567&lt;/account&gt;\n"
+#~ "    &lt;account short-desc=\"Credit Card\"&gt;985612323&lt;/account&gt;\n"
+#~ "    &lt;name&gt;\n"
+#~ "        &lt;first-name&gt;Gavin&lt;/first-name&gt;\n"
+#~ "        &lt;initial&gt;A&lt;/initial&gt;\n"
+#~ "        &lt;last-name&gt;King&lt;/last-name&gt;\n"
+#~ "    &lt;/name&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/customer&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account id=\"987632567\" short-desc=\"Savings\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>100.29</balance>\n"
+#~ "    </account>\n"
+#~ "    <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>-2370.34</balance>\n"
+#~ "    </account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "&lt;customer id=\"123456789\"&gt;\n"
+#~ "    &lt;account id=\"987632567\" short-desc=\"Savings\"&gt;\n"
+#~ "        &lt;customer id=\"123456789\"/&gt;\n"
+#~ "        &lt;balance&gt;100.29&lt;/balance&gt;\n"
+#~ "    &lt;/account&gt;\n"
+#~ "    &lt;account id=\"985612323\" short-desc=\"Credit Card\"&gt;\n"
+#~ "        &lt;customer id=\"123456789\"/&gt;\n"
+#~ "        &lt;balance&gt;-2370.34&lt;/balance&gt;\n"
+#~ "    &lt;/account&gt;\n"
+#~ "    &lt;name&gt;\n"
+#~ "        &lt;first-name&gt;Gavin&lt;/first-name&gt;\n"
+#~ "        &lt;initial&gt;A&lt;/initial&gt;\n"
+#~ "        &lt;last-name&gt;King&lt;/last-name&gt;\n"
+#~ "    &lt;/name&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/customer&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i&lt;results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i&lt;results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,214 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,19 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ja-JP/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,78 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr "Legal Notice"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, "
+"<state>NC</state><postcode>27606-2072</postcode><country>USA</country> "
+"<phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> "
+"<fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research "
+"Triangle Park</city>, <state>NC</state><postcode>27709</"
+"postcode><country>USA</country> </address>"
+msgstr ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</"
+"state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 "
+"919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 "
+"3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, "
+"<state>NC</state><postcode>27709</postcode><country>USA</country> </address>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc.  "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+msgstr ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+msgstr ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr "The GPG fingerprint of the security at redhat.com key is:"
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,29 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-02-04T04:51:21\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#~ msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+#~ msgstr "HIBERNATE - 개성있는 자바를 위한 관계 영속"
+
+#~ msgid "Hibernate Reference Documentation"
+#~ msgstr "하이버네이트 참조 문서"
+
+#~ msgid "&copyrightHolder;"
+#~ msgstr "&copyrightHolder;"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,30 @@
+# 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: 2010-02-11T05:38:14\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
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,149 @@
+# Language ko-KR translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2009-07-14 19:55+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr ""
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr ""
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,590 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-01-12 20:35+0900\n"
+"Last-Translator: Jongdae Kim <jdkim528 at korea.com>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "아키텍처"
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "개요"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr "아래 다이어그램은 Hibernate 아키텍처에 대한 높은 수준의 뷰를 제공한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We do not have the scope in this document to provide a more detailed view of "
+"all the runtime architectures available; Hibernate is flexible and supports "
+"several different approaches. We will, however, show the two extremes: "
+"\"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+"우리가 이용 가능한 모든 런타임 아키텍처들에 대한 보다 상세한 개요를 제공하는 "
+"것은 이 문서의 범위를 넘어선다; Hibernate는 유연하며 몇몇 다른 접근법들을 제"
+"공한다. 하지만 우리는 두 가지 극단을 보여줄 것이다. \"최소\" 아키텍처와 \"종"
+"합\" 아키텍처."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This next diagram illustrates how Hibernate utilizes database and "
+"configuration data to provide persistence services, and persistent objects, "
+"to the application."
+msgstr ""
+"이 다음 다이어그램은  하이버네이트가 영속화 서비스들과 영속 객체들을 어플리케"
+"이션에 제공하기 위해 데이터베이스와 컨피그레이션 데이터를 어떻게 이용하는지"
+"를 설명한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"minimal\" architecture has the application provide its own JDBC "
+"connections and manage its own transactions. This approach uses a minimal "
+"subset of Hibernate's APIs:"
+msgstr ""
+"\"최소\" 아키텍처는 어플리케이션으로 하여금 그것 자신의 JDBC 커넥션들을 가지"
+"고 그것 자신의 트랜잭션들을 관리하도록 한다. 이 접근법은 하이버네이트 API의 "
+"최소 부분집합을 사용한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"comprehensive\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+"\"종합\" 아키텍처는 기본 JDBC/JTA로부터 어플리케이션을 추상화 시키고 "
+"Hibernate로 하여금 세부적인 것을 관리하도록 한다."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr "다음은 다이어그램에 도해되어 있는 객체들에 대한 몇가지 정의들이다:"
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A threadsafe, immutable cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can "
+"hold an optional (second-level) cache of data that is reusable between "
+"transactions at a process, or cluster, level."
+msgstr ""
+"단일 데이터베이스에 대해 컴파일된 매핑들에 관한 쓰레드안전한, 불변 캐시. "
+"<literal>Session</literal>을 위한 팩토리와 <literal>ConnectionProvider</"
+"literal>, <literal>SessionFactory</literal>의 클라이언트는 프로세스 레벨 또"
+"는 클러스터 레벨에서 트랜잭션들 사이에 재사용이 가능한 데이터에 대한 선택적"
+"인 (second-level) 캐시를 보유할 수 있다."
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. It wraps a JDBC connection and is "
+"a factory for <literal>Transaction</literal>. <literal>Session</literal> "
+"holds a mandatory first-level cache of persistent objects that are used when "
+"navigating the object graph or looking up objects by identifier."
+msgstr ""
+"어플리케이션과 영속 저장소 사이의 대화를 표현하는 단일 쓰레드이면서 수명이 짧"
+"은 객체. 그것은 JDBC 커넥션을 포장하며, <literal>Transaction</literal>을 위"
+"한 팩토리이다. <literal>Session</literal>은 객체 그래프를 네비게이트 하거나 "
+"식별자로서 객체들을 탐색할 때 사용되는 영속 객체들에 대한 필수적인 첫 번째 레"
+"벨 캐시를 보유하고 있다."
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "영속 객체들과 콜렉션들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These can be ordinary JavaBeans/POJOs. They are "
+"associated with exactly one <literal>Session</literal>. Once the "
+"<literal>Session</literal> is closed, they will be detached and free to use "
+"in any application layer (for example, directly as data transfer objects to "
+"and from presentation)."
+msgstr ""
+"영속 상태와 비지니스 기능을 포함하는 수명이 짧은, 단일 쓰레드 객체들. 이것들"
+"은 통상의 자바빈즈/POJO들일 수 있다. 그것들은 정확히 한 개의 "
+"<literal>Session</literal>과 연관지워진다. <literal>Session</literal>이 닫히"
+"는 순간, 그것들은 분리될 것이고 임의의 어플리케이션 계층에서 사용이 자유로워"
+"진다(예를 들면. 직접적으로 프리젠테이션 계층 사이의 데이터 전송 객체들로서)."
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "전이(Transient, 필자 주-과도) 객체들과 콜렉션들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not yet persisted, or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"현재 <literal>Session</literal>과 연관되어 있지 않은 영속 클래스들의 인스턴스"
+"들. 그것들은 어플리케이션에 의해 초기화 되었고 아직 영속화 되지 않았거나 그것"
+"들은 닫힌 <literal>Session</literal>에 의해 초기화 되었을 수 있다."
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. It abstracts the application from the "
+"underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> "
+"might span several <literal>Transaction</literal>s in some cases. However, "
+"transaction demarcation, either using the underlying API or "
+"<literal>Transaction</literal>, is never optional."
+msgstr ""
+"(옵션) 어플리케이션에 의해 작업의 원자 단위를 지정하는데 사용되는 단일 쓰레드"
+"인, 수명이 짧은 객체. 그것은 기본 JDBC, JTA 또는 CORBA 트랜잭션으로부터 어플"
+"리케이션을 추상화 시킨다. 몇몇 경우들에서 하나의 <literal>Session</literal>"
+"은 여러 개의 <literal>Transaction</literal>들에 걸쳐져 있을 수 있다. 하지만 "
+"기본 API 또는 <literal>Transaction</literal> 중 어느것을 사용하는 트랜잭션 경"
+"계 설정은 결코 옵션이 아니다."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for, and pool of, JDBC connections. It abstracts the "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. It is not exposed to application, but it "
+"can be extended and/or implemented by the developer."
+msgstr ""
+"(옵션) JDBC 연결들을 위한 팩토리, 그리고 그것들의 pool. 그것은 기본 "
+"<literal>Datasource</literal> 또는 <literal>DriverManager</literal>로부터 어"
+"플리케이션을 추상화 시킨다. 그것은 어플리케이션에 노출되지 않지만, 그것은 개"
+"발자에 의해 확장 그리고/또는 구현 될 수 있다."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. It is not "
+"exposed to the application, but it can be extended and/or implemented by the "
+"developer."
+msgstr ""
+"(옵션) <literal>Transaction</literal> 인스턴스들을 위한 팩토리. 그것은 어플리"
+"케이션에 노출되지 않지만, 그것은  개발자에 의해 확장 그리고/또는 구현 될 수 "
+"있다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "Extension Interfaces"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers a range of optional extension interfaces you can implement "
+"to customize the behavior of your persistence layer. See the API "
+"documentation for details."
+msgstr ""
+"하이버네이트는 당신이 당신의 영속 계층의 행위를 맞춤화 시키기 위해 구현할 수 "
+"있는 선택적인 확장 인터페이스들의 영역을 제공한다. 상세한 것은 API 문서를 보"
+"라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Given a \"minimal\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC "
+"directly."
+msgstr ""
+"\"최소\" 아키텍처의 경우, 어플리케이션은 JTA 또는 JDBC와 직접 통신하기 위해 "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> 그리고/"
+"또는 <literal>ConnectionProvider</literal> API들을 무시한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "인스턴스 상태들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of a persistent class can be in one of three different states. "
+"These states are defined in relation to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context. The three different states are as follows:"
+msgstr ""
+"영속 클래스들의 인스턴스는 세개의 상태들 중 하나에 놓여질 수 있다. 이들 상태"
+"들은 <emphasis>영속 컨텍스트</emphasis>에 관련하여 정의된다. 하이버네이트 "
+"<literal>Session</literal> 객체는 영속 컨텍스트이다. 세 개의 다른 상태들은 다"
+"음과 같다:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "transient"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is not associated with any persistence context. It has no "
+"persistent identity or primary key value."
+msgstr ""
+"그 인스턴스는 임의의 영속 컨텍스트와 연관지워져 있지 않다. 그것은 영속 식별"
+"자 또는 프라이머리 키 값을 갖지 않는다."
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "persistent"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and can have a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity in relation to the in-memory location of the object."
+msgstr ""
+"그 인스턴스는 현재 영속 컨텍스트와 연관되어 있다. 그것은 영속 식별자(프라이머"
+"리 키 값)을 갖고 있고 데이터베이스 내에서 하나의 대응하는 행을 가질 수 있다. "
+"특정 영속 컨텍스트의 경우, 하이버네이트는 영속 식별자가 객체의 메모리 내 위치"
+"에 관하여 자바 식별자와 동등함을 <emphasis>보증한다</emphasis>."
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "detached"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and can have a corresponding row in the database. "
+"For detached instances, Hibernate does not guarantee the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"그 인스턴스는 일단 영속 컨텍스트와 연관되었지만, 그 컨텍스트가 닫혀졌거나, 또"
+"는 그 인스턴스가 또 다른 프로세스에 직렬화 되었다. 그것은 영속 식별자를 갖고 "
+"있으며, 데이터베이스 내에서 하나의 대응하는 행을 가질 수 있다. 분리된 인스턴"
+"스들의 경우, 하이버네이트는 영속 식별자와 자바 식별자 사이의 관계를 보증하지 "
+"않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "JMX 통합"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for the management of Java components. Hibernate "
+"can be managed via a JMX standard service. AN MBean implementation is "
+"provided in the distribution: <literal>org.hibernate.jmx.HibernateService</"
+"literal>."
+msgstr ""
+"JMX는 자바 컴포넌트 관리를 위한 J2EE 표준이다. 하이버네이트는 JMX 표준 서비스"
+"를 통해 관리될 수 있다. 하나의 MBean 구현이 배포본 내에 제공된다: "
+"<literal>org.hibernate.jmx.HibernateService</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For an example of how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. JBoss AS also provides "
+"these benefits if you deploy using JMX:"
+msgstr ""
+"JBoss 어플리케이션 서버 상에 JMX 서비스로서 하이버네이트를 배포하는 방법에 대"
+"한 예제는 JBoss 사용자 가이드를 보길 바란다. 당신이 JMX를 사용하여 배포할 경"
+"우, JBoss AS는 또한 다음 이점들을 제공한다: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means that you no longer have to manually open and close "
+"the <literal>Session</literal>; this becomes the job of a JBoss EJB "
+"interceptor. You also do not have to worry about transaction demarcation in "
+"your code (if you would like to write a portable persistence layer use the "
+"optional Hibernate <literal>Transaction</literal> API for this). You call "
+"the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>세션 관리</emphasis>: 하이버네이트 <literal>Session</literal>의 생"
+"명주기는 JTA 트랜잭션의 영역에 자동적으로 묶여질 수 있다. 이것은 당신이 "
+"<literal>Session</literal>을 더 이상 수작업으로 열거나 닫지 않아도 됨을 의미"
+"한다; 이것은 JBoss 인터셉터의 작업이 된다. 당신은 또한 더 이상 당신의 코드 내"
+"에서 트랜잭션 격리에 대해 걱정하지 않아도 된다(만일 당신이 이식가능한 영속 계"
+"층을 작성하고자 원할 경우 이것을 위해 선택적으로 하이버네이트 "
+"<literal>Transaction</literal> API를 사용하라). 당신은 <literal>Session</"
+"literal>에 접근하기 위해 <literal>HibernateContext</literal>를 호출한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed "
+"using a JBoss service deployment descriptor in an EAR and/or SAR file, as it "
+"supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still need to name all your "
+"mapping files in the deployment descriptor. If you use the optional HAR "
+"deployment, JBoss will automatically detect all mapping files in your HAR "
+"file."
+msgstr ""
+"<emphasis>HAR 배포</emphasis>: JBoss가 하이버네이트 <literal>SessionFactory</"
+"literal>의 거의 모든 구성 옵션들을 지원하므로, 하이버네이트 JMS 서비스는 "
+"JBoss 서비스 배포 디스크립터를 사용하여 EAR 그리고/또는 SAR 파일로서 배포된"
+"다. 하지만 당신은 여전히 배포 디스크립터 내에 모든 당신의 매핑 파일들을 명명"
+"할 필요가 있다. 만일 당신이 선택적인 HAR 배포를 사용할 경우, JBoss는 당신의 "
+"HAR 파일 내에 있는 모든 매핑 파일들을 자동적으로 검출할 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"이들 옵션들에 대한 추가 정보는 JBoss 어플리케이션 서버 사용자 가이드를 참조하"
+"라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another feature available as a JMX service is runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\" /> for more "
+"information."
+msgstr ""
+"JMX 서비스로서 이용 가능한 또다른 특징은 런타임 하이버네이트 통계이다. 부가 "
+"정보는 <xref linkend=\"configuration-optional-statistics\"/>를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "JCA 지원"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also be configured as a JCA connector. Please see the website "
+"for more information. Please note, however, that at this stage Hibernate JCA "
+"support is under development."
+msgstr ""
+"하이버네이트는 또한 JCA 커넥터로서 구성될 수도 있다. 부가 정보는 웹 사이트를 "
+"보길 바란다. 하지만 현 단게에서 하이버네이트 JCA 지원은 개발 중에 있음을 염두"
+"에 두길 바란다."
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr "컨텍스트의 세션들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" session, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks, such as Spring or Pico, which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"하이버네이트를 사용하는 대부분의 어플리케이션들은 \"컨텍스트상의(contextual)"
+"\" 세션에 대한 어떤 형식을 필요로 하며, 여기서 주어진 세션은 주어진 컨텍스트"
+"의 영역 내에서 효과가 있다. 하지만 어플리케이션들을 가로질러 어던 컨텍스트를 "
+"구성하는 것에 대한 정의는 일반적으로 다르다; 그리고 다른 컨텍스트들이 현재라"
+"고 하는 개념에 대해 다른 영역들을 정의한다. 버전 3.0 이전의 하이버네이트를 사"
+"용하는 어플리케이션들은 <literal>HibernateUtil</literal>과 같은 helper 클래스"
+"들인, 자가생산된 <literal>ThreadLocal</literal>-기반의 컨텍스트 세션들을 활용"
+"하려고 했거나, 프락시/인터셉션 기반의 컨텍스트 세션들을 제공해주었던, Spring"
+"이나 Pico와 같은 제 3의 프레임웍들을 활용했다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. Given "
+"the maturity of the numerous stand-alone <literal>JTA TransactionManager</"
+"literal> implementations, most, if not all, applications should be using "
+"<literal>JTA</literal> transaction management, whether or not they are "
+"deployed into a <literal>J2EE</literal> container. Based on that, the "
+"<literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+"버전 3.0.1에서부터, 하이버네이트는 <literal>SessionFactory.getCurrentSession"
+"()</literal> 메소드를 추가했다. 초기에 이것은 <literal>JTA</literal> 트랜잭"
+"션 사용을 전제했으며, <literal>JTA</literal> 트랜잭션은 현 세션의 영역 및 컨"
+"텍스트 둘 다 정의했다. 많은 스탠드얼론 <literal>JTA TransactionManager</"
+"literal> 구현들이 성숙되면, 전부는 아니겠지만, 대부분의 어플리케이션들이 "
+"<literal>J2EE</literal> 컨테이너 내로 배포되든 그렇지 않든 간에 대부분의 어플"
+"리케이션들이 <literal>JTA</literal> 트랜잭션 관리를 사용하게 될 것이다. 그것"
+"에 기초하면, <literal>JTA</literal>에 기반한 컨텍스트 세션들은 당신이 사용할 "
+"필요가 있는 모든 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, "
+"and a new configuration parameter, <literal>hibernate."
+"current_session_context_class</literal>, have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"하지만 현재 버전 3.1에서  <literal>SessionFactory.getCurrentSession()</"
+"literal> 이면의 처리과정이 이제 플러그 가능하다. 그것으로 인해, 하나의 새로"
+"운 확장 인터페이스, <literal>org.hibernate.context.CurrentSessionContext</"
+"literal>)와 하나의 새로운 구성 파라미터, <literal>hibernate."
+"current_session_context_class</literal>가 현재 세션들을 정의하는 영역 및 컨텍"
+"스트의 플러그 가능성을 허용하도록 추가되었다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface:"
+msgstr ""
+"그것의 계약에 대한 상세한 논의는 <literal>org.hibernate.context."
+"CurrentSessionContext</literal> 인터페이스에 관한 javadocs를 보라. 그것은 하"
+"나의 메소드, <literal>currentSession()</literal>를 정의하며, 그 구현은 현재"
+"의 컨텍스트 상의 세션을 추적할 책임이 있다. 비공식적으로, Hibernate는 이 인터"
+"페이스에 대한 세 개의 구현들을 부수적으로 포함하고 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: current sessions "
+"are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: 현재 세션들은 "
+"<literal>JTA</literal> 트랜잭션에 의해 추적되고 영역화 된다. 여기서 처리는 예"
+"전의 JTA-전용 접근법과 정확하게 같다. 상세한 것은 Javadocs를 보라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current "
+"sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> :현재 세션"
+"들은 실행 쓰레드에 의해 추적된다. 상세한 것은 다시 javadocs를 보라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal> : 현재 세션들"
+"은 실행 쓰레드에 의해 추적된다. 하지만 <literal>Session</literal> 인스턴스를 "
+"이 클래스 상에 있는 static 메소드들에 바인딩시키고 언바인딩 시킬 책임이 당신"
+"에게 있다: 그것은 <literal>Session</literal>을 열지도 flush 시키거나 닫지 않"
+"는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model. This is also also known and used as "
+"<emphasis>session-per-request</emphasis>. The beginning and end of a "
+"Hibernate session is defined by the duration of a database transaction. If "
+"you use programmatic transaction demarcation in plain JSE without JTA, you "
+"are advised to use the Hibernate <literal>Transaction</literal> API to hide "
+"the underlying transaction system from your code. If you use JTA, you can "
+"utilize the JTA interfaces to demarcate transactions. If you execute in an "
+"EJB container that supports CMT, transaction boundaries are defined "
+"declaratively and you do not need any transaction or session demarcation "
+"operations in your code. Refer to <xref linkend=\"transactions\" /> for more "
+"information and code examples."
+msgstr ""
+"첫 두 개의 구현들은 \"한 개의 세션 - 한 개의 데이터베이스 트랜잭션\" 프로그래"
+"밍 모형을 제공한다. 이것은 또한  <emphasis>요청 당 세션</emphasis>으로 알려"
+"져 있고 사용된다. 하이버네이트 세션의 시작과 끝은 데이터베이스 트랜잭션의 존"
+"속 기간에 의해 정의된다. 만일 당신이 JTA없이 평범한 JSE에서 프로그램 상의 트"
+"랜잭션 격리를 사용할 경우, 당신에게 당신의 코드에서 기본 트랜잭션 시스템을 은"
+"폐시키는데 하이버네이트 <literal>Transaction</literal> API를 사용하도록 권장"
+"된다.만일 당신이 CMT를 지원하는 EJB 컨테이너 내에서 실행할 경우, 트랜잭션 경"
+"계들은 선언적으로 정의되며 당신이 당신의 코드에 임의의 트랜잭션 또는 세션 경"
+"계설정 오퍼레이션을 필요로 하지 않는다. 만일 당신이 CMT를 지원하는 하나의 "
+"EJB 컨테이너에서 실행할 경우, 트랜잭션 경계들이 선언적으로 정의되고 당신은 당"
+"신의 코드 내에서 어떠한 트랜잭션이나 세션 경계구분 오퍼레이션들을 필요로 하"
+"지 않는다. 부가 정보와 코드 예제들은 <xref linkend=\"transactions\"/>를 참조"
+"하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. For backwards "
+"compatibility, if this configuration parameter is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use. For the three out-of-the-box implementations, "
+"however, there are three corresponding short names: \"jta\", \"thread\", and "
+"\"managed\"."
+msgstr ""
+"<literal>hibernate.current_session_context_class</literal> 구성 파라미터는 어"
+"느 <literal>org.hibernate.context.CurrentSessionContext</literal> 구현이 사용"
+"될 것인지를 정의한다. 역호환을 위해. 만일 이 구성 파라미터가 설정되지 않지만 "
+"하나의 <literal>org.hibernate.transaction.TransactionManagerLookup</literal>"
+"이 구성되는 경우에, 하이버네이트는 <literal>org.hibernate.context."
+"JTASessionContext</literal>를 사용할 것이다. 일반적으로, 이 파라미터의 값은 "
+"단지 사용할 구현 클래스를 명명할 것이다; 하지만 세 개의 비공식적인 구현들에 "
+"대해, 세 개의 대응하는 짧은 이름들 \"jta\"와 \"thread\", 그리고 \"managed"
+"\"가 존재한다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1118 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-01-12 20:59+0900\n"
+"Last-Translator: Jongdae Kim <jdkim528 at korea.com>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "연관 매핑들"
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "개요"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"연관 매핑들은 종종 정확하게 구현하는 것이 가장 어려운 것이다. 이 절에서 우리"
+"는 단방향 매핑들에서 시작하여, 양방향 매핑의 경우까지 하나씩 몇몇 정규적인 경"
+"우들을 논의할 것이다. 우리는 모든 예제들에서 <literal>Person</literal>과 "
+"<literal>Address</literal>를 사용할 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"연관들은 다가성 그리고 중재하는 join 테이블로 매핑시킬 것인지 여부에 따라 분"
+"류될 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"널값이 허용되는 외래 키들은 전통적인 데이터 모델링에서 좋은 사례로 간주되지 "
+"않으므로, 우리의 예제들은 널 값이 허용되는 외래 키들을 사용하지 않는다. 이것"
+"은 하이버네이트의 사양이 아니며, 당신이 널 허용 컨스트레인트들을 드롭시킬 경"
+"우에 매핑들이 동작할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "단방향 연관들"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "다-대-일"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"<emphasis>단방향 many-to-one 연관</emphasis>은 가장 공통적인 종류의 단방향 연"
+"관이다."
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "일-대-일"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"<emphasis>foreign 키에 대한 단방향 one-to-one 연관은 대개 아주 동일하다.</"
+"emphasis> 유일한 차이점은 컬럼 유일(unique) 컨스트레인트이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"<emphasis>프라이머리 키에 대한 단방향 일-대-일 연관</emphasis>은 대개 특별한 "
+"id 생성자를 사용한다. 하지만 이 예제에서 우리는 연관의 방향을 역전시켰다:"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many"
+msgstr "일-대-다 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"<emphasis>외래 키에 대한 단방향 일-대-다 연관</emphasis>은 색다른 경우이며, "
+"권장되지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr ""
+"대신에 당신은 이런 종류의 연관에 대해 하나의 join 테이블을 사용해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "join 테이블들에 대한 단방향 연관들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"<emphasis>join 테이블에 대한 단방향 일-대-다 연관</emphasis>은 선호되는 옵션"
+"이다. <literal>unique=\"true\"</literal>를 지정하여, 다-대-다에서 일-대-다로 "
+"다중값을 변경시켜라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"<emphasis>join 테이블에 대한 단방향 다-대-일 연관</emphasis>은 그 연관이 선택"
+"적일 때 공통적이다. 예를 들면:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>join 테이블에 대한 단방향 일-대-일 연관</emphasis>은 가능하지만, 극"
+"히 통상적이지 않다."
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many"
+msgstr "다-대-다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr ""
+"마지막으로, 다음은 <emphasis>단방향 다-대-다 연관</emphasis>에 대한 예제이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "양방향 연관들"
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "일-대-다 / 다-대-일"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"<emphasis>양방향 다-대-일 연관</emphasis>은 가장 공통된 종류의 연관이다. 다"
+"음 예제는 표준 부모/자식 관계를 설명한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"만일 당신이 <literal>List</literal>, 또는 다른 인덱싱 된 콜렉션을 사용할 경"
+"우, 외래 키의 <literal>key</literal> 컬럼을 <literal>not null</literal>로 설"
+"정하라. 하이버네이트는 각각의 요소의 인덱스를 관리하기 위해 <literal>update="
+"\"false\"</literal>와 <literal>insert=\"false\"</literal>를 설정하여 다른 측"
+"을 가상적으로 역행시킴으로서 콜렉션들 측에서 그 연관을 관리할 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"만일 기본 외래 키 컬럼이 <literal>NOT NULL</literal>일 경우, 당신이 콜렉션 매"
+"핑의 <literal>&lt;key&gt;</literal>에 <literal>not-null=\"true\"</literal>를 "
+"정의하는 것이 중요하다. <literal>not-null=\"true\"</literal>를  가능한 내포"
+"된 <literal>&lt;column&gt;</literal> 요소 뿐만 아니라, <literal>&lt;key&gt;</"
+"literal> 요소 상에도 선언하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr "<emphasis>외래 키에 대한 양방향일-대-일 연관</emphasis>은 공통적이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"<emphasis>프라이머리 키에 대한 양방향 일-대-일 연관</emphasis>은 특별한 id 생"
+"성자를 사용한다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "join 테이블들에 대한 양방향 연관들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"다음은 <emphasis>join 테이블에 대한 양방향 일-대-다 연관</emphasis>에 대한 예"
+"제이다. <literal>inverse=\"true\"</literal>는 연관의 어느 측이든지, 콜렉션 측"
+"에도, 또는 join 측에도 쓸 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "one to one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>join 테이블에 대한 양방향 일-대-일 연관</emphasis>이 가능하지만, 극"
+"히 통상적이지 않다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr "이것은 <emphasis>양방향 다-대-다 연관</emphasis>에 대한 예제이다."
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "보다 복잡한 연관 매핑들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"보다 복잡한 연관 join들은 <emphasis>극히</emphasis> 드물다. 하이버네이트는 매"
+"핑 문서들 내에 삽입된 SQL 조각들을 사용하여 보다 복잡한 상황들을 처리한다. 예"
+"를 들어, 만일 계좌 내역 정보 데이터를 가진 테이블이 <literal>accountNumber</"
+"literal>, <literal>effectiveEndDate</literal> 그리고 "
+"<literal>effectiveStartDate</literal> 컬럼들을 정의하고 있다면, 그것은 다음"
+"과 같이 매핑될 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"그때 당신은 다음을 사용하여 하나의 연관을 널이 허용되는 "
+"<literal>effectiveEndDate</literal>를 가진, <emphasis>current</emphasis> 인스"
+"턴스에 매핑시킬 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"보다 복잡한 예제에서, <literal>Employee</literal>와 <literal>Organization</"
+"literal> 사이의 연관이 전체 고용 내역 데이터를 가진 <literal>Employment</"
+"literal> 테이블 내에 유지된다고 가정하자. 종업원의 <emphasis>가장 최근의</"
+"emphasis> 고용주에 대한 연관, 가장 최근의 <literal>startDate</literal>를 가"
+"진 연관이 다음 방법으로 매핑될 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"이 기능은 생산성과 유연성 제고를 허용하지만, HQL이나 criteria 질의를 사용하"
+"여 이들 종류의 경우들을 처리하는 것이 보다 실용적이다."
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,4381 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "기본 O/R 매핑"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "매핑 선언"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations and not table declarations."
+msgstr ""
+"객체/관계형 매핑들은 대개 XML 문서 내에 정의된다. 매핑 문서는 가독성이 있고 "
+"수작업 편집이 가능하도록 설계되어 있다. 매핑 언어는 매핑들이 테이블 선언들이 "
+"아닌, 영속 클래스 선언들로 생성된다는 의미에서 자바 중심적이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that even though many Hibernate users choose to write the XML by "
+"hand, a number of tools exist to generate the mapping document. These "
+"include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+"심지어 많은 Hibernate 사용자들이 수작업으로 XML을 작성하고자 선택할지라도, "
+"XDoclet, Middlegen, 그리고 AndroMDA를 포함하는, 매핑 문서를 생성시키는 많은 "
+"도구들이 존재한다는 점을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is an example mapping:"
+msgstr "예제 매핑으로 시작하자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe, however, the document elements and attributes that are used by "
+"Hibernate at runtime. The mapping document also contains some extra optional "
+"attributes and elements that affect the database schemas exported by the "
+"schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+"우리는 이제 매핑 문서의 내용을 논의할 것이다. 우리는 Hibernate에 의해 실행 시"
+"에 사용되는 문서 요소들과 속성들 만을 설명할 것이다. 매핑 문서는 또한 스키마 "
+"내보내기 도구에 의해 내보내진 데이터베이스 스키마에 영향을 주는 어떤 특별한 "
+"옵션 속성들과 요소들을 포함한다. (예를 들어 <literal>not-null</literal> 속"
+"성.)"
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD can be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate "
+"will always look for the DTD in its classpath first. If you experience "
+"lookups of the DTD using an Internet connection, check the DTD declaration "
+"against the contents of your classpath."
+msgstr ""
+"모든 XML 매핑들은 doctype이 보이게 선언해야 한다. 실제 DTD는 위의 URL에서, "
+"<literal>hibernate-x.x.x/src/org/hibernate</literal> 디렉토리 내에서 또는 "
+"<literal>hibernate3.jar</literal> 내에서 찾을 수 있다. Hibernate는 항상 첫 번"
+"째로 그것의 classpath 속에서 DTD를 찾게 될 것이다. 만일 당신이 인터넷 연결을 "
+"사용하는 DTD에 대한 룩업들을 겪게 될 경우, 당신의 classpath의 컨텐츠에 대해 "
+"당신의 DTD 선언을 체크하라."
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "EntityResolver"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will first attempt to resolve DTDs in its classpath. It does this "
+"is by registering a custom <literal>org.xml.sax.EntityResolver</literal> "
+"implementation with the SAXReader it uses to read in the xml files. This "
+"custom <literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces:"
+msgstr ""
+"앞서 언급했듯이, Hibernate는 먼저 그것의 classpath에서 DTD들을 해석하려고 시"
+"도할 것이다. Hibernate가 이것을 행하는 방법은 그것이 xml 파일들을 읽어들이는"
+"데 사용하는 SAXReader에 맞춤형 <literal>org.xml.sax.EntityResolver</literal> "
+"구현을 등록하는 것이다. 이 맞춤형 <literal>EntityResolver</literal>는 두 개"
+"의 다른 systemId namespace들을 인지해낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounters a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>. The resolver attempts to resolve these entities via the "
+"classloader which loaded the Hibernate classes."
+msgstr ""
+"<literal>hibernate namespace</literal>는 resolver가 <literal>http://"
+"hibernate.sourceforge.net/</literal>로 시작하는 하나의 systemId와 만날때마다 "
+"인지된다; resolver는 Hibernate 클래스들을 로드시켰던 클래스로더를 통해 이들 "
+"엔티티들을 해석하려고 시도한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounters a systemId using a <literal>classpath://</literal> URL protocol. "
+"The resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"<literal>user namespace</literal>는 resolver가 <literal>classpath://</"
+"literal> URL 프로토콜을 사용하는 systemId를 만날때마다 인지된다; resolver는 "
+"(1)현재 쓰레드 컨텍스트 클래스로더와 (2)Hibernate 클래스들을 로드시켰던 클래"
+"스로더를 통해 이들 엔티티들을 해석하려고 시도할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "user namespacing을 활용하는 예제:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"여기서 <literal>types.xml</literal>은 <literal>your.domain</literal> 패키지 "
+"내에 있는 리소스이고 맞춤형 <xref linkend=\"mapping-types-custom\">typedef</"
+"xref>를 포함한다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Hibernate-mapping"
+msgstr "hibernate-mapping"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If they are "
+"specified, tablenames will be qualified by the given schema and catalog "
+"names. If they are missing, tablenames will be unqualified. The "
+"<literal>default-cascade</literal> attribute specifies what cascade style "
+"should be assumed for properties and collections that do not specify a "
+"<literal>cascade</literal> attribute. By default, the <literal>auto-import</"
+"literal> attribute allows you to use unqualified class names in the query "
+"language."
+msgstr ""
+"이 요소는 몇 개의 선택적인 속성들을 갖는다. <literal>schema</literal> 속성과 "
+"<literal>catalog</literal> 속성은 이 매핑 내에서 참조된 테이블들이 명명된 "
+"schema 와/또는 catalog에 속한다는 점을 지정한다. 만일 지정될 경우, 테이블 이"
+"름들은 주어진 schema 이름과 catalog 이름에 의해 한정(수식)될 것이다. 누락될 "
+"경우, 테이블 이름들은 한정되지((수식어가 붙지) 않을 것이다. <literal>default-"
+"cascade</literal> 속성은 <literal>cascade</literal> 속성을 지정하지 않은 프로"
+"퍼티들과 콜렉션들에 대해 전제될 <literal>cascade</literal> 스타일이 무엇인지"
+"를 지정한다. <literal>auto-import</literal> 속성은 디폴트로 우리가 질의 언어 "
+"속에서 수식어가 붙지 않은(unqualified) 클래스 이름들을 사용하게 할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr "<literal>schema</literal> (옵션): 데이터베이스 스키마의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr "<literal>catalog</literal> (옵션): 데이터베이스 카다록의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): a default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (옵션 - 디폴트는 <literal>none</"
+"literal>): 디폴트 cascade 스타일."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing all properties. "
+"It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (옵션 - 디폴트는 <literal>property</"
+"literal>): Hibernate가 모든 프로퍼티들에 액세스하는데 사용하게 될 방도. "
+"<literal>PropertyAccessor</literal>에 대한 맞춤형 구현일 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): the default value for unspecified <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"class 및 collection 매핑들의 지정되지 않은 <literal>lazy</literal> 속성들에 "
+"대한 디폴트 값."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): specifies whether we can use unqualified class names of classes "
+"in this mapping in the query language."
+msgstr ""
+"<literal>auto-import</literal> (옵션 - 디폴트는 <literal>true</literal>): 우"
+"리가 질의 언어 내에 (이 매핑에서 클래스들에 대해) 수식어가 붙지 않은 클래스 "
+"이름들을 사용할 수 있는지를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>package</literal> (optional): specifies a package prefix to use for "
+"unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (옵션): 매핑 문서 내에서 수식어가 붙지 않은 클래"
+"스 이름들에 대해 가정할 패키지 접두어를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you have two persistent classes with the same unqualified name, you "
+"should set <literal>auto-import=\"false\"</literal>. An exception will "
+"result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"만일 당신이 동일한 (수식어가 붙지 않은) 이름을 가진 두 개의 영속 클래스들을 "
+"갖고 있다면, 당신은 <literal>auto-import=\"false\"</literal>를 설정해야 한"
+"다. 만일 당신이 두 개의 클래스들에 동일한 \"imported\" 이름을 할당하려고 시도"
+"할 경우에 Hibernate는 예외상황을 던질 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>hibernate-mapping</literal> element allows you to nest several "
+"persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, "
+"however, good practice (and expected by some tools) to map only a single "
+"persistent class, or a single class hierarchy, in one mapping file and name "
+"it after the persistent superclass. For example, <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"위에 보여진 것처럼 <literal>hibernate-mapping</literal> 요소는 몇몇 영속 "
+"<literal>&lt;class&gt;</literal> 매핑들을 내부에 포함하는 것을 허용해준다는 "
+"점을 노트하라. 하지만 한 개의 매핑 파일 속에 한 개의 영속 클래스(또는 한 개"
+"의 클래스 계층구조) 만을 매핑하고 영속 서브 클래스 뒤에 그것을 명명하는 것이 "
+"좋은 연습이다 (그리고 몇몇 도구들에 의해 기대된다). 예를 들면 <literal>Cat."
+"hbm.xml</literal>, <literal>Dog.hbm.xml</literal> 또는 상속을 사용할 경우에"
+"는 <literal>Animal.hbm.xml</literal>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Class"
+msgstr "class"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can declare a persistent class using the <literal>class</literal> "
+"element. For example:"
+msgstr ""
+"당신은 <literal>class</literal> 요소를 사용하여 영속 클래스를 선언할 수도 있"
+"다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the fully qualified Java class name of "
+"the persistent class or interface. If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (옵션): 영속 클래스(또는 인터페이스)의 전체 수식어가 "
+"붙은 Java 클래스 이름. 만일 이 속성이 누락될 경우, 매핑이 non-POJO 엔티티라"
+"고 가정된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): the name of its database table."
+msgstr ""
+"<literal>table</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스명): 그것"
+"의 데이터베이스 테이블의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses that is used for "
+"polymorphic behavior. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 다형성"
+"(polymorphic) 특징에 사용되는, 개별 서브 클래스들를 구별짓는 값. 허용가능한 "
+"값들은<literal>null</literal>과 <literal>not null</literal>을 포함한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): 클래스"
+"들의 인스턴스들이 가변적인지를 (가변적이지 않은지를) 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): overrides the schema name specified by "
+"the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>schema</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</"
+"literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>schema</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</"
+"literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): overrides the catalog name specified "
+"by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>catalog</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</"
+"literal> 요소에 의해 지정된 카다록 이름을 오버라이드 시킨다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>catalog</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</"
+"literal> 요소에 의해 지정된 카타록 이름을 오버라이드 시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies an interface to use for lazy "
+"initializing proxies. You can specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (옵션): lazy initializing proxy들에 사용할 인터페이"
+"스를 지정한다. 당신은 클래스 그 자체의 이름을 지정할 수 도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and can contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): <literal>UPDATE</literal> SQL이 실행 시에 생성되고 그들 컬럼들의 "
+"값들이 변경된 그들 컬럼들 만을 포함할 것인지를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): 생성될 <literal>INSERT</literal>이 실행 시에 생성되고 그들 컬럼들"
+"의 값이 null이 아닌 컬럼들 만을 포함할 것인지를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional - defaults to "
+"<literal>false</literal>): specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. Only when a transient object has been "
+"associated with a new session using <literal>update()</literal>, will "
+"Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an "
+"<literal>UPDATE</literal> is actually required."
+msgstr ""
+"<literal>select-before-update</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): 객체가 실제로 변경되는 것이 확실하지 않는 한, Hibernate가 SQL "
+"<literal>UPDATE</literal>를 <emphasis>결코</emphasis> 실행하지 않을 것임을 지"
+"정한다. 어떤 경우들에서(실제로 transient 객체가 <literal>update()</literal>"
+"를 사용하여 새로운 session에 연관되었을 때에만), 이것은 하나의 "
+"<literal>UPDATE</literal>가 실제로 필요한 경우인지 여부를 결정하기 위해 "
+"Hibernate는 특별한 SQL <literal>SELECT</literal>를 실행할 것임을 의미한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional - defaults to <literal>implicit</"
+"literal>): determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (옵션 - 디폴트는 <literal>implicit</"
+"literal>): implicit 질의 다형성이나 explicit 질의 다형성 중 어느 것이 사용될 "
+"것인지를 결정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition to be used when retrieving objects of "
+"this class."
+msgstr ""
+"<literal>where</literal> (옵션) 이 클래스의 객체들을 검색할 때 사용될 임의적"
+"인 SQL <literal>WHERE</literal> 조건을 지정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (옵션): 맞춤형 <literal>ClassPersister</literal>"
+"를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for fetching instances of this class by "
+"identifier."
+msgstr ""
+"<literal>batch-size</literal> (옵션 - 디폴트는 <literal>1</literal>) 식별자"
+"에 의해 이 클래스의 인스턴스들을 페치시키는 \"배치 사이즈\"를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>version</"
+"literal>): determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>version</"
+"literal>): optimistic 잠금 방도를 결정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): lazy fetching can be disabled by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (옵션): <literal>lazy=\"false\"</literal>를 설정함으"
+"로써 Lazy fetching이 전체적으로 사용불가능하게 될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional - defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times, potentially to "
+"different tables. It also allows entity mappings that are represented by "
+"Maps or XML at the Java level. In these cases, you should provide an "
+"explicit arbitrary name for the entity. See <xref linkend=\"persistent-"
+"classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+"<literal>entity-name</literal>(옵션, 디폴트는 클래스 이름): Hibernate3는 하나"
+"의 클래스가 (잠정적으로 다른 테이블들로) 여러번 매핑되는 것을 허용해주고, "
+"Java 레벨에서 Map 또는 XML에 의해 표현 되는 엔티티 매핑들을 허용한다. 이들 경"
+"우들에서, 당신은 그 엔티티에 대한 명시적인 임의의 이름을 제공해야 한다. "
+"<literal>entity-name</literal> (옵션): Hibernate3는 하나의 클래스가 (잠정적으"
+"로 다른 테이블들로) 여러 번 매핑되는 것을 허용하며, 자바 레벨에서 Map들 또는 "
+"XML에 의해 표현되는 엔티티 매핑들을 허용한다. 이들 경우들에서, 당신은 그 엔티"
+"티들에 대한 명시적인 임의의 이름을 제공해야 한다. 추가 정보는 <xref linkend="
+"\"persistent-classes-dynamicmodels\"/>과 <xref linkend=\"xml\"/>을 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>check</literal> (optional): an SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (옵션): 자동적인 스키마 생성을 위한 다중-행 "
+"<emphasis>check</emphasis> constraint를 생성시키는데 사용되는 SQL 표현식."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. "
+"On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra "
+"column for fast updates once this option has been set to <literal>rowid</"
+"literal>. A ROWID is an implementation detail and represents the physical "
+"location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (옵션): Hibernate는 지원되는 데이터베이스들, 예를 들"
+"어 Oracle 상에서 이른바 ROWID들을 사용할 수 있고, Hibernate는 당신이 이 옵션"
+"을 <literal>rowid</literal>로 설정하는 경우에 빠른 업데이트를 위한 특별한 "
+"<literal>rowid</literal> 컬럼을 사용할 수 있다. ROWID는 구현 상세이고 저장된 "
+"튜플(tuple)의 물리적이니 위치를 표현한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): maps an immutable and read-only "
+"entity to a database subselect. This is useful if you want to have a view "
+"instead of a base table. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (옵션): 불변의 읽기 전용 엔티티를 데이터베이스 "
+"subselect로 매핑시킨다. 당신이 기본 테이블 대신에 뷰를 갖고자 원할 경우에 유"
+"용하지만, 사용을 자제하라. 추가 정보는 아래를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): is used to mark abstract "
+"superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (옵션): <literal>&lt;union-subclass&gt;</"
+"literal> 계층 구조들 내에서 abstract 슈퍼클래스들을 마크하는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is acceptable for the named persistent class to be an interface. You can "
+"declare implementing classes of that interface using the <literal>&lt;"
+"subclass&gt;</literal> element. You can persist any <emphasis>static</"
+"emphasis> inner class. Specify the class name using the standard form i.e. "
+"<literal>e.g.Foo$Bar</literal>."
+msgstr ""
+"명명된 영속 클래스가 인터페이스가 되는 것은 완전히 수용가능하다. 그런 다음 당"
+"신은 <literal>&lt;subclass&gt;</literal> 요소를 사용하여 그 인터페이스에 대"
+"한 구현 클래스들을 선언할 것이다. 당신은 임의의 <emphasis>static</emphasis> "
+"inner 클래스를 영속화 시킬 수 있다. 당신은 표준 형식, 예를 들어 <literal>eg."
+"Foo$Bar</literal>를 사용하여 클래스 이름을 지정해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"불변의 클래스, <literal>mutable=\"false\"</literal>는 어플리케이션에 의해 업"
+"데이트되지 않을 것이거나 삭제되지 않을 것이다. 이것은 Hibernate로 하여금 어"
+"떤 마이너 퍼포먼스 최적화를 행하게끔 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies that implement the named interface. The persistent object will load "
+"when a method of the proxy is invoked. See \"Initializing collections and "
+"proxies\" below."
+msgstr ""
+"선택적인 <literal>proxy</literal> 속성은 그 클래스의 영속 인스턴스들에 대한 "
+"lazy 초기화를 가능하게 해준다. Hibernate는 명명된 인터페이스를 구현하는 "
+"CGLIB 프락시들을 초기에 반환할 것이다. 실제 영속 객체는 프락시의 메소드가 호"
+"출될 때 로드될 것이다. 아래 \"Lazy 초기화를 위한 프락시들\"을 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or class, and that instances of any subclass of the class will be "
+"returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class. Queries that name the class will "
+"return only instances of subclasses mapped inside this <literal>&lt;class&gt;"
+"</literal> declaration as a <literal>&lt;subclass&gt;</literal> or "
+"<literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default "
+"<literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table This allows a \"lightweight\" class that contains a subset of the "
+"table columns."
+msgstr ""
+"<emphasis>Implicit</emphasis> 다형성은 클래스의 인스턴스들이 어떤 서브클래스"
+"나 구현된 인터페이스 또는 클래스를 명명하는 질의에 의해 반환될 것임을 의미하"
+"고 그 클래스의 어떤 서브클래스에 대한 인스턴스들이 그 클래스 자체를 명명하는 "
+"질의에 의해 반환될 것임을 의미한다. <emphasis>Explicit</emphasis> 다형성은 클"
+"래스 인스턴스들이 그 클래스를 명시적으로 명명하는 질의들에 의해서만 반환될 것"
+"임을 의미고 그 클래스를 명명하는 질의들이 이 <literal>&lt;class&gt;</"
+"literal> 선언 내부에서 <literal>&lt;subclass&gt;</literal> 또는 <literal>&lt;"
+"joined-subclass&gt;</literal>로 매핑된 서브 클래스들의 인스턴스들 만을 반환하"
+"게 될 것임을 의미한다. 대부분의 용도로, 디폴트인 <literal>polymorphism="
+"\"implicit\"</literal>가 적절하다.두 개의 다른 클래스들이 동일한 테이블로 매"
+"핑될 때 Explicit 다형성이 유용하다(이것은 테이블 컬럼들의 서브셋을 포함하는 "
+"\"경량급\" 클래스를 허용한다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You can, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, "
+"or you can even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements, "
+"for example, persistence via stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+"<literal>persister</literal> 속성은 클래스에 사용되는 영속화 방도를 당신이 커"
+"스트마이징 할 수 있도록 해준다. 예를 들어 당신은 <literal>org.hibernate."
+"persister.EntityPersister</literal>에 대한 당신 자신의 서브클래스를 지정할 수"
+"도 있거나 당신은 심지어 예를 들어 플랫 파일들이나 LDAP로의 직렬화,내장 프로시"
+"저 호출들을 통해 영속화를 구현하는 인터페이스 <literal>org.hibernate."
+"persister.ClassPersister</literal>에 대한 완전히 새로운 구현을 제공할 수도 있"
+"다. (<literal>Hashtable</literal>로의 \"영속성\"에 관한) 간단한 예제는 "
+"<literal>org.hibernate.test.CustomPersister</literal>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> "
+"settings are not inherited by subclasses, so they can also be specified on "
+"the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</"
+"literal> elements. Although these settings can increase performance in some "
+"cases, they can actually decrease performance in others."
+msgstr ""
+"<literal>dynamic-update</literal> 설정과 <literal>dynamic-insert</literal> 설"
+"정은 서브클래스들에 의해 상속되지 않고 따라서 또한 <literal>&lt;subclass&gt;"
+"</literal> 또는 <literal>&lt;joined-subclass&gt;</literal> 요소들 상에 지정"
+"될 수도 있음을 노트하라. 이들 설정들은 몇몇 경우들에서 퍼포먼스를 증가시키지"
+"만 다른 경우들에서는 퍼포먼스를 실제로 감소시킬 수도 있다. 적절하게 사용하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is useful to prevent a database update trigger being called "
+"unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"<literal>select-before-update</literal> 사용은 대개 퍼포먼스를 감소시킬 것이"
+"다. 당신이 detached 인스턴스들의 그래프를 <literal>Session</literal>에 다시 "
+"첨부할 경우에 그것은 데이터베이스 업데이트 트리거가 불필요하게 호출되는 것을 "
+"방지하는데 매우 유용하다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"<literal>dynamic-update</literal>를 사용가능하게 할 경우, 당신은 다음 "
+"optimistic 잠금 전략들을 선택하게 될 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr "<literal>version</literal>은 version/timestamp 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>dirty</literal>: check the changed columns, allowing some "
+"concurrent updates"
+msgstr ""
+"<literal>dirty</literal>는 몇몇 동시성 업데이트들을 허용하여, 변경된 컬럼들"
+"을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none</literal>은 optimistic 잠금을 사용하지 않는다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is <emphasis>strongly</emphasis> recommended that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This strategy "
+"optimizes performance and correctly handles modifications made to detached "
+"instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+"우리는 당신이 Hibernate에서 optimistic 잠금을 위해 version/timestamp 컬럼들"
+"을 사용할 것을 <emphasis>매우</emphasis> 강력하게 권장한다. 이것은 퍼포먼스"
+"에 대해 최적의 방도이고 detached 인스턴스들에 대해 행해진 변경들을 정확하게 "
+"핸들링하는 유일한 방도이다(예를 들어 <literal>Session.merge()</literal>가 사"
+"용될 때)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping. This is transparent at the database level, although some DBMS do "
+"not support views properly, especially with updates. Sometimes you want to "
+"use a view, but you cannot create one in the database (i.e. with a legacy "
+"schema). In this case, you can map an immutable and read-only entity to a "
+"given SQL subselect expression:"
+msgstr ""
+"Hibernate 매핑의 경우에 베이스 테이블과 뷰 사이에 차이점이 존재하지 않는다. "
+"왜냐하면 이것이 데이터베이스 레벨에서는 투명하다고 기대되기 때문이다(몇몇 "
+"DBMS는 뷰를 고유하게 지원하지 않고 특히 뷰 업데이트를 지원하지 않음을 노트하"
+"라). 때때로 당신이 뷰를 사용하고자 원하지만, (예를 들어 리거시 스키마로) 데이"
+"터베이스 속에 뷰를 생성시킬 수 없다. 이 경우에, 당신은 불변의 읽기 전용 엔티"
+"티를 주어진 SQL subselect 표현식으로 매핑시킬 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly and that queries against the derived entity do not return "
+"stale data. The <literal>&lt;subselect&gt;</literal> is available both as an "
+"attribute and a nested mapping element."
+msgstr ""
+"auto-flush가 정확하게 발생하도록 하고, 그리고 파생된 엔티티에 대한 질의들이 "
+"쓸효성 없는 데이터를 반환하지 않도록 함으로써, 이 엔티티와 동기화 될 테이블"
+"을 선언하라. <literal>&lt;subselect&gt;</literal>는 속성과 내포된 매핑 요소 "
+"양자로서 이용 가능하다."
+
+#. Tag: title
+#, no-c-format
+msgid "id"
+msgstr "id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal>&lt;id&gt;</"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"매핑된 클래스들은 데이터베이스 테이블의 프라이머리 키 컬럼을 선언<emphasis>해"
+"야 한다</emphasis>. 대부분의 클래스들은 또한 인스턴스의 유일 식별자를 소유하"
+"는 자바빈즈-스타일 프로퍼티를 가질 것이다. <literal>&lt;id&gt;</literal> 요소"
+"는 그 프로퍼티로부터 프라이머리 키 컬럼으로의 매핑을 정의한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the name of the identifier property."
+msgstr "<literal>name</literal> (옵션): 식별자 프로퍼티의 이름."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr "<literal>type</literal> (옵션): Hibernate 타입을 나타내는 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 프라이머리 키 컬럼"
+"의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): an identifier property value that indicates an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 \"sensible\" 값): 이전 세션"
+"에서 저장되었거나 로드되었던 detached(분리된) 인스턴스들로부터 그것을 구분지"
+"우도록, 인스턴스가 새로이 초기화되어 있음(저장되어 있지 않음)을 나타내는 식별"
+"자 프로퍼티 값."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근 하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"<literal>name</literal> 속성이 누락되면, 클래스는 식별자 프로퍼티를 갖지 않는"
+"다고 가정된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"<literal>unsaved-value</literal> 속성은 Hibernate3에서는 거의 필요하지 않다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is an alternative <literal>&lt;composite-id&gt;</literal> declaration "
+"that allows access to legacy data with composite keys. Its use is strongly "
+"discouraged for anything else."
+msgstr ""
+"composite 키들로서 리거시 데이터에 액세스하는 것을 허용해주는 대체적인 "
+"<literal>&lt;composite-id&gt;</literal> 선언이 존재한다. 우리는 그 밖의 어떤"
+"것에 대한 그것의 사용에 대해 강력하게 반대한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "Generator"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;generator&gt;</literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal>&lt;param&gt;</"
+"literal> element."
+msgstr ""
+"선택적인 <literal>&lt;generator&gt;</literal> 자식 요소는 영속 클래스의 인스"
+"턴스들에 대한 유일 식별자들을 생성시키는데 사용되는 자바 클래스를 명명한다. "
+"만일 임의의 파라미터들이 생성기 인스턴스를 구성하거나 초기화 시키는데 필요할 "
+"경우, 그것들은 <literal>&lt;param&gt;</literal> 요소 를 사용하여 전달된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface. Some "
+"applications can choose to provide their own specialized implementations, "
+"however, Hibernate provides a range of built-in implementations. The "
+"shortcut names for the built-in generators are as follows:"
+msgstr ""
+"모든 생성기들은 <literal>org.hibernate.id.IdentifierGenerator</literal> 인터"
+"페이스를 구현한다. 이것은 매우 간단한 인터페이스이다; 몇몇 어플리케이션들은 "
+"그것들 자신의 특화된 구현들을 제공하도록 선택할 수 있다. 하지만 Hibernate는 "
+"미리 빈드된 구현들의 영역들을 제공한다. 빌드-인 생성기(generator)들에 대한 단"
+"축 이름들이 존재한다: <placeholder-1/>"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"동일한 테이블 속으로 데이터를 입력하는 다른 프로세스가 없을 때에만 유일한 "
+"<literal>long</literal>, <literal>short</literal> 또는 <literal>int</"
+"literal> 타입의 식별자들을 생성시킨다. <emphasis>클러스터 내에서는 사용하지 "
+"말라.</emphasis>"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL에서 식별 컬럼들을 지원한다. "
+"반환되는 식별자는 <literal>long</literal>, <literal>short</literal> 또는 "
+"<literal>int</literal> 타입이다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"DB2, PostgreSQL, Oracle, SAP DB, McKoi에서 시퀀스를 사용하거나 Interbase에서 "
+"생성기(generator)를 사용한다. 반환되는 식별자는 <literal>long</literal>, "
+"<literal>short</literal> 또는 <literal>int</literal> 타입이다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"테이블과 컬럼(디폴트로 각각 <literal>hibernate_unique_key</literal>와 "
+"<literal>next_hi</literal>)이 hi 값들의 소스로서 주어지면, <literal>long</"
+"literal>, <literal>short</literal> 또는 <literal>int</literal> 타입의 식별자"
+"들을 효과적으로 생성시키는데 hi/lo 알고리즘을 사용한다. hi/lo 알고리즘은 특"
+"정 데이터베이스에 대해서만 유일한 식별자들을 생성시킨다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"명명된 데이터베이스 시퀀스가 주어지면, <literal>long</literal>, "
+"<literal>short</literal> 또는 <literal>int</literal> 타입의 식별자들을 효과적"
+"으로 생성시키는데 hi/lo 알고리즘을 사용한다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string that "
+"are unique within a network (the IP address is used). The UUID is encoded as "
+"a string of 32 hexadecimal digits in length."
+msgstr ""
+"네트웍 내에서 유일한(IP 주소가 사용된다) string 타입의 식별자들을 생성시키기 "
+"위해 128 비트 UUID 알고리즘을 사용한다. UUID는 길이가 32인 16진수들의 문자열"
+"로서 인코딩 된다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr "MS SQL Server와 MySQL 상에서 데이터베이스 생성 GUID 문자열을 사용한다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"selects <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"기본 데이터베이스의 가용성들에 의존하여 <literal>identity</literal>, "
+"<literal>sequence</literal> 또는 <literal>hilo</literal>를 찾아낸다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"lets the application assign an identifier to the object before <literal>save"
+"()</literal> is called. This is the default strategy if no <literal>&lt;"
+"generator&gt;</literal> element is specified."
+msgstr ""
+"어플리케이션으로 하여금 <literal>save()</literal>가 호출되기 전에 식별자를 객"
+"체에 할당하도록 한다. <literal>&lt;generator&gt;</literal> 요소가 지정되지 않"
+"을 경우 이것이 디폴트 방도이다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"retrieves a primary key, assigned by a database trigger, by selecting the "
+"row by some unique key and retrieving the primary key value."
+msgstr ""
+"어떤 유일 키에 의해 행을 select하고 프라이머리 키 값을 검색함으로써 데이터베"
+"이스 트리거에 의해 할당된 프라이머리 키를 검색한다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"uses the identifier of another associated object. It is usually used in "
+"conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key "
+"association."
+msgstr ""
+"또 다른 연관된 객체의 식별자를 사용한다. 대개 <literal>&lt;one-to-one&gt;</"
+"literal> 프라이머리 키 연관관계와 함께 사용된다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"a specialized sequence generation strategy that utilizes a database sequence "
+"for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to return the generated identifier value as part of the "
+"insert statement execution. This strategy is only supported on Oracle 10g "
+"drivers targeted for JDK 1.4. Comments on these insert statements are "
+"disabled due to a bug in the Oracle drivers."
+msgstr ""
+"실제 값 생성을 위해 데이터베이스 시퀀스를 활용하지만, 생성된 식별자 값을 "
+"insert 문장 실행의 부분으로서 실제로 반환시키기 위해 이것을 JDBC3 "
+"getGeneratedKeys와 결합시킨 특화된 시퀀스 생성 방도. 이 방도는 JDK 1.4에 대상"
+"화된 Oracle 10g 드라이버들 상에서만 지원되는 거승로 알려져 있다. 이들 insert "
+"문장들에 대한 주석들은 Oracle 드라이버들 내에 있는 버그 때문에 사용불가능하"
+"게 되어 있음을 노트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "Hi/lo algorithm"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm. The first "
+"implementation requires a \"special\" database table to hold the next "
+"available \"hi\" value. Where supported, the second uses an Oracle-style "
+"sequence."
+msgstr ""
+"<literal>hilo</literal>와 <literal>seqhilo</literal> 생성기들은 식별자 생성"
+"에 대한 마음에 드는 접근법인, hi/lo 알고리즘에 대한 두 개의 대체 구현들은 제"
+"공한다. 첫 번째 구현은 다음에 이용 가능한 \"hi\" 값을 수용하기 위한 \"특별한"
+"\" 데이터베이스 테이블을 필요로 한다. 두 번째는 (지원되는) Oracle 스타일의 시"
+"퀀스를 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unfortunately, you cannot use <literal>hilo</literal> when supplying your "
+"own <literal>Connection</literal> to Hibernate. When Hibernate uses an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must configure the <literal>hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+"불행히도 당신은 Hibernate에 당신 자신의 <literal>Connection</literal>을 제공"
+"할 때 <literal>hilo</literal>를 사용할 수 없다. Hibernate가 JTA의 도움을 받"
+"는 커넥션들을 얻기 위해 어플리케이션 서버 데이터소스를 사용할 때 당신은 "
+"<literal>hibernate.transaction.manager_lookup_class</literal>를 적절하게 구성"
+"해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "UUID 알고리즘"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM that is accurate to a "
+"quarter second, system time and a counter value that is unique within the "
+"JVM. It is not possible to obtain a MAC address or memory address from Java "
+"code, so this is the best option without using JNI."
+msgstr ""
+"UUID 는 다음을 포함한다: IP 주소, JVM의 시작 시간(정확히 1/4 초), 시스템 시간"
+"과 (JVM 내에서 유일한) counter 값. Java 코드로부터 MAC 주소 또는 메모리 주소"
+"를 얻는 것은 불가능하여서, 이것은 우리가 JNI를 사용하지 않고서 행할 수 있는 "
+"최상의 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "식별 컬럼들과 시퀀스들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you can use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"can use <literal>sequence</literal> style key generation. Both of these "
+"strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+"식별 컬럼들을 지원하는 데이터베이스들(DB2, MySQL, Sybase, MS SQL)의 경우, 당"
+"신은 <literal>identity</literal> 키 생성을 사용할 수 있다. 시퀀스들을 지원하"
+"는 데이터베이스들(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)의 경우, "
+"당신은 <literal>sequence</literal> 스타일 키 생성을 사용할 수도 있다. 이들 방"
+"도들 모두 새로운 객체를 insert하기 위해 두 개의 SQL 질의들을 필요로 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will, "
+"depending on the capabilities of the underlying database, choose from the "
+"<literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</"
+"literal> strategies."
+msgstr ""
+"크로스 플랫폼 개발을 위해서, <literal>native</literal> 방도가 기준 데이터베이"
+"스들의 가용성들에 따라 <literal>identity</literal>, <literal>sequence</"
+"literal>, <literal>hilo</literal> 방도 중에서 선택될 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "할당된 식별자들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want the application to assign identifiers, as opposed to having "
+"Hibernate generate them, you can use the <literal>assigned</literal> "
+"generator. This special generator uses the identifier value already assigned "
+"to the object's identifier property. The generator is used when the primary "
+"key is a natural key instead of a surrogate key. This is the default "
+"behavior if you do not specify a <literal>&lt;generator&gt;</literal> "
+"element."
+msgstr ""
+"(Hibernate로 하여금 식별자들을 생성시키도록 하는 것과는 반대로) 당신이 어플리"
+"케이션으로 하여금 식별자들을 할당하도록 원할 경우, 당신은 <literal>assigned</"
+"literal> 생성기를 사용할 수 있다. 이 특별한 생성기는 객체의 identifier 프로퍼"
+"티에 이미 할당된 식별자 값을 사용할 것이다. 이 생성기(generator)는 프라이머"
+"리 키가 대용(surrogate ) 키 대신에 natural 키일 때 사용된다. 당신이 "
+"<literal>&lt;generator&gt;</literal> 요소를 지정하지 않을 경우에 이것이 디폴"
+"트 특징이다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go "
+"to the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"<literal>assigned</literal> 생성기(generator)를 선택하는 것은 , version 또는 "
+"timestamp 프로퍼티가 존재하지 않는 한 또는 당신이 <literal>Interceptor."
+"isUnsaved()</literal>를 정의하지 않는 한, 하나의 인스턴스가 transient 또는 "
+"detached인지를 결정하기 위해 Hibernae로 하여금 데이터베이스에 접촉하도록 강제"
+"하는, <literal>unsaved-value=\"undefined\"</literal>를 Hibernate에게 사용하도"
+"록 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "트리거들에 의해 할당된 프라이머리 키들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr ""
+"리거시 스키마에 대해서만(Hibernate는 트리거들을 가진 DDL을 생성시키지 않는"
+"다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal>. It is defined by the class, as a "
+"natural key and a surrogate key named <literal>person_id</literal>, whose "
+"value is generated by a trigger."
+msgstr ""
+"위의 예제에서, natural 키로서 클래스에 의해 <literal>socialSecurityNumber</"
+"literal>로 명명된 유일 값을 가진 프로퍼티가 존재하고, 트리거에 의해 그 값이 "
+"생성되는 <literal>person_id</literal>로 명명된 대용키가 존재한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "NOT TRANSLATED!Enhanced identifier generators"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization Optimization means that "
+"you do not have to query the database for every request for a new identifier "
+"value. These two new generators are intended to take the place of some of "
+"the named generators described above, starting in 3.3.x. However, they are "
+"included in the current releases and can be referenced by FQN."
+msgstr ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization (not having to query the "
+"database for every request for a new identifier value). These two new "
+"generators are intended to take the place of some of the named generators "
+"described above (starting in 3.3.x); however, they are included in the "
+"current releases and can be referenced by FQN."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended, firstly, as a "
+"replacement for the <literal>sequence</literal> generator and, secondly, as "
+"a better portability generator than <literal>native</literal>. This is "
+"because <literal>native</literal> generally chooses between "
+"<literal>identity</literal> and <literal>sequence</literal> which have "
+"largely different semantics that can cause subtle issues in applications "
+"eyeing portability. <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, however, achieves portability in a "
+"different manner. It chooses between a table or a sequence in the database "
+"to store its incrementing values, depending on the capabilities of the "
+"dialect being used. The difference between this and <literal>native</"
+"literal> is that table-based and sequence-based storage have the same exact "
+"semantic. In fact, sequences are exactly what Hibernate tries to emulate "
+"with its table-based generators. This generator has a number of "
+"configuration parameters:"
+msgstr ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended firstly as a replacement "
+"for the <literal>sequence</literal> generator and secondly as a better "
+"portability generator than <literal>native</literal> (because "
+"<literal>native</literal> (generally) chooses between <literal>identity</"
+"literal> and <literal>sequence</literal> which have largely different "
+"semantics which can cause subtle isssues in applications eyeing "
+"portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+"literal> however achieves portability in a different manner. It chooses "
+"between using a table or a sequence in the database to store its "
+"incrementing values depending on the capabilities of the dialect being used. "
+"The difference between this and <literal>native</literal> is that table-"
+"based and sequence-based storage have the same exact semantic (in fact "
+"sequences are exactly what Hibernate tries to emmulate with its table-based "
+"generators). This generator has a number of configuration parameters: "
+"<placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): the name of the sequence or table to "
+"be used."
+msgstr ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): The name of the sequence (or table) "
+"to be used."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): the initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typically named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typical named "
+"\"STARTS WITH\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): the value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause "
+"typically named \"INCREMENT BY\"."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause typical "
+"named \"INCREMENT BY\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional - defaults to <literal>false</"
+"literal>): should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force_table_use</literal> (optional, defaults to <literal>false</"
+"literal>): Should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional - defaults to <literal>next_val</"
+"literal>): only relevant for table structures, it is the name of the column "
+"on the table which is used to hold the value."
+msgstr ""
+"<literal>value_column</literal> (optional, defaults to <literal>next_val</"
+"literal>): Only relevant for table structures! The name of the column on the "
+"table which is used to hold the value."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" /"
+">"
+msgstr ""
+"<literal>optimizer</literal> (optional, defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, which is intended, firstly, as a replacement for "
+"the <literal>table</literal> generator, even though it actually functions "
+"much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</"
+"literal>, and secondly, as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> that utilizes the notion of "
+"pluggable optimizers. Essentially this generator defines a table capable of "
+"holding a number of different increment values simultaneously by using "
+"multiple distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal> which is intended firstly as a replacement for the "
+"<literal>table</literal> generator (although it actually functions much more "
+"like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and "
+"secondly as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable "
+"optimiziers. Essentially this generator defines a table capable of holding a "
+"number of different increment values simultaneously by using multiple "
+"distinctly keyed rows. This generator has a number of configuration "
+"parameters: <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional - defaults to "
+"<literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+"<literal>table_name</literal> (optional, defaults to "
+"<literal>hibernate_sequences</literal>): The name of the table to be used."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional - defaults to "
+"<literal>next_val</literal>): the name of the column on the table that is "
+"used to hold the value."
+msgstr ""
+"<literal>value_column_name</literal> (optional, defaults to "
+"<literal>next_val</literal>): The name of the column on the table which is "
+"used to hold the value."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional - defaults to "
+"<literal>sequence_name</literal>): the name of the column on the table that "
+"is used to hold the \"segment key\". This is the value which identifies "
+"which increment value to use."
+msgstr ""
+"<literal>segment_column_name</literal> (optional, defaults to "
+"<literal>sequence_name</literal>): The name of the column on the table which "
+"is used to hold the \"segement key\". This is the value which distinctly "
+"identifies which increment value to use."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional - defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>segment_value</literal> (optional, defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional - defaults to "
+"<literal>255</literal>): Used for schema generation; the column size to "
+"create this segment key column."
+msgstr ""
+"<literal>segment_value_length</literal> (optional, defaults to <literal>255</"
+"literal>): Used for schema generation; the column size to create this "
+"segment key column."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional - defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal></literal>): "
+"See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+"<literal>optimizer</literal> (optional, defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generator optimization"
+msgstr "NOT TRANSLATED! Identifier generator optimization"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For identifier generators that store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you can group a bunch of them in memory and "
+"only hit the database when you have exhausted your in-memory value group. "
+"This is the role of the pluggable optimizers. Currently only the two "
+"enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> "
+"support this operation."
+msgstr ""
+"For identifier generators which store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you'd ideally want to group a bunch of them "
+"in memory and only hit the database when you have exhausted your in-memory "
+"value group. This is the role of the pluggable optimizers. Currently only "
+"the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced"
+"\"/> support this notion. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): this will not perform any optimizations and hit the database for "
+"each and every request."
+msgstr ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): This says to not perform any optimizations, and hit the database "
+"each and every request."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\". The "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\"; the "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this "
+"optimizer attempts to minimize the number of hits to the database. Here, "
+"however, we simply store the starting value for the \"next group\" into the "
+"database structure rather than a sequential value in combination with an in-"
+"memory grouping algorithm. Here, <literal>increment_size</literal> refers to "
+"the values coming from the database."
+msgstr ""
+"<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, "
+"this optimizers attempts to minimize the number of hits to the database. "
+"Here, however, we simply store the starting value for the \"next group\" "
+"into the database structure rather than a sequential value in combination "
+"with an in-memory grouping algorithm. <literal>increment_size</literal> here "
+"refers to the values coming from the database."
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "composite-id"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A table with a composite key can be mapped with multiple properties of the "
+"class as identifier properties. The <literal>&lt;composite-id&gt;</literal> "
+"element accepts <literal>&lt;key-property&gt;</literal> property mappings "
+"and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+"composite 키를 가진 테이블의 경우, 당신은 클래스의 여러 프로퍼티들을 식별자 "
+"프로퍼티들로서 매핑할 수 있다. <literal>&lt;composite-id&gt;</literal> 요소"
+"는 자식 요소들로서 <literal>&lt;key-property&gt;</literal> 프로퍼티 매핑과 "
+"<literal>&lt;key-many-to-one&gt;</literal> 매핑들을 허용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+"당신의 영속 클래스는 composite 식별자 동등성을 구현하기 위해서 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 "
+"<emphasis>시켜야 한다</emphasis>. 그것은 또한 <literal>Serializable</literal>"
+"을 구현해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unfortunately, this approach means that a persistent object is its own "
+"identifier. There is no convenient \"handle\" other than the object itself. "
+"You must instantiate an instance of the persistent class itself and populate "
+"its identifier properties before you can <literal>load()</literal> the "
+"persistent state associated with a composite key. We call this approach an "
+"<emphasis>embedded</emphasis> composite identifier, and discourage it for "
+"serious applications."
+msgstr ""
+"불행히도, composite 식별자들에 대한 이 접근법은 영속 객체가 그것 자신의 식별"
+"자라는 점을 의미한다. 객체 자신 외의 다른 \"핸들\"이 존재하지 않는다. 당신은 "
+"당신이 composite key로 연관된 영속 상태를 <literal>load()</literal> 할 수 있"
+"기 이전에 영속 클래스 그 자체의 인스턴스를 초기화 하고 그것의 식별자 프로퍼티"
+"들을 군집화 시켜야 한다. 우리는 이 접근법을 <emphasis>embedded</emphasis> "
+"composite 식별자로 부르고, 중대한 어플리케이션들에 대해 그것을 억제시킨다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal>&lt;"
+"composite-id&gt;</literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"두 번째 접근법은 우리가 <emphasis>mapped</emphasis> composite 식별자라고 부르"
+"는 것인데, 여기서 <literal>&lt;composite-id&gt;</literal> 요소 내에 명명된 여"
+"기서 식별자 프로퍼티들은 영속 클래스와 별도의 식별자 클래스 양자 상에 중복된"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement <literal>Serializable</literal>. "
+"The main disadvantage of this approach is code duplication."
+msgstr ""
+"이 예제에서, composite 식별자 클래스인 <literal>MedicareId</literal>와 엔티"
+"티 크래스 그 자체 양자는 <literal>medicareNumber</literal>와 "
+"<literal>dependent</literal>로 명명된 프로퍼티들을 갖는다. 식별자 클래스는 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 시켜"
+"고 <literal>Serializable</literal>을 구현해야 한다. 이 접근법의 단점은 아주 "
+"명백한&mdash;코드 중복이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following attributes are used to specify a mapped composite identifier:"
+msgstr "다음 속성들은 매핑된 composite 식별자를 지정하는데 사용된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional - defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (옵션, 디폴트는 <literal>false</literal>): 하나의 "
+"매핑된 composite 식별자가 사용됨을, 그리고 포함된 프로퍼티 매핑들이 엔티티 클"
+"래스와 composite 식별자 클래스 양자를 참조함을 나타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - but required for a mapped composite "
+"identifier): the class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (옵션, 하지만 하나의 매핑된 commposite 식별자에 대해"
+"서는 필수적임): 하나의 composite 식별자로서 사용되는 클래스."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach, where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\" />. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"우리는 <xref linkend=\"components-compositeid\"/>에서 composite 식별자가 하나"
+"의 component 클래스로서 구현되는 보다 편리한 접근법인 세번째 방도를 설명할 것"
+"이다. 아래에 설명되어 있는 속성들은 이 대체적인 접근법에만 적용된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal> (optional - required for this approach): a property "
+"of component type that holds the composite identifier. Please see chapter 9 "
+"for more information."
+msgstr ""
+"<literal>name</literal> (옵션, 이 접근법의 경우에는 필수임): 하나의 "
+"component 식별자를 소유하는 컴포넌트 타입의 프로퍼티(9장을 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근 하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the component class used as a composite "
+"identifier. Please see the next section for more information."
+msgstr ""
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 하나의 composite 식별자로서 사용되는 컴포넌트 클래스(다음 절을 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The third approach, an <emphasis>identifier component</emphasis>, is "
+"recommended for almost all applications."
+msgstr ""
+"이 세번째 접근법, <emphasis>identifier component</emphasis>은 거의 모든 어플"
+"리케이션들에 대해 우리가 권장하는 것이다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Discriminator"
+msgstr "discriminator"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;discriminator&gt;</literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping "
+"strategy. It declares a discriminator column of the table. The discriminator "
+"column contains marker values that tell the persistence layer what subclass "
+"to instantiate for a particular row. A restricted set of types can be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"<literal>&lt;discriminator&gt;</literal> 요소는 table-per-class-hierarchy(테"
+"이블 당 클래스 계층구조) 매핑 방도를 사용하는 다형성 영속화에 필요하고 테이블"
+"의 discriminator(판별자) 컬럼을 선언한다. discriminator 컬럼은 특정 행에 대"
+"해 초기화 시킬 서브 클래스가 무엇인지를 영속 계층에 알려주는 표시자 값들을 포"
+"함한다. 타입들의 제한적인 집합이 사용될 수 있다: <literal>string</literal>, "
+"<literal>character</literal>, <literal>integer</literal>, <literal>byte</"
+"literal>, <literal>short</literal>, <literal>boolean</literal>, "
+"<literal>yes_no</literal>, <literal>true_false</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>): "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 <literal>class</literal>) "
+"discriminator 컬럼명."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>): "
+"a name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (옵션 - 디폴트는 <literal>string</literal>) "
+"Hibernate 타입을 나타내는 이름"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>): "
+"\"forces\" Hibernate to specify the allowed discriminator values, even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (옵션 - 디폴트는 <literal>false</literal>) 이것은 "
+"Hibernate로 하여금 루트 클래스의 모든 인스턴스들을 검색할 때조차도 허용된 "
+"discriminator 값들을 지정하도록 \"강제한다\"."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. It tells Hibernate not to include the "
+"column in SQL <literal>INSERTs</literal>."
+msgstr ""
+"<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>) 당신의 "
+"discriminator 컬럼이 또한 매핑된 composite 식별자의 부분일 경우에 이것을 "
+"<literal>false</literal>로 설정하라. (Hibernate에게 SQL <literal>INSERT</"
+"literal>들 속에 그 컬럼을 포함하지 않도록 통보한다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. It allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (옵션) 타입이 평가 되어야 할 때 실행되는 임의의 "
+"SQL 표현식. 컨텐츠 기반의 판별을 허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal>&lt;"
+"class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+"discriminator 컬럼의 실제 값들은 <literal>&lt;class&gt;</literal> 요소와 "
+"<literal>&lt;subclass&gt;</literal> 요소의 <literal>discriminator-value</"
+"literal> 속성에 의해 지정된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is only useful if the table contains "
+"rows with \"extra\" discriminator values that are not mapped to a persistent "
+"class. This will not usually be the case."
+msgstr ""
+"<literal>force</literal> 속성은 테이블이 영속 클래스로 매핑되지 않는 \"특별한"
+"\" discriminator 값들을 가진 행들을 포함할 경우에(만) 유용하다. 이것은 대개 "
+"그 경우가 아닐 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>formula</literal> attribute allows you to declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+"<literal>formula</literal> 속성을 사용하여 당신은 행의 타입을 판단하는데 사용"
+"될 임의의 SQL 표현식을 선언할 수 있다:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Version (optional)"
+msgstr "version (옵션)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;version&gt;</literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis>. See below for more "
+"information:"
+msgstr ""
+"<literal>&lt;version&gt;</literal> 요소는 옵션이고 테이블이 버전화된 데이터"
+"를 포함한다는 것을 나타낸다. 이것은 당신이 <emphasis>긴 트랜잭션(long "
+"transaction)들</emphasis>을 사용할 계획이라면 특히 유용하다 (아래를 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 버전 번호를 가진 컬"
+"럼의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a property of the persistent class."
+msgstr "<literal>name</literal>: 영속 클래스의 프로퍼티 명."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"the type of the version number."
+msgstr ""
+"<literal>type</literal> (옵션 - 디폴트는 <literal>integer</literal>): 버전 번"
+"호의 타입."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근 하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>undefined</"
+"literal>): 이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 구별"
+"지어서, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값."
+"(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this version property value is generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"version 프로퍼티 값이 데이터베이스에 의해 실제로 산출되는지를 지정한다. "
+"<xref linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 관한 논의를 "
+"보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"specifies whether the version column should be included in SQL insert "
+"statements. It can be set to <literal>false</literal> if the database column "
+"is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>): version "
+"컬럼이 SQL insert 문장들 속에 포함될 것인지 여부를 지정한다. 데이터베이스 컬"
+"럼이 디폴트 값 <literal>0</literal>으로 정의되는 경우에만 <literal>false</"
+"literal>로 설정될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Version numbers can be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"버전 번호들은 <literal>long</literal>, <literal>integer</literal>, "
+"<literal>short</literal>, <literal>timestamp</literal> 또는 "
+"<literal>calendar</literal> 타입일 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance. Hibernate will detect any instance with a null version or "
+"timestamp as transient, irrespective of what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid problems with transitive "
+"reattachment in Hibernate. It is especially useful for people using assigned "
+"identifiers or composite keys</emphasis>."
+msgstr ""
+"version 또는 timestamp 프로퍼티는 detached 인스턴스에 대해 결코 null일 수가 "
+"없어서, Hibernate는 다른 <literal>unsaved-value</literal> 방도들이 지정되는 "
+"것에 상관없이, null version이나 timestamp를 가진 임의의 인스턴스를 transient"
+"로서 검출할 것이다. <emphasis>null 허용되는 version 이나 property를 선언하는 "
+"것은 Hibernate에서 transitive reattachment에 대한 임의의 문제들을 피하는 쉬"
+"운 방법이고, assigned 식별자들이나 composite key들을 사용하는 사람들에게 특"
+"히 유용하다!</emphasis>"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Timestamp (optional)"
+msgstr "timestamp (옵션)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The optional <literal>&lt;timestamp&gt;</literal> element indicates that the "
+"table contains timestamped data. This provides an alternative to versioning. "
+"Timestamps are a less safe implementation of optimistic locking. However, "
+"sometimes the application might use the timestamps in other ways."
+msgstr ""
+"옵션 <literal>&lt;timestamp&gt;</literal> 요소는 테이블이 타임스탬프화 된 데"
+"이터를 포함함을 나타낸다. 이것은 버전화에 대한 대체물로서 고안되었다. "
+"Timestamp은 고유하게 optimistic 잠금에 대한 다소 안전한 구현이다. 하지만 때때"
+"로 어플리케이션은 다른 방법들로 timestamp들을 사용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 타임스탬프를 포함하"
+"는 컬럼 명."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: 영속 클래스에 대해 자바 <literal>Date</literal> 또"
+"는 <literal>Timestamp</literal> 타입을 가진 자바빈즈 스타일의 프로퍼티 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>null</literal>): "
+"이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 인스턴스를 구별"
+"지우는, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값."
+"(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"Where should Hibernate retrieve the timestamp value from? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\". It "
+"is safer to use in clustered environments. Not all <literal>Dialects</"
+"literal> are known to support the retrieval of the database's current "
+"timestamp. Others may also be unsafe for usage in locking due to lack of "
+"precision (Oracle 8, for example)."
+msgstr ""
+"<literal>source</literal> (옵션 - 디폴트는 <literal>vm</literal>): Hibernate"
+"는 어디서 timestamp 값을 검색할 것인가? 데이터베이스로부터인가 현재의 JVM으로"
+"부터인가? 데이터베이스 기반의 timestamp들은 Hibernate가 \"다음 값\"을 결정하"
+"기 위해 데이터베이스에 접속해야 하기 때문에 오버헤드를 초래하지만, 클러스터링"
+"된 환경들에서의 용도로 보다 더 안전할 것이다. 또한 모든 <literal>Dialect</"
+"literal>들이 데이터베이스의 현재의 timestamp에 대한 검색을 지원하는 것으로 알"
+"려져 있지 않지만, 다른 <literal>Dialect</literal>들은 정밀도 결핍 때문에 잠금"
+"에 있어 사용이 안전하지 않을 수 있음을 노트하라(예를 들면 오라클 8)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"timestamp 프로퍼티 값이 데이터베이스에 의해 실제로 생성됨을 지정한다. <xref "
+"linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 대한 논의들 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db"
+"\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp"
+"\"&gt;</literal>"
+msgstr ""
+"<literal>&lt;timestamp&gt;</literal>는 <literal>&lt;version type=\"timestamp"
+"\"&gt;</literal>과 같음을 노트하라. 그리고 <literal>&lt;timestamp use-db="
+"\"true\"&gt;</literal>는 <literal>&lt;version type=\"dbtimestamp\"&gt;</"
+"literal>과 같다"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Property"
+msgstr "프로퍼티"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;property&gt;</literal> element declares a persistent "
+"JavaBean style property of the class."
+msgstr ""
+"<literal>&lt;property&gt;</literal> 요소는 클래스의 자바빈즈 스타일의 영속 프"
+"로퍼티를 선언한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr "<literal>name</literal>: 첫 소문자로 시작하는 프로퍼티 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This can also be specified by "
+"nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 매핑된 데이터베이"
+"스 테이블 컬럼의 이름. 이것은 또한 내부에 포함되는 <literal>&lt;column&gt;</"
+"literal> 요소(들)에 의해 지정될 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>) : 매핑된 컬럼들이 <literal>UPDATE</literal>와/또는 "
+"<literal>INSERT</literal> 문장들속에 포함될 것임을 지정한다. 둘다 "
+"<literal>false</literal>로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑되는 "
+"어떤 다른 프로퍼티로부터 또는 트리거에 의해 또는 다른 어플리케이션으로부터 초"
+"기화 되는 순수하게 \"파생된(derived)\" 프로퍼티를 허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (옵션): <emphasis>계산되는</emphasis> 프로퍼티에 "
+"대해 값을 정의하는 SQL 표현식. 계산되는 프로퍼티들은 그것들 자신에 대한 컬럼 "
+"매핑을 갖지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this property should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 "
+"변수가 처음으로 액세스 될 때 이 프로퍼티가 lazily하게 페치될 것임을 지정한다"
+"(빌드-시 바이트코드 수단을 필요로 한다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (옵션): 컬럼들에 대한 유일 컨스트레인트의 DDL 생성"
+"을 가능하게 만든다. 또한 이것이 <literal>property-ref</literal>의 타켓이 되"
+"는 것을 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (옵션): 컬럼들에 대해 null 가능 컨스트레인트의 "
+"DDL 생성을 가능하게 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, it determines if a "
+"version increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필"
+"요로 하거나 필요로 하지 않음을 지정한다. 달리말해, 이 프로퍼티가 dirty일 때 "
+"버전 증가가 발생할 경우인지를 결정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"프로퍼티 값이 데이터베이스에 의해 실제로 산출되는지를 지정한다. <xref "
+"linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 대한 논의를 보라."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>typename</emphasis>은 다음일 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The name of a Hibernate basic type: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+"Hibernate 기본 타입의 이름 (예를 들어. <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The name of a Java class with a default basic type: <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal> etc."
+msgstr ""
+"디폴트 기본 타입을 가진 Java 클래스의 이름(예를 들어. <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "serializable Java 클래스의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class name of a custom type: <literal>com.illflow.type.MyCustomType</"
+"literal> etc."
+msgstr ""
+"맞춤 타입의 클래스 이름(예를 들어. <literal>com.illflow.type.MyCustomType</"
+"literal>)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property and guess the correct Hibernate type. Hibernate will attempt to "
+"interpret the name of the return class of the property getter using, in "
+"order, rules 2, 3, and 4. In certain cases you will need the <literal>type</"
+"literal> attribute. For example, to distinguish between <literal>Hibernate."
+"DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a "
+"custom type."
+msgstr ""
+"만일 당신이 타입을 지정하지 않을 경우, Hibernate는 정확한 Hibernate 타입을 추"
+"정하기 위해 명명된 프로퍼티에 대해 reflection을 사용할 것이다. Hibernate는 "
+"그 순서에서 2,3,4 규칙들을 사용하여 프로퍼티 getter의 반환 클래스의 이름을 해"
+"석하려고 시도할 것이다. 하지만 이것은 항상 충분하지는 않다. 어떤 경우들에서, "
+"당신은 여전히 <literal>type</literal> 속성을 필요로 할 것이다.(예를 들어, "
+"<literal>Hibernate.DATE</literal>와 <literal>Hibernate.TIMESTAMP</literal> 사"
+"이를 구별하기 위해, 또는 맞춤 타입을 지정하기 위해.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>access</literal> attribute allows you to control how Hibernate "
+"accesses the property at runtime. By default, Hibernate will call the "
+"property get/set pair. If you specify <literal>access=\"field\"</literal>, "
+"Hibernate will bypass the get/set pair and access the field directly using "
+"reflection. You can specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"<literal>access</literal> 속성은 당신으로 하여금 Hibernate가 런타임 시에 프로"
+"퍼티에 액세스하는 방법을 제어하도록 해준다. 디폴트로 Hibernate는 프로퍼티 "
+"get/set 쌍을 호출할 것이다. 만일 당신이 <literal>access=\"field\"</literal>"
+"를 지정할 경우, Hibernate는 get/set 쌍을 피하고 reflection을 사용하여 직접 필"
+"드에 액세스 할 것이다. 당신은 <literal>org.hibernate.property."
+"PropertyAccessor</literal> 인터페이스를 구현하는 클래스를 명명함으로써 프로퍼"
+"티 접근을 위한 당신 자신의 방도를 지정할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A powerful feature is derived properties. These properties are by definition "
+"read-only. The property value is computed at load time. You declare the "
+"computation as an SQL expression. This then translates to a <literal>SELECT</"
+"literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+"특별히 강력한 특징은 파생된 플로퍼티들이다. 이들 프로퍼티들은 정의상 읽기 전"
+"용이고, 그 프로퍼티 값은 로드 시에 계산된다. 당신은 그 계산을 SQL 표현식으로 "
+"선언하고, 이것은 인스턴스를 로드시키는 SQL 질의 내의 <literal>SELECT</"
+"literal> 절 서브질의로 번역된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can reference the entity table by not declaring an alias on a particular "
+"column. This would be <literal>customerId</literal> in the given example. "
+"You can also use the nested <literal>&lt;formula&gt;</literal> mapping "
+"element if you do not want to use the attribute."
+msgstr ""
+"당신은 특정 컬럼(주어진 예제에서는 <literal>customerId</literal>)에 대해 "
+"alias를 선언하지 않음으로써 엔티티들 자신의 테이블을 참조할 수 있음을 노트하"
+"라. 또한 당신은 만일 당신이 그 속성을 사용하고 싶지 않을 경우에 내포된 "
+"<literal>&lt;formula&gt;</literal> 매핑 요소를 사용할 수 있음을 노트하라."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Many-to-one"
+msgstr "many-to-one"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association; a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"또 다른 영속 클래스에 대한 정규 연관관계는 <literal>many-to-one</literal> 요"
+"소를 사용하여 선언된다. 관계형 모형은 many-to-one 연관관계이다.: 하나의 테이"
+"블 내에 있는 foreign 키는 대상 테이블의 프라이머리 키 컬럼(들)을 참조하고 있"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>: 프로퍼티의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column. "
+"This can also be specified by nested <literal>&lt;column&gt;</literal> "
+"element(s)."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포"
+"된 <literal>&lt;column&gt;</literal> 요소(들)에 의해 지정된다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포"
+"된 <literal>&lt;column&gt;</literal> 요소(들)에 의해 지정될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the associated class."
+msgstr ""
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 연관된 클래스의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (옵션) 어느 오퍼레이션들이 부모 객체로부터 연관된 "
+"객체로 케스케이드 될 것인지를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>select</literal>): outer-"
+"join 페칭 또는 sequential select 페칭 사이에서 선택하라.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>select</literal>): outer-"
+"join 페칭 또는 순차적인 select 페칭 중에서 선택하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from another property that maps to "
+"the same column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</literal>) "
+"매핑된 컬럼들이 SQL <literal>UPDATE</literal>와/또는 <literal>INSERT</"
+"literal> 문장들 속에 포함될 것인지를 지정한다. 둘다 <literal>false</literal>"
+"로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑시키는 어떤 다른 컬럼들로부터 "
+"초기화 되거나 트리거나 다른 어플리케이션에 의해 초기화되는 단순한 \"파생된\" "
+"연관관계 값을 허용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (옵션) 이 foreign key에 조인되는 연관된 클래"
+"스의 프로퍼티 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. By allowing this to be the target of "
+"a <literal>property-ref</literal>, you can make the association multiplicity "
+"one-to-one."
+msgstr ""
+"<literal>unique</literal> (옵션): foreign-key 컬럼을 위한 유일 컨스트레인트"
+"의 DDL 생성을 가능하도록 해준다. 또한 이것이 property-ref의 대상이 되는 것을 "
+"허용해준다. 이것은 연관 다중성(association multiplicity)을 효율적으로 일 대 "
+"일로 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (옵션): foreign key 컬럼들을 위한 null 가능한 컨"
+"스트레인트의 DDL 생성을 가능하도록 해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. This requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트"
+"로, 단일 포인트 연관들이 프락시된다. <literal>lazy=\"no-proxy\"</literal>는 "
+"인스턴스 변수가 처음으로 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한"
+"다(빌드-시 바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>"
+"는 그 연관이 항상 eagerly 페치될 것임을 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): "
+"누락된 행들을 참조하는 foreign key들이 어떻게 처리될 것인지를 지정한다: "
+"<literal>ignore</literal>는 한 개의 누락된 행을 한 개의 null 연관으로 취급할 "
+"것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class."
+msgstr "<literal>entity-name</literal> (옵션): 연관된 클래스의 엔티티 이름."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (옵션): <emphasis>계산된</emphasis> foreign key에 "
+"대한 값을 정의하는 SQL 표현식."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are divided into "
+"three categories. First, basic operations, which include: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>; "
+"second, special values: <literal>delete-orphan</literal>; and third,"
+"<literal>all</literal> comma-separated combinations of operation names: "
+"<literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,"
+"delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> "
+"for a full explanation. Note that single valued, many-to-one and one-to-one, "
+"associations do not support orphan delete."
+msgstr ""
+"<literal>cascade</literal> 속성 값을 <literal>none</literal> 아닌 어떤 의미있"
+"는 다른 값으로 설정하는 것은 어떤 오퍼레이션들을 연관된 객체에게 보급할 것이"
+"다. 유의미한 값들은 Hibernate의 기본 오퍼레이션들의 이름들, 즉 "
+"<literal>persist, merge, delete, save-update, evict, replicate, lock, "
+"refresh</literal> 뿐만 아니라 특별한 값들, 즉 <literal>delete-orphan</"
+"literal>과 <literal>all</literal> 그리고 오퍼레이션 이름들의 쉼표 분리된 조합"
+"들, 예를 들면 <literal>cascade=\"persist,merge,evict\"</literal> 또는 "
+"<literal>cascade=\"all,delete-orphan\"</literal>이다. 전체 설명은 <xref "
+"linkend=\"objectstate-transitive\"/>를 보라. 단일값 연관들(many-to-one 연관"
+"과 one-to-one 연관)은 orphan delete를 지원하지 않음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr ""
+"일반적인 <literal>many-to-one</literal> 선언은 다음과 같이 간단하게 보여진다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is a complicated and "
+"confusing relational model. For example, if the <literal>Product</literal> "
+"class had a unique serial number that is not the primary key. The "
+"<literal>unique</literal> attribute controls Hibernate's DDL generation with "
+"the SchemaExport tool."
+msgstr ""
+"<literal>property-ref</literal> 속성은 오직 foreign key가 프라이머리 키가 아"
+"닌 연관된 테이블의 유일 키를 참조하는 리거시 데이터를 매핑하는데만 사용된다. "
+"이것은 꼴사나운 관계형 모형이다. 예를 들어, <literal>Product</literal> 클래스"
+"가 프라이머리 키를 아닌, 유일한 시리얼 번호를 갖는다고 가정하자."
+"(<literal>unique</literal> 속성은 SchemaExport 도구로 Hibernate의 DDL 생성을 "
+"제어한다.)"
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr ""
+"그런 다음 <literal>OrderItem</literal>에 대한 매핑은 다음을 사용할 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This is not encouraged, however."
+msgstr "하지만 이것은 확실히 권장되지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal>&lt;"
+"properties&gt;</literal> element."
+msgstr ""
+"만일 참조된 유일 키가 연관된 엔티티의 여러 프로퍼티들을 포함할 경우, 당신은 "
+"명명된 <literal>&lt;properties&gt;</literal> 요소 내부에 참조된 프로퍼티들을 "
+"매핑할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you can specify "
+"a property path:"
+msgstr ""
+"만일 참조된 유일키가 컴포넌트의 프로퍼티일 경우, 당신은 하나의 프로퍼티 경로"
+"를 지정할 수 있다:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "One-to-one"
+msgstr "one-to-one"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"또 다른 영속 클래스에 대한 one-to-one 연관관계는 <literal>one-to-one</"
+"literal> 요소를 사용하여 선언된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional): specifies that a foreign key "
+"constraint on the primary key of the mapped table and references the table "
+"of the associated class. This option affects the order in which <literal>save"
+"()</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association can be proxied. It is also used by the schema export "
+"tool."
+msgstr ""
+"<literal>constrained</literal> (옵션) 매핑된 테이블의 프라이머리 키에 대한 "
+"foreign 키 컨스트레인트가 연관된 클래스의 테이블을 참조하는지 여부를 지정한"
+"다. 이 옵션은 <literal>save()</literal>와 <literal>delete()</literal>가 케스"
+"케이드 되는 순서에 영향을 주고, 그 연관이 프락시 될 것인지 여부를 결정한다 "
+"(또한 스키마 내보내기 도구에 의해 사용된다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (옵션) 이 클래스의 프라이머리 키에 연결된 연"
+"관 클래스의 프로퍼티의 이름. 만일 지정되지 않을 경우, 연관 클래스의 프라이머"
+"리 키가 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): almost all one-to-one associations "
+"map to the primary key of the owning entity. If this is not the case, you "
+"can specify another column, columns or expression to join on using an SQL "
+"formula. See <literal>org.hibernate.test.onetooneformula</literal> for an "
+"example."
+msgstr ""
+"<literal>formula</literal> (옵션): 거의 모든 one to one 연관관계들은 소유하"
+"는 엔티티의 프라이머리 키로 매핑된다. 이것이 그 경우가 아닌 드문 경우들에서, "
+"당신은 SQL formula 사용에 결합시킬 몇몇 다른 컬럼, 컬럼들, 또는 표현식을 지정"
+"할 수 있다.(예제는 <literal>org.hibernate.test.onetooneformula</literal>를 보"
+"라.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. It requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트로 "
+"한쪽 끝 연관들이 프락시 된다. <literal>lazy=\"no-proxy\"</literal>는 인스턴"
+"스 변수가 처음 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한다(빌드-시 "
+"바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>는 그 연관들"
+"이 항상 eagerly 페치될 것임을 지정한다. <emphasis>만일 <literal>constrained="
+"\"false\"</literal>인 경우에, 프락싱은 불가능하고 Hibernate는 그 연관을 "
+"eager 페치시킬 것이다!</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "one-to-one 연관관계에는 두 가지 변종이 존재한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "프라이머리 키 연관관계들"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "유일 foreign 키 연관관계들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Primary key associations do not need an extra table column. If two rows are "
+"related by the association, then the two table rows share the same primary "
+"key value. To relate two objects by a primary key association, ensure that "
+"they are assigned the same identifier value."
+msgstr ""
+"프라이머리 키 연관들은 특별한 테이블 컬럼을 필요로 하지 않는다; 만일 두 개의 "
+"행들이 그 연관에 의해 관계지워지면, 두 개의 테이블 행들은 동일한 프라이머리 "
+"키 값을 공유한다. 따라서 만일 두 개의 객체들이 프라이머리 키 연관에 의해 관계"
+"지워지도록 당신이 원할 경우, 당신은 그것들에 동일한 식별자 값이 할당되도록 해"
+"야 한다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+"프라이머리 키 연관에 대해, 다음 매핑들을 <literal>Employee</literal>와 "
+"<literal>Person</literal> 각각에 추가하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE "
+"tables are equal. You use a special Hibernate identifier generation strategy "
+"called <literal>foreign</literal>:"
+msgstr ""
+"이제 우리는 PERSON 과 EMPLOYEE 테이블들에서 관계지워진 행들의 프라이머리 키들"
+"이 동일함을 확실히 해야 한다! 우리는 <literal>foreign</literal>로 명명되는 특"
+"별한 Hibernate 식별자 생성 방도를 사용한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is assigned the same "
+"primary key value as the <literal>Employee</literal> instance referred with "
+"the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+"그때 <literal>Person</literal>의 새로이 저장된 인스턴스는 그 "
+"<literal>Person</literal>의 <literal>employee</literal> 프로퍼티에 대해 참조"
+"된 <literal>Employee</literal> 인스턴스와 동일한 프라이머리 키를 할당받는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, can be expressed "
+"as:"
+msgstr ""
+"달리, <literal>Employee</literal>로부터 <literal>Person</literal>으로의 유일 "
+"컨스트레인트를 가진 하나의 foreign key는 다음과 같이 표현될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This association can be made bidirectional by adding the following to the "
+"<literal>Person</literal> mapping:"
+msgstr ""
+"그리고 이 연관은 다음을 <literal>Person</literal> 매핑에 추가함으로써 양방향"
+"이 될 수 있다:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Natural-id"
+msgstr "natural-id"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Although we recommend the use of surrogate keys as primary keys, you should "
+"try to identify natural keys for all entities. A natural key is a property "
+"or combination of properties that is unique and non-null. It is also "
+"immutable. Map the properties of the natural key inside the <literal>&lt;"
+"natural-id&gt;</literal> element. Hibernate will generate the necessary "
+"unique key and nullability constraints and, as a result, your mapping will "
+"be more self-documenting."
+msgstr ""
+"비록 우리가 프라이머리 키들로서 대용키들을 사용하는 것을 권장했을지라도, 당신"
+"은 여전히 모든 엔티티들에 대한 natural 키들을 식별하고자 원할 것이다. "
+"narutal 키는 유일(unique)하고 null이 아닌 프로퍼티 또는 프로퍼티들의 조합이"
+"다. 그것이 또한 불변하는 것일 경우가 더 좋다. <literal>&lt;natural-id&gt;</"
+"literal> 요소 내부에 있는 natural 키의 프로퍼티들을 매핑하라. Hibernate는 필"
+"수적인 유일 키와 null 허용가능한 컨스트레인트들을 생성시킬 것이고, 당신의 매"
+"핑은 보다 자가 설명적이게 될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"우리는 당신이 엔티티에 대한 narutal 키 프로퍼티들을 비교하는데 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 구현할 것을 강"
+"력하게 권장한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This mapping is not intended for use with entities that have natural primary "
+"keys."
+msgstr ""
+"이 매핑은 natural 프라이머리 키들을 가진 엔티티들을 위한 용도로 고안된 것은 "
+"아니다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>false</"
+"literal>): by default, natural identifier properties are assumed to be "
+"immutable (constant)."
+msgstr ""
+"<literal>mutable</literal> (옵션, 디폴트는 <literal>false</literal>): 디폴트"
+"로, narutal 식별자 프로퍼티들은 변경될 수 없는 것(상수)으로 가정된다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Component and dynamic-component"
+msgstr "component, dynamic-component"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components can, in turn, "
+"declare their own properties, components or collections. See the \"Component"
+"\" examples below:"
+msgstr ""
+"<literal>&lt;component&gt;</literal> 요소는 자식 객체의 프로퍼티들을 부모 클"
+"래스에 대한 테이블의 컬럼들로 매핑시킨다. 컴포넌트들은 그것들 자신의 프로퍼티"
+"들, 컴포넌트들, 또는 콜렉션들을 선언한다. 이래 \"컴포넌트들\"을 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 컴포넌트(자식) 클래스의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: do the mapped columns appear in SQL "
+"<literal>INSERTs</literal>?"
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 속"
+"에 나타나야 하는가?\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 내"
+"에 나타날 것인가?"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update</literal>: do the mapped columns appear in SQL "
+"<literal>UPDATEs</literal>?"
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 속"
+"에 나타나야 하는가?\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 내"
+"에 나타날 것인가?"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this component should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 "
+"변수가 처음으로 액세스될 때 이 컴포넌트가 lazily(느리게) 페치되어야 하는지 여"
+"부를 지정한다 (빌드 시 바이트코드 수단을 필요로 한다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this component either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 컴포넌트에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필"
+"요로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 "
+"발생할 것인지 여부를 결정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (옵션 - 디폴트는 <literal>false</literal>): 유일 컨"
+"스트레인트가 컴포넌트의 모든 매핑된 컬럼들에 대해 존재하는지 여부를 지정한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The child <literal>&lt;property&gt;</literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"자식 <literal>&lt;property&gt;</literal> 태그들은 자식 클래스의 프로퍼티들을 "
+"테이블 컬럼들로 매핑시킨다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal>&lt;component&gt;</literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함"
+"하는 엔티티에 대한 참조로서 매핑시키는 <literal>&lt;parent&gt;</literal> 서브"
+"요소를 허용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;dynamic-component&gt;</literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for "
+"more information."
+msgstr ""
+"<literal>&lt;dynamic-component&gt;</literal> 요소는 컴포넌트로서 매핑될"
+"<literal>Map</literal>을 허용한다. 여기서 프로퍼티 이름들은 map의 키들을 참조"
+"한다. <xref linkend=\"components-dynamic\"/>을 보라."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Properties"
+msgstr "properties"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;properties&gt;</literal> element allows the definition of a "
+"named, logical grouping of the properties of a class. The most important use "
+"of the construct is that it allows a combination of properties to be the "
+"target of a <literal>property-ref</literal>. It is also a convenient way to "
+"define a multi-column unique constraint. For example:"
+msgstr ""
+"<literal>&lt;properties&gt;</literal> 요소는 클래스의 프로퍼티들의 명명된, 논"
+"리적 그룹핑에 대한 정의를 허용한다. 그 구조에 대한 가장 중요한 사용은 그것이 "
+"프로퍼티들의 조합이 <literal>property-ref</literal>의 대상이 되는 것을 허용해"
+"준다는 점이다. 또한 그것은 다중 컬럼 유일 컨스트레인느를 정의하는 편리한 방법"
+"이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the logical name of the grouping. It is "
+"<emphasis>not</emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: 그룹핑의 논리적 이름 - 실제 프로퍼티 이름이 "
+"<emphasis>아니다</emphasis>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to these properties either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이들 프로퍼티들에 대한 업데이트들이 optimistic 잠금의 획득을 필요"
+"로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 발"
+"생할 것인지 여부를 결정한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal>&lt;properties&gt;</literal> "
+"mapping:"
+msgstr ""
+"예를 들어, 만일 우리가 다음 <literal>&lt;properties&gt;</literal> 매핑을 가"
+"질 경우:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You might have some legacy data association that refers to this unique key "
+"of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"그 때 우리는 프라이머리 키가 아닌, <literal>Person</literal> 테이블의 이 유"
+"일 키를 참조하는 어떤 리거시 데이터 연관을 가질 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The use of this outside the context of mapping legacy data is not "
+"recommended."
+msgstr ""
+"우리는 리거시 데이터를 매핑시키는 컨텍스트 바깥에서 이런 종류의 것을 사용하"
+"는 것을 권장하지 않는다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Subclass"
+msgstr "subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Polymorphic persistence requires the declaration of each subclass of the "
+"root persistent class. For the table-per-class-hierarchy mapping strategy, "
+"the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+"마지막으로, 다형성 영속성은 루트 영속 클래스에 대한 각각의 서브클래스 선언을 "
+"필요로 한다.(권장되는) table-per-class-hierarchy(테이블 당 클래스 계층구조) "
+"매핑 방도의 경우, <literal>&lt;subclass&gt;</literal> 선언이 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 이름.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 개개의 "
+"서브클래스들을 구분짓는 값."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface used for "
+"lazy initializing proxies."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): lazy 초기화 프락시들을 사용하는데 클래스 또"
+"는 인터페이스를 지정한다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭의 사용을 불가능하게 만든"
+"다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Each subclass declares its own persistent properties and subclasses. "
+"<literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a hierarchy must define a unique <literal>discriminator-value</literal>. If "
+"this is not specified, the fully qualified Java class name is used."
+msgstr ""
+"각각의 서브클래스는 그것 자신의 영속 프로퍼티들과 서브클래스들을 선언할 것이"
+"다. <literal>&lt;version&gt;</literal> 프로퍼티와 <literal>&lt;id&gt;</"
+"literal> 프로퍼티는 루트 클래스로부터 상속된다고 가정된다. 계층구조 내에서 각"
+"각의 서브클래스는 유일한 <literal>discriminator-value</literal>를 정의해야 한"
+"다. none이 지정될 경우, 전체 수식어가 붙은 자바 클래스 이름이 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For information about inheritance mappings see <xref linkend=\"inheritance"
+"\" />."
+msgstr "상속 매핑들에 대한 정보는 <xref linkend=\"inheritance\"/>을 보라."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Joined-subclass"
+msgstr "joined-subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Each subclass can also be mapped to its own table. This is called the table-"
+"per-subclass mapping strategy. An inherited state is retrieved by joining "
+"with the table of the superclass. To do this you use the <literal>&lt;joined-"
+"subclass&gt;</literal> element. For example:"
+msgstr ""
+"다른 방법으로 각각의 서브클래스는 그것 자신이 테이블로 매핑될 수 있다(table-"
+"per-subclass 매핑 방도). 상속된 상태는 슈퍼클래스의 테이블과 조인함으로써 검"
+"색된다. 우리는 <literal>&lt;joined-subclass&gt;</literal> 요소를 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal>: 서브클래스 테이블의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): lazy 초기화 프락시들을 사용하는데 클래스 또"
+"는 인터페이스를 지정한다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭의 사용을 불가능하게 만든"
+"다.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A discriminator column is not required for this mapping strategy. Each "
+"subclass must, however, declare a table column holding the object identifier "
+"using the <literal>&lt;key&gt;</literal> element. The mapping at the start "
+"of the chapter would then be re-written as:"
+msgstr ""
+"판별자(discriminator) 컬럼은 이 매핑 방도에 필요하지 않다. 하지만 각각의 서브"
+"클래스는 <literal>&lt;key&gt;</literal> 요소를 사용하여 객체 식별자를 보관하"
+"는 테이블 컬럼을 선언해야 한다. 이 장의 시작 부분에 있는 매핑은 다음과 같이 "
+"다시 작성될 것이다:"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Union-subclass"
+msgstr "union-subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables. This is called the table-per-concrete-class strategy. "
+"Each table defines all persistent states of the class, including the "
+"inherited state. In Hibernate, it is not necessary to explicitly map such "
+"inheritance hierarchies. You can map each class with a separate <literal>&lt;"
+"class&gt;</literal> declaration. However, if you wish use polymorphic "
+"associations (e.g. an association to the superclass of your hierarchy), you "
+"need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For "
+"example:"
+msgstr ""
+"제3의 옵션은 상속 계층구조의 concrete 클래스들 만을 테이블들로 매핑하는 것이"
+"다 (table-per-concrete-class 방도). 여기서 각각의 테이블은 상속된 상태를 포함"
+"하여 클래스의 모든 영속 상태를 정의한다. Hibernate에서, 그것은 그런 상속 계층"
+"구조들을 명시적으로 매핑하는데 필수적이지 않다. 당신은 별도의 <literal>&lt;"
+"class&gt;</literal> 선언을 가진 각각의 클래스를 간단히 매핑시킬 수 있다. 하지"
+"만 당신이 다형성 연관관계들(예를 들면 당신의 계층구조의 슈퍼클래스에 대한 연"
+"관)을 사용하고자 원할 경우, 당신은 <literal>&lt;union-subclass&gt;</literal> "
+"매핑을 사용할 필요가 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No discriminator column or key column is required for this mapping strategy."
+msgstr "이 매핑 방도에는 판별자 컬럼이나 키 컬럼이 필요하지 않다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Join"
+msgstr "join"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using the <literal>&lt;join&gt;</literal> element, it is possible to map "
+"properties of one class to several tables that have a one-to-one "
+"relationship. For example:"
+msgstr ""
+"<literal>&lt;join&gt;</literal>요소를 사용하면, 테이블들 사이에 1대일 관계가 "
+"존재할 때, 하나의 클래스에 속한 프로퍼티들을 여러 테이블들로 매핑시키는 것이 "
+"가능하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal>: 조인된 테이블의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"if set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its "
+"superclasses. It will use an outer join for a <literal>&lt;join&gt;</"
+"literal> defined by a subclass. If set to <literal>select</literal> then "
+"Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> "
+"defined on a subclass. This will be issued only if a row represents an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): "
+"<literal>join</literal>으로 설정될 경우, 디폴트로 Hibernate는 하나의 클래스 "
+"또는 그것의 슈퍼 클래스들에 의해 정의된 <literal>&lt;join&gt;</literal>을 검"
+"색하는데 inner join을 사용하고 서브클래스에 의해 정의된 <literal>&lt;join&gt;"
+"</literal>을 검색하는데 outer join을 사용할 것이다. 만일 <literal>select</"
+"literal>로 설정할 경우, Hibernate는 서브클래스 상에 정의된 <literal>&lt;"
+"join&gt;</literal>에 대해 sequential select를 사용할 것이고, 그것은 한 행이 "
+"서브클래스의 인스턴스를 표현하는 것으로 판명되는 경우에만 명령이 내려질 것이"
+"다. inner join들은 여전히 클래스와 그것의 슈퍼클래스들에 의해 정의된 "
+"<literal>&lt;join&gt;</literal>을 검색하는데 사용될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will not insert or update the properties "
+"defined by this join."
+msgstr ""
+"<literal>inverse</literal> (옵션 - 디폴트는 <literal>false</literal>): 이용 "
+"가능할 경우, Hibernate는 이 조인에 의해 정의된 프로퍼티들을 삽입시키거나 업데"
+"이트하려고 시도하지 않을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null. It will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (옵션 - 디폴트는 <literal>false</literal>): 이용 "
+"가능할 경우, Hibernate는 이 조인에 의해 정의된 프로퍼티들이 null이 아닐 경우"
+"에만 한 행을 삽입시킬 것이고 그 프로퍼티들을 검색하는데 outer join을 항상 사"
+"용할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For example, address information for a person can be mapped to a separate "
+"table while preserving value type semantics for all properties:"
+msgstr ""
+"예를 들어, (모든 프로퍼티들에 대해 value 타입 의미를 유지하면서) 개인의 주소 "
+"정보는 별도의 테이블에 매핑될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models. We recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"이 특징은 자주 리거시 데이터 모형들에 대해서만 유용하고, 우리는 클래스들과 "
+"잘 정제된 도메인 모형 보다 더 적은 테이블들을 권장한다. 하지만 뒷 부분에 설명"
+"되어 있듯이, 그것은 하나의 계층구조 내에 있는 상속 매핑 방도들 사이를 전환하"
+"는 것에 유용하다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Key"
+msgstr "key"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;key&gt;</literal> element has featured a few times within "
+"this guide. It appears anywhere the parent mapping element defines a join to "
+"a new table that references the primary key of the original table. It also "
+"defines the foreign key in the joined table:"
+msgstr ""
+"우리는 지금까지 몇 번 나타났던 <literal>&lt;key&gt;</literal> 요소를 보았다. "
+"그것은 부모 매핑 요소가 새로운 테이블에 대한 조인을 정의하는 어느 곳에서나 나"
+"타나고, 그것은 조인된 테이블의 foreign 키를 정의하고, 그것은 원래의 테이블의 "
+"프라이머리 키를 참조한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional - defaults to <literal>noaction</"
+"literal>): specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (옵션 - 디폴트는 <literal>noaction</literal>): "
+"foreign key 컨스트레인트가 데이터베이스 레벨의 cascade delete를 사용가능하도"
+"록 할 것인지 여부를 지정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): specifies that the foreign key "
+"refers to columns that are not the primary key of the original table. It is "
+"provided for legacy data."
+msgstr ""
+"<literal>property-ref</literal> (옵션): foreign key가 원래의 테이블의 프라이"
+"머리 키가 아닌 컬럼들을 참조함을 지정한다. (리거시 데이터에 제공됨.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): specifies that the foreign key "
+"columns are not nullable. This is implied whenever the foreign key is also "
+"part of the primary key."
+msgstr ""
+"<literal>not-null</literal> (옵션): foreign 키 컬럼들이 not null 임를 지정한"
+"다(이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update</literal> (optional): specifies that the foreign key should "
+"never be updated. This is implied whenever the foreign key is also part of "
+"the primary key."
+msgstr ""
+"<literal>update</literal> (옵션): foreign 키가 결코 업데이트되지 않아야 함을 "
+"지정한다(이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): specifies that the foreign key should "
+"have a unique constraint. This is implied whenever the foreign key is also "
+"the primary key."
+msgstr ""
+"<literal>unique</literal> (옵션): foreign 키가 유일 컨스트레인트를 가져야 함"
+"을 지정한다 (이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된"
+"다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For systems where delete performance is important, we recommend that all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"uses a database-level <literal>ON CASCADE DELETE</literal> constraint, "
+"instead of many individual <literal>DELETE</literal> statements. Be aware "
+"that this feature bypasses Hibernate's usual optimistic locking strategy for "
+"versioned data."
+msgstr ""
+"우리는 delete 퍼포먼스가 중요한 시스템들에 대해 권장하고, 모든 키들은 "
+"<literal>on-delete=\"cascade\"</literal>로 정의되고, Hibernate는 많은 "
+"<literal>DELETE</literal> 문장들 대신에, 데이터베이스 레벨의 <literal>ON "
+"CASCADE DELETE</literal> 컨스트레인트를 사용할 것이다. 이 특징은 Hibernate의 "
+"통상적인 버전화된 데이터에 대한 optimistic 잠금 방도를 무시한다는 점을 알고 "
+"있어라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one-to-many association. If you map a "
+"unidirectional one-to-many association to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>."
+msgstr ""
+"<literal>not-null</literal> 속성과 <literal>update</literal> 속성들은 단방향 "
+"one to many 연관관계를 매핑할 때 유용하다. 만일 당신이 단방향 one to many를 "
+"null이 허용되지 않는 foreign 키로 매핑할 경우, 당신은 <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>를 사용하여 그 키 컬럼을 선언<emphasis>해야 한다</"
+"emphasis>."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Column and formula elements"
+msgstr "column 요소와 formula 요소"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Mapping elements which accept a <literal>column</literal> attribute will "
+"alternatively accept a <literal>&lt;column&gt;</literal> subelement. "
+"Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the "
+"<literal>formula</literal> attribute. For example:"
+msgstr ""
+"column 속성을 허용하는 임의의 매핑 요소는 대안적으로 하나의 <literal>&lt;"
+"column&gt;</literal> 서브요소를 수용할 것이다. 비슷하게 <literal>&lt;"
+"formula&gt;</literal>는 <literal>formula</literal> 속성에 대한 대안이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most of the attributes on <literal>column</literal> provide a means of "
+"tailoring the DDL during automatic schema generation. The <literal>read</"
+"literal> and <literal>write</literal> attributes allow you to specify custom "
+"SQL that Hibernate will use to access the column's value. For more on this, "
+"see the discussion of <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link>."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>column</literal> and <literal>formula</literal> elements can "
+"even be combined within the same property or association mapping to express, "
+"for example, exotic join conditions."
+msgstr ""
+"<literal>column</literal> 속성과 <literal>formula</literal> 속성은 예를 들어 "
+"신종 조인 조건들을 표현하기 위해 동일한 property 또는 연관관계 매핑 내에 결합"
+"될 수 있다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Import"
+msgstr "import"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your application has two persistent classes with the same name, and you "
+"do not want to specify the fully qualified package name in Hibernate "
+"queries, classes can be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You can also import classes and "
+"interfaces that are not explicitly mapped:"
+msgstr ""
+"당신의 어플리케이션이 동일한 이름을 가진 두 개의 영속 클래스들을 갖고, 당신"
+"이 Hibernate 질의들 내에서 전체 수식어가 붙은 (패키지)이름을 지정하는 것을 원"
+"하지 않는다고 가정하자. 클래스들은 <literal>auto-import=\"true\"</literal>에 "
+"의존하기 보다 명시적으로 \"임포트 될 \" 것이다. 당신은 심지어 명시적으로 매핑"
+"되지 않는 클래스들과 인터페이스들을 임포트 시킬 수(가져오기 할 수) 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr ""
+"<literal>class</literal>: 임의의 Java 클래스의 전체 수식어가 붙은 클래스 이"
+"름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): a name that can be used in the query language."
+msgstr ""
+"<literal>rename</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스 이름): "
+"질의 언어 내에서 사용될 이름."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Any"
+msgstr "any"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is one more type of property mapping. The <literal>&lt;any&gt;</"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping requires more than one column. The "
+"first column contains the type of the associated entity. The remaining "
+"columns contain the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association. This is not the usual way of "
+"mapping polymorphic associations and you should use this only in special "
+"cases. For example, for audit logs, user session data, etc."
+msgstr ""
+"하나 이상의 프로퍼티 매핑 타입이 존재한다. <literal>&lt;any&gt;</literal> 매"
+"핑 요소는 여러 테이블들로부터 클래스들에 대한 하나의 다형성 연관관계를 정의한"
+"다. 이 매핑 타입은 언제나 하나 이상의 컬럼을 필요로 한다. 첫 번째 컬럼은 연관"
+"된 엔티티의 타입을 보관한다. 나머지 컬럼들은 식별자를 보관한다. 이런 종류의 "
+"연관관계들에 대해 foreign key 컨스트레인트를 지정하는 것이 불가능해서, 이것"
+"은 (다형성) 연관관계들을 매핑하는 통상적인 방법으로서 가장 확실한 수단이 아니"
+"다. 당신은 매우 특별한 경우들 (예를 들어 감사 로그들, 사용자 세션 데이터 등)"
+"에서만 이것을 사용해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute allows the application to specify "
+"a custom type that maps database column values to persistent classes that "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"<literal>meta-type</literal> 속성은 어플리케이션으로 하여금 데이터베이스 컬"
+"럼 값들을 <literal>id-type</literal>에 의해 지정된 타입의 식별자 프로퍼티들"
+"을 가진 영속 클래스들로 매핑시키는 맞춤형 타입을 지정하도록 한다. 당신은 "
+"meta-type의 값들로부터 클래스 이름들로의 매핑을 지정해야 한다."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>: 프로퍼티 이름."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>: 식별자 타입."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal> (옵션 - 디폴트는 <literal>string</literal>): "
+"discriminator 매핑에 허용되는 임의의 타입."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"cascade 스타일."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property either do or do not "
+"require acquisition of the optimistic lock. It defines whether a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금 획득을 필요로 하는"
+"지 여부를 지정한다. 달리 말해, 이 프로퍼티가 dirty일 경우에 버전증가가 발생"
+"할 것인지 여부를 정의한다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Hibernate types"
+msgstr "Hibernate 타입들"
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "엔티티들과 값들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In relation to the persistence service, Java language-level objects are "
+"classified into two groups:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model, "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted. Saves and deletions, however, can be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children. This is "
+"different from the ODMG model of object persistence by reachability and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They can "
+"also be versioned."
+msgstr ""
+"<emphasis>entity</emphasis>는 엔티티에 대한 참조들을 보관하는 임의의 다른 객"
+"체들과는 독립적으로 존재한다. 참조되지 않은 객체가 쓰레기 수집되는 통상의 자"
+"바 모형과 이것은 대조적이다. (저장들과 삭제들이 부모 엔티티로부터 그것의 자식"
+"으로의 케스케이드 되는 경우를 제외하면) 엔티티들은 명시적으로 저장되고 삭제되"
+"어야 한다. 이것은 도달 가능성(reachablity)에 의한 객체 영속성의 ODMG 모형과"
+"는 다르다 - 그리고 어플리케이션 객체들이 대형 시스템들에서 대개 어떻게 사용되"
+"는가에 훨씬 더 가깝게 대응한다. 엔티티들은 순환 참조와 공유 참조들을 지원한"
+"다. 그것들 또한 버전화 될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives: "
+"collections (not what is inside a collection), components and certain "
+"immutable objects. Unlike entities, values in particular collections and "
+"components, <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects and primitives are persisted and deleted along with "
+"their containing entity, they cannot be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"엔티티의 영속 상태는 다른 엔티티들에 대한 참조들과 <emphasis>value</"
+"emphasis> 타입들로 구성된다. 값들은 원시 타입들, 콜렉션들(하나의 콜렉션 내부"
+"에 있지 않는 것들), 컴포넌트들, 그리고 어떤 불변의 객체들이다. entities와는 "
+"달리, (특별한 콜렉션들과 컴포넌트들에서) 값들은 도달가능성(reachability)에 의"
+"해 영속화 <emphasis>되고</emphasis> 삭제 된다. value 객체들(과 원시 타입들)"
+"이 그것들의 포함하는 엔티티에 따라 영속화 되고 삭제 되므로, 그것들은 독립적으"
+"로 버전화 되지 않는다. 값들은 독립적인 엔티티를 갖지 않아서, 그것들은 두 개"
+"의 엔티티들이나 콜렉션들에 의해 공유될 수 없다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Until now, we have been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Not all user-defined classes with a "
+"persistent state, however, are entities. A <emphasis>component</emphasis> is "
+"a user-defined class with value semantics. A Java property of type "
+"<literal>java.lang.String</literal> also has value semantics. Given this "
+"definition, all types (classes) provided by the JDK have value type "
+"semantics in Java, while user-defined types can be mapped with entity or "
+"value type semantics. This decision is up to the application developer. An "
+"entity class in a domain model will normally have shared references to a "
+"single instance of that class, while composition or aggregation usually "
+"translates to a value type."
+msgstr ""
+"지금까지 우리는 엔티티들을 참조하기 위해 \"영속 클래스\"를 사용해 왔다. 우리"
+"는 그것을 계속 사용할 것이다. 하지만 엄격히 말해, 영속 상태를 가진 모든 사용"
+"자 정의 클래스들은 엔티티들이 아니다. <emphasis>컴포넌트</emphasis>는 value "
+"의미를 가진 사용자 정의 클래스이다. <literal>java.lang.String</literal> 타입"
+"의 자바 프로퍼티는 또한 value 의미를 갖는다. 이 정의가 주어지면, 우리는 JDK"
+"에 의해 제공된 모든 타입들(클래스들)이 자바에서 value 타입 의미를 갖고, 반면"
+"에 사용자 정의 타입들은 엔티티 또는 type 의미로서 매핑된다고 말할 수 있다. "
+"이 판단은 어플리케이션 개발자에게 달려 있다. 도메인 모형에서 엔티티 클래스에 "
+"대한 좋은 힌트는 그 클래스의 하나의 인스턴스에 대한 공유된 참조들인 반면에, "
+"composition이나 aggregation은 대개 value 타입으로 변환된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr "우리는 문서를 통해 두 개념들을 다시 고찰할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The challenge is to map the Java type system, and the developers' definition "
+"of entities and value types, to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate. For entities, <literal>&lt;"
+"class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. "
+"For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;"
+"component&gt;</literal>etc., that usually have a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides a range of mappings "
+"for standard JDK value types out of the box. You can write your own mapping "
+"types and implement your own custom conversion strategies."
+msgstr ""
+"도점점은 Java type 시스템(과 엔티티들 및 value 타입들에 대한 개발자의 정의)"
+"를 SQL/데이터베이스 type 타입으로 매핑하는 것이다. 두 시스템들 사이의 다리는 "
+"Hibernate에 의해 제공된다: 엔티티들의 경우 우리는 <literal>&lt;class&gt;</"
+"literal>, <literal>&lt;subclass&gt;</literal> 등을 사용한다.value 타입들의 경"
+"우 우리는 대개<literal>type</literal> 속성을 가진 <literal>&lt;property&gt;</"
+"literal>, <literal>&lt;component&gt;</literal> 등을 사용한다. 이 속성의 값은 "
+"Hibernate <emphasis>매핑 타입</emphasis>의 이름이다. Hibernate는 (표준 JDK "
+"value 타입들에 대해) 많은 매핑들을 제공한다. 나중에 보게 되듯이, 당신은 당신 "
+"자신의 매핑 타입들을 작성할 수 있고 마찬가지로 당신의 맞춤형 변환 방도들을 구"
+"현할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With the exception of collections, all built-in Hibernate types support null "
+"semantics."
+msgstr ""
+"콜렉션들을 제외한 모든 미리 빌드된 Hibernate 타입들은 null 의미를 지원한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "기본 value 타입들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> can be roughly "
+"categorized into the following:"
+msgstr ""
+"미리-만들어진 <emphasis>기본 매핑 타입들</emphasis>은 대략 다음과 같이 카테고"
+"리로 분류된다 <placeholder-1/>"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+msgstr ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"자바 원시타입들이나 wrapper 클래스들로부터 적절한(벤더-지정적인) SQL 컬럼 타"
+"입들로의 타입 매핑. <literal>boolean, yes_no</literal>와 "
+"<literal>true_false</literal>는 Java <literal>boolean</literal>이나 "
+"<literal>java.lang.Boolean</literal>에 대한 모든 대체적인 인코딩들이다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"<literal>java.lang.String</literal>으로부터 <literal>VARCHAR</literal> (또는 "
+"Oracle <literal>VARCHAR2</literal>)로의 타입 매핑."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "date, time, timestamp"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"<literal>java.util.Date</literal>와 그것의 서브클래스로부터 SQL 타입들인 "
+"<literal>DATE</literal>, <literal>TIME</literal>, <literal>TIMESTAMP</"
+"literal> (또는 등가물)로의 타입 매핑들."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "calendar, calendar_date"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"<literal>java.util.Calendar</literal>로부터 SQL 타입들인 <literal>TIMESTAMP</"
+"literal>, <literal>DATE</literal> (또는 등가물)로의 타입 매핑들."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "big_decimal, big_integer"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"<literal>java.math.BigDecimal</literal>ê³¼ <literal>java.math.BigInteger</"
+"literal>로부터 <literal>NUMERIC</literal> (또는 Oracle <literal>NUMBER</"
+"literal>)로의 타입 매핑들."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "locale, timezone, currency"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
+msgstr ""
+"<literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal>, "
+"그리고 <literal>java.util.Currency</literal>로부터 <literal>VARCHAR</literal>"
+"(또는 Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Locale</"
+"literal>과 <literal>Currency</literal>의 인스턴스들은 그것들의 ISO 코드들로 "
+"매핑된다. <literal>TimeZone</literal>의 인스턴스들은 그것들의 <literal>ID</"
+"literal>로 매핑된다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
+msgstr ""
+"<literal>java.lang.Class</literal>로부터 <literal>VARCHAR</literal> (또는 "
+"Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Class</literal>"
+"는 그것의 전체 수식어가 붙은 이름으로 매핑된다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "byte 배열들을 적절한 SQL binary 타입으로 매핑시킨다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"long Java 문자열을 SQL <literal>CLOB</literal> 또는 <literal>TEXT</literal> "
+"타입으로 매핑시킨다"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You can also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+"serializable Java 타입들을 적절한 SQL binary 타입으로 매핑시킨다. 당신은 또"
+"한 디폴트로 기본 타입이 아닌 serializable 자바 클래스 또는 인터페이스의 이름"
+"을 가진 Hibernate 타입 <literal>serializable</literal>을 나타낼 수도 있다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types can be inconvenient for some "
+"applications, since the blob or clob object cannot be reused outside of a "
+"transaction. Driver support is patchy and inconsistent."
+msgstr ""
+"<literal>java.sql.Clob</literal>와 <literal>java.sql.Blob</literal> JDBC 클래"
+"스들에 대한 타입 매핑들. 이들 타입들은 몇몇 어플리케이션들에서는 불편하다. 왜"
+"냐하면 blob 또는 clob 객체는 트랜잭션 외부에서 재사용될 수 없기 때문이다.(게"
+"다가 드라이버 지원이 비일관적이고 페치되어야 한다)"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+msgstr ""
+"imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Type mappings for what are considered mutable Java types. This is where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new, "
+"nonidentical, object to the property."
+msgstr ""
+"대개 가변적인 Java 타입들로 간주되는 것에 대한 타입 매핑들. 여기서 Hibernate"
+"는 불변적인 Java 타입들에 대해서만 적절한 어떤 최적화를 행하고, 어플리케이션 "
+"그 객체를 변할 수 없는 것으로 취급한다. 예를 들어, 당신은 "
+"<literal>imm_timestamp</literal>로서 매핑된 인스턴스에 대해 <literal>Date."
+"setTime()</literal>을 호출하지 않을 것이다. 프로퍼티의 값을 변경시키고, 그 변"
+"경을 영속화 시키기 위해서, 어플리케이션은 하나의 새로운 (동일하지 않은) 객체"
+"를 그 프로퍼티에 할당해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Unique identifiers of entities and collections can be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. Composite identifiers are also allowed. See below for more "
+"information."
+msgstr ""
+"엔트리들과 콜렉션들의 유일 식별자들은 <literal>binary</literal>, "
+"<literal>blob</literal> 그리고 <literal>clob</literal>를 제외한 기본 타입 중 "
+"어느 것일 수 있다. (Composite 식별자들이 또한 허용된다. 아래를 보라.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"기본 value 타입들은 <literal>org.hibernate.Hibernate</literal>에 정의되어 있"
+"는 대응하는 <literal>Type</literal> 상수들을 갖는다. 예를 들어, "
+"<literal>Hibernate.STRING</literal>은 <literal>string</literal> 타입을 표현한"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "맞춤형 value 타입들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. Custom types are not limited to "
+"mapping a property, or collection element, to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"개발자들이 그들 자신들의 value 타입들을 생성시키는 것이 상대적으로 쉽다. 예"
+"를 들어, 당신은 <literal>java.lang.BigInteger</literal> 타입의 프로퍼티들을 "
+"<literal>VARCHAR</literal> 컬럼들로 영속화 시키고자 원할 수 있다. Hibernate"
+"는 이것을 위한 미리 만들어진 타입을 제공하지 않는다. 그러나 맞춤형 타입들은 "
+"프로퍼티(또는 콜렉션 요소)를 하나의 테이블 컬럼으로의 매핑하는 것에 제약되지 "
+"않는다. 따라서 예를 들어, 당신은 <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal> 컬럼들로 영속화 되는 "
+"<literal>java.lang.String</literal> 타입의 자바 프로퍼티<literal>getName()</"
+"literal>/ <literal>setName()</literal>를 가질 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. View "
+"<literal>org.hibernate.test.DoubleStringType</literal> to see the kind of "
+"things that are possible."
+msgstr ""
+"맞춤형 타입을 구현하려면, <literal>org.hibernate.UserType</literal> 또는 "
+"<literal>org.hibernate.CompositeUserType</literal>을 구현하고 그 타입의 전체 "
+"수식어가 붙은 클래스명을 사용하여 프로퍼티들을 선언하라. 가능한 종류의 것들"
+"을 보려면 <literal>org.hibernate.test.DoubleStringType</literal>을 체크하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice the use of <literal>&lt;column&gt;</literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"하나의 프로퍼티를 여러 개의 컬럼들로 매핑시키는 <literal>&lt;column&gt;</"
+"literal> 태그의 사용을 주목하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"<literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, "
+"<literal>UserCollectionType</literal>, 그리고 <literal>UserVersionType</"
+"literal> 인터페이스들은 더 많은 특화된 사용들을 위한 지원을 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal>&lt;"
+"type&gt;</literal> element in your mapping files."
+msgstr ""
+"당신은 매핑 파일 속에 <literal>UserType</literal>에 대한 파라미터들을 제공할 "
+"수도 있다. 이것을 행하기 위해, 당신의 <literal>UserType</literal>은 "
+"<literal>org.hibernate.usertype.ParameterizedType</literal> 인터페이스를 구현"
+"해야 한다. 당신의 맞춤형 타입에 파라미터들을 제공하기 위해, 당신은 당신의 매"
+"핑 파일들 속에 <literal>&lt;type&gt;</literal> 요소를 사용할 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"<literal>UserType</literal>은 이제 그것에 전달된 <literal>Properties</"
+"literal> 객체로부터 <literal>default</literal>로 명명된 파라미터에 대한 값을 "
+"검색할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you regularly use a certain <literal>UserType</literal>, it is useful to "
+"define a shorter name for it. You can do this using the <literal>&lt;"
+"typedef&gt;</literal> element. Typedefs assign a name to a custom type, and "
+"can also contain a list of default parameter values if the type is "
+"parameterized."
+msgstr ""
+"만일 당신이 매우 자주 어떤 UserType을 사용할 경우, 그것은 그것에 대한 더 짧"
+"은 이름을 정의하는 것이 유용할 수 있다. <literal>&lt;typedef&gt;</literal> 요"
+"소를 사용하여 이것을 행할 수 있다. Typedef들은 이름을 맞춤형 타입에 할당하"
+"고, 또한 만일 그 타입이 파라미터화 된 경우에 디폴트 파라미터 값들의 리스트를 "
+"포함할 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"property 매핑 상에 type 파라미터들을 사용함으로써 경우에 맞게 typedef 내에 제"
+"공된 파라미터들을 오버라이드 시키는 것이 가능하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will rarely need to use a custom type, it is considered "
+"good practice to use custom types for non-entity classes that occur "
+"frequently in your application. For example, a <literal>MonetaryAmount</"
+"literal> class is a good candidate for a <literal>CompositeUserType</"
+"literal>, even though it could be mapped as a component. One reason for this "
+"is abstraction. With a custom type, your mapping documents would be "
+"protected against changes to the way monetary values are represented."
+msgstr ""
+"비록 Hibernate의 풍부한 범위의 미리 만들어진 타입들과 컴포넌트들에 대한 지원"
+"이 당신이 가끔 맞춤형 타입을 사용할 <emphasis>필요가</emphasis> 거의 없을 것"
+"임을 의미할 지라도, 그럼에도 불구하고 그것은 당신의 어플리케이션에서 자주 발"
+"생하는 (엔티티가 아닌) 클래스들에 대해 맞춤형 타입들을 사용하는 좋은 형식으"
+"로 간주된다. 예를 들어 <literal>MonetaryAmount</literal> 클래스는 비록 그것"
+"이 컴포넌트로서 쉽게 매핑될 수 있을지라도, <literal>CompositeUserType</"
+"literal>에 대한 좋은 후보이다. 이것에 대한 하나의 동기는 추상화이다. 맞춤형 "
+"타입으로, 당신의 매핑 문서들은 화폐 값들을 표현하는 당신의 방법에서 가능한 변"
+"경들에 대해 장차 검증될 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "하나의 클래스를 한 번 이상 매핑하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case, you must specify an <emphasis>entity name</emphasis> to "
+"disambiguate between instances of the two mapped entities. By default, the "
+"entity name is the same as the class name. Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"하나의 특정한 영속 클래스에 대해 하나 이상의 매핑을 제공하는 것이 가능하다. "
+"이 경우에 당신은 두 개의 매핑된 엔티티들의 인스턴스들 사이를 명확하게 하기 위"
+"해 <emphasis>하나의 엔티티 이름</emphasis>을 지정해야 한다. (디폴트로, 엔티"
+"티 이름은 클래스 이름과 동일한 것이다.) Hibernate는 영속 객체들에 대해 작업"
+"할 때, 질의들을 작성할 때, 또는 명명된 엔티티에 대한 연관들을 매핑할 때 당신"
+"으로 하여금 엔티티 이름을 지정하도록 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Associations are now specified using <literal>entity-name</literal> instead "
+"of <literal>class</literal>."
+msgstr ""
+"연관들은 이제 <literal>class</literal> 대신에 <literal>entity-name</literal>"
+"을 사용하여 어떻게 지정되는지를 주목하라."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "SQL 인용부호 표시된 식별자들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal>. This is usually double quotes, but the SQL Server uses brackets "
+"and MySQL uses backticks."
+msgstr ""
+"당신은 매핑 문서 내에서 테이블 또는 컬럼 이름을 역인용기호(`)들 속에 넣어서 "
+"생성된 SQL에서 식별자를 인용부호 처리하도록 Hibernate에게 강제할 수도 있다. "
+"Hibernate는 SQL <literal>Dialect</literal>에 대해 정확한 인용 스타일을 사용"
+"할 것이다(대개 이중 인용부호 이지만, SQL Server의 경우에는 모난 괄호들이고 "
+"MySQL의 경우에는 역인용부호(`))."
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "Metadata 대안들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"XML does not suit all users so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
+msgstr ""
+"XML은 모든 사람들을 위한 것이 아니지만, Hibernate에서 O/R 매핑 메타데이터를 "
+"정의하는 몇몇 대안적인 방법들이 존재한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "XDoclet 마크업 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover "
+"this approach in this reference guide since it is considered part of "
+"XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings:"
+msgstr ""
+"많은 Hibernate 사용자들은 XDoclet <literal>@hibernate.tags</literal>를 사용하"
+"여 소스 코드 속에 직접 매핑 정보를 삽입시키는 것을 선호한다. 우리는 이 문서에"
+"서 이 접근법을 다루지 않을 것이다. 왜냐하면 그것은 엄격하게는 XDoclet의 부분"
+"으로 간주되기 때문이다. 하지만 우리는 XDoclet 매핑들을 가진 <literal>Cat</"
+"literal> 클래스에 관한 다음 예제를 포함한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr "XDoclet과 ibernate에 관한 추가 예제들은 Hibernate 웹 사이트를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "JDK 5.0 Annotations 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level that are "
+"type-safe and checked at compile time. This mechanism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API). Support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+"JDK 5.0은 언어 레벨에서 XDoclet-스타일의 주석들, type-safe와 컴파일 시 체킹"
+"을 도입했다. 이 메커니즘은 XDoclet 주석들 보다 더 강력하며 도구들과 IDE들에 "
+"의해 더 좋게 지원된다. 예를 들어 IntelliJ IDEA는 JDK 5.0 주석들에 대한 자동-"
+"완성 기능과 구문 강조를 지원한다. EJB 명세서의 새로운 개정판(JSR-220)은 엔티"
+"티 빈즈에 대한 프라이머리 메타데이터 메커니즘으로서 JDK 5.0 Annotations을 사"
+"용한다. Hibernate3는 JSR-220(영속 API)의 <literal>EntityManager</literal>를 "
+"구현하고, 매핑 메타데이터에 대한 지원은 별도의 내려받기로서 "
+"<emphasis>Hibernate Annotations</emphasis> 패키지를 통해 이용 가능하다. EJB3 "
+"(JSR-220)과 Hibernate3 metadata 양자가 지원된다."
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr "다음은 EJB 엔티티 빈으로서 주석이 붙은 POJO 클래스에 관한 예제이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Support for JDK 5.0 Annotations (and JSR-220) is currently under "
+"development. Please refer to the Hibernate Annotations module for more "
+"details."
+msgstr ""
+"JDK 5.0 Annotations(그리고 JSR-220)에 대한 지원은 여전히 작업이 진행 중이고 "
+"완성되지 않았음을 노트하라. 상세한 것은 Hibernate Anotations를 참조하라."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Generated properties"
+msgstr "산출되는 프로퍼티들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Generated properties are properties that have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects that contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. When Hibernate issues "
+"an SQL INSERT or UPDATE for an entity that has defined generated properties, "
+"it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+"산출되는 프로퍼티들은 데이터베이스에 의해 산출되는 그것들의 값들을 갖는 프로"
+"퍼티들이다. 전형적으로, Hibernate 어플리케이션들은 데이터베이스가 값들을 생성"
+"시켰던 임의의 프로퍼티들을 포함하는 객체들을 <literal>갱신</literal>시킬 필요"
+"가 있었다.하지만 generated로 마크된 프로퍼티들은 어플리케이션으로 하여금 이 "
+"책임을 Hibernate에게 위임시키도록 한다. 본질적으로 Hibernate가 산출되는 프로"
+"퍼티들을 정의했던 엔티티에 대해 SQL INSERT 또는 UPDATE 명령을 내릴 때마다 바"
+"로 직후에 산출되는 값들을 검색하기 위해 하나의 select 명령을 내린다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link>, "
+"can be marked as generated."
+msgstr ""
+"generated로 마크된 프로퍼티들은 부가적으로 inser 가능하지 않아야 하고 update "
+"불가능해야 한다. 오직 Properties marked as generated must additionally be "
+"non-insertable and non-updateable. <xref linkend=\"mapping-declaration-"
+"version\">versions</xref>, <xref linkend=\"mapping-declaration-timestamp"
+"\">timestamps</xref>, 그리고 <xref linkend=\"mapping-declaration-property\">"
+"단순 프로퍼티들</xref> 만이 generated로 마크될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>never</literal> (the default): the given property value is not "
+"generated within the database."
+msgstr ""
+"<literal>never</literal> (디폴트) - 는 주어진 프로퍼티 값이 데이터베이스 내"
+"에 생성되지 않을 것임을 의미한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: the given property value is generated on insert, "
+"but is not regenerated on subsequent updates. Properties like created-date "
+"fall into this category. Even though <link linkend=\"mapping-declaration-"
+"version\">version</link> and <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> properties can be marked as generated, this option is "
+"not available."
+msgstr ""
+"<literal>insert</literal> - 는 주어진 프로퍼티 값이 insert 시에 생성되지만, "
+"차후의 업데이트들에서 다시 생성되지 않을 것임을 기술한다. 생성-날짜와 같은 것"
+"들이 이 카테고리 내로 포함될 것이다. 비록 <xref linkend=\"mapping-"
+"declaration-version\">version</xref>ê³¼ <xref linkend=\"mapping-declaration-"
+"timestamp\">timestamp</xref> 프로퍼티들이 생성되는 것으로서 마크될 수 있을 지"
+"라도, 이 옵션은 거기서 이용 불가능함을 노트하라..."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>always</literal>: the property value is generated both on insert "
+"and on update."
+msgstr ""
+"<literal>always</literal> - 는 프로퍼티 값이 insert 시와 update 시 모두에 생"
+"성됨을 기술한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to customize the SQL it uses to read and write the "
+"values of columns mapped to <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. For example, if your database provides a set of "
+"data encryption functions, you can invoke them for individual columns like "
+"this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate applies the custom expressions automatically whenever the property "
+"is referenced in a query. This functionality is similar to a derived-"
+"property <literal>formula</literal> with two differences:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The property is backed by one or more columns that are exported as part of "
+"automatic schema generation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>write</literal> expression, if specified, must contain exactly "
+"one '?' placeholder for the value."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Auxiliary database objects"
+msgstr "보조 데이터베이스 객체들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Auxiliary database objects allow for the CREATE and DROP of arbitrary "
+"database objects. In conjunction with Hibernate's schema evolution tools, "
+"they have the ability to fully define a user schema within the Hibernate "
+"mapping files. Although designed specifically for creating and dropping "
+"things like triggers or stored procedures, any SQL command that can be run "
+"via a <literal>java.sql.Statement.execute()</literal> method is valid (for "
+"example, ALTERs, INSERTS, etc.). There are essentially two modes for "
+"defining auxiliary database objects:"
+msgstr ""
+"Hibernate 매핑 파일들 내에 사용자 스키마를 완전하게 정의하기 위한 능력을 제공"
+"하기 위해서, Hibernate의 스키마 방출 도구들과 함께 임의적인 데이터베이스 객체"
+"들에 대한 CREATE와 DROP을 허용해준다. 비록 트리거들 또는 내장 프로시저들과 같"
+"은 것들을 생성시키고 드롭시키기 이해 특별히 고안되었을지라도 하나의 "
+"<literal>java.sql.Statement.execute()</literal> 메소드를 통해 실행될 수 있는 "
+"SQL 명령이 여기서 유효하다(ALTERs, INSERTS, 기타). 보조 데0이터베이스 객체들"
+"을 정의하는 두 가지 모드들이 본질적으로 존재한다..."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands in the "
+"mapping file:"
+msgstr ""
+"첫 번째 모드는 매핑 파일 바깥에서 CREATE 및 DROP 명령들을 명시적으로 나열하"
+"는 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The second mode is to supply a custom class that constructs the CREATE and "
+"DROP commands. This custom class must implement the <literal>org.hibernate."
+"mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+"두번째 모드는 CREATE 및 DROP 명령들을 생성시키는 방법을 알고 있는 하나의 맞"
+"춤 클래스를 제공하는 것이다. 이 맞춤 클래스는 <literal>org.hibernate.mapping."
+"AuxiliaryDatabaseObject</literal> 인터페이스를 구현해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped so that they "
+"only apply when certain dialects are used."
+msgstr ""
+"덧붙여 이들 데이터베이스 객체들은 어떤 dialect들이 사용될 때 그것들이 단지 적"
+"용될 수 있도록 선택적으로 변동될 수 있다."
+
+#~ msgid "increment"
+#~ msgstr "increment"
+
+#~ msgid "identity"
+#~ msgstr "identity"
+
+#~ msgid "sequence"
+#~ msgstr "sequence"
+
+#~ msgid "hilo"
+#~ msgstr "hilo"
+
+#~ msgid "seqhilo"
+#~ msgstr "seqhilo"
+
+#~ msgid "uuid"
+#~ msgstr "uuid"
+
+#~ msgid "guid"
+#~ msgstr "guid"
+
+#~ msgid "native"
+#~ msgstr "native"
+
+#~ msgid "assigned"
+#~ msgstr "assigned"
+
+#~ msgid "select"
+#~ msgstr "select"
+
+#~ msgid "foreign"
+#~ msgstr "foreign"
+
+#~ msgid "sequence-identity"
+#~ msgstr "sequence-identity"
+
+#, fuzzy
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional - defaults to <literal>none</"
+#~ "literal>): See"
+#~ msgstr ""
+#~ "<literal>cascade</literal> (optional- defaults to <literal>none</"
+#~ "literal>): cascade 스타일."
+
+#, fuzzy
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional - defaults to <literal></"
+#~ "literal>): See"
+#~ msgstr ""
+#~ "<literal>cascade</literal> (optional- defaults to <literal>none</"
+#~ "literal>): cascade 스타일."
+
+#~ msgid "string"
+#~ msgstr "string"
+
+#~ msgid "class"
+#~ msgstr "class"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "text"
+#~ msgstr "text"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "clob, blob"
+#~ msgstr "clob, blob"
+
+#~ msgid ""
+#~ "<literal>type</literal> (optional): A name that indicates the Hibernate "
+#~ "type."
+#~ msgstr "<literal>type</literal> (옵션): Hibernate 타입을 나타내는 이름."
+
+#~ msgid ""
+#~ "<literal>cascade</literal> (optional): Specifies which operations should "
+#~ "be cascaded from the parent object to the associated object."
+#~ msgstr ""
+#~ "<literal>cascade</literal> (옵션): 어느 오퍼레이션들이 부모 객체로부터 연"
+#~ "관된 객체로 케스케이드 될 것인지를 지정한다."
+
+#~ msgid ""
+#~ "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+#~ "literal>): Specifies that updates to this property do or do not require "
+#~ "acquisition of the optimistic lock. In other words, dertermines if a "
+#~ "version increment should occur when this property is dirty."
+#~ msgstr ""
+#~ "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+#~ "literal>): 이 프로퍼티에 대한 업데이트들이 optimistic lock의 획득을 필요"
+#~ "로 하는지 아닌지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty일 때 "
+#~ "version 증가가 발생해야 할 경우인지를 결정한다."
+
+#~ msgid ""
+#~ "To understand the behaviour of various Java language-level objects with "
+#~ "respect to the persistence service, we need to classify them into two "
+#~ "groups:"
+#~ msgstr ""
+#~ "영속 서비스에 관한 여러 Java 언어-레벨의 객체들을 이해하기 위해, 우리는 그"
+#~ "것들을 다음 두 개의 그룹들로 분류할 필요가 있다:"
+
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+#~ msgstr ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,675 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-01-12 23:37+0900\n"
+"Last-Translator: Jongdae Kim <jdkim528 at korea.com>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "Batch 처리"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100,000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"하이버네이트를 사용하여 데이터베이스 내에서 100,000 개의 행들을 삽입시키는 원"
+"시 접근법은 다음과 같을 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50,000th row. That is because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+"이것은 50 000번째 행 근처에서 <literal>OutOfMemoryException</literal>으로 떨"
+"어질 것이다. 그것은 하이버네이트가 모든 새로이 삽입된 <literal>Customer</"
+"literal> 인스턴스들을 session-level 캐시 내에 캐시시키기 때문이다. 이 장에서 "
+"우리는 이 문제를 회피하는 방법을 보여줄 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are undertaking batch processing you will need to enable the use of "
+"JDBC batching. This is absolutely essential if you want to achieve optimal "
+"performance. Set the JDBC batch size to a reasonable number (10-50, for "
+"example):"
+msgstr ""
+"만일 당신이 배치 처리를 행하는 중이라면, 당신은 JDBC 배치 사용을 이용 가능하"
+"도록 할 필요가 있을 것이다. 만일 당신이 최적의 성능을 성취하고자 원한다면 이"
+"것이 절대적으로 필수적이다. JDBC 배치 사이즈를 적당한 숫자로 설정하라(예를 들"
+"ë©´,10-50):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate disables insert batching at the JDBC level transparently if you "
+"use an <literal>identity</literal> identifier generator."
+msgstr ""
+"만일 당신이 <literal>identiy</literal> 식별자 생성자를 사용할 경우에 하이버네"
+"이트는 JDBC 레벨에서 투명하게 insert 배치작업을 사용불가능하도록 만든다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also do this kind of work in a process where interaction with the "
+"second-level cache is completely disabled:"
+msgstr ""
+"당신은 또한 second-level 캐시를 가진 상호작용이 전적으로 사용불가능한 프로세"
+"스 내에서 이런 종류의 작업을 행할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"하지만 이것은 절대적으로 필요하지 않다. 왜냐하면 우리는 second-level 캐시와"
+"의 상호작용을 불가능하도록 하기 위해 명시적으로 <literal>CacheMode</literal>"
+"를 설정할 수 있기 때문이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "Batch inserts"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When making new objects persistent <literal>flush()</literal> and then "
+"<literal>clear()</literal> the session regularly in order to control the "
+"size of the first-level cache."
+msgstr ""
+"새로운 객체들을 영속화 시킬 때 당신은 first-level 캐시의 사이즈를 제어하기 위"
+"해 세션을 정기적으로 <literal>flush()</literal> 시키고 나서 <literal>clear()"
+"</literal> 하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "Batch updates"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For retrieving and updating data, the same ideas apply. In addition, you "
+"need to use <literal>scroll()</literal> to take advantage of server-side "
+"cursors for queries that return many rows of data."
+msgstr ""
+"데이터 검색하고 업데이트할 때, 동일한 개념들이 적용된다. 게다가 당신은 많은 "
+"데이터 행들을 반환하는 질의들을 위한 서버-측 커서들의 장점을 취하하기 위해 "
+"<literal>scroll()</literal>을 사용할 필요가 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "StatelessSession 인터페이스"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that can be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session never cascade to associated instances. Collections "
+"are ignored by a stateless session. Operations performed via a stateless "
+"session bypass Hibernate's event model and interceptors. Due to the lack of "
+"a first-level cache, Stateless sessions are vulnerable to data aliasing "
+"effects. A stateless session is a lower-level abstraction that is much "
+"closer to the underlying JDBC."
+msgstr ""
+"다른 방법으로 하이버네이트는 분리된(detached) 객체들의 형식으로 데이터베이스"
+"로 그리고 데이터베이스로부터 데이터를 스트리밍하는데 사용될 수 있는 명령-지"
+"향 API를 제공한다. <literal>StatelessSession</literal>은 그것과 연관된 영속 "
+"컨텍스트를 갖지 않고 많은 보다 높은 레벨의 생명 주기 의미를 제공하지 않는다. "
+"특히 하나의 상태 없는 세션은 첫 번째 레벨 캐시를 구현하지 않으며 임의의 두 번"
+"째 레벨 캐시 또는 질의 캐시와 상호작용하지 않는다. 그것은 트랜잭션 상의 쓰기-"
+"이면(write-behind)의 체킹이나 자동적인 dirty 체킹을 구현하지 않는다. 상태 없"
+"는 세션을 사용하여 수행된 연산들은 결코 연관된 인스턴스들에 대해 케스케이드 "
+"되지 않는다. 콜렉션들은 상태 없는 세션에 의해 무시된다. 상태없는 세션을 통해 "
+"수행된 연산들은 하이버네이트의 이벤트 모형과 인터셉터들을 우회한다. 첫번째-레"
+"벨의 캐시의 부재으로 인해, 상태없는 세션들은 데이터 alias 효과들에 취약하다. "
+"상태없는 세션은 기반 JDBC에 훨씬 더 가까운 하나의 보다 낮은 레벨의 추상이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this code example, the <literal>Customer</literal> instances returned by "
+"the query are immediately detached. They are never associated with any "
+"persistence context."
+msgstr ""
+"이 코드 예제에서, 질의에 의해 반환된 <literal>Customer</literal> 인스턴스들"
+"은 곧바고 분리된다(detached). 그것들은 임의의 영속 컨텍스트와 결코 연관되지 "
+"않는다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations. They result in the "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. They have different semantics to the "
+"<literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>Session</literal> interface."
+msgstr ""
+"<literal>StatelessSession</literal> 인터페이스에 의해 정의된 <literal>insert"
+"(), update()</literal> 그리고 <literal>delete()</literal> 연산들은 직접적인 "
+"데이터베이스 행 레벨의 연산들로 갖주된다. 그것들은 각각 하나의 SQL "
+"<literal>INSERT, UPDATE</literal> 또는 <literal>DELETE</literal>의 즉각적인 "
+"실행으로 귀결된다. 그것들은 <literal>Session</literal> 인터페이스에 의해 정의"
+"된 <literal>save(), saveOrUpdate()</literal>와 <literal>delete()</literal> 연"
+"산들과는 다른 의미들을 갖는다."
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "DML-스타일 연산들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of the object state. The object state is "
+"available in memory. This means that manipulating data directly in the "
+"database (using the SQL <literal>Data Manipulation Language</literal> (DML) "
+"the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) will not affect in-memory state. However, "
+"Hibernate provides methods for bulk SQL-style DML statement execution that "
+"is performed through the Hibernate Query Language (<link linkend=\"queryhql"
+"\">HQL</link>)."
+msgstr ""
+"이미 논의했듯이, 자동적이고 투명한 객체/관계형 매핑은 객체 상태에 대한 관리"
+"와 관계된다. 객체의 상태는 메모리 내에서 이용 가능하다. (SQL <literal>데이터 "
+"처리 언어</literal>(DML) 문장들 : <literal>INSERT</literal>, "
+"<literal>UPDATE</literal>, <literal>DELETE</literal>를 사용하여) 데이터베이스"
+"에서 직접 데이터 처리하는 것이 메모리 내 상태에 영향을 주지 않음을 의미한다. "
+"하지만 하이버네이트는 하이버네이트 질의 언어(<xref linkend=\"queryhql\">HQL</"
+"xref>)를 통해 실행되는 대량 SQL-스타일의 DML 문장 실행을 위한 메소드들을 제공"
+"한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+msgstr ""
+"<literal>UPDATE</literal>와 <literal>DELETE</literal> 문장들에 대한 유사 구문"
+"은 다음과 같다: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr "노트할 몇 가지:"
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "from-절에서, FROM 키워드는 옵션이다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause. It can, however, "
+"be aliased. If the entity name is aliased, then any property references must "
+"be qualified using that alias. If the entity name is not aliased, then it is "
+"illegal for any property references to be qualified."
+msgstr ""
+"from-절 내에 단지 명명된 한 개의 엔티티가 존재할 수 있다. 하지만 그것은 선택"
+"적으로 alias될 수 있다. 만일 엔티티 이름이 alias되면, 그때 임의의 프로퍼티 참"
+"조들은 그 alias를 사용하여 수식되어야 한다; 만일 엔티티 이름이 alias되지 않"
+"을 경우, 임의의 프로퍼티 참조들이 수식되는 것은 규칙에 어긋난다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or "
+"explicit, can be specified in a bulk HQL query. Sub-queries can be used in "
+"the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+"함축적이든 명시적이든 <xref linkend=\"queryhql-joins-forms\">join들</xref>은 "
+"대량 HQL 질의 속에 지정될 수 없다. 서브-질의들이 where-절에 사용될 수 있는"
+"데, 여기서 서브질의들 그 자신들은 조인들을 포함할 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "where-절 또한 옵션이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method. The method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>:"
+msgstr ""
+"하나의 예제로서, 한 개의 HQL <literal>UPDATE</literal>를 실행하기 위해, "
+"<literal>Query.executeUpdate()</literal> 메소드를 사용하라. 그 메소드는 JDBC"
+"의 <literal>PreparedStatement.executeUpdate()</literal>와 유사하게 명명된다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> "
+"statements, by default, do not effect the <link linkend=\"mapping-"
+"declaration-version\">version</link> or the <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> property values for the affected "
+"entities. However, you can force Hibernate to reset the <literal>version</"
+"literal> or <literal>timestamp</literal> property values through the use of "
+"a <literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"이것은 EJB3 명세서에서 유지되고 있듯이, HQL <literal>UPDATE</literal> 문장들"
+"은 디폴트로 영향받는 엔티티들에 대한 <xref linkend=\"mapping-declaration-"
+"version\">version</xref> 또는 <xref linkend=\"mapping-declaration-timestamp"
+"\">timestamp</xref> 프로퍼티 값들에 영향을 주지 않는다. 하지만 당신은 하이버"
+"네이트로 하여금 <literal>versioned update</literal>의 사용을 통해 "
+"<literal>version</literal> 또는 <literal>timestamp</literal> 프로퍼티 값들을 "
+"적절하게 재설정하도록 강제시킬 수 있다. 이것은 <literal>UPDATE</literal> 키워"
+"드 뒤에 <literal>VERSIONED</literal> 키워드를 추가시킴으로써 달성된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Custom version types, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>, are not allowed in conjunction with a <literal>update versioned</"
+"literal> statement."
+msgstr ""
+"맞춤형 version 타입들, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>은 <literal>update versioned</literal>과 문장과 함께 사용하는 것이 허"
+"용되지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"HQL <literal>DELETE</literal>를 실행하려면, 같은 메소드 <literal>Query."
+"executeUpdate()</literal>를 사용하라:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicates the number of entities effected by the "
+"operation. This may or may not correlate to the number of rows effected in "
+"the database. An HQL 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 ""
+"<literal>Query.executeUpdate()</literal> 메소드에 의해 반환되는 "
+"<literal>int</literal> 값은 그 오퍼레이션에 의해 영향받은 엔티티들의 개수를 "
+"나타낸다. 이것이 데이터베이스 내에서 영향받은 행들의 개수와 상관이 있을 수도 "
+"없을 수도 있다. HQL 대량 오퍼레이션은 (예를 들어 joined-subclass에 대해) 실"
+"행 중인 여러 개의 실제 SQL 문장들로 귀결될 수 있다. 반환되는 숫자는 그 문장"
+"에 의해 영향받은 실제 엔티티들의 개수를 나타낸다. joined-subclass 예제로 되돌"
+"아가면, 서브클래스들 중 하나에 대한 삭제는 단지 그 서브클래스가 매핑되어 있"
+"는 테이블에 대한 삭제로 귀결될 뿐만 아니라 또한 \"루트\" 테이블과 상속 계층에"
+"서 더 내려온 잠정적으로 조인된-서브클래스 테이블들에 대한 삭제들로 귀결될 수 "
+"있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"장래의 배포본들에서 전달될 대량 HQL 오퍼레이션들에 대한 몇 가지 제한들이 현"
+"재 존재함을 노트하라; 상세한 것은 JIRA 로드맵을 참조하라. <literal>INSERT</"
+"literal> 문장들을 위한 유사-구문은 다음과 같다: <literal>INSERT INTO "
+"EntityName properties_list select_statement</literal>. 노트할 몇 가지:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"오직 INSERT INTO ... SELECT ... 형식 만일 지원된다; INSERT INTO ... "
+"VALUES ... 형식은 지원되지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column specification</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritance, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"properties_list는 SQL <literal>INSERT</literal> 문장에서 <literal>컬럼 명세</"
+"literal>와 유사하다. 매핑된 상속에 참여하는 엔티티들의 경우, 그 주어진 클래"
+"스-레벨 상에 직접 정의된 프로퍼티들 만이 properties_list에 사용될 수 있다. 슈"
+"퍼클래스 프로퍼티들은 허용되지 않고, 서브클래스 프로퍼티들은 의미가 없다. 달"
+"리 말해 <literal>INSERT</literal> 문장들은 본래적으로 다형적이지 않다(non-"
+"polymorphic)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. This might, however, cause problems between Hibernate "
+"<literal>Type</literal>s which are <emphasis>equivalent</emphasis> as "
+"opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"반환 타입들이 insert에 의해 기대되는 타입들과 일치해야 한다는 단서 하에, "
+"select_statement는 임의의 유효한 HQL select 질의일 수 있다. 현재 이것은 데이"
+"터베이스로 강등시킬 체크를 허용하기 보다는 질의 컴파일 동안에 체크된다. 하지"
+"만 이것은 <emphasis>equal</emphasis>과는 대조적으로 <emphasis>등가인"
+"(equivalent)</emphasis> Hibernate <literal>Type</literal>들 사이에 문제점들"
+"을 일으킬 수도 있다. 비록 데이터베이스가 구별할수 없거나 변환을 처리할 수 있"
+"을 지라도, 이것은 <literal>org.hibernate.type.DateType</literal>로 정의된 프"
+"로퍼티와 <literal>org.hibernate.type.TimestampType</literal>으로 정의된 프로"
+"퍼티 사이에 불일치 쟁점들을 유발시킬 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list, in which "
+"case its value is taken from the corresponding select expression, or omit it "
+"from the properties_list, in which case a generated value is used. This "
+"latter option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. For the purposes of this "
+"discussion, in-database generators are considered to be <literal>org."
+"hibernate.id.SequenceGenerator</literal> (and its subclasses) and any "
+"implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>. The most notable exception here is <literal>org.hibernate.id."
+"TableHiLoGenerator</literal>, which cannot be used because it does not "
+"expose a selectable way to get its values."
+msgstr ""
+"id 프로퍼티의 경우, insert 문장은 당신에게 두 개의 옵션을 준다. 당신은 "
+"properties_list 내에 id 프로퍼티를 명시적으로 지정할 수 있는데 이 경우에 그것"
+"의 값은 대응하는 SELECT 표현식으로부터 얻어진다. 또는 properties_list에서 그"
+"것을 생략할 수 있는데 이 경우에 생성된 값이 사용된다. 이 후자의 옵션의 데이터"
+"베이스 내에서 연산되는 id 연산자들을 사용할 때에만 이용 가능하다; 임의의 \"메"
+"모리 내\" 타입 생성기들로서 이 옵션을 사용하고자 시도하는 것은 파싱 동안에 예"
+"외상황을 일으킬 것이다. 이 논의의 목적 상, 데이터베이스 내 생성기들은 "
+"<literal>org.hibernate.id.SequenceGenerator</literal> (그리고 그것의 서브클래"
+"스들) 그리고 임의의 <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>의 구현자들이라고 간주된다. 여기서 가장 주목할 만한 예외는 "
+"<literal>org.hibernate.id.TableHiLoGenerator</literal>인데, 그것이 그것의 값"
+"들을 얻기 위한 select 가능한 방법을 노출시키지 않기 때문에 사용될 수 없다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list, in which case "
+"its value is taken from the corresponding select expressions, or omit it "
+"from the properties_list, in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+"<literal>version</literal> 또는 <literal>timestamp</literal>로 매핑된 프로퍼"
+"티들의 경우에, insert 문장은 당신에게 두 개의 옵션들을 준다. 당신은 "
+"properties_list 내에 그 프로퍼티를 지정할 수 있는데 그 경우 그것의 값이 대응"
+"하는 select 표현식으로부터 얻어진다. 또는 당신은 properties_list에서 그것을 "
+"생략할 수 있는데 그 경우에 <literal>org.hibernate.type.VersionType</literal>"
+"에 의해 정의된 <literal>seed value</literal> 값이 사용된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of an HQL <literal>INSERT</literal> statement "
+"execution:"
+msgstr "다음은 HQL <literal>INSERT</literal> 문장 실행 예제이다:"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+#~ msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+
+#~ msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+#~ msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,414 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "최상의 실전 경험들"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
+"literal>:"
+msgstr ""
+"fine-grained 클래스들을 작성하고 <literal>&lt;component&gt;</literal>를 사용"
+"하여 그것들을 매핑하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"<literal>street</literal>, <literal>suburb</literal>, <literal>state</"
+"literal>, <literal>postcode</literal>를 캡슐화 시키는데 <literal>Address</"
+"literal> 클래스를 사용하라. 이것은 코드 재사용성을 촉진시키고 리팩토링을 단순"
+"화 시킨다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "영속 클래스들에 대해 식별자 프로퍼티들을 선언하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are a range of reasons "
+"why you should use them. We recommend that identifiers be 'synthetic', that "
+"is, generated with no business meaning."
+msgstr ""
+"Hibernate는 식별자 프로퍼티들을 옵션으로 만든다. 왜 우리가 그것들을 사용해야 "
+"하는가에 대한 모든 종류의 이유들이 존재한다. 우리는 식별자들이 '합성"
+"(synthetic)'이 되는(비지니스 의미 없이 생성되는) 것을 권장한다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Identify natural keys:"
+msgstr "고유 키들을 식별하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal>&lt;"
+"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"모든 엔티티들에 대해 고유 키들을 식별하고, <literal>&lt;natural-id&gt;</"
+"literal>를 사용하여 그것들을 매핑하라. 고유 키를 구성하는 프로퍼티들을 비교하"
+"기 위해 <literal>equals()</literal>와 <literal>hashCode()</literal>를 구현하"
+"라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "각각의 클래스 매핑을 그것 자신의 파일 내에 위치지워라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"sense, particularly in a team environment."
+msgstr ""
+"하나의 한덩어리 매핑 문서를 사용하지 말라. <literal>com/eg/Foo.hbm.xml</"
+"literal> 파일 속에 <literal>com.eg.Foo</literal>를 매핑하라. 이것은 팀 환경에"
+"서 특히 좋은 의미를 준다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Load mappings as resources:"
+msgstr "매핑들을 리소스들로서 로드시켜라."
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "그것들이 매핑하는 클래스들에 따라서 매핑들을 배치하라"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "질의 문자열들을 객관화 시키는 것을 고려하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is recommended if your queries call non-ANSI-standard SQL functions. "
+"Externalizing the query strings to mapping files will make the application "
+"more portable."
+msgstr ""
+"당신의 질의들이 ANSI 표준이 아닌 SQL 함수들을 호출하는 경우는 좋은 실전연습이"
+"다. 질의 문자열들을 매핑 파일들에다가 외부화 시키는 것은 어플리케이션을 보다 "
+"이식성 있도록 만들어줄 것이다."
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "바인드 변수들을 사용하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Do not use string "
+"manipulation to bind a non-constant value in a query. You should also "
+"consider using named parameters in queries."
+msgstr ""
+"JDBC에서처럼, 상수 아닌 값들을 \"?\"로 대체시켜라. 질의 속에 상수 아닌 값을 "
+"바인드 시키는데 문자열 처리를 결코 사용하지 말라! 더 좋게는 질의들 속에 명명"
+"된 파라미터들을 사용하는 것을 고려하라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "당신 자신의 JDBC 커넥션들을 관리하지 말라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate allows the application to manage JDBC connections, but his "
+"approach should be considered a last-resort. If you cannot use the built-in "
+"connection providers, consider providing your own implementation of "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate는 어플리케이션으로 하여금 JDBC 커넥션들을 관리하도록 한다. 이 접근"
+"법은 마지막 수단으로서 고려되어야 한다. 만일 당신이 미리 만들어진 커넥션 프로"
+"바이더들을 사용할 수 없을 경우, <literal>org.hibernate.connection."
+"ConnectionProvider</literal>에 대한 당신 자신의 구현을 제공하는 것을 고려하"
+"라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider using a custom type:"
+msgstr "맞춤형 타입 사용을 고려하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose you have a Java type from a library that needs to be persisted but "
+"does not provide the accessors needed to map it as a component. You should "
+"consider implementing <literal>org.hibernate.UserType</literal>. This "
+"approach frees the application code from implementing transformations to/"
+"from a Hibernate type."
+msgstr ""
+"당신이 자바 타입을 갖고 있고, 어떤 라이브러리로부터 말하고, 그것이 영속화 될 "
+"필요가 있지만 그것을 컴포넌트로서 매핑시키는데 필요한 accessor들을 제공할 필"
+"요가 없다고 가정하자. 당신은 <literal>org.hibernate.UserType</literal>을 구현"
+"하는 것을 고려해야 할 것이다. 이 접근법은 Hibernate 타입으로/으로부터 변환들"
+"을 구현하는 것으로부터 어플리케이션 코드를 자유롭게 해준다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "병목 지점들에서 수작업으로 코딩된 JDBC를 사용하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
+"faster. Please wait until you <emphasis>know</emphasis> something is a "
+"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
+"<literal>Session</literal>, wrap your JDBC operation as a <literal>org."
+"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
+"way you can still use the same transaction strategy and underlying "
+"connection provider."
+msgstr ""
+"시스템의 퍼포먼스가 중대한 영역들에서, 몇몇 종류의 오퍼레이션들은 직접적인 "
+"JDBC에서 이득을 본다. 그러나 당신이 어떤 것이 병목인지를 <emphasis>알기</"
+"emphasis> 전까지 기다리길 바란다. 그리고 직접적인 JDBC가 반드시 더 빠르다고 "
+"가정하지 말라. 만일 당신이 직접적인 JDBC를 사용할 필요가 있을 경우, "
+"Hibernate <literal>Session</literal>을 열고 그 SQL 커넥션을 사용할 가치가 있"
+"다. 그 방법으로 당신은 동일한 트랜잭션 방도와 기본 커넥션 프로바이더를 여전"
+"히 사용할 수 있다"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "<literal>Session</literal> flushing을 이해하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes the Session synchronizes its persistent state with the database. "
+"Performance will be affected if this process occurs too often. You can "
+"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
+"even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"시간이 지남에 따라 Session은 그것의 영속 상태를 데이터베이스와 동기화 시킨"
+"다. 만일 이 과정이 너무 자주 발생할 경우 퍼포먼스가 영향을 받을 것이다. 당신"
+"은 때때로 자동적인 flushing을 사용 불가능하게 만들거나 특정 트랜잭션 내에서 "
+"질의들의 순서와 다른 오퍼레이션들의 순서를 변경시켜서 불필요한 flushing을 최"
+"소화 시킬 수 있다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr ""
+"3-tier 아키텍처에서, <literal>saveOrUpdate()</literal> 사용을 고려하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When using a servlet/session bean architecture, you can pass persistent "
+"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
+"new session to service each request. Use <literal>Session.merge()</literal> "
+"or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the "
+"database."
+msgstr ""
+"servlet / session 빈 아키텍처를 사용할 때, 당신은 sesson bean 내에 로드된 영"
+"속 객체들을 서블릿/JSP 계층으로/으로부터 전달할/받을 수 있다. 각각의 요청을 "
+"서비스하는데 새로운 세션을 사용하라. 객체들을 데이터베이스와 동기화 시키기 위"
+"해서 <literal>Session.merge()</literal> 또는 <literal>Session.saveOrUpdate()"
+"</literal>를 사용하라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr ""
+"2-tier 아키텍처에서, 수명이 긴 영속 컨텍스트들을 사용하는 것을 고려하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often necessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An appropriate alternative in a two "
+"tiered architecture, is to maintain a single open persistence contact "
+"session for the whole life cycle of the application transaction. Then simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction or you will be working with "
+"stale data."
+msgstr ""
+"데이터베이스 트랜잭션들은 최상의 가용성을 위해 가능한 한 짧아야 한다. 하지만 "
+"장기간 실행되는 <emphasis>어플리케이션 트랜잭션들</emphasis>, 사용자의 뷰 관"
+"점에서 한 개의 단위 작업을 구현하는 것이 가끔 필수적이다. 하나의 어플리케이"
+"션 트랜잭션은 몇 개의 클라이언트 요청들과 응답 주기들에 걸칠 수도 있다. 어플"
+"리케이션 트랜잭션들을 구현하는데 detached 객체들을 사용하는 것이 공통적이다. "
+"2-티어 아키텍처에서 매우 적절한 대안은 어플리케이션 트랜잭션의 전체 생명주기 "
+"동안에 한 개의 열려진 영속 접속 (세션)을 유지하는 것이고 각각의 요청의 끝에"
+"서 JDBC 커넥션을 간단하게 연결해제하고 차후의 요청의 시작 시에 다시 연결하는 "
+"것이다. 한 개 이상의 어플리케이션 트랜잭션을 가로질러서 하나의 단일 세션을 결"
+"코 공유하지 말라. 공유할 경우에 당신은 실효성이 없는 데이터로 작업하게 될 것"
+"이다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "예외상황들을 복구가능한 것으로서 다루지 말라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you do not do this, Hibernate cannot "
+"guarantee that in-memory state accurately represents the persistent state. "
+"For example, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"이것은 \"최상의\" 실전이 아닌 보다 필수적인 실전이다. 예외상황이 발생할 때, "
+"<literal>Transaction</literal>을 롤백시키고 <literal>Session</literal>을 닫아"
+"라. 만일 당신이 그렇게 하지 않을 경우, Hibernate는 메모리 내 상태가 영속 상태"
+"를 정확하게 표현하는 것을 보증할 수 없다. 이 특별한 경우처럼, 만일 주어진 식"
+"별자를 가진 인스턴스가 데이터베이스 상에 존재하는지 여부를 결정하는데 "
+"<literal>Session.load()</literal>를 사용하지 말라; 대신에 <literal>Session."
+"get()</literal> 또는 하나의 질의를 사용하라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "연관들에 대한 lazy 페칭을 선호하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When join fetching is appropriate "
+"to a particular use case, use a query with a <literal>left join fetch</"
+"literal>."
+msgstr ""
+"eager 페칭을 관대하게 사용하라. second-level 캐시 내에 완전하게 보관되지 않"
+"을 것 같은 클래스들에 대한 대붑분의 연관들에 대해 프락시들과 lazy 콜렉션들을 "
+"사용하라. 캐시된 클래스들에 대한 연관들의 경우, 이곳은 캐시 성공의 매우 높은 "
+"확률이 존재하는 곳이며, <literal>lazy=\"false\"</literal>를 사용하여 eager 페"
+"칭을 명시적으로 사용 불가능하게 하라. 한의 join 페칭이 특정 쓰임새에 대해 적"
+"절할 때, 하나의 <literal>left join fetch</literal>를 가진 질의를 사용하라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+"페치되지 않은 데이터 문제점들을 피하기 위해 <emphasis>뷰 내에 열려진 세션"
+"(open session in view)</emphasis> 패턴 또는 하나의 정리된 <emphasis>어셈블리 "
+"단계(assembly phase)</emphasis>를 사용하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. Unless you are prepared to hold the persistence context (the "
+"session) open across the view rendering process, you will still need an "
+"assembly phase. Think of your business methods as having a strict contract "
+"with the presentation tier about what data is available in the detached "
+"objects. This is not a limitation of Hibernate. It is a fundamental "
+"requirement of safe transactional data access."
+msgstr ""
+"Hibernate는 개발자들이 <emphasis>Data Transfer Objects</emphasis> (DTO)를 지"
+"루하게 작성하는 것으로부터 자유롭게 해준다. 전통적인 EJB 아키텍처에서, DTO는 "
+"이중 용도로 기능한다: 첫 번째로 그것들은 엔티티 빈즈가 직렬화 가능하지 않는 "
+"문제점에 대해 착수한다; 두 번째로 그것들은 뷰에 의해 사용되는 모든 데이터가 "
+"프리젠테이션 티어로 컨트롤을 반환하기 전에 DTO들 속으로 페치되고 마샬링되는 "
+"어셈블리 단계를 암묵적으로 정의한다. Hibernate는 첫 번째 용도를 제거시킨다. "
+"하지만 당신이 뷰 렌더링 프로세스를 가로질러 열려져 있는 영속 컨텍스트(세션)"
+"을 보관할 준비가 되어 있지 않는 한, 당신은 여전히 어셈블리 단계를 필요로 할 "
+"것이다(detached 객체들에서 이용가능한 데이터가 무엇인지에 대해 프리젠테이션 "
+"티어와 엄격하게 계약을 갖도록 당신의 비지니스 메소드들을 고려하라) 이것은 "
+"Hibernate의 한계점이 아니다! 그것은 안전한 트랜잭션 데이터 접근의 필수 조건이"
+"다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr "Hibernate에서 당신의 비지니스 로직을 추상화 시키는 것을 고려하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hide Hibernate data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC "
+"associated to Hibernate via a <literal>UserType</literal>. This advice is, "
+"however, intended for \"sufficiently large\" applications. It is not "
+"appropriate for an application with five tables."
+msgstr ""
+"(Hibernate) 데이터 액세스 코드를 인터페이스 이면에 은폐시켜라. "
+"<emphasis>DAO</emphasis>와 <emphasis>Thread Local Session</emphasis> 패턴들"
+"을 결합시켜라. 당신은 심지어 <literal>UserType</literal>을 통해 Hibernate에 "
+"연관된, 수작업으로 코딩된 JDBC로서 몇몇 클래스들을 영속화 시킬 수도 있다. "
+"(이 충고는 \"충분히 큰\" 어플리케이션들에 대한 것이다; 그것은 5개의 테이블들"
+"을 가진 어플리케이션에 대해서는 적절하지 않다!)"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "신종의 연관 매핑을 사용하지 말라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Practical test cases for real many-to-many associations are rare. Most of "
+"the time you need additional information stored in the \"link table\". In "
+"this case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, most associations are one-to-many and many-"
+"to-one. For this reason, you should proceed cautiously when using any other "
+"association style."
+msgstr ""
+"실제의 many-to-many 연관들에 대한 좋은 쓰임새들은 드물다. 대부분의 시간 동안 "
+"당신은 \"연결 테이블\" 내에 저장된 추가적인 정보를 필요로 한다. 이 경우에, 매"
+"개하는 연결 클래스에 대해 두 개의 one-to-many 연관들을 사용하는 것이 훨씬 더 "
+"좋다. 사실 우리는 대부분의 연관들이 one-to-many와 many-to-one이라고 생각하"
+"며, 당신은 다른 연관 스타일을 사용할 때 주의해야 하고 그것이 진정 필수적인지"
+"를 당신 스스로 질문하라."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "양방향 연관들을 선호하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"단방향 연관들은 질의하기가 더 어렵다. 많은 어플리케이션에서, 거의 모든 연관들"
+"은 질의들 내에서 양 방향으로 네비게이트 가능해야 한다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# Language ko-KR translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2009-07-14 19:55+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1195 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Collection mapping"
+msgstr "콜렉션 매핑들"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "영속 콜렉션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type. For example:"
+msgstr ""
+"예를 들어 Hibernate는 영속 콜렉션-값을 가진 필드들이 인터페이스 타입으로서 선"
+"언될 것을 필요로 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or anything you like (\"anything you "
+"like\" means you will have to write an implementation of <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"실제 인터페이스는 <literal>java.util.Set</literal>, <literal>java.util."
+"Collection</literal>, <literal>java.util.List</literal>, <literal>java.util."
+"Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util."
+"SortedMap</literal> 또는 당신이 좋아하는 어떤 것일 수 있다!(여기서 \"당신이 "
+"좋아하는 어떤 것\"이란 당신이 <literal>org.hibernate.usertype."
+"UserCollectionType</literal>에 대한 구현을 작성해야 함을 의미한다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Notice how the instance variable was initialized with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent, by calling <literal>persist()</literal> for "
+"example, Hibernate will actually replace the <literal>HashSet</literal> with "
+"an instance of Hibernate's own implementation of <literal>Set</literal>. Be "
+"aware of the following errors:"
+msgstr ""
+"우리가 <literal>HashSet</literal>의 인스턴스를 가진 인스턴스 변수를 초기화 시"
+"켰던 방법을 주목하라. 이것은 새로이 초기화 된(비-영속) 인스턴스들을 가진 콜렉"
+"션 값 프로퍼티들을 초기화 시키는 최선의 방법이다. 당신이 -예를 들어 "
+"<literal>persist()</literal>를 호출하여- 인스턴스를 영속화 시킬 때 Hibernate"
+"는 실제로 <literal>HashSet</literal>을 <literal>Set</literal>에 대한 "
+"Hibernate 자신의 구현의 인스턴스로 대체시킬 것이다. 다음과 같은 오류들을 관찰"
+"하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending on the interface type."
+msgstr ""
+"Hibernate에 의해 도입된 영속 콜렉션들은 인터페이스 타입에 따라 "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> 또는 <literal>ArrayList</literal>와 같"
+"이 행위한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and are "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities cannot share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics. Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"콜렉션 인스턴스들은 value 타입들을 가진 통상의 특징을 갖는다. 그것들은 영속 "
+"객체에 의해 참조될 때 자동적으로 영속화 되고 참조 해제될 때 자동적으로 삭제된"
+"다. 만일 하나의 콜렉션이 하나의 영속 객체로부터 또 다른 영속 객체로 전달될 "
+"때, 그것의 요소들은 하나의 테이블로부터 다른 테이블로 이동될 수 있다. 두 개"
+"의 엔티티들은 동일한 콜렉션 인스턴스에 대한 참조를 공유하지 않는다. 기본 관계"
+"형 모형 때문에 콜렉션 값 프로퍼티들은 null 값 의미들을 지원하지 않는다; "
+"Hibernate는 null 콜렉션 참조와 공백의 콜렉션 사이를 구별 짓지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use persistent collections the same way you use ordinary Java collections. "
+"However, please ensure you understand the semantics of bidirectional "
+"associations (these are discussed later)."
+msgstr ""
+"당신은 이것의 어떤 것에 대해 너무 많이 걱정하지 않아도 될 것이다. 당신이 통상"
+"의 자바 콜렉션들을 사용하는 것과 동일한 방법으로 영속 콜렉션들을 사용하라. 단"
+"지 당신이 양방향 연관관계들에 대한 의미를 확실히 이해하도록 하라(나중에 논의"
+"됨)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "콜렉션 매핑들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections "
+"that cover many common relational models. We suggest you experiment with the "
+"schema generation tool so that you understand how various mapping "
+"declarations translate to database tables."
+msgstr ""
+"많은 공통된 관계형 모형들을 다루는, 콜렉션들에 대해 생성될 수 있는 매핑들의 "
+"영역이 꽤 존재한다. 여러가지 매핑 선언들이 데이터베이스 테이블들로 변환되는 "
+"방법을 당신이 느끼려면 스키마 생성 도구로 실험할 것을 우리는 제안한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of interface. For example, a <literal>&lt;set&gt;</literal> element is "
+"used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"콜렉션을 매핑하는데 사용되는 Hiberante 매핑 요소는 인터페이스의 타입에 의존한"
+"다. 예를 들어<literal>&lt;set&gt;</literal> 요소는 <literal>Set</literal> 타"
+"입의 매핑 프로퍼티들에 사용된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;"
+"list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</"
+"literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-"
+"array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> "
+"element is representative:"
+msgstr ""
+"<literal>&lt;set&gt;</literal>과는 별도로, 또한 <literal>&lt;list&gt;</"
+"literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal>, "
+"<literal>&lt;array&gt;</literal>, 그리고 <literal>&lt;map&gt;</literal> 매핑 "
+"요소들이 존재한다. <literal>&lt;map&gt;</literal> 요소가 대표적이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal> 콜렉션 프로퍼티 이름"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name): the name of "
+"the collection table. It is not used for one-to-many associations."
+msgstr ""
+"<literal>table</literal> (옵션 - 디폴트는 프로퍼티 이름) 콜렉션 테이블의 이름"
+"(one-to-many 연관관계들에 대해서는 사용되지 않음)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (옵션) 루트 요소 상에 선언된 스키마를 오버라이드 시"
+"키는 테이블 스키마의 이름"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"disables lazy fetching and specifies that the association is always eagerly "
+"fetched. It can also be used to enable \"extra-lazy\" fetching where most "
+"operations do not initialize the collection. This is suitable for large "
+"collections."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>)는 lazy 페칭"
+"을 사용 불가능하도록 하고 그 연관이 항상 eagerly 페치됨을 지정하는데 , 또는 "
+"대부분의 연산들이 콜렉션을 초기화시키지 않는 곳에서 \"extra-lazy\" 페칭을 이"
+"용 가능하도록 하는데(매우 큰 콜렉션들에 적당함) 사용될 수 있다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): marks this collection as the \"inverse\" end of a bidirectional "
+"association."
+msgstr ""
+"<literal>inverse</literal> (옵션 - 디폴트는 <literal>false</literal>) 이 콜렉"
+"션을 양방향 연관관계의 \"inverse\" 끝(end)으로 표시한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>): "
+"enables operations to cascade to child entities."
+msgstr ""
+"<literal>cascade</literal> (옵션 - 디폴트는 <literal>none</literal>) 오퍼레이"
+"션들이 자식 엔티티들에 대해 케스케이드하는 것을 이용 가능하게 한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>sort</literal> (optional): specifies a sorted collection with "
+"<literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+"<literal>sort</literal> (옵션) <literal>natural</literal> 정렬 순서로 정렬된"
+"(sorted) 콜렉션 또는 주어진 comparator 클래스를 지정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only): specifies a table "
+"column or columns that define the iteration order of the <literal>Map</"
+"literal>, <literal>Set</literal> or bag, together with an optional "
+"<literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+"<literal>order-by</literal> (옵션, JDK1.4에서만) <literal>asc</literal> 또는 "
+"<literal>desc</literal> 옵션과 함께 <literal>Map</literal>, <literal>Set</"
+"literal> 또는 bag의 반복 순서를 정의하는 테이블 컬럼(또는 컬럼들)을 지정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition that is used when retrieving or removing "
+"the collection. This is useful if the collection needs to contain only a "
+"subset of the available data."
+msgstr ""
+"<literal>where</literal> (옵션) 콜렉션을 검색하거나 제거할 때 사용될 임의적"
+"인 SQL <literal>WHERE</literal> 조건을 지정한다 (콜렉션이 오직 이용 가능한 데"
+"이터의 부분집합 만을 포함할 경우에 유용하다)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>): "
+"chooses between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (옵션, 디폴트는 <literal>select</literal>) outer-"
+"join 페칭, sequential select 페칭, 그리고 sequential subselect 페칭 사이에서 "
+"선택하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (옵션, 디폴트는 <literal>1</literal>) 이 콜렉션"
+"의 lazily fetching 인스턴스에 대해 \"배치 사이즈\"를 지정하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the collection property "
+"value."
+msgstr ""
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 콜렉션 프로퍼티 값에 접근하는데 사용할 방도."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that changes to the state of the collection results in "
+"increments of the owning entity's version. For one-to-many associations you "
+"may want to disable this setting."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 콜렉션의 상태에 대한 변경들이 소유하는 엔티티의 버전의 증가로 귀결"
+"될 것인지를 지정한다. (one to many 연관들에 대해, 이 설정을 사용 불가능하게 "
+"하는 것이 종종 합당하다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"a value of <literal>false</literal> specifies that the elements of the "
+"collection never change. This allows for minor performance optimization in "
+"some cases."
+msgstr ""
+"<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>false</literal> 값은 콜렉션의 요소들이 결코 변경되지 않음을 지정한"
+"다. (몇몇 경우들에서 마이너 퍼포먼스 최적화)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "콜렉션 foreign 키들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis>, or columns, of the collection "
+"table. The collection key column is mapped by the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"콜렉션 인스턴스들은 그 콜렉션을 소유하는 엔티티의 foreign 키에 의해 데이터베"
+"이스 내에서 구별지워진다. 이 foreign 키는 그 콜렉션 테이블의 <emphasis>콜렉"
+"션 키 컬럼</emphasis> (또는 컬럼들)로서 참조된다. 그 콜렉션 키 컬럼은 "
+"<literal>&lt;key&gt;</literal> 요소에 의해 매핑된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There can be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one-to-many associations, "
+"the foreign key column is nullable by default, so you may need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"foreign 키 컬럼에 대한 null 허용 가능 컨스트레인트가 존재할 수 있다. 대부분"
+"의 콜렉션들에 대해, 이것이 당연히 수반된다. 단방향 one to many 연관들의 경"
+"우, foreign 키는 디폴트로 null 허용 가능하여서, 당신은 <literal>not-null="
+"\"true\"</literal>를 지정할 필요가 있을 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"foreign 키 컨스트레인트는 <literal>ON DELETE CASCADE</literal>를 사용할 수도 "
+"있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr "<literal>&lt;key&gt;</literal> 요소에 대한 전체 정의는 앞 장을 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "콜렉션 요소들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections can contain almost any other Hibernate type, including: basic "
+"types, custom types, components and references to other entities. This is an "
+"important distinction. An object in a collection might be handled with "
+"\"value\" semantics (its life cycle fully depends on the collection owner), "
+"or it might be a reference to another entity with its own life cycle. In the "
+"latter case, only the \"link\" between the two objects is considered to be a "
+"state held by the collection."
+msgstr ""
+"콜렉션들은 모든 기본 타입들, 컴포넌트들, 그리고 물론 다른 엔티티들에 대한 참"
+"조들을 포함하여 거의 대부분의 어떤 다른 Hibernate 타입을 포함할 수도 있다. 이"
+"것은 중요한 구분이다: 콜렉션 내에 있는 객체는 \"값(value)\" 의미로 처리될 수"
+"도 있거나(그것의 생명주기는 콜렉션 소유자에 의존한다) 그것은 그것 자신의 생명"
+"주기를 가진 또 다른 엔티티에 대한 참조일 수 있다. 후자의 경우, 두 개의 객체"
+"들 사이의 \"링크\" 만이 그 콜렉션에 의해 소유된 상태로 간주된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</"
+"literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of "
+"entity references, with <literal>&lt;one-to-many&gt;</literal> or "
+"<literal>&lt;many-to-many&gt;</literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"포함된 타입은 콜렉션 요소 타입으로서 불려진다. 콜렉션 요소들은 <literal>&lt;"
+"element&gt;</literal> 또는 <literal>&lt;composite-element&gt;</literal>에 의"
+"해 매핑되거나, 엔티티 참조들의 경우에 <literal>&lt;one-to-many&gt;</literal> "
+"또는 <literal>&lt;many-to-many&gt;</literal>로서 매핑된다. 앞의 두 개는 "
+"value 의미를 가진 요소들을 매핑시키고, 뒤의 두개는 엔티티 연관들을 매핑하는"
+"데 사용된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "인덱싱 된 콜렉션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table. An index column "
+"is a column that maps to an array index, or <literal>List</literal> index, "
+"or <literal>Map</literal> key. The index of a <literal>Map</literal> may be "
+"of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be "
+"an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</"
+"literal>, or it can be a composite type mapped with <literal>&lt;composite-"
+"map-key&gt;</literal>. The index of an array or list is always of type "
+"<literal>integer</literal> and is mapped using the <literal>&lt;list-"
+"index&gt;</literal> element. The mapped column contains sequential integers "
+"that are numbered from zero by default."
+msgstr ""
+"set 과 bag 의미들을 가진 것들을 제외하면, 모든 콜렉션 매핑들은 콜렉션 테이블 "
+"내에 <emphasis>인덱스 컬럼</emphasis>- 배열 인덱스, 또는 <literal>List</"
+"literal> 인덱스 또는 <literal>Map</literal> 키로 매핑되는 컬럼-을 필요로 한"
+"다. <literal>Map</literal>의 인덱스는 <literal>&lt;map-key&gt;</literal>로 매"
+"핑된, 어떤 기본 타입일 수 있고, 그것은 <literal>&lt;map-key-many-to-many&gt;"
+"</literal>로 매핑된 엔티티 참조일 수 있거나, 그것은 <literal>&lt;composite-"
+"map-key&gt;</literal>로 매핑된 composite 타입일 수 있다. 배열 또는 리스트의 "
+"인덱스는 항상 <literal>integer</literal> 타입이고 <literal>&lt;list-index&gt;"
+"</literal> 요소를 사용하여 매핑된다. 매핑된 컬럼은 순차적인 정수들을 포함한다"
+"(디폴트로 0에서 시작하는 번호가 붙여짐)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column_name</literal> (required): the name of the column holding "
+"the collection index values."
+msgstr ""
+"<literal>column_name</literal> (필수): 콜렉션 인덱스 값들을 보관하는 컬럼의 "
+"이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>base</literal> (optional - defaults to <literal>0</literal>): the "
+"value of the index column that corresponds to the first element of the list "
+"or array."
+msgstr ""
+"<literal>base</literal> (옵션, 디폴트는 <literal>0</literal>): 리스트 또는 배"
+"열의 첫 번째 요소에 대응하는 인덱스 컬럼의 값."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection index values."
+msgstr ""
+"<literal>column</literal> (옵션): 콜렉션 인덱스 값들을 보관하는 컬럼의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQL formula used to evaluate the "
+"key of the map."
+msgstr ""
+"<literal>formula</literal> (옵션): map의 키를 평가하는데 사용되는 SQL "
+"formula."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr "<literal>type</literal> (필수): The type of the map 키들의 타입"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column for "
+"the collection index values."
+msgstr ""
+"<literal>column</literal> (옵션): 콜렉션 인덱스 값들에 대한 foreign 키 컬럼"
+"의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQ formula used to evaluate the "
+"foreign key of the map key."
+msgstr ""
+"<literal>formula</literal> (옵션): map의 foreign 키를 평가하는데 사용되는 "
+"SQL formula."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>class</literal> (required): the entity class used as the map key."
+msgstr "<literal>class</literal> (필수): map 키로서 사용되는 엔티티 클래스."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your table does not have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you can map the property as a "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order "
+"when it is retrieved from the database, but it can be optionally sorted or "
+"ordered."
+msgstr ""
+"만일 당신의 테이블이 인덱스 컬럼을 가지 않고, 당신이 여전히 프로퍼티 타입으로"
+"서 <literal>List</literal>를 사용하고자 원할 경우, 당신은 그 프로퍼티를 "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>으로서 매핑해야 한다. bag이 데이터"
+"베이스로부터 검색될 때 그것은 그것의 순서를 보유하지 않지만, 그것은 선택적으"
+"로 정렬(sorting)되거나 ordering될 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "값들을 가진 콜렉션들과 many-to-many 연관들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any collection of values or many-to-many associations requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns, and possibly an "
+"index column or columns."
+msgstr ""
+"어떤 값들을 가진 콜렉션 또는 many-to-many 연관은 foreign 키 컬럼이나 컬럼들, "
+"<emphasis>콜렉션 요소 컬럼</emphasis>이나 컬럼들 그리고 가능하면 인덱스 컬럼"
+"들이나 컬럼들을 가진 전용 <emphasis>콜렉션 테이블</emphasis>을 필요로 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a collection of values use the <literal>&lt;element&gt;</literal> tag. "
+"For example:"
+msgstr ""
+"값들을 가진 콜렉션의 경우, 우리는 <literal>&lt;element&gt;</literal> 태그를 "
+"사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection element values."
+msgstr ""
+"<literal>column</literal> (옵션): 콜렉션 요소 값들을 소유하는 컬럼의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element."
+msgstr ""
+"<literal>formula</literal> (옵션): 요소를 평가하는데 사용되는 SQL formula."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr "<literal>type</literal> (필수): 콜렉션 요소의 타입."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>many-to-many association</emphasis> is specified using the "
+"<literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+"<emphasis>many-to-many association</emphasis> 연관은 <literal>&lt;many-to-"
+"many&gt;</literal> 요소를 사용하여 지정된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the element foreign key "
+"column."
+msgstr "<literal>column</literal> (옵션): 요소 foreign 키 컬럼의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element foreign key value."
+msgstr ""
+"<literal>formula</literal> (옵션): 요소 foreign 키 값을 평가하는데 사용되는 "
+"SQL formula."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr "<literal>class</literal> (필수): 연관된 클래스의 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching in a single <literal>SELECT</"
+"literal> of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching,not only of the collection "
+"itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</"
+"literal> nested element."
+msgstr ""
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): 이 연관"
+"에 대해 outer-join 페칭 또는 sequential select 페칭을 이용 가능하게 만든다. "
+"이것은 특별한 경우이다; 엔티티 그리고 다른 엔티티들과 그것의 many-to-many 관"
+"계들에 대한 (하나의 <literal>SELECT</literal> 내에서) 전체 eager 페칭의 경"
+"우, 당신은 콜렉션 그 자체에 대해서 뿐만 아니라 내포된 요소 <literal>&lt;many-"
+"to-many&gt;</literal> 상의 이 속성에 대해 <literal>join</literal> 페칭을 이"
+"용 가능하게 할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. This makes the association "
+"multiplicity effectively one-to-many."
+msgstr ""
+"<literal>unique</literal> (옵션): foreign-key 컬럼에 대한 유일 컨스트레인트"
+"의 DDL 생성을 가능하도록 한다. 이것은 연관 다중성 (association multiplicity)"
+"을 효율적으로 one to many로 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): "
+"누락된 행들을 참조하는 foreign 키들이 어떻게 처리될 것인지를 지정한다: "
+"<literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 하나"
+"의 대안으로서, 연관된 클래스의 엔티티 이름.\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"<literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 대안으"
+"로서, 연관된 클래스의 엔티티 이름."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (옵션) 이 foreign 키에 조인된 연관 클래스의 "
+"프로퍼티의 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된다."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A bag containing integers with an iteration order determined by the "
+"<literal>order-by</literal> attribute:"
+msgstr ""
+"(<literal>order-by</literal> 속성에 의해 결정되는 반복 순서를 가진) 정수들을 "
+"포함하는 bag :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr "엔티티들을 가진 배열 - 이 경우에, many to many 연관 :"
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "날짜들에 대한 문자열 인덱스들을 가진 map :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr "컴포넌트들의 리스트(다음 장에서 논의됨):"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "One-to-many 연관들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>one-to-many association</emphasis> links the tables of two "
+"classes via a foreign key with no intervening collection table. This mapping "
+"loses certain semantics of normal Java collections:"
+msgstr ""
+"<emphasis>one to many 연관</emphasis>은 중재하는 콜렉션 테이블 없이 foreign "
+"키를 통해 두 개의 클래스들의 테이블들을 연결시킨다. 이 매핑은 통상의 자바 콜"
+"렉션들의 어떤 의미를 상실한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of the contained entity class cannot belong to more than one "
+"instance of the collection."
+msgstr ""
+"포함된 엔티티 클래스의 인스턴스는 그 콜렉션의 하나 이상의 인스턴스에 속하지 "
+"않을 수 있다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of the contained entity class cannot appear at more than one "
+"value of the collection index."
+msgstr ""
+"포함된 엔티티 클래스의 인스턴스는 콜렉션 인덱스의 하나 이상의 값에서 나타나"
+"지 않을 수 있다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires the existence of a foreign key column and possibly an index column "
+"to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</"
+"literal> tag indicates that this is a one-to-many association."
+msgstr ""
+"<literal>Product</literal>로부터 <literal>Part</literal>로의 연관은 foreign "
+"키 컬럼과 <literal>Part</literal> 테이블에 대한 인덱스 컬럼의 존재를 필요로 "
+"한다. <literal>&lt;one-to-many&gt;</literal> 태그는 이것이 one to many 연관임"
+"을 나타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how cached identifiers that reference missing rows will "
+"be handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): "
+"누락된 행들을 참조하는 캐시된 식별자들이 어떻게 처리될 것인지를 지정한다: "
+"<literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;one-to-many&gt;</literal> element does not need to declare "
+"any columns. Nor is it necessary to specify the <literal>table</literal> "
+"name anywhere."
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> 요소는 어떤 컬럼들을 선언하는데 필요하"
+"지 않음을 주목하라. 어딘가에 <literal>table</literal> 이름을 지정하는 것도 필"
+"수적이지 않다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> "
+"association is declared <literal>NOT NULL</literal>, you must declare the "
+"<literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> "
+"or <emphasis>use a bidirectional association</emphasis> with the collection "
+"mapping marked <literal>inverse=\"true\"</literal>. See the discussion of "
+"bidirectional associations later in this chapter for more information."
+msgstr ""
+"<emphasis>매우 중요한 노트</emphasis>: 만일 <literal>&lt;one-to-many&gt;</"
+"literal> 연관의 foreign 키 컬럼이 <literal>NOT NULL</literal>로 선언될 경우, "
+"당신은 <literal>&lt;key&gt;</literal> 매핑을 <literal>not-null=\"true\"</"
+"literal>로 선언해야 하거나 <literal>inverse=\"true\"</literal>로 마크된 콜렉"
+"션 매핑을 가진 <emphasis>양방향 연관을 사용해야 한다</emphasis>. 양방향 연관"
+"들에 대한 논의는 이 장의 뒷부분을 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following example shows a map of <literal>Part</literal> entities by "
+"name, where <literal>partName</literal> is a persistent property of "
+"<literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+"이 예제는 name으로 <literal>Part</literal> 엔티티들을 가진 map을 보여준다(여"
+"기서 <literal>partName</literal>은 <literal>Part</literal>의 영속 프로퍼티이"
+"다). formula-기반 index의 사용을 주목하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "개선된 콜렉션 매핑들"
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "Sorted 콜렉션들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"Hibernate는 <literal>java.util.SortedMap</literal>과 <literal>java.util."
+"SortedSet</literal>를 구현하는 콜렉션들을 지원한다. 당신은 매핑 파일 속에 하"
+"나의 comparator를 지정해야 한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"<literal>sort</literal> 속성에 허용되는 값들은 <literal>unsorted</literal>, "
+"<literal>natural</literal>, 그리고 <literal>java.util.Comparator</literal>를 "
+"구현하는 클래스의 이름이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Sorted 콜렉션들은 <literal>java.util.TreeSet</literal> 또는 <literal>java."
+"util.TreeMap</literal>처럼 행동한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements, use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher and is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This "
+"performs the ordering in the SQL query and not in the memory."
+msgstr ""
+"만일 당신이 데이터베이스 그 자체가 콜렉션 요소들을 순서지우도록(order)원할 경"
+"우 <literal>set</literal>, <literal>bag</literal> 또는<literal>map</literal> "
+"매핑들에 대해 <literal>order-by</literal> 속성을 사용하라. 이 해결책은 JDK "
+"1.4 이상의 버전에서만 이용 가능하다(그것은 <literal>LinkedHashSet</literal> "
+"또는 <literal>LinkedHashMap</literal>을 사용하여 구현된다). 이것은 메모리 내"
+"가 아닌, SQL 질의 내에서 순서지움(ordering)을 수행한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The value of the <literal>order-by</literal> attribute is an SQL ordering, "
+"not an HQL ordering."
+msgstr ""
+"<literal>order-by</literal> 속성의 값은 HQL 순서지움(ordering)이 아니라 SQL "
+"순서지움(ordering)임을 노트하라!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Associations can even be sorted by arbitrary criteria at runtime using a "
+"collection <literal>filter()</literal>:"
+msgstr ""
+"연관들은 콜렉션 <literal>filter()</literal>를 사용하여 실행 시에 어떤 임의의 "
+"criteria(기준)을 사용하여 정렬(sort)될 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "양방향 연관들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"<emphasis>양방향 연관</emphasis>은 연관의 양 \"끝(end)들\"로부터 네비게이션"
+"을 허용한다. 두 가지 종류의 양방향 연관들이 지원된다: <placeholder-1/>"
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "one-to-many"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr "한쪽 끝에 set 또는 bag 값을 갖고, 다른 쪽 긑에 단일 값을 가진 연관"
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "many-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "양 끝에서 set 또는 bag 값을 가진 연관"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify a bidirectional many-to-many association by mapping two many-"
+"to-many associations to the same database table and declaring one end as "
+"<emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+"당신은 동일한 두 개의 many-to-many 연관들을 동일한 데이터베이스 테이블로 간단"
+"하게 매핑하고 한 쪽 끝을 <emphasis>inverse</emphasis>(당신의 선택은 하나이지"
+"만, 그것은 인덱싱된 콜렉션일 수 없다)로 선언함으로써 하나의 양방향 many-to-"
+"many 연관을 지정할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example of a bidirectional many-to-many association that "
+"illustrates how each category can have many items and each item can be in "
+"many categories:"
+msgstr ""
+"다음은 양방향 many-to-many 연관에 관한 예제이다; 각각의 카테고리는 많은 아이"
+"템들을 가질 수 있고 각각의 아이템은 많은 카테고리들 속에 있을 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association: one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+"연관의 inverse 끝(end)에 대해서만 행해진 변경들은 영속화 되지 <emphasis>않는"
+"다</emphasis>. 이것은 Hibernate가 모든 양방향 연관에 대해 메모리 내에 두 개"
+"의 표상들을 갖는다는 점을 의미한다: A로부터 B로의 하나의 링크와 B로부터 A로"
+"의 또 다른 링크. 만일 당신이 자바 객체 모형에 대해 그리고 자바에서 many-to-"
+"many 관계를 생성시키는 방법에 대해 생각하면 이것은 이해하기가 더 쉽다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr "non-inverse 측은 메모리 내 표상을 데이터베이스로 저장하는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"당신은 하나의 one-to-many 연관을 하나의 many-to-one 연관으로서 동일한 테이블 "
+"컬럼(들)로 매핑하고 many-값을 가진 끝(end)을 <literal>inverse=\"true\"</"
+"literal>로 선언함으로써 하나의 양방향 연관을 정의할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+"연관의 한쪽 끝을 <literal>inverse=\"true\"</literal>로 매핑하는 것은 cascade"
+"들을 가진 오퍼레이션에 영향을 주지 않으며, 이것들은 orthogonal(직교) 개념들이"
+"다!"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "인덱싱된 콜렉션들을 가진 양방향 연관들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal>&lt;"
+"list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special "
+"consideration. If there is a property of the child class that maps to the "
+"index column you can use <literal>inverse=\"true\"</literal> on the "
+"collection mapping:"
+msgstr ""
+"한쪽 끝이 하나의 <literal>&lt;list&gt;</literal> 또는 <literal>&lt;map&gt;</"
+"literal>으로서 표현되는 양방향 연관은 특별한 검토를 필요로 한다. 만일 인덱스 "
+"컬럼으로 매핑되는 child 클래스의 프로퍼티가 하나 존재한다면 문제가 없고, 우리"
+"는 콜렉션 매핑 상에 <literal>inverse=\"true\"</literal>를 사용하여 계속할 수 "
+"있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If there is no such property on the child class, the association cannot be "
+"considered truly bidirectional. That is, there is information available at "
+"one end of the association that is not available at the other end. In this "
+"case, you cannot map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, you could use the following mapping:"
+msgstr ""
+"그러나 만일 child 클래스 상에 그런 프로퍼티가 존재하지 않을 경우, 우리는 그 "
+"연관을 진정하게 양방향으로 간주할 수 없다 (다른 쪽 끝에서 이용가능하지 않은 "
+"그 연관의 끝에서 이용 가능한 정보가 존재한다). 이 경우에 우리는 그 콜렉션을 "
+"<literal>inverse=\"true\"</literal>로 매핑시킬 수 없다. 대신에 우리는 다음 매"
+"핑을 사용할 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key."
+msgstr ""
+"이 매핑에서 그 연관의 콜렉션 값을 가진 끝이 foreign 키에 대한 업데이트 책임"
+"이 있음을 노트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "Ternary associations(세겹 연관들)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One "
+"approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"세 겹의 연관을 매핑하는 세 가지 가능한 접근법들이 존재한다. 하나의 접근법은 "
+"그것의 인덱스로서 연관관계를 가진 <literal>Map</literal>을 사용하는 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A second approach is to remodel the association as an entity class. This is "
+"the most common approach."
+msgstr ""
+"두 번째 접근법은 그 연관을 엔티티 클래스로서 단순하게 리모델링 하는 것이다. "
+"이것은 우리가 가장 공통적으로 사용하는 접근법이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which will be discussed "
+"later."
+msgstr ""
+"마지막 대안은 우리가 나중에 논의하게 될 composite 요소들을 사용하는 것이다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "<literal>&lt;idbag&gt;</literal> 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The majority of the many-to-many associations and collections of values "
+"shown previously all map to tables with composite keys, even though it has "
+"been have suggested that entities should have synthetic identifiers "
+"(surrogate keys). A pure association table does not seem to benefit much "
+"from a surrogate key, although a collection of composite values "
+"<emphasis>might</emphasis>. It is for this reason that Hibernate provides a "
+"feature that allows you to map many-to-many associations and collections of "
+"values to a table with a surrogate key."
+msgstr ""
+"만일 당신이 composite 키들이 나쁜 것이고 엔티티들이 합성 식별자들(대용 키들, "
+"surrogate keys)을 가져야 한다는 우리의 견해를 전적으로 수용할 경우, 당신은 우"
+"리가 지금까지 보여주었던 값들을 가진 콜렉션들과 many to many 연관들이 모두 "
+"composite 키들을 가진 테이블들로 매핑된다는 약간 이상한 점을 발견할 수도 있"
+"다! 이제 이 점은 꽤 논의의 여지가 있다; 순수한 연관 테이블은 (비록 composite "
+"값들을 가진 콜렉션<emphasis>일 수도</emphasis> 있을지라도) 대용 키로부터 많"
+"은 이점을 취하지 않는 것처럼 보인다. 그럼에도 불구하고 Hibernate는 당신이 값"
+"들을 가진 콜렉션들과 many to many 연관들을 대용 키를 가진 테이블로 매핑시키"
+"는 것을 당신에게 허용해주는 특징을 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+"<literal>&lt;idbag&gt;</literal> 요소는 bag 의미를 가진 <literal>List</"
+"literal>(또는 <literal>Collection</literal>)을 매핑하도록 당신에게 허용해준"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like "
+"an entity class. A different surrogate key is assigned to each collection "
+"row. Hibernate does not, however, provide any mechanism for discovering the "
+"surrogate key value of a particular row."
+msgstr ""
+"당신이 볼 수 있듯이, <literal>&lt;idbag&gt;</literal>은 마치 엔티티 클래스인"
+"양 synthetic id generator(합성 id 생성기)를 갖는다! 다른 대용 키는 각각의 콜"
+"렉션 행에 할당된다. 하지만 Hibernate는 특정 행의 대용 키 값을 발견하는 메커니"
+"즘을 제공하지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a "
+"regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows "
+"efficiently and update or delete them individually, similar to a list, map "
+"or set."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal>의 업데이트 퍼포먼스는 정규 <literal>&lt;"
+"bag&gt;</literal> 보다 훨씬 좋다는 점을 노트하라! Hibernate는 마치 list, "
+"map, 또는 set인양, 개별 행들을 효율적으로 위치지울 수 있고 그것들을 개별적으"
+"로 업데이트 하거나 삭제시킬 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal>&lt;idbag&gt;</literal> "
+"collection identifiers."
+msgstr ""
+"현재 구현에서, <literal>native</literal> 식별자 생성 방도는 <literal>&lt;"
+"idbag&gt;</literal> 콜렉션 식별자들에 대해 지원되지 않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "콜렉션 예제들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This section covers collection examples."
+msgstr "콜렉션 예제들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following class has a collection of <literal>Child</literal> instances:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If each child has, at most, one parent, the most natural mapping is a one-to-"
+"many association:"
+msgstr ""
+"는 <literal>Child</literal> 인스턴스들을 가진 하나의 콜렉션을 갖고 있다. 만"
+"일 각각의 자식이 최소한 한 개의 부모를 가질 경우, 대부분의 고유한 매핑은 one-"
+"to-many 연관이다:"
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "이것은 다음 테이블 정의들로 매핑된다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"만일 부모가 <emphasis>필수적</emphasis>이라면, 양방향 one-to-many 연관관계를 "
+"사용하라:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "<literal>NOT NULL</literal> 컨스트레인트를 주목하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, if this association must be unidirectional you can declare "
+"the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</"
+"literal> mapping:"
+msgstr ""
+"대안적으로, 만일 당신이 이 연관관계가 단방향이어야 함을 절대적으로 역설할 경"
+"우, 당신은 <literal>&lt;key&gt;</literal> 매핑 상에 <literal>NOT NULL</"
+"literal> 컨스트레인트를 선언할 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"On the other hand, if a child has multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"반면에, 만일 자식이 여러 부모들을 가질 수 있을 경우, many-to-many 연관이 적절"
+"하다:"
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "테이블 정의들:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For more examples and a complete explanation of a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+"부모/자식 관계 매핑을 연습하는 더 많은 예제들과 전체 리허설은 <xref linkend="
+"\"example-parentchild\"/>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr ""
+"비록 더 많은 신종 연관 매핑들이 가능할지라도, 우리는 다음 장에서 모든 가능성"
+"들을 분류할 것이다."
+
+#~ msgid "Collection Mapping"
+#~ msgstr "콜렉션 매핑"
+
+#~ msgid "Some examples, first, a set of strings:"
+#~ msgstr "몇몇 예제들, 먼저 문자열들을 가진 set:"
+
+#~ msgid ""
+#~ "The previous sections are pretty confusing. So lets look at an example. "
+#~ "This class:"
+#~ msgstr "앞의 절들은 꽤 혼동스럽다. 따라서 예제를 살펴보자. 다음 클래스:"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,406 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "Component 매핑"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts and purposes throughout Hibernate."
+msgstr ""
+"<emphasis>component</emphasis>의 개념은 Hibernate에서 다른 용도로 몇몇 다른 "
+"컨텍스트들 내에서 재사용된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "종속 객체들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type and not "
+"an entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition and not to architecture-level components. For example, "
+"you can model a person like this:"
+msgstr ""
+"하나의 컴포넌트는 엔티티 참조가 아닌, value 타입으로서 영속화 되는 하나의 포"
+"함된 객체이다. \"컴포넌트\" 용어는 (아키텍처 수준의 컴포넌트들이 아닌) "
+"composition(구성,합성)에 대한 객체-지향적인 개념을 언급한다. 예를 들어 당신"
+"은 다음과 같이 개인을 모형화 시킬 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now <literal>Name</literal> can be persisted as a component of "
+"<literal>Person</literal>. <literal>Name</literal> defines getter and setter "
+"methods for its persistent properties, but it does not need to declare any "
+"interfaces or identifier properties."
+msgstr ""
+"이제 <literal>Name</literal>은 <literal>Person</literal>의 컴포넌트로서 영속"
+"화 될 수도 있다. <literal>Name</literal>이 그것의 영속 프로퍼티들에 대한 "
+"getter 메소드와 setter 메소드를 정의하지만, 어떤 인터페이스들이나 식별자 프로"
+"퍼티들을 선언하는 것을 필요로 하지 않음을 주목하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "우리의 Hibernate 매핑은 다음과 같을 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"person 테이블은 <literal>pid</literal>, <literal>birthday</literal>, "
+"<literal>initial</literal>, <literal>first</literal>, <literal>last</"
+"literal> 컬럼들을 가질 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Like value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name objects that were only \"the same\" by "
+"value. The null value semantics of a component are <emphasis>ad hoc</"
+"emphasis>. When reloading the containing object, Hibernate will assume that "
+"if all component columns are null, then the entire component is null. This "
+"is suitable for most purposes."
+msgstr ""
+"모든 값(value) 타입들처럼, 컴포넌트들은 공유된 참조들을 지원하지 않는다. 달"
+"리 말해, 두 명의 개인들은 동일한 이름을 가질 수 있지만, 두 개의 person 객체들"
+"은 오직 값 만이 \"동일한\" 두 개의 독립적인 name 객체들을 포함할 것이다. 컴포"
+"넌트의 null 값 의미는 <emphasis>특별한 용도를 위한 것이다</emphasis>. 포함된 "
+"객체를 다시 로드시킬 때, Hibernate는 모든 컴포넌트 컬럼들이 null일 경우에 전"
+"체 컴포넌트가 null이라고 가정할 것이다. 이것은 대부분의 용도에 맞을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The properties of a component can be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a fine-grained object model."
+msgstr ""
+"컴포넌트의 프로퍼티들은 임의의 Hibernate 타입일 수 있다(콜렉션들, many-to-"
+"one 연관들, 다른 컴포넌트들, 기타). 내포된 컴포넌트들은 신종의 사용례로 간주"
+"되지 <emphasis>않을</emphasis> 것이다. Hibernate는 매우 잘 정제된 객체 모형"
+"을 지원하도록 고안되어있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal>&lt;component&gt;</literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함"
+"되는 엔티티에 대한 역 참조로서 매핑시키는 <literal>&lt;parent&gt;</literal> "
+"서브요소를 허용한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "종속 객체들을 가진 콜렉션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Collections of components are supported (e.g. an array of type "
+"<literal>Name</literal>). Declare your component collection by replacing the "
+"<literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-"
+"element&gt;</literal> tag:"
+msgstr ""
+"컴포넌트들을 가진 콜렉션들이 지원된다(예를 들면 <literal>Name</literal> 타입"
+"을 가진 배열). <literal>&lt;element&gt;</literal> 태그를 <literal>&lt;"
+"composite-element&gt;</literal> 태그로 대체시켜서 당신의 컴포넌트 콜렉션을 선"
+"언하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you define a <literal>Set</literal> of composite elements, it is "
+"important to implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> correctly."
+msgstr ""
+"노트: 만일 당신이 composite 요소를 가진 하나의 <literal>Set</literal>를 정의"
+"할 경우, <literal>equals()</literal>와 <literal>hashCode()</literal>를 정확하"
+"게 구현하는 것이 매우 중요하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Composite elements can contain components but not collections. If your "
+"composite element contains components, use the <literal>&lt;nested-composite-"
+"element&gt;</literal> tag. This case is a collection of components which "
+"themselves have components. You may want to consider if a one-to-many "
+"association is more appropriate. Remodel the composite element as an entity, "
+"but be aware that even though the Java model is the same, the relational "
+"model and persistence semantics are still slightly different."
+msgstr ""
+"Composite 요소들은 컴포넌트들을 포함하지만 콜렉션들을 포함하지 않는다. 만일 "
+"당신의 composite 요소 자체가 컴포넌트들을 포함할 경우, <literal>&lt;nested-"
+"composite-element&gt;</literal> 태그를 사용하라. 이것은 꽤 신종의 경우-그것"
+"들 자체가 컴포넌트들을 갖고 있는 컴포넌트들의 콜렉션-이다. 이 단계에서 당신"
+"은 one-to-many 연관이 더 적절한지를 당신 스스로에게 질문하게 될 것이다. 하나"
+"의 엔티티로서 composite 요소를 다시 모델링하려고 시도하라 - 그러나 자바 모형"
+"들이 동일할지라도, 관계형 모형과 영속화 의미들은 여전히 약간 다르다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A composite element mapping does not support null-able properties if you are "
+"using a <literal>&lt;set&gt;</literal>. There is no separate primary key "
+"column in the composite element table. Hibernate uses each column's value to "
+"identify a record when deleting objects, which is not possible with null "
+"values. You have to either use only not-null properties in a composite-"
+"element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+"당신이 하나의 <literal>&lt;set&gt;</literal>을 사용 중이라면, 하나의 "
+"composite 요소 매핑은 null 가능한 프로퍼티들을 지원하지 않음을 노트하길 바란"
+"다. Hibernate는 객체들을 삭제할 때 하나의 레코드를 식별하는데 각각의 컬럼들 "
+"값을 사용해야 하며 (composite 요소 테이블 내에 별도의 프라이머리 키 컬럼이 존"
+"재하지 않는다), 그것은 null 값들에 대해서는 불가능하다. 당신은 하나의 "
+"composite-요소 내에 not-null 프로퍼티들 만을 사용해야 하거나 하나의 "
+"<literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, "
+"<literal>&lt;bag&gt;</literal> 또는 <literal>&lt;idbag&gt;</literal>을 선택해"
+"야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to "
+"map extra columns of a many-to-many association table to the composite "
+"element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal>, where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"composite 요소에 대한 하나의 특별한 경우는 내포된 <literal>&lt;many-to-"
+"one&gt;</literal> 요소를 가진 composite 요소이다. 이같은 매핑은 many-to-many "
+"연관 테이블의 특별한 컬럼들을 composite 요소 클래스로 매핑시키는 것을 당신에"
+"게 허용해준다. 다음은 <literal>Order</literal>로부터 <literal>Item</literal>"
+"으로의 many-to-many 연관이다. 여기서 <literal>purchaseDate</literal>, "
+"<literal>price</literal>, 그리고 <literal>quantity</literal>는 연관의 프로퍼"
+"티들이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There cannot be a reference to the purchase on the other side for "
+"bidirectional association navigation. Components are value types and do not "
+"allow shared references. A single <literal>Purchase</literal> can be in the "
+"set of an <literal>Order</literal>, but it cannot be referenced by the "
+"<literal>Item</literal> at the same time."
+msgstr ""
+"물론, 양방향 연관 네비게이션의 경우, 다른 측 상에 있는 purchase에 대한 참조"
+"가 존재할 수 없다. 컴포넌트들이 값(value) 타입들이고 공유된 참조들을 허용하"
+"지 않음을 기억하라. 하나의 <literal>Purchase</literal>는<literal>Order</"
+"literal>를 가진 set 내에 있을 수 있지만, 그것은 동시에 <literal>Item</"
+"literal>에 의해 참조될 수 없다."
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "심지어 세겹의(또는 네 겹의, 기타) 연관들이 가능하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Composite elements can appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"composite 요소들은 다른 엔티티들에 대한 연관들과 동일한 구문을 사용하여 질의"
+"들 내에 나타날 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "Map 인덱스들로서 컴포넌트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a "
+"component class as the key of a <literal>Map</literal>. Ensure that you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"<literal>&lt;composite-map-key&gt;</literal> 요소는 당신에게 하나의 컴포넌트 "
+"클래스를 하나의 <literal>Map</literal>의 키로서 매핑시키도록 한다. 당신은 컴"
+"포넌트 클래스 상에서 <literal>hashCode()</literal>와 <literal>equals()</"
+"literal>를 정확하게 오버라이드 시키도록 하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "composite 식별자들로서 컴포넌트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"당신은 하나의 컴포넌트를 하나의 엔티티 클래스에 대한 하나의 식별자로서 사용"
+"할 수도 있다. 당신의 컴포넌트 클래스는 어떤 사양들을 충족시켜야 한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "그것은 <literal>java.io.Serializable</literal>을 구현해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> consistently with the database's notion of composite key equality."
+msgstr ""
+"그것은 composite 키 등가(equality)에 대한 데이터베이스 개념과 일치되게, "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 다시 구현해야 "
+"한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In Hibernate3, although the second requirement is not an absolutely hard "
+"requirement of Hibernate, it is recommended."
+msgstr ""
+"노트: Hibernate3에서, 두 번째 사양은 Hibernate의 절대적으로 엄격한 사양이 아"
+"니다. 그러나 아무튼 그것을 행하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You cannot use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"당신은 compsite 키들을 생성시키는데 <literal>IdentifierGenerator</literal>를 "
+"사용할 수 없다. 대신에 어플리케이션은 그것 자신의 식별자들을 할당해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use the <literal>&lt;composite-id&gt;</literal> tag, with nested "
+"<literal>&lt;key-property&gt;</literal> elements, in place of the usual "
+"<literal>&lt;id&gt;</literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"통상의 <literal>&lt;id&gt;</literal> 선언 위치에 (내포된 <literal>&lt;key-"
+"property&gt;</literal> 요소들을 가진) <literal>&lt;composite-id&gt;</"
+"literal> 태그를 사용하라. 예를 들어, <literal>OrderLine</literal> 클래스는 "
+"<literal>Order</literal>의 (composite) 프라이머리 키에 의존하는 프라이머리 키"
+"를 갖는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any foreign keys referencing the <literal>OrderLine</literal> table are now "
+"composite. Declare this in your mappings for other classes. An association "
+"to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+"이제 <literal>OrderLine</literal> 테이블을 참조하는 임의의 foreign 키들이 또"
+"한 compsite이다. 당신은 다른 클래스들에 대한 당신의 매핑들 속에 이것을 선언해"
+"야 한다. <literal>OrderLine</literal>에 대한 하나의 연관은 다음과 같이 매핑"
+"될 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>column</literal> element is an alternative to the "
+"<literal>column</literal> attribute everywhere. Using the <literal>column</"
+"literal> element just gives more declaration options, which are mostly "
+"useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"<literal>OrderLine</literal>에 대한 <literal>many-to-many</literal> 연관은 또"
+"한 composite foreign 키를 사용한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"<literal>Order</literal>에서 <literal>OrderLine</literal>들의 콜렉션이 사용"
+"될 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr ""
+"(통상적으로 <literal>&lt;one-to-many&gt;</literal> 요소는 컬럼들을 선언하지 "
+"않는다.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"만일 <literal>OrderLine</literal> 자체가 하나의 콜렉션을 소유할 경우, 그것은 "
+"또한 하나의 composite foreign 키를 갖는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "동적인 컴포넌트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "당신은 <literal>Map</literal> 타입의 프로퍼티를 매핑시킬 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
+"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"You can also access, and change, Hibernate's configuration-time metamodel "
+"via the <literal>Configuration</literal> object."
+msgstr ""
+"<literal>&lt;dynamic-component&gt;</literal> 매핑의 의미는 <literal>&lt;"
+"component&gt;</literal>와 동일하다. 이런 종류의 매핑의 장점은 배치 시에 단지 "
+"매핑 문서를 편집함으로써 그 bean의 실제 프로퍼티들을 결정하는 가용성이다. 매"
+"핑 문서에 대한 런타임 처리는 또한 DOM 파서를 사용하여 가능하다. 더 좋게는 당"
+"신이 <literal>Configuration</literal> 객체를 통해 Hibernate의 구성-시 메타모"
+"형에 접근할 수 있다(그리고 변경시킬 수 있다)"
+
+#~ msgid ""
+#~ "(Note that the <literal>&lt;column&gt;</literal> tag is an alternative to "
+#~ "the <literal>column</literal> attribute everywhere.)"
+#~ msgstr ""
+#~ "(<literal>&lt;column&gt;</literal> 태그가 모든 곳에서 <literal>column</"
+#~ "literal> 속성에 대한 대안임을 노트하라.)"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2790 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "구성"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is designed to operate in many different environments and, as "
+"such, there is a broad range of configuration parameters. Fortunately, most "
+"have sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"displays the various options. Simply put the example file in your classpath "
+"and customize it to suit your needs."
+msgstr ""
+"Hibernate가 많은 다른 환경들에서 동작하도록 설계되어 있으므로, 많은 개수의 구"
+"성 파라미터들이 존재한다. 다행히 대부분은 유의미한 디폴트 값들이고 Hibernate"
+"는 다양한 옵션들을 보여주는 <literal>etc/</literal> 내의 예제 파일 "
+"<literal>hibernate.properties</literal>로 배포된다. 당신은 단지 당신의 "
+"classpath 경로 속에 그 파일을 집어넣고 그것을 커스트마이징하기만 해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "프로그램 상의 구성"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An instance of <classname>org.hibernate.cfg.Configuration</classname> "
+"represents an entire set of mappings of an application's Java types to an "
+"SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is "
+"used to build an immutable <interfacename>org.hibernate.SessionFactory</"
+"interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+"<literal>org.hibernate.cfg.Configuration</literal>의 인스턴스는 어플리케이션"
+"의 Java 타입들을 SQL 데이터베이스 타입으로의 전체 매핑 집합을 표현한다. "
+"<literal>Configuration</literal>은 (불변의) <literal>SessionFactory</literal>"
+"를 빌드하는데 사용된다. 매핑들은 여러 XML 매핑 파일들로부터 컴파일 된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can obtain a <classname>org.hibernate.cfg.Configuration</classname> "
+"instance by instantiating it directly and specifying XML mapping documents. "
+"If the mapping files are in the classpath, use <literal>addResource()</"
+"literal>. For example:"
+msgstr ""
+"당신은 <literal>Configuration</literal> 인스턴스를 초기화 시키고 XML 매핑 문"
+"서들을 지정함으로써 <literal>Configuration</literal> 인스턴스를 얻을 수 있"
+"다. 만일 매핑 파일들이 classpath 내에 있다면, <literal>addResource()</"
+"literal>를 사용하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An alternative way is to specify the mapped class and allow Hibernate to "
+"find the mapping document for you:"
+msgstr ""
+"(때때로 더 나은) 다른 방법은 매핑된 클래스를 지정하는 것이고, Hibernate로 하"
+"여금 당신을 위해 매핑 문서를 찾도록 하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will then search for mapping files named <filename>/org/hibernate/"
+"auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm."
+"xml</filename> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"그때 Hibernate는 classpath 내에서 <literal>/org/hibernate/auction/Item.hbm."
+"xml</literal>과 <literal>/org/hibernate/auction/Bid.hbm.xml</literal>로 명명"
+"된 매핑 파일들을 룩업할 것이다. 이 접근법은 임의의 하드코딩된 파일 이름들을 "
+"제거한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <classname>org.hibernate.cfg.Configuration</classname> also allows you to "
+"specify configuration properties. For example:"
+msgstr ""
+"<literal>Configuration</literal>은 또한 구성 프로퍼티들을 지정하는 것을 허용"
+"해준다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. Some "
+"alternative options include:"
+msgstr ""
+"이것은 컨피그레이션 프로퍼티들을 Hibernate에 전달하는 유일한 방법이 아니다. "
+"여러 가지 옵션들은 다음을 포함한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Pass an instance of <classname>java.util.Properties</classname> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"<literal>java.util.Properties</literal>의 인스턴스를 <literal>Configuration."
+"setProperties()</literal>에 전달한다 ."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Place a file named <filename>hibernate.properties</filename> in a root "
+"directory of the classpath."
+msgstr ""
+"classpath의 루트 디렉토리에 <literal>hibernate.properties</literal>를 위치지"
+"운다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"<literal>java -Dproperty=value</literal>를 사용하여 <literal>System</"
+"literal> 프로퍼티들을 설정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal> (this is discussed later)."
+msgstr ""
+"<literal>hibernate.cfg.xml</literal>에 <literal>&lt;property&gt;</literal> 요"
+"소들을 포함한다 (나중에 논의됨)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to get started quickly<filename>hibernate.properties</filename> "
+"is the easiest approach."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <classname>org.hibernate.cfg.Configuration</classname> is intended as a "
+"startup-time object that will be discarded once a <literal>SessionFactory</"
+"literal> is created."
+msgstr ""
+"<literal>Configuration</literal>은 시작 시(startup-time) 객체로서 일단 "
+"<literal>SessionFactory</literal>가 생성되면 폐기되게끔 예정되어 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "SessionFactory 얻기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When all mappings have been parsed by the <classname>org.hibernate.cfg."
+"Configuration</classname>, the application must obtain a factory for "
+"<interfacename>org.hibernate.Session</interfacename> instances. This factory "
+"is intended to be shared by all application threads:"
+msgstr ""
+"모든 매핑들이 <literal>Configuration</literal>에 의해 파싱되었을 때, 어플리케"
+"이션은 <literal>Session</literal> 인스턴스들에 대한 팩토리를 얻어야 한다. 이 "
+"팩토리는 모든 어플리케이션 쓰레드들에 의해 공유되도록 고안되었다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. This is useful "
+"if you are using more than one database."
+msgstr ""
+"하지만 Hibernate는 당신의 어플리케이션이 하나 이상의 "
+"<literal>SessionFactory</literal>를 초기화 시키는 것을 허용한다. 이것은 당신"
+"이 하나 이상의 데이터베이스를 사용하는 경우에 유용하다."
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "JDBC 커넥션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is advisable to have the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> create and pool JDBC connections for you. If you take this "
+"approach, opening a <interfacename>org.hibernate.Session</interfacename> is "
+"as simple as:"
+msgstr ""
+"대개 당신은 <literal>SessionFactory</literal>로 하여금 당신을 위한 JDBC 커넥"
+"션들을 생성시키고 풀링시키는 것을 원한다. 만일 당신이 이 접근법을 취할 경우, "
+"한 개의 <literal>Session</literal>을 여는 것은 다음과 같이 간단하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once you start a task that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"당신이 데이터베이스에 대한 접근을 요청하는 어떤 것을 행하자 마자, 한 개의 "
+"JDBC 커넥션이 그 풀로부터 얻어질 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Before you can do this, you first need to pass some JDBC connection "
+"properties to Hibernate. All Hibernate property names and semantics are "
+"defined on the class <classname>org.hibernate.cfg.Environment</classname>. "
+"The most important settings for JDBC connection configuration are outlined "
+"below."
+msgstr ""
+"이것이 동작하도록 하기 위해서, 우리는 몇몇 JDBC 커넥션 프로퍼티들을 Hibernate"
+"에 전달할 필요가 있다. 모든 Hibernate 프로퍼티 이름들과 의미론들은 "
+"<literal>org.hibernate.cfg.Environment</literal> 클래스 상에 정의되어 있다. "
+"우리는 이제 JDBC 커넥션 구성을 위한 가장 중요한 설정들을 설명할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will obtain and pool connections using <classname>java.sql."
+"DriverManager</classname> if you set the following properties:"
+msgstr ""
+"만일 당신이 다음 프로퍼티들을 설정할 경우 Hibernate는 <literal>java.sql."
+"DriverManager</literal>를 사용하여 커넥션들을 얻을 것이다(그리고 풀링시킬 것"
+"이다):"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Hibernate JDBC 프로퍼티들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "프로퍼티 이름"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "용도"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "hibernate.connection.driver_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "jdbc 드라이버 클래스"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "hibernate.connection.url"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "hibernate.connection.username"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "데이터베이스 사용자 패스워드"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "hibernate.connection.password"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "데이터베이스 사용자 패스워드"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "hibernate.connection.pool_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "풀링된 커넥션들의 최대 개수"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is, however, quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis>, or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <property>hibernate.connection.pool_size</property> property "
+"with connection pool specific settings. This will turn off Hibernate's "
+"internal pool. For example, you might like to use c3p0."
+msgstr ""
+"하지만 Hibernate 자신의 커넥션 풀링 알고리즘은 아주 기본적이다. 그것은 당신"
+"이 시작하는 것을 도와주려고 의도되었고 <emphasis>제품 시스템 용도 또는 퍼포먼"
+"스 테스트용으로는 고안되지 않았다</emphasis>. 최상의 퍼포먼스와 안정성을 위해"
+"서는 제 3의 풀을 사용하라. 즉 <literal>hibernate.connection.pool_size</"
+"literal> 프로퍼티를 커넥션 풀 지정 설정들로 대체하라. 이것은 Hibernate의 내"
+"부 pool을 오프시킬 것이다. 예를 들어 당신은 C3P0를 사용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <filename>lib</filename> directory. Hibernate will use its "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for "
+"connection pooling if you set <property>hibernate.c3p0.*</property> "
+"properties. If you would like to use Proxool, refer to the packaged "
+"<filename>hibernate.properties</filename> and the Hibernate web site for "
+"more information."
+msgstr ""
+"C3P0는 <literal>lib</literal> 디펙토리 속에 Hibernate에 배포된 오픈 소스 "
+"JDBC 커넥션 풀이다. 당신이 <literal>hibernate.c3p0.*</literal> 프로퍼티들을 "
+"설정할 경우 Hibernate는 커넥션 풀링을 위해 그것의 "
+"<literal>C3P0ConnectionProvider</literal>를 사용할 것이다. 만일 당신이 "
+"Proxool을 사용하고자 원할 경우 패키지화 된 <literal>hibernate.properties</"
+"literal>를 참조하고 추가 정보는 Hibernate 웹 사이트를 참조하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is an example <filename>hibernate.properties</filename> file "
+"for c3p0:"
+msgstr ""
+"다음은 C3P0에 대한 사용하는 예제 <literal>hibernate.properties</literal> 파일"
+"이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You "
+"will need to set at least one of the following properties:"
+msgstr ""
+"어플리케이션 서버 내부의 용도로, 당신은 JNDI로 등록된 어플리케이션 서버 "
+"<literal>Datasource</literal>로부터 커넥션을 얻기 위해 항상 Hibernate를 구성"
+"해야 한다. 당신은 적어도 다음 프로퍼티들 중 하나를 최소한으로 설정할 필요가 "
+"있을 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Hibernate Datasource Properties"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "hibernate.connection.datasource"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "데이터소스 JNDI 이름"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "hibernate.jndi.url"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "JNDI 프로바이더의 URL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "hibernate.jndi.class"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here is an example <filename>hibernate.properties</filename> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"다음은 어플리케이션 서버 제공 JNDI 데이터소스용 예제 <literal>hibernate."
+"properties</literal> 파일이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"JNDI datasource로부터 얻어진 JDBC 커넥션들은 어플리케이션 서버의 컨테이너에 "
+"의해 관리되는 트랜잭션들에 자동적으로 참여할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Arbitrary connection properties can be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the connection property name. "
+"For example, you can specify a <property>charSet</property> connection "
+"property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+"임의의 커넥션 프로퍼티들은 프로퍼티 이름 앞에 \"<literal>hibernate."
+"connnection</literal>\"을 첨가하여 부여될 수 있다. 예를 들어 당신은 "
+"<literal>hibernate.connection.charSet</literal>을 사용하여 <literal>charSet</"
+"literal>을 지정할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, and specifying your custom "
+"implementation via the <property>hibernate.connection.provider_class</"
+"property> property."
+msgstr ""
+"당신은 <literal>org.hibernate.connection.ConnectionProvider</literal> 인터페"
+"이스를 구현함으로써 JDBC 커넥션들을 얻는 당신 자신의 플러그인 방도를 정의할수"
+"도 있다. 당신은 <literal>hibernate.connection.provider_class</literal>를 설정"
+"하여 맞춤형 구현을 선택할 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "선택적인 구성 프로퍼티들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are a number of other properties that control the behavior of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"실행 시에 Hibernate의 행위를 제어하는 많은 다른 프로퍼티들이 존재한다. 모든 "
+"것이 옵션이지만 합당한 디폴트 값들을 갖는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Some of these properties are \"system-level\" only.</emphasis> "
+"System-level properties can be set only via <literal>java -Dproperty=value</"
+"literal> or <filename>hibernate.properties</filename>. They "
+"<emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>경고: 이들 프로퍼티들 중 몇몇은 \"system-level\" 전용이다.</"
+"emphasis> 시스템 레벨 프로퍼티들은 오직 <literal>java -Dproperty=value</"
+"literal> 또는 <literal>hibernate.properties</literal>를 통해서만 설정될 수 있"
+"다. 그것들은 위에 설명된 다른 기법들에 의해 설정될 수 <emphasis>없다</"
+"emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Hibernate 구성 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "hibernate.dialect"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> which allows Hibernate to generate SQL optimized for a particular "
+"relational database."
+msgstr ""
+"특정 관계형 데이터베이스에 최적화 된 SQL을 생성시키는 것을 Hibernate에게 허용"
+"해주는 Hibernate <placeholder-1/>의 클래스명. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases Hibernate will actually be able to choose the correct "
+"<classname>org.hibernate.dialect.Dialect</classname> implementation based on "
+"the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "hibernate.show_sql"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"모든 SQL 문장들을 콘솔에 기록한다. 이것은 로그 카테고리 <placeholder-1/>를 "
+"<placeholder-2/>로 설정하는 것에 대한 하나의 다른 방법이다. <placeholder-3/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "hibernate.format_sql"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "로그와 콘솔 속에 SQL을 깔끔하게 프린트한다. <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "hibernate.default_schema"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"생성된 SQL 내에 주어진 schema/tablespace로서 수식이 없는 테이블이름들을 수식"
+"한다. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "hibernate.default_catalog"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"주어진 SQL 내에 주어진 카타록으로서 수식이 없는 테이블이름들을 수식한다. "
+"<placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "hibernate.session_factory_name"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.SessionFactory</interfacename> will be "
+"automatically bound to this name in JNDI after it has been created."
+msgstr ""
+"<placeholder-1/>는 그것이 생성된 후에 JNDI 내에서 이 이름에 자동적으로 바인"
+"드 될 것이다. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "hibernate.max_fetch_depth"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"single-ended 연관관계들(one-to-one, many-to-one)의 경우에 outer join fetch 트"
+"리의 최대 \"깊이\"를 설정한다. <placeholder-1/>은 디폴트 outer join fetching"
+"을 사용불가능하게 만든다. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>0</literal>과 <literal>3</"
+"literal> 사이의 값들이권장된다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "hibernate.default_batch_fetch_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr ""
+"연관들의 Hibernate 배치 페칭에 대한 디폴트 크기를 설정한다. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis> 권장되는 값들은 <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "hibernate.default_entity_mode"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"이 <placeholder-1/>로부터 열려진 모든 세션들에 대해 엔티티 표현을 디폴트 모드"
+"로 설정한다 <placeholder-2/>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "hibernate.order_updates"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Forces Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"업데이트 중인 항목들의 프라이머리 키 값에 의해 SQL 업데이트들이 순서"
+"(ordering)지워지도록 Hibernate에게 강제시킨다. 이것은 고도의 동시성 시스템들"
+"에서 더 적은 트랜잭션 데드락(deadlock)들로 귀결될 것이다 <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "hibernate.generate_statistics"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"이용 가능하게 되면, Hibernate는 퍼포먼스 튜닝에 유용한 통계들을 수집할 것이"
+"다. <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "hibernate.use_identifer_rollback"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"이용 가능하게 되면, 객체가 삭제될 때 생성된 식별자 프로퍼티들은 디폴트 값들"
+"로 재설정될 것이다. <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "hibernate.use_sql_comments"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"이용 가능하게 되면, Hibernate는 보다 쉬운 디버깅을 위해 SQL 내에 주석들을 생"
+"성시킬 것이다. 디폴트는 <placeholder-1/>. <placeholder-2/>"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "Hibernate JDBC 및 커넥션 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "hibernate.jdbc.fetch_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"0 아닌 값은 JDBC fetch 사이즈를 결정한다(<placeholder-1/>을 호출한다 )."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "hibernate.jdbc.batch_size"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr ""
+"0 아닌 값은 Hibernate에 의한 JDBC2 배치 업데이트의 사용을 이용 가능하게 한"
+"다. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>5</literal>와 <literal>30</"
+"literal> 사이의 값들이 권장된다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "hibernate.jdbc.batch_versioned_data"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal>. Iit is usually "
+"safe to turn this option on. Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"당신의 JDBC 드라이버가 <placeholder-1/>로부터 정확한 행 카운트들을 반환할 경"
+"우에 이 프로퍼티를 <placeholder-2/>로 설정하라(대개 이 옵션을 사용 가능하게 "
+"하는 것이 안전하다). 그러면 Hibernate는 자동적으로 버전화 된 데이터에 대해 배"
+"치화된(batched) DML을 사용할 것이다. 디폴트는 <placeholder-3/>. <placeholder-"
+"4/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "hibernate.jdbc.factory_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Most applications will not need this configuration property."
+msgstr ""
+"맞춤형 <placeholder-1/>를 선택한다. 대부분의 어플리케이션들은 이 구성 프로퍼"
+"티를 필요로 하지 않을 것이다. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "hibernate.jdbc.use_scrollable_resultset"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user-supplied JDBC connections. Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Hibernate에 의한 JDBC2 스크롤 가능한 결과셋들의 사용을 가능하게 해준다. 이 프"
+"로퍼티는 사용자가 제공한 JDBC커넥션들을 사용할 때에만 필수적이고, 그 밖의 경"
+"우 Hibernate는 커넥션 메타데이터를 사용한다. <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "hibernate.jdbc.use_streams_for_binary"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+msgstr ""
+"FUZZY! <placeholder-1/> 또는 <placeholder-2/> 타입들을 읽어들일 때 스트림들"
+"을 사용한다(시스템-레벨 프로퍼티). <placeholder-3/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "hibernate.jdbc.use_get_generated_keys"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, it tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"insert 후에 고유하게 생성된 키들을 검색하는데 JDBC3 <placeholder-1/>의 사용"
+"을 이용 가능하도록 만든다. JDBC3+ 드라이버와 JRE1.4+를 필요로 하고, 당신의 드"
+"라이버가 Hibernate 식별자 생성자들에 문제가 있을 경우에 false로 설정하라. 디"
+"폴트로 커넥션 메타 데이터를 사용하여 드라이버 가용성들을 결정하려고 시도하"
+"라. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "hibernate.connection.provider_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> which provides JDBC connections to "
+"Hibernate."
+msgstr ""
+"Hibernate에 JDBC 커넥션들을 제공하는 맞춤형 <placeholder-1/>의 클래스명. "
+"<placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "hibernate.connection.isolation"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Sets the JDBC transaction isolation level. Check <interfacename>java.sql."
+"Connection</interfacename> for meaningful values, but note that most "
+"databases do not support all isolation levels and some define additional, "
+"non-standard isolations."
+msgstr ""
+"JDBC transaction isolation 레벨을 설정한다. 의미있는 값들로 <placeholder-1/>"
+"을 체크하지만 대부분의 데이터베이스들이 모든 격리(isolate) 레벨들을 지원하지 "
+"않음을 노트하라. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "hibernate.connection.autocommit"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr ""
+"JDBC 풀링된 커넥션들에 대해 자동커밋을 이용 가능하도록 한다(권장되지 않음). "
+"<placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "hibernate.connection.release_mode"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Specifies when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, use <literal>after_statement</"
+"literal> to aggressively release connections after every JDBC call. For a "
+"non-JTA connection, it often makes sense to release the connection at the "
+"end of each transaction, by using <literal>after_transaction</literal>. "
+"<literal>auto</literal> will choose <literal>after_statement</literal> for "
+"the JTA and CMT transaction strategies and <literal>after_transaction</"
+"literal> for the JDBC transaction strategy."
+msgstr ""
+"Hibernate가 JDBC 커넥션들을 해제하게 될 시점을 지정한다. 디폴트로 한 개의 "
+"JDBC 커넥션은 그 세션이 명시적으로 닫히거나 연결해제되기 전까지 보관된다. 어"
+"플리케이션 트랜잭션 서버 JTA 데이터소스의 경우, 당신은 모든 JDBC 호출 후에 커"
+"넥션들을 과감하게 해제시키기 위해 <placeholder-1/>를 사용해야 한다. 비-JTA 연"
+"결의 경우, <placeholder-2/>을 사용하여 각각의 트랜잭션의 끝에서 커넥션들을 해"
+"제시키는 것이 종종 의미가 있다. <placeholder-3/>는 JTA 및 CMT 트랜잭션 방도들"
+"의 경우에 <placeholder-4/>를 선택하고 JDBC 트랜잭션 방도에 대해 <placeholder-"
+"5/>를 선택할 것이다. <placeholder-6/><placeholder-7/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>auto</literal> (디폴트) | "
+"<literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This setting only affects <literal>Session</literal>s returned from "
+"<literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\" />"
+msgstr ""
+"이 설정이 <literal>SessionFactory.openSession</literal>로부터 반환된 "
+"<literal>Session</literal>들에만 영향을 준다는 점을 노트하라. "
+"<literal>SessionFactory.getCurrentSession</literal>을 통해 얻어진 "
+"<literal>Session</literal>들의 경우, 사용하기 위해 구성된 "
+"<literal>CurrentSessionContext</literal> 구현이 그들 <literal>Session</"
+"literal>들에 대한 연결 해제를 제어한다. <xref linkend=\"architecture-current-"
+"session\"/>를 보라."
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Hibernate Cache 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "hibernate.cache.provider_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr "맞춤형 <placeholder-1/>의 클래스명. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "hibernate.cache.use_minimal_puts"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Optimizes second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"읽기가 매우 빈번한 경우에, 쓰기를 최소화 시키기 위해 second-level 캐시 연산"
+"을 최적화 시킨다. 이 설정은 Hibernate3에서 클러스터링 된 캐시들에 가장 유용하"
+"고, Hibernate3에서는 클러스터링된 캐시 구현들에 대해 디폴트로 이용 가능하다. "
+"<placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "hibernate.cache.use_query_cache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+"질의 캐시를 가능하게 만든다. 개별 질의들은 여전히 캐시 가능한 것으로 설정되어"
+"야 한다. <placeholder-1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "hibernate.cache.use_second_level_cache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Can be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal>&lt;cache&gt;</literal> "
+"mapping."
+msgstr ""
+"second-level 캐시를 완전히 사용 불가능하게 하는데 사용될 수 있고, 그것은 "
+"<placeholder-1/> 매핑을 지정하는 클래스들에 대해 디폴트로 이용 가능이다. "
+"<placeholder-2/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "hibernate.cache.query_cache_factory"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"맞춤형 <placeholder-1/> 인터페이스의 클래스명. 디폴트는 미리 빌드된 "
+"<placeholder-2/>. <placeholder-3/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "hibernate.cache.region_prefix"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr "second-level 캐시 영역 이름들에 사용할 접두어. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "hibernate.cache.use_structured_entries"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"인간에게 보다 더 친숙한 형식으로 second-level 캐시 속에 데이터를 저장하도록 "
+"Hibernate에게 강제시킨다.. <placeholder-1/>"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Hibernate 트랜잭션 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "hibernate.transaction.factory_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"Hibernate <placeholder-1/> API 에 사용할 <placeholder-2/>의 클래스 이름.(디폴"
+"트는 <placeholder-3/>). <placeholder-4/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "jta.UserTransaction"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"어플리케이션 서버로부터 JTA <placeholder-1/>을 얻기 위해 <placeholder-2/>에 "
+"의해 사용되는 JNDI 이름. <placeholder-3/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "hibernate.transaction.manager_lookup_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal>. It is "
+"required when JVM-level caching is enabled or when using hilo generator in a "
+"JTA environment."
+msgstr ""
+"<placeholder-1/>의 클래스명- JVM 레벨의 캐싱이 이용 가능할 때 또는 JTA 환경에"
+"서 hilo generator를 사용할 때 필요하다. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "hibernate.transaction.flush_before_completion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"만일 사용가능하도록 되면, 세션은 트랜잭션의 before completion 단계 동안에 자"
+"동적으로 flush 될 것이다. 빌드되어 있는 자동적인 세션 컨텍스트 관리가 선호되"
+"는데, <xref linkend=\"architecture-current-session\"/>를 보라. <placeholder-"
+"1/>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "hibernate.transaction.auto_close_session"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"만일 사용가능토록 하면, after completion 단계 동안에 세션이 자동적으로 닫혀"
+"질 것이다. (CMT에 대해 Hibernate를 사용할 때 매우 유용하다.) <placeholder-1/>"
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "여러가지 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "hibernate.current_session_context_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Supply a custom strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\" /> for more information about the built-in strategies."
+msgstr ""
+"\"현재\" <placeholder-1/>의 영역화를 위한 하나의 (맞춤) 방도를 제공한다. 빌드"
+"되어 있는 방도들에 대한 추가 정보는 <xref linkend=\"architecture-current-"
+"session\"/>를 보라. <placeholder-2/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "hibernate.query.factory_class"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "Chooses the HQL 파서 구현을 선택한다. <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "hibernate.query.substitutions"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Is used to map from tokens in Hibernate queries to SQL tokens (tokens might "
+"be function or literal names, for example)."
+msgstr ""
+"Hibernate 질의들 내의 토큰들로부터 SQL 토큰들로의 매핑 (예를 들어 토큰들은 함"
+"수 이름 또는 리터럴 이름일 수 있다). <placeholder-1/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "hibernate.hbm2ddl.auto"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Automatically validates or exports schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"<placeholder-1/>가 생성될 때, 자동적으로 유효성을 검사하거나 schema DDL을 데"
+"이터베이스로 내보내기 한다. <placeholder-2/>의 경우, <placeholder-3/>가 명시"
+"적으로 닫혀질 때 데이터베이스 스키마가 드롭될 것이다. <placeholder-4/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "hibernate.cglib.use_reflection_optimizer"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Enables the use of CGLIB instead of runtime reflection (System-level "
+"property). Reflection can sometimes be useful when troubleshooting. "
+"Hibernate always requires CGLIB even if you turn off the optimizer. You "
+"cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"런타임 reflection 대신에 CGLIB의 사용을 가능하도록 만든다(시스템 레벨 프로퍼"
+"티). Reflection은 문제가 발생할 시에 때때로 유용할 수 있고, 당신이 optimizer"
+"를 사용하지 않을 경우조차도 Hibernate는 항상 필요로 함을 유의하라. 당신은 "
+"<placeholder-1/> 속에 이 프로퍼티를 설정할수 없다. <placeholder-2/>"
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "SQL Dialects"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Always set the <literal>hibernate.dialect</literal> property to the correct "
+"<literal>org.hibernate.dialect.Dialect</literal> subclass for your database. "
+"If you specify a dialect, Hibernate will use sensible defaults for some of "
+"the other properties listed above. This means that you will not have to "
+"specify them manually."
+msgstr ""
+"당신은 항상 당신의 데이터베이스를 위해 <literal>hibernate.dialect</literal> "
+"프로퍼티를 정확한 <literal>org.hibernate.dialect.Dialect</literal> 서브클래스"
+"로 설정해야 한다. 만일 당신이 dialect를 지정할 경우, 당신이 프로퍼티들을 수작"
+"업으로 지정하는 노력을 절약하도록 Hibernate는 위에 열거된 다른 프로퍼티들 중 "
+"몇몇에 대해 의미있는 디폴트들을 사용할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr "DB2"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2400Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "org.hibernate.dialect.DB2390Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "org.hibernate.dialect.PostgreSQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "MySQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MySQL with InnoDB"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLInnoDBDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "MySQL with MyISAM"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "org.hibernate.dialect.MySQLMyISAMDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle (any version)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "org.hibernate.dialect.OracleDialect"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Oracle 9i"
+msgstr "Oracle 9i/10g"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "org.hibernate.dialect.Oracle9Dialect"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Oracle 10g"
+msgstr "Oracle 9i/10g"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "org.hibernate.dialect.OracleDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "org.hibernate.dialect.SybaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Anywhere"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "org.hibernate.dialect.SybaseAnywhereDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Microsoft SQL Server"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "org.hibernate.dialect.SQLServerDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "org.hibernate.dialect.SAPDBDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "org.hibernate.dialect.InformixDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "org.hibernate.dialect.HSQLDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "org.hibernate.dialect.IngresDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progress"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "org.hibernate.dialect.ProgressDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "org.hibernate.dialect.MckoiDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "org.hibernate.dialect.InterbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Pointbase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "org.hibernate.dialect.PointbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "FrontBase"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "org.hibernate.dialect.FrontbaseDialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "org.hibernate.dialect.FirebirdDialect"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "Outer Join Fetching"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database. This is, "
+"however, at the cost of possibly more work performed by the database itself. "
+"Outer join fetching allows a whole graph of objects connected by many-to-"
+"one, one-to-many, many-to-many and one-to-one associations to be retrieved "
+"in a single SQL <literal>SELECT</literal>."
+msgstr ""
+"만일 당신의 데이터베이스가 ANSI, Oracle, 또는 Sybase 스타일의 outer join들을 "
+"지원할 경우, <emphasis>outer join fetching</emphasis>은 (데이터베이스 그 자체"
+"에 의해 보다 더 많은 작업이 수행되는 비용으로) 데이터베이스로의 그리고 데이터"
+"베이스로부터의 라운드 트립들의 개수를 제한함으로써 종종 퍼포먼스를 증가시킬 "
+"것이다. Outer join fetching은 many-to-one, one-to-many, many-to-many,one-to-"
+"one 연관관계들이 에 의해 연결된 객체들의 전체 그래프가 하나의 SQL "
+"<literal>SELECT</literal> 속에서 검색되게끔 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Outer join fetching can be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations that have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"Outer join fetching은 hibernate.max_fetch_depth 프로퍼티를 <literal>0</"
+"literal>으로 설정함으로써 <emphasis>전역적으로</emphasis> 사용 불가능하게 할 "
+"수 있다. <literal>1</literal> 이상의 값을 설정하는 것은 <literal>fetch=\"join"
+"\"</literal>으로 매핑되었던 모든 one-to-one 및 many-to-one 연관관계들에 대해 "
+"outer join fetching을 사용 가능하도록 만든다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr "추가 정보는 <xref linkend=\"performance-fetching\"/>를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "Binary Streams"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that can be passed "
+"to and/or from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle은 JDBC 드라이버 로/부터 전달되는 <literal>byte</literal> 배열들의 크기"
+"를 제한시킨다. 만일 당신이 <literal>binary</literal> 또는 "
+"<literal>serializable</literal> 타입의 대형 인스턴스를 사용하고자 원할 경우"
+"에, 당신은 <literal>hibernate.jdbc.use_streams_for_binary</literal>를 사용 가"
+"능하게 해야 할 것이다. <emphasis>이것은 오직 시스템 레벨 설정이다.</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "Second-level 캐시와 query 캐시"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+"<literal>hibernate.cache</literal> 접두어가 붙은 프로퍼티들은 Hibernate에 대"
+"해 프로세스 또는 클러스터 범위의 두 번째 레벨 캐시 시스템을 사용하는 것을 허"
+"용해준다. 상세한 것은 <xref linkend=\"performance-cache\"/>를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "Query Language 치환"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"당신은 <literal>hibernate.query.substitutions</literal>을 사용하여 새로운 "
+"Hibernate 질의 토큰들을 정의할 수 있다. 예를 들어:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This would cause the tokens <literal>true</literal> and <literal>false</"
+"literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+"은<literal>true</literal>와 <literal>false</literal> 토큰들이 생성된 SQL 내에"
+"서 정수 리터럴들로 번역되도록 강제할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr ""
+"은 SQL <literal>LOWER</literal> function 함수 이름을 변경하는 것을 당신에게 "
+"허용해 줄 것이다"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Hibernate 통계"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"exposes a number of metrics that are useful when tuning a running system via "
+"<literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"만일 당신이 <literal>hibernate.generate_statistics</literal>를 사용 가능하도"
+"록 할 경우, Hibernate는 <literal>SessionFactory.getStatistics()</literal>를 "
+"통해 가동 중인 시스템을 튜닝할 때 유용한 많은 통계들을 노출시킬 것이다. "
+"Hibernate는 심지어 JMX를 통해 이들 통계들을 노출시키도록 구성될 수 있다. 추"
+"가 정보는 <literal>org.hibernate.stats</literal>에 있는 인터페이스들에 관한 "
+"Javadoc를 읽어라."
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "로깅"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J "
+"can direct your logging output to several logging frameworks (NOP, Simple, "
+"log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen "
+"binding. In order to setup logging you will need <filename>slf4j-api.jar</"
+"filename> in your classpath together with the jar file for your preferred "
+"binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See "
+"the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</"
+"ulink> for more detail. To use Log4j you will also need to place a "
+"<filename>log4j.properties</filename> file in your classpath. An example "
+"properties file is distributed with Hibernate in the <literal>src/</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"우리는 당신이 Hibernate의 로그 메시지들에 익숙해지기를 강력히 권장한다. 읽기 "
+"불가능하지 않게끔 가능한 한 상세하게 Hibernate 로그를 만들도록 많은 작업이 행"
+"해졌다. 그것은 본질적인 문제던지기 장치이다. 가장 흥미로운 로그 카테고리들이 "
+"다음에 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Hibernate 로그 카테고리들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "카테고리"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "기능"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "org.hibernate.SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "SQL DML 문장들이 실행될 때 그것들 모두를 로그 시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "org.hibernate.type"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "모든 JDBC 파라미터들을 로그시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "org.hibernate.tool.hbm2ddl"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "SQL DDL 문장들이 실행될 때 그것들 모두를 로그 시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "org.hibernate.pretty"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"flush 시점에서 세션과 연관된 모든 엔티티들(최대 20개의 엔티티들)의 상태를 로"
+"그 시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "org.hibernate.cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "모든 second-level 캐시 액티비티를 로그시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "org.hibernate.transaction"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "트랜잭션 관련 액티비티를 로그 시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "org.hibernate.jdbc"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "모든 JDBC 리소스 취득을 로그 시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "org.hibernate.hql.ast.AST"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "질의 파싱 동안에 HQL AST와 SQL AST를 로그시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "org.hibernate.secure"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "모든 JAAS 허가 요청들을 로그시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "JNDI-bound <literal>SessionFactory</literal>"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"Log everything. This is a lot of information but it is useful for "
+"troubleshooting"
+msgstr "모든 것을 로그시킨다(많은 정보이지만, 문제해결에 매우 유용하다)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Hibernate로 어플리케이션들을 개발할 때, 당신은 거의 항상 <literal>org."
+"hibernate.SQL</literal> 카테고리에 대해 이용 가능한 <literal>debug</literal> "
+"모드로 작업하거나, 다른 방법으로 <literal>hibernate.show_sql</literal> 프로퍼"
+"티를 이용가능하게 하여 작업해야 할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "<literal>NamingStrategy</literal> 구현하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"<literal>org.hibernate.cfg.NamingStrategy</literal> 인터페이스는 데이터베이"
+"스 객체들과 스키마 요소들에 대한 \"네이밍 표준\"을 지정하는 것을 당신에게 허"
+"용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"당신은 Java 식별자들로부터 데이터베이스 식별자들을 자동적으로 생성시키거나 매"
+"핑 파일에 주어진 \"논리적\" 컬럼과 테이블 이름들을 \"물리적\" 테이블과 컬럼 "
+"이름들로 자동적으로 처리하는 규칙들을 제공할 수 있다. 이 특징은 반복되는 잡음"
+"(예를 들어 <literal>TBL_</literal>접두어들)을 제거함으로써, 매핑 문서의 말많"
+"은 장황함을 감소시키도록 도와준다. Hibernate에 의해 사용되는 디폴트 방도는 아"
+"주 작은 작품이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"당신은 매핑들을 추가하기 이전에 <literal>Configuration.setNamingStrategy()</"
+"literal>를 호출함으로써 다른 방도를 지정할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal>는 어떤 어플리케이"
+"션들에 대한 유용한 시작점일 수 있는 미리 빌드된 방도이다."
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "XML 구성 파일"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"구성에 대한 다른 접근법은 <literal>hibernate.cfg.xml</literal>로 명명된 파일 "
+"속에 전체 구성을 지정하는 것이다. 이 파일은 <literal>hibernate.properties</"
+"literal> 파일에 대한 대용물로서 사용될 수 있거나, 만일 둘 다 존재할 경우에 프"
+"로퍼티들을 중복정의하는데 사용될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root of your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"XML 구성 파일은 디폴트로 당신의 <literal>CLASSPATH</literal>의 루트에 존재하"
+"는 것이 기대된다. 다음은 예제이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The advantage of this approach is the externalization of the mapping file "
+"names to configuration. The <literal>hibernate.cfg.xml</literal> is also "
+"more convenient once you have to tune the Hibernate cache. It is your choice "
+"to use either <literal>hibernate.properties</literal> or <literal>hibernate."
+"cfg.xml</literal>. Both are equivalent, except for the above mentioned "
+"benefits of using the XML syntax."
+msgstr ""
+"당신이 볼 수 있듯이, 이 접근법의 장점은 구성에 대한 매핑 파일 이름들을 구체"
+"화 시키는 것이다. <literal>hibernate.cfg.xml</literal>은 또한 당신이 "
+"Hibernate 캐시를 튜닝해야할 때 보다 편리하다. <literal>hibernate.properties</"
+"literal> 또는 <literal>hibernate.cfg.xml</literal> 중 어느 것을 사용하는가는 "
+"당신의 선택이다. XML 구문을 사용하는 위에 언급된 이점들을 제외하면 둘다 같은 "
+"것임을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr "Hibernate 구성으로, Hibernate를 시작하는 것은 다음과 같이 간단하다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "당신은 다음을 사용하여 다른 XML 구성 파일을 찾아낼 수 있다"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "J2EE 어플리케이션 서버 통합"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr "Hibernate는 J2EE 인프라스트럭처에 대한 다음 통합 점들을 갖고 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), especially distributed transaction handling across several "
+"datasources. You can also demarcate transaction boundaries programmatically "
+"(BMT), or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate는 컨테이너에 의"
+"해 관리되는 JDBC 커넥션들을 사용할 수 있고 JNDI를 통해 제공된다. 대개 JTA 호"
+"환 <literal>TransactionManager</literal>와 <literal>ResourceManager</literal>"
+"는 트랜잭션 관리(CMT), 특히 몇몇 데이터소스들을 가로질러 분산된 트랜잭션 핸들"
+"링을 처리한다. 물론 당신은 또한 프로그램 상으로 트랜잭션 경계들을 한정할 수"
+"도 있거나(BMT) 당신은 당신의 코드가 이식성을 유지하도록 이것에 대한 선택적인 "
+"Hibernate <literal>Transaction</literal> API를 사용하고자 원할 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>자동적인 JNDI 바인딩</emphasis>: Hibernate는 시작 후에 그것의 "
+"<literal>SessionFactory</literal>를 JNDI에 바인드 시킬 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</"
+"literal> can be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate manage flushing and closing the "
+"<literal>Session</literal> when your JTA transaction completes. Transaction "
+"demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>JTA Session 바인딩</emphasis>: Hibernate <literal>Session</literal>"
+"은 JTA 트랜잭션들의 영역(scope)에 자동적으로 바인드 시킬 수도 있다. 간단하게 "
+"JNDI로부터 <literal>SessionFactory</literal>를 룩업하고 현재 "
+"<literal>Session</literal>을 얻어라. Hibernate로 하여금 당신의 JTA 트랜잭션"
+"이 완료될 때 <literal>Session</literal>을 flush시키고 닫는 것을 처리하도록 하"
+"라. 트랜잭션 경계 구분은 선언적(CMT)이거나 프로그래밍적((BMT/"
+"UserTransaction))이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> if you have a JMX capable application "
+"server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal> and also "
+"take care of service dependencies (datasource has to be available before "
+"Hibernate starts, etc)."
+msgstr ""
+"<emphasis>JMX 배치</emphasis>: 만일 당신이 JMX 가용성이 있는 어플리케이션 서"
+"버(예를 들면 JBoss AS)를 갖고 있다면, 당신은 Hibernate를 하나의 managed MBean"
+"으로서 배치하는 것을 선택할 수 있다. 이것은 <literal>Configuration</literal>"
+"으로부터 당신의 <literal>SessionFactory</literal>를 빌드 시키는 한 줄의 시작 "
+"코드를 절약해준다. 컨테이너는 당신의 <literal>HibernateService</literal>를 시"
+"작할 것이고, 또한 이상적으로 서비스 의존성들을 처리할 것이다(데이터소스는 "
+"Hibernate가 시작되기 전에 이용 가능해야 한다)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"당신의 환경에 따라, 당신은 당신의 어플리케이션 서버가 \"connection "
+"containment(연결 봉쇄)\" 예외상황들을 보일 경우에 구성 옵션 "
+"<literal>hibernate.connection.aggressive_release</literal>를 true로 설정해야 "
+"될 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "트랜잭션 방도 구성"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly through a connection pool, you can begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"Hibernate <literal>Session</literal> API는 당신의 아카텍처 내에서 임의의 트랜"
+"잭션 관할 시스템에 독립적이다. 만일 당신이 Hibernate로 하여금 커넥션 풀을 통"
+"해 직접 JDBC를 사용하도록 강제할 경우, 당신은 JDBC API를 호출하여 당신의 트랜"
+"잭션을 시작하고 끝낼 수 있다. 만일 당신이 J2EE 어플리케이션 서버를 실행 중이"
+"라면, 당신은 필요할 때 bean-managed 트랜잭션들을 사용하고 JTA API와 "
+"<literal>UserTransaction</literal>을 호출하고자 원할 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"이들 두 개의 (그리고 다른) 환경들에서 당신의 코드에 이식성을 유지하기 위해 우"
+"리는 기본 시스템을 포장하고 은폐시키는 선택적인 Hibernate "
+"<literal>Transaction</literal> API를 권장한다. 당신은 Hibernate 구성 프로퍼"
+"티 <literal>hibernate.transaction.factory_class</literal>를 사용하여 "
+"<literal>Transaction</literal> 인스턴스들에 대한 팩토리 클래스를 지정해야 한"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "세 개의 표준(미리 만들어진) 선택들이 존재한다:"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "org.hibernate.transaction.JDBCTransactionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "데이터베이스 (JDBC) 트랜잭션들에게 위임시킨다(디폴트)"
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "org.hibernate.transaction.JTATransactionFactory"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"delegates to container-managed transactions if an existing transaction is "
+"underway in this context (for example, EJB session bean method). Otherwise, "
+"a new transaction is started and bean-managed transactions are used."
+msgstr ""
+"기존의 트랜잭션이 이 컨텍스트(예를 들면 EJB session bean 메소드) 내에서 진행 "
+"중일 경우에 container-managed transaction에게 위임시키고, 그 밖의 경우 새로"
+"운 트랜잭션이 시작되고 bean-managed transaction이 사용된다."
+
+#. Tag: term
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "org.hibernate.transaction.CMTTransactionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "container-managed JTA 트랜잭션들에게 위임시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"당신은 또한 당신 자신의 트랜잭션 방도들(예를 들면 CORBA 트랜잭션 서비스)을 정"
+"의할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Some features in Hibernate (i.e., the second level cache, Contextual "
+"Sessions with JTA, etc.) require access to the JTA "
+"<literal>TransactionManager</literal> in a managed environment. In an "
+"application server, since J2EE does not standardize a single mechanism, you "
+"have to specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>:"
+msgstr ""
+"Hibernate에 있는 몇몇 특징들(예를 들면. second level 캐시, JTA를 가진 컨텍스"
+"트 상의 세션들, 기타.)은 관리되는 환경에서 JTA <literal>TransactionManager</"
+"literal>에 대한 접근을 필요로 한다. 어플리케이션 서버에서 당신은 Hibernate가 "
+"<literal>TransactionManager</literal>에 대한 참조를 획득하는 방법을 지정해야 "
+"한다. 왜냐하면 J2EE가 한 개의 메커니즘을 표준화 시키고 있지 않기 때문이다:"
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "JTA TransactionManagers"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "트랜잭션 팩토리"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "어플리케이션 서버"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JBossTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.WeblogicTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+msgstr "org.hibernate.transaction.WebSphereTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+msgstr "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.OrionTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.ResinTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JOTMTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JOnASTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.JRun4TransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr "org.hibernate.transaction.BESTransactionManagerLookup"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "JNDI-bound <literal>SessionFactory</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup function of the factory and create new <literal>Session</literal>s. "
+"This is not, however, related to a JNDI bound <literal>Datasource</literal>; "
+"both simply use the same registry."
+msgstr ""
+"하나의 JNDI 바인드된 Hibernate <literal>SessionFactory</literal>는 그 팩토리"
+"에 대한 룩업과 새로운 <literal>Session</literal>들의 생성을 단순화 시킬 수 있"
+"다. 이것은 JNDI 바인드된 <literal>Datasource</literal>에 관련되어 있지 않고, "
+"단순하게 둘 다 동일한 레지스트리를 사용한다는 점을 노트하라!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. This is especially useful in environments with a "
+"read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+"만일 당신이 <literal>SessionFactory</literal>를 하나의 JNDI namespace에 바인"
+"드 시키고자 원할 경우, <literal>hibernate.session_factory_name</literal> 프로"
+"퍼티를 사용하여 한 개의 이름(예를 들면. <literal>java:hibernate/"
+"SessionFactory</literal>)을 지정하라. 만일 이 프로퍼티가 생략될 경우, "
+"<literal>SessionFactory</literal>는 JNDI에 바인드 되지 않을 것이다. (이것은 "
+"읽기-전용 JNDI 디폴트 구현을 가진 환경들, 예를 들면 Tomcat에서 특히 유용하"
+"다.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"<literal>SessionFactory</literal>를 JNDI에 바인드 시킬 때, Hibernate는 초기 "
+"컨텍스트를 초기화 시키기 위해 <literal>hibernate.jndi.url</literal>, "
+"<literal>hibernate.jndi.class</literal>의 값들을 사용할 것이다. 만일 그것들"
+"이 지정되어 있지 않을 경우, 디폴트 <literal>InitialContext</literal>가 사용"
+"될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will have this call in some startup code, or utility class in your "
+"application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (this is discussed later in greater "
+"detail)."
+msgstr ""
+"Hibernate는 당신이 <literal>cfg.buildSessionFactory()</literal>를 호출한 후"
+"에 <literal>SessionFactory</literal>를 JNDI 내에 자동적으로 위치지울 것이다. "
+"이것은 당신이 (나중에 논의되는) <literal>HibernateService</literal>를 가진 "
+"JMX 배치를 사용하지 않는 한, 당신이 적어도 당신의 어플리케이션 내에 있는 어"
+"떤 시작 코드 (또는 유틸리티 클래스) 내에서 이것을 호출할 것임을 의미한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class, you can obtain the <literal>SessionFactory</literal> using a JNDI "
+"lookup."
+msgstr ""
+"만일 당신이 하나의 JNDI <literal>SessionFactory</literal>를 사용할 경우, 하나"
+"의 EJB 또는 어떤 다른 클래스는 JNDI 룩업을 사용하여 <literal>SessionFactory</"
+"literal>를 얻을 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you bind the <literal>SessionFactory</literal> to "
+"JNDI in a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate&mdash;see chapter 1."
+msgstr ""
+"우리는 관리되는 환경들에서 <literal>SessionFactory</literal>를 JNDI에 바인드 "
+"시키고 그 밖의 경우에는 하나의 <literal>static</literal> 싱글톤을 사용하는 것"
+"을 권장한다. 이들 상세로부터 당신의 어플리케이션 코드를 은폐시키기 위해, 우리"
+"는 또한 <literal>HibernateUtil.getSessionFactory()</literal>과 같은 하나의 "
+"helper 클래스 내에서 <literal>SessionFactory</literal>에 대한 실제 룩업 코드"
+"를 은폐시키기를 권장한다. 그런 클래스는 또한 Hibernate를 시작하는 편리한 방법"
+"임을 노트하라&mdash; 1장을 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "Current Session context management with JTA"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The easiest way to handle <literal>Sessions</literal> and transactions is "
+"Hibernate's automatic \"current\" <literal>Session</literal> management. For "
+"a discussion of contextual sessions see <xref linkend=\"architecture-current-"
+"session\" />. Using the <literal>\"jta\"</literal> session context, if there "
+"is no Hibernate <literal>Session</literal> associated with the current JTA "
+"transaction, one will be started and associated with that JTA transaction "
+"the first time you call <literal>sessionFactory.getCurrentSession()</"
+"literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> "
+"context are set to automatically flush before the transaction completes, "
+"close after the transaction completes, and aggressively release JDBC "
+"connections after each statement. This allows the <literal>Session</"
+"literal>s to be managed by the life cycle of the JTA transaction to which it "
+"is associated, keeping user code clean of such management concerns. Your "
+"code can either use JTA programmatically through <literal>UserTransaction</"
+"literal>, or (recommended for portable code) use the Hibernate "
+"<literal>Transaction</literal> API to set transaction boundaries. If you run "
+"in an EJB container, declarative transaction demarcation with CMT is "
+"preferred."
+msgstr ""
+"당신 자신의 <literal>ThreadLocal</literal> 유틸리티를 작동시키는 대신에, 우리"
+"는 또한 Hibernate <literal>Session</literal>를 얻기 위해 "
+"<literal>SessionFactory</literal> 상의 <literal>getCurrentSession()</"
+"literal> 메소드 사용을 권장한다. <xref linkend=\"architecture-current-session"
+"\">현재 세션들</xref>에 관한 논의를 보라. <literal>\"jta\"</literal> 세션 컨"
+"텍스트를 사용하고 있는 경우에, 현재의 JTA 트랜잭션으로 시작되고 연관된 "
+"Hibernate <literal>Session</literal>이 존재하지 않을 경우, 우리는 JTA 트랜잭"
+"션으로 시작되고 연관될 것이다. <literal>\"jta\"</literal> 컨텍스트에서 "
+"<literal>getCurrentSession()</literal>를 통해 검색된 <literal>Session</"
+"literal>들은 그 트랜잭션이 완료되기 전에 자동적으로 flush될 것이고 트랜잭션 "
+"완료 후에 닫혀질 것이고, 그리고 각각의 문장 뒤에 JDBC 커넥션들을 적극적으로 "
+"해제할 것이다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜"
+"서, 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 <literal>Session</literal>들"
+"이 관리되도록 허용해준다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하"
+"게 유지시켜서, 세션이 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 관리되는 "
+"것을 <literal>Session</literal>들에게 허용해준다. 당신의 코드는 "
+"<literal>Session</literal>들과 트랜잭션들을 처리하는 가장 손쉬운 방법은 "
+"Hibernate의 자동적인 \"현재\" <literal>Session</literal>이다. <xref linkend="
+"\"architecture-current-session\">current sessions</xref>에 관한 논의를 보라. "
+"<literal>\"jta\"</literal> 세션 컨텍스트를 사용하는 경우, 현재의 JTA 트랜잭션"
+"으로 시작되고 연관된 Hibernate <literal>Session</literal>들이 존재하지 않을 "
+"경우, 당신이 <literal>sessionFactory.getCurrentSession()</literal>을 처음 호"
+"출할 때 하나의 세션이 현재의 JTA 트랜잭션에 대해 시작되고 연관될 것이다. "
+"<literal>\"jta\"</literal> 컨텍스트에서 <literal>getCurrentSession()</"
+"literal>을 통해 검색된 <literal>Session</literal>들은 그 트랜잭션이 완료되기 "
+"전에 자동적으로 flush될 것이고 그 트랜잭션 완료들 후에 닫혀질 것이고 각각의 "
+"문장 후에 JDBC 커넥션들을 적극적으로 해제할 것이다. 이것은 그런 관리 사항들"
+"에 대해 사용자 코드를 명료하게 유지시켜서, 연관되어 있는 JTA 트랜잭션의 생명"
+"주기에 의해 <literal>Session</literal>들이 관리되도록 허용해준다. 이것은 그"
+"런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 세션이 연관되어 있"
+"는 JTA 트랜잭션의 생명주기에 의해 관리되는 것을 <literal>Session</literal>들"
+"에게 허용해준다. 당신의 코드는 트랜잭션 경계들을 설정하는데 "
+"<literal>UserTransaction</literal>을 통해 프로그램 상으로 JTA를 사용하거나, "
+"Hibernate <literal>Transaction</literal> API를 (이식성을 위한 코드로 권장됨) "
+"사용할 수 있다. 만일 당신이 하나의 EJB 컨테이너에서 실행하고 있을 경우, CMT"
+"의 경우에 선언적인 트랜잭션 경계설정이 선호된다."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "JMX 배치"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block, like "
+"the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as "
+"a <emphasis>managed service</emphasis>."
+msgstr ""
+"<literal>cfg.buildSessionFactory()</literal> 줄은 여전히 JNDI에 붙은 하나의 "
+"<literal>SessionFactory</literal>를 얻기 위해 어딘가에서 실행되어야 한다. 당"
+"신은 (<literal>HibernateUtil</literal> 내에 있는 것처럼) <literal>static</"
+"literal> initializer 블록 속에서 이것을 행할 수 있거나 당신은 Hibernate를 "
+"<emphasis>managed service</emphasis>로서 배치할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor-specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"Hibernate는 JBoss AS와 같은 JMX 가용성들을 가진 어플리케이션 서버 상의 배치"
+"를 위해 <literal>org.hibernate.jmx.HibernateService</literal>를 배포하고 있"
+"다. 실제 배치와 구성은 벤더 지정적이다. 다음은 JBoss 4.0.x를 위한 "
+"<literal>jboss-service.xml</literal> 예제이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) can be "
+"kept in their own JAR file, but you can include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"이 파일은 <literal>META-INF</literal>로 명명된 디렉토리 속에 배치되고 확장자 "
+"<literal>.sar</literal> (service archive)를 가진 한 개의 JAR 파일 속에 패키징"
+"된다. 당신은 또한 Hibernate, 그것의 필요한 제 3의 라이브러리들, 당신의 컴파일"
+"된 영속 클래스들 뿐만 아니라 당신의 매핑 파일들을 동일한 아카이브 속에 패키징"
+"할 필요가 있다. 당신의 엔터프라이즈 빈즈(대개 session beans)는 그것들 자신의 "
+"JAR 파일 속에 유지될 수 있지만, 당신은 한 개의 (hot-)배치 가능한 단위를 얻기 "
+"위해 메인 서비스 아카이브 속에 이 EJB JAR 파일을 포함시킬 수도 있다. JMX 서비"
+"스와 EJB 배치에 관한 추가 정보는 JBoss AS 문서를 참조하라."
+
+#~ msgid "JDBC URL"
+#~ msgstr "jdbc URL"
+
+#~ msgid "database user"
+#~ msgstr "데이터베이스 사용자"
+
+#~ msgid "hibernate.query.substitutions true=1, false=0"
+#~ msgstr "hibernate.query.substitutions true=1, false=0"
+
+#~ msgid "hibernate.query.substitutions toLowercase=LOWER"
+#~ msgstr "hibernate.query.substitutions toLowercase=LOWER"
+
+#~ msgid "org.hibernate"
+#~ msgstr "org.hibernate"
+
+#~ msgid ""
+#~ "<literal>hibernate.properties</literal> is the easiest approach if you "
+#~ "want to get started quickly."
+#~ msgstr ""
+#~ "당신이 빠르게 시작하고 원할 경우 <literal>hibernate.properties</literal>"
+#~ "는 가장 쉬운 접근법이다."
+
+#~ msgid "Hibernate logs various events using Apache commons-logging."
+#~ msgstr ""
+#~ "Hibernate는 Apache commons-logging를 사용하여 다양한 이벤트들을 로그시킨"
+#~ "다."
+
+#~ msgid ""
+#~ "The commons-logging service will direct output to either Apache Log4j (if "
+#~ "you include <literal>log4j.jar</literal> in your classpath) or JDK1.4 "
+#~ "logging (if running under JDK1.4 or above). You may download Log4j from "
+#~ "<literal>http://jakarta.apache.org</literal>. To use Log4j you will need "
+#~ "to place a <literal>log4j.properties</literal> file in your classpath, an "
+#~ "example properties file is distributed with Hibernate in the <literal>src/"
+#~ "</literal> directory."
+#~ msgstr ""
+#~ "commons-logging 서비스는 (만일 당신이 classpath 내에 <literal>log4j.jar</"
+#~ "literal>를 포함할 경우) Apache Log4j로 또는 (JDK1.4 이상의 버전에서 실행"
+#~ "될 경우) JDK 1.4 로깅으로 직접 출력할 것이다. 당신은 <literal>http://"
+#~ "jakarta.apache.org</literal>에서 Log4j를 다운로드 할 수 있다. Log4j를 사용"
+#~ "하기 위해, 당신은 <literal>log4j.properties</literal> 파일을 당신의 "
+#~ "classpath 내에 위치지울 필요가 있을 것이고, 예제 properties 파일은 "
+#~ "Hibernate의 <literal>src/</literal> 디렉토리 내에 배포되어 있다."
+
+#~ msgid "<placeholder-1/> (optional)"
+#~ msgstr "<placeholder-1/> (옵션)"
+
+#~ msgid "InitialContextFactory"
+#~ msgstr "InitialContextFactory"
+
+#~ msgid "class of the JNDI <placeholder-1/>"
+#~ msgstr "JNDI <placeholder-1/>의 클래스"
+
+#~ msgid "eg."
+#~ msgstr "예."
+
+#~ msgid "full.classname.of.Dialect"
+#~ msgstr "full.classname.of.Dialect"
+
+#~ msgid "debug"
+#~ msgstr "debug"
+
+#~ msgid "SCHEMA_NAME"
+#~ msgstr "SCHEMA_NAME"
+
+#~ msgid "CATALOG_NAME"
+#~ msgstr "CATALOG_NAME"
+
+#~ msgid "SessionFactory"
+#~ msgstr "SessionFactory"
+
+#~ msgid "jndi/composite/name"
+#~ msgstr "jndi/composite/name"
+
+#~ msgid "0"
+#~ msgstr "0"
+
+#~ msgid "false"
+#~ msgstr "false"
+
+#~ msgid "Statement.setFetchSize()"
+#~ msgstr "Statement.setFetchSize()"
+
+#~ msgid "true"
+#~ msgstr "executeBatch()"
+
+#~ msgid "executeBatch()"
+#~ msgstr "true"
+
+#~ msgid "Batcher"
+#~ msgstr "Batcher"
+
+#~ msgid "classname.of.BatcherFactory"
+#~ msgstr "classname.of.BatcherFactory"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "PreparedStatement.getGeneratedKeys()"
+#~ msgstr "PreparedStatement.getGeneratedKeys()"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "ConnectionProvider"
+#~ msgstr "ConnectionProvider"
+
+#~ msgid "classname.of.ConnectionProvider"
+#~ msgstr "classname.of.ConnectionProvider"
+
+#~ msgid "java.sql.Connection"
+#~ msgstr "java.sql.Connection"
+
+#~ msgid "1, 2, 4, 8"
+#~ msgstr "1, 2, 4, 8"
+
+#~ msgid "after_statement"
+#~ msgstr "after_statement"
+
+#~ msgid "after_transaction"
+#~ msgstr "after_transaction"
+
+#~ msgid "auto"
+#~ msgstr "auto"
+
+#~ msgid "hibernate.connection."
+#~ msgstr "&lt;propertyName&gt;"
+
+#, fuzzy
+#~ msgid "&lt;propertyName&gt;"
+#~ msgstr ""
+#~ "#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+#~ "hibernate.connection.<placeholder-1/>\n"
+#~ "#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+#~ "propertyName\n"
+#~ "#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+#~ "hibernate.jndi.<placeholder-1/>\n"
+#~ "#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+#~ "propertyName"
+
+#~ msgid "DriverManager.getConnection()"
+#~ msgstr "DriverManager.getConnection()"
+
+#~ msgid "Pass the JDBC property <placeholder-1/> to <placeholder-2/>."
+#~ msgstr "JDBC 프로퍼티 <placeholder-1/>을 <placeholder-2/>에 전달한다."
+
+#~ msgid "hibernate.jndi."
+#~ msgstr "&lt;propertyName&gt;"
+
+#~ msgid "Pass the property <placeholder-1/> to the JNDI <placeholder-2/>."
+#~ msgstr "<placeholder-1/> 프로퍼티를 JNDI <placeholder-2/>에 전달한다."
+
+#~ msgid "CacheProvider"
+#~ msgstr "CacheProvider"
+
+#~ msgid "classname.of.CacheProvider"
+#~ msgstr "classname.of.CacheProvider"
+
+#~ msgid "&lt;cache&gt;"
+#~ msgstr "&lt;cache&gt;"
+
+#~ msgid "QueryCache"
+#~ msgstr "QueryCache"
+
+#~ msgid "StandardQueryCache"
+#~ msgstr "StandardQueryCache"
+
+#~ msgid "classname.of.QueryCache"
+#~ msgstr "classname.of.QueryCache"
+
+#~ msgid "prefix"
+#~ msgstr "prefix"
+
+#~ msgid "TransactionFactory"
+#~ msgstr "Transaction"
+
+#~ msgid "Transaction"
+#~ msgstr "TransactionFactory"
+
+#~ msgid "JDBCTransactionFactory"
+#~ msgstr "JDBCTransactionFactory"
+
+#~ msgid "classname.of.TransactionFactory"
+#~ msgstr "classname.of.TransactionFactory"
+
+#~ msgid "JTATransactionFactory"
+#~ msgstr "UserTransaction"
+
+#~ msgid "UserTransaction"
+#~ msgstr "JTATransactionFactory"
+
+#~ msgid "TransactionManagerLookup"
+#~ msgstr "TransactionManagerLookup"
+
+#~ msgid "classname.of.TransactionManagerLookup"
+#~ msgstr "classname.of.TransactionManagerLookup"
+
+#~ msgid "Session"
+#~ msgstr "Session"
+
+#~ msgid "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+#~ msgstr "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+
+#~ msgid "create-drop"
+#~ msgstr "create-drop"
+
+#~ msgid "hibernate.cfg.xml"
+#~ msgstr "hibernate.cfg.xml"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,281 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "인터셉터들과 이벤트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"어플리케이션이 Hibernate 내부에서 발생하는 어떤 이벤트들에 대해 반응하는 것"
+"에 흔히 유용하다. 이것은 어떤 종류의 일반적인 기능, 그리고 Hibernate의 확장 "
+"기능의 구현을 허용해준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "인터셉터들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"<literal>Interceptor</literal> 인터페이스는 영속 객체가 저장되고, 업데이트되"
+"고, 삭제되거나 로드되기 전에 영속 객체의 프로퍼티들을 조사하고/하거나 처리하"
+"는 것을 어플리케이션에 허용해줌으로써 세션으로부터 어플리케이션으로의 콜백들"
+"을 제공한다. 이것에 대한 한 가지 가능한 사용은 감사 정보를 추적하는 것이다. "
+"예를 들어, 다음 <literal>Interceptor</literal>는 <literal>Auditable</literal>"
+"이 생성될 때 <literal>createTimestamp</literal>를 자동적으로 설정하고 "
+"<literal>Auditable</literal>이 업데이트될 때 <literal>lastUpdateTimestamp</"
+"literal> 프로퍼티를 업데이트 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"당신은 <literal>Interceptor</literal>를 직접 구현해야 하거나 (더 좋게는) "
+"<literal>EmptyInterceptor</literal>를 확장(extend)해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"인터셉터들은 다음 두 개의 특징들로 나타난다: <literal>Session</literal>-영역"
+"화 그리고 <literal>SessionFactory</literal>-영역화."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"<literal>Session</literal>-영역의 인터셉터는 세션이 하나의 "
+"<literal>Interceptor</literal>를 수용하는 오버로드된 SessionFactory."
+"openSession() 메소드들 중 하나를 사용하여 열릴 때 지정된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"<literal>SessionFactory</literal>-영역의 인터셉터는 <literal>SessionFactory</"
+"literal>을 빌드하기에 앞서 <literal>Configuration</literal> 객체에 등록된다. "
+"이 경우에, 공급되는 인터셉터는 그 <literal>SessionFactory</literal>로부터 열"
+"려진 모든 세션들에 적용될 것이다; 하나의 세션이 사용할 인터셉터를 명시적으로 "
+"지정하여 열리지 않는 한 이것은 참이다. <literal>SessionFactory</literal>-영역"
+"의 인터셉터들은 세션-지정적인 상태를 저장하지 않도록 주의하여 쓰레드-안전해"
+"야 한다. 왜냐하면 다중 세션들은 (잠정적으로) 이 인터셉터를 동시적으로 사용할 "
+"것이기 때문이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "이벤트 시스템"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"만일 당신이 당신의 영속 계층에서 특정 이벤트들에 대해 반응해야 한다면, 당신"
+"은 또한 Hibernate3 <emphasis>event</emphasis> 아키텍처를 사용할 수도 있다. 이"
+"벤트 시스템은 부가물로 사용될 수 있거나 인터셉터들에 대한 대체물로 사용될 수 "
+"있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"본질적으로 <literal>Session</literal> 인터페이스의 모든 메소드들은 이벤트와 "
+"서로 관련되어 있다. 당신은 <literal>LoadEvent</literal>, "
+"<literal>FlushEvent</literal>, 등을 갖는다 (정의된 이벤트 타입들의 전체 리스"
+"트에 대해서는 XML 구성 파일 DTD 또는 <literal>org.hibernate.event</literal> "
+"패키지를 참조하라). 하나의 요청이 이들 메소드들 중 하나에 의해 만들어질 때, "
+"Hibernate <literal>Session</literal>은 적절한 이벤트를 생성시키고 그것을 그 "
+"타입의 구성된 이벤트 리스너에게 전달한다. 박싱없이, 이들 리스너들은 그들 메소"
+"드들이 항상 귀결되었던 동일한 프로세싱을 구현한다. 하지만 당신이 리스너 인터"
+"페이스들 중 하나의 맞춤을 구현하는 것이 자유롭고(예를 들어 "
+"<literal>LoadEvent</literal>는 <literal>LoadEventListener</literal> 인터페이"
+"스의 등록된 구현에 의해 처리된다), 그 경우에 그들 구현은 <literal>Session</"
+"literal>에 대해 행해진 임의의 <literal>load()</literal> 요청들을 처리할 책임"
+"이 있을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"리스너들은 효율적이게끔 싱글톤(singleton)들로 간주되어야 할 것이다; 이것은 그"
+"것들이 요청들 사이에서 공유되고, 따라서 임의의 상태를 인스턴스 변수들로서 저"
+"장하지 말아야 함을 의미한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"맞춤형 리스너는 그것이 편의적인 기저 클래스들(또는 리스너들이 이 용도로 final"
+"이 아닌 것으로 선언되므로 Hibernate out-of-the-box에 의해 사용된 디폴트 이벤"
+"트 리스너들) 중 하나를 처리하고/하거나 확장하고자 원하는 이벤트들에 대해 적절"
+"한 인터페이스를 구현해야 한다. 맞춤형 리스너들은 <literal>Configuration</"
+"literal> 객체를 통해 프로그램 상으로 등록될 수 있거나, Hibernate 구성 XML 속"
+"에 지정될 수 있다 (properties 파일을 통한 선언적인 구성은 지원되지 않는다). "
+"다음은 맞춤형 load 이벤트 리스너에 대한 예제이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"당신은 또한 디폴트 리스너에 덧붙여 그 리스너를 사용하도록 Hibernate에게 알려"
+"주는 구성 엔트리를 필요로 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "대신에 당신은 그것을 프로그래밍 방식으로 등록할 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"선언적으로 등록된 리스너들은 인스턴스들을 공유할 수 없다. 만일 동일한 클래스 "
+"이름이 여러 개의 <literal>&lt;listener/&gt;</literal> 요소들에서 사용될 경"
+"우, 각각의 참조는 그 클래스에 대한 별도의 인스턴스로 귀결될 것이다. 만일 당신"
+"이 리스너 타입들 사이에서 리스너 인스턴스들을 공유할 가용성을 필요로 할 경우 "
+"당신은 프로그래밍 방식의 등록 접근법을 사용해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"구성 동안에 왜 인터페이스를 구현하고 특정 타입을 지정하는가? 물론 리스너 구현"
+"은 여러 개의 이벤트 리스너 인터페이스들을 구현할 수 있다. 등록 동안에 추가적"
+"으로 타입을 정의하는 것은 컨피그레이션 동안에 맞춤형 리스너들의 사용 여부를 "
+"전환시키는 것을 더 쉽게 해준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Hibernate 선언적인 보안"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"대개 Hibernate 어플리케이션들에서 선언적인 보안은 session facade 계층 내에서 "
+"관리된다. 이제, Hibernate3는 어떤 액션들이 JACC를 통해 퍼미션을 주어지고, "
+"JAAS를 통해 인가되는 것을 허용해준다. 이것은 모든 아키텍처의 상단에 빌드된 옵"
+"션 기능이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"먼저, 당신은 JAAS authorization 사용을 이용 가능하도록 하기 위해 적절한 이벤"
+"트 리스터들을 구성해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"<literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal>는 특정 이벤"
+"트 타입에 대해 정확히 한 개의 리스너가 존재할 때 단지 <literal>&lt;event "
+"type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/event&gt;</literal>의 단"
+"축형임을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"다음으로, 여전히 <literal>hibernate.cfg.xml</literal> 내에서 퍼미션들을 role"
+"들에 바인드 시킨다 :"
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr ""
+"역할(role) 이름들은 당신의 JACC 프로바이더에 의해 인지된 역할(role)들이다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,189 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "예제: 여러 가지 매핑들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr "이 장은 몇몇 보다 복잡한 연관 매핑들을 보여준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "Employer/Employee"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"<literal>Employer</literal>와 <literal>Employee</literal> 사이의 관계에 대한 "
+"다음 모형은 그 연관를 표현하는 데 실제 엔티티 클래스(<literal>Employment</"
+"literal>)를 사용한다. 동일한 두 부분들에 대해 하나 이상의 채용 주기가 존재할 "
+"수 있기 때문에 이것이 행해진다. 컴포넌트들이 화폐 값들과 종업원 이름들을 모형"
+"화 시키는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "다음은 가능한 매핑 문서이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"그리고 다음은 <literal>SchemaExport</literal>에 의해 생성된 테이블 스키마이"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "Author/Work"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"<literal>Work</literal>, <literal>Author</literal> 그리고 <literal>Person</"
+"literal> 사이의 관계들에 대한 다음 모형을 검토하자. 우리는 <literal>Work</"
+"literal>과 <literal>Author</literal> 사이의 관계를 many-to-many 연관으로 표현"
+"한다. 우리는 <literal>Author</literal>와 <literal>Person</literal> 사이의 관"
+"계를 one-to-one 연관으로 표현하고자 선택한다. 또 다른 가능성은 "
+"<literal>Author</literal>가 <literal>Person</literal>을 확장하도록 하는 것일 "
+"것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr "다음 매핑 문서는 이들 관계들을 정확하게 표현한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"이 매핑에는 네 개의 테이블들이 존재한다. <literal>works</literal>, "
+"<literal>authors</literal>와 <literal>persons</literal>은 각각 작업 데이터, "
+"저자 데이터, 개인 데이터를 보관한다. <literal>author_work</literal>는 저자들"
+"을 작업들에 연결시키는 연관 테이블이다. 다음은 <literal>SchemaExport</"
+"literal>에 의해 생성된 테이블 스키마이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "Customer/Order/Product"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"이제 <literal>Customer</literal>, <literal>Order</literal>와 "
+"<literal>LineItem</literal> 그리고 <literal>Product</literal> 사이의 관계들"
+"에 관한 모형을 검토하자. <literal>Customer</literal>와 <literal>Order</"
+"literal> 사이의 one-to-many 연관이 존재하지만, 우리는 어떻게 <literal>Order</"
+"literal> / <literal>LineItem</literal> / <literal>Product</literal>를 표현할 "
+"것인가? 나는 <literal>Order</literal>와 <literal>Product</literal> 사이의 "
+"many-to-many 연관를 나타내는 하나의 연관 클래스로서 <literal>LineItem</"
+"literal>을 매핑하기로 선택했다. Hibernate에서 이것은 composite 요소로 명명된"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "매핑 문서:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> 그리고 <literal>products</literal>는 각각 고객 "
+"데이터, 주문 데이터, 주문 라인 아이템 데이터, 그리고 제품 데이터를 보관한다. "
+"<literal>line_items</literal>는 또한 주문들을 제품들과 연결시키는 연관 테이블"
+"로서 동작한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "기타 예제 매핑들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"이들 예제들은 모두 Hiberante test suite로부터 취했다. 당신은 거기서 많은 다"
+"른 유용한 예제 매핑들을 발견할 것이다. Hibernate 배포본의 <literal>test</"
+"literal> 폴더를 살펴보라."
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "\"형식화된(Typed)\" one-to-one 연관"
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "Composite 키 예제"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr "공유된 합성 키 속성을 가진 Many-to-many"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "내용 기반 판별"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "대체 키들에 대한 연관들"
+
+#~ msgid "TODO: put words around this stuff"
+#~ msgstr "TODO: 이 내용을 둘러싼 말들을 집어넣을 것."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,407 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "예제: 부모/자식"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the first things that new users want to do with Hibernate is to model "
+"a parent/child type relationship. There are two different approaches to "
+"this. The most convenient approach, especially for new users, is to model "
+"both <literal>Parent</literal> and <literal>Child</literal> as entity "
+"classes with a <literal>&lt;one-to-many&gt;</literal> association from "
+"<literal>Parent</literal> to <literal>Child</literal>. The alternative "
+"approach is to declare the <literal>Child</literal> as a <literal>&lt;"
+"composite-element&gt;</literal>. The default semantics of a one-to-many "
+"association in Hibernate are much less close to the usual semantics of a "
+"parent/child relationship than those of a composite element mapping. We will "
+"explain how to use a <emphasis>bidirectional one-to-many association with "
+"cascades</emphasis> to model a parent/child relationship efficiently and "
+"elegantly."
+msgstr ""
+"새로운 사용자들이 Hibernate로 행하고자 시도하는 바로 첫 번째 것들 중 하나는 "
+"부모/자식 타입의 관계를 모형화 시키는 것이다. 이것에 대한 두 가지 다른 접근법"
+"들이 존재한다. 여러가지 이유들로 인해 특히 새로운 사용자들에게 가장 편한 접근"
+"법은 <literal>Parent</literal>로부터 <literal>Child</literal>로의 "
+"<literal>&lt;one-to-many&gt;</literal> 연관을 가진 엔티티 클래스들로서 "
+"<literal>Parent</literal>와 <literal>Child</literal> 양자를 모형화 시키는 것"
+"이다. (다른 접근법은 <literal>Child</literal>를 <literal>&lt;composite-"
+"element&gt;</literal>로 선언하는 것이다.) 이제, (Hibernate에서) one to many "
+"연관에 대한 디폴트 의미는 composite 요소 매핑의 의미보다 부모/자식 관계의 통"
+"상적인 의미에 훨씬 덜 가깝다는 것이 판명된다. 우리는 부모/자식 관계를 효율적"
+"이고 강력하게 모형화 시키기 위해 <emphasis>케스케이드들을 가진 양방향 one to "
+"many 연관</emphasis>을 사용하는 방법을 설명할 것이다. 그것은 전혀 어렵지 않"
+"다!"
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "콜렉션들에 관한 노트"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity and not of the contained entities. Be aware that this is a critical "
+"distinction that has the following consequences:"
+msgstr ""
+"Hibernate 콜렉션들은 그것들의 소유하고 있는 엔티티의 논리적 부분으로 간주된"
+"다; 결코 포함된 엔티티들의 부분이 아니다. 이것은 중대한 구분점이다! 그것은 다"
+"음은 다음 결과들을 갖는다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When you remove/add an object from/to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"콜렉션으로부터 객체를 제거하고/콜렉션에 객체를 추가 시킬 때, 콜렉션 소유자의 "
+"버전 번호가 증가된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (e.g. a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"만일 콜렉션으로부터 제거되었던 객체가 하나의 값 타입의 인스턴스(예를 들어 "
+"composite 요소)이면, 그 객체는 영속상태를 끝내고 그것의 상태가 데이터베이스로"
+"부터 완전히 제거될 것이다. 마찬가지로 하나의 값 타입의 인스턴스를 콜렉션에 추"
+"가시키는 것은 그것의 상태가 즉시 영속화 되도록 강제시킬 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Conversely, if an entity is removed from a collection (a one-to-many or many-"
+"to-many association), it will not be deleted by default. This behavior is "
+"completely consistent; a change to the internal state of another entity "
+"should not cause the associated entity to vanish. Likewise, adding an entity "
+"to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+"반면에, 만일 엔티티가 콜렉션으로부터 제거될 경우(one-to-many 또는 many-to-"
+"many 연관), 그것은 디폴트로 삭제되지 않을 것이다. 이 특징은 완전하게 일관적이"
+"다 - 다른 엔티티의 내부 상태에 대한 변경은 연관된 엔티티를 사라지도록 강제하"
+"지 않을 것이다! 마찬가지로 콜렉션에 엔티티를 추가시키는 것은 디폴트로 그 엔티"
+"티가 영속화 되도록 강제시키지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Adding an entity to a collection, by default, merely creates a link between "
+"the two entities. Removing the entity will remove the link. This is "
+"appropriate for all sorts of cases. However, it is not appropriate in the "
+"case of a parent/child relationship. In this case, the life of the child is "
+"bound to the life cycle of the parent."
+msgstr ""
+"대신에 콜렉션으로의 엔티티 추가가 두 엔티티들 사이에 단지 하나의 링크를 생성"
+"시키는 반면에, 그것을 제거하는 것은 링크를 제거한다는 점이 디폴트 특징이다. "
+"이것은 모든 종류의 경우들에 대해 매우 적절하다. 그것이 전혀 적절하지 않은 곳"
+"은 부모/자식 관계인 경우이고, 여기서 자식의 생애는 부모의 생명주기에 묶여져 "
+"있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "ì–‘ë°©í–¥ one-to-many"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"<literal>Parent</literal>로부터 <literal>Child</literal>로의 간단한 "
+"<literal>&lt;one-to-many&gt;</literal> 연관관계로 시작한다고 가정하자."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "우리가 다음 코드를 실행시켰다면"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "Hibernate는 두 개의 SQL 문장들을 실행할 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+"<literal>c</literal>에 대한 레코드를 생성시키는 <literal>INSERT</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"<literal>p</literal>로부터 <literal>c</literal>로의 링크를 생성시키는 "
+"<literal>UPDATE</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. You can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"이것은 비효율적일 뿐만 아니라, 또한 <literal>parent_id</literal> 컬럼 상의 임"
+"의의 <literal>NOT NULL</literal> 컨스트레인트에 위배된다. 우리는 콜렉션 매핑"
+"에서 <literal>not-null=\"true\"</literal>를 지정함으로써 null 허용 가능 컨스"
+"트레인트 위반을 정정할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "하지만 이것은 권장되는 해결책이 아니다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The underlying cause of this behavior is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. The "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"이 행위의 기본 원인은 <literal>p</literal>로부터 <literal>c</literal>로의 링"
+"크(foreign key <literal>parent_id</literal>)가 <literal>Child</literal> 객체"
+"의 상태의 부분으로 간주되지 않고 그러므로 <literal>INSERT</literal>로 생성되"
+"지 않는다는 점이다. 따라서 해결책은 <literal>Child</literal> 매핑의 링크 부분"
+"을 만드는 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class."
+msgstr ""
+"(우리는 또한 <literal>parent</literal> 프로퍼티를 <literal>Child</literal> 클"
+"래스에 추가시킬 필요가 있다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute to do this:"
+msgstr ""
+"이제 <literal>Child</literal> 엔티티가 링크의 상태를 관리한다는 점을 노트하"
+"고, 우리는 링크를 업데이트 시키지 말도록 콜렉션에게 통보한다. 우리는 "
+"<literal>inverse</literal> 속성을 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+"다음 코드는 새로운 <literal>Child</literal>를 추가시키는데 사용될 것이다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr ""
+"그리고 이제, 유일하게 한 개의 SQL <literal>INSERT</literal>가 실행될 것이다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You could also create an <literal>addChild()</literal> method of "
+"<literal>Parent</literal>."
+msgstr ""
+"약간 거칠게, 우리는 <literal>Parent</literal>의 <literal>addChild()</"
+"literal> 메소드를 생성시킬 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr "이제, <literal>Child</literal>를 추가하는 코드는 다음과 같다"
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr "케스케이딩 생명주기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can address the frustrations of the explicit call to <literal>save()</"
+"literal> by using cascades."
+msgstr ""
+"<literal>save()</literal>에 대한 명시적인 호출은 여전히 성가시다. 우리는 케스"
+"케이딩을 사용하여 이것을 얘기할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "다음은 위의 코드를 단순화 시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similarly, we do not need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"유사하게, 우리는 <literal>Parent</literal>를 저장하거나 삭제할 때 자식들에 대"
+"해 반복하는 것을 필요로 하지 않는다. 다음은 데이터베이스로부터 <literal>p</"
+"literal>와 모든 그것의 자식들을 제거시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "However, the following code:"
+msgstr "하지만, 다음 코드"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database. In this case, it "
+"will only remove the link to <literal>p</literal> and cause a <literal>NOT "
+"NULL</literal> constraint violation. You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"는 데이터베이스로부터 <literal>c</literal>를 제거하지 않을 것이다; 그것은 오"
+"직 <literal>p</literal>에 대한 링크만을 제거할 것이다(그리고 이 경우에 "
+"<literal>NOT NULL</literal> 컨스트레인트 위반을 일으킬 것이다 ). 당신은 명시"
+"적으로 <literal>Child</literal>를 <literal>delete()</literal> 시킬 필요가 있"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In our case, a <literal>Child</literal> cannot exist without its parent. So "
+"if we remove a <literal>Child</literal> from the collection, we do want it "
+"to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan"
+"\"</literal>."
+msgstr ""
+"이제 우리의 경우에 <literal>Child</literal>는 그것의 부모 없이는 진정으로 존"
+"재할 수 없다. 따라서 만일 우리가 콜렉션으로부터 하나의 <literal>Child</"
+"literal>를 제거할 경우, 우리는 그것이 정말로 삭제되기를 원한다. 이를 위해 우"
+"리는 <literal>cascade=\"all-delete-orphan\"</literal>을 사용해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though the collection mapping specifies <literal>inverse=\"true\"</"
+"literal>, cascades are still processed by iterating the collection elements. "
+"If you need an object be saved, deleted or updated by cascade, you must add "
+"it to the collection. It is not enough to simply call <literal>setParent()</"
+"literal>."
+msgstr ""
+"노트: 비록 콜렉션 매핑이 <literal>inverse=\"true\"</literal>를 지정할 지라"
+"도, 케스케이드들은 여전히 콜렉션 요소들을 반복함으로써 처리된다. 따라서 객체"
+"가 케스케이드에 의해 저장되고, 삭제되거나 업데이트 되는 것을 당신이 필요로 "
+"할 경우, 당신은 그것을 그 콜렉션에 추가해야 한다. 단순히 <literal>setParent()"
+"</literal>를 호출하는 것으로는 충분하지 않다."
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "케스케이드들과 <literal>unsaved-value</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wanted to persist these "
+"changes in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of children and, since "
+"the cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. We "
+"will also assume that both <literal>Parent</literal> and <literal>Child</"
+"literal> have generated identifier properties of type <literal>Long</"
+"literal>. Hibernate will use the identifier and version/timestamp property "
+"value to determine which of the children are new. (See <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer "
+"necessary to specify an <literal>unsaved-value</literal> explicitly.</"
+"emphasis>"
+msgstr ""
+"우리가 하나의 <literal>Session</literal> 속에 <literal>Parent</literal>를 로"
+"드시켰고 UI 액션에서 어떤 변경들을 행했고, <literal>update()</literal>를 호출"
+"하여 새로운 세션에서 이들 변경들을 영속화 시키는 것을 원한다고 가정하자. "
+"<literal>Parent</literal>는 자식들을 가진 콜렉션을 포함할 것이고, 케스케이딩 "
+"업데이트가 사용 가능하기 때문에, Hibernate는 어느 자식들이 새로이 초기화 되는"
+"지 그리고 어느 것이 데이터베이스에서 현재 행들을 표현하는지를 알 필요가 있"
+"다. <literal>Parent</literal>와 <literal>Child</literal> 모두 <literal>Long</"
+"literal> 타입의 식별자 프로퍼티들을 생성시켰다고 가정하자. Hibernate는 어느 "
+"자식들이 새로운 것인지를 결정하는데 식별자와 version/timestamp 프로퍼티 값을 "
+"사용할 것이다.(<xref linkend=\"objectstate-saveorupdate\"/>을 보라.) "
+"<emphasis>Hibernate3에서는<literal>unsaved-value</literal>를 더이상 명시적으"
+"로 지정할 필요가 없다.</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>:"
+msgstr ""
+"다음 코드는 <literal>parent</literal>와 <literal>child</literal>를 업데이트하"
+"고 <literal>newChild</literal>를 삽입시킬 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This may be suitable for the case of a generated identifier, but what about "
+"assigned identifiers and composite identifiers? This is more difficult, "
+"since Hibernate cannot use the identifier property to distinguish between a "
+"newly instantiated object, with an identifier assigned by the user, and an "
+"object loaded in a previous session. In this case, Hibernate will either use "
+"the timestamp or version property, or will actually query the second-level "
+"cache or, worst case, the database, to see if the row exists."
+msgstr ""
+"물론 그것은 생성되는 식별자의 경우에는 모두 매우 좋지만, 할당되는 식별자들과 "
+"composite 식별자들에 대해서는 어떠한가? 이것은 보다 어렵다. 왜냐하면 "
+"Hibernate는 (사용자에 의해 할당된 식별자를 가진) 새로이 초기화 된 객체와 이"
+"전 세션에서 로드되었던 객체 사이를 구별짓는데 식별자 프로퍼티를 사용할 수 없"
+"기 때문이다. 이 경우에, Hibernate는 timestamp 프로퍼티 또는 version 프로퍼티"
+"를 사용하거나 실제로 second-level 캐시를 질의하거나 가장 나쁜 경우에는 행이 "
+"존재하는지를 알기 위해 데이터베이스를 질의할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "ê²°ë¡ "
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The sections we have just covered can be a bit confusing. However, in "
+"practice, it all works out nicely. Most Hibernate applications use the "
+"parent/child pattern in many places."
+msgstr ""
+"여기에 숙지할 것이 약간 있고 그것은 처음에는 혼동스러운 것처럼 보일 수 있다. "
+"하지만 실제로 그것은 모두 매우 좋게 동작한다. 대부분의 Hibernate 어플리케이션"
+"들은 많은 장소들에서 부모/자식 패턴을 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
+"which have exactly the semantics of a parent/child relationship. "
+"Unfortunately, there are two big limitations with composite element classes: "
+"composite elements cannot own collections and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"우리는 첫 번째 단락에서 대안을 언급했다. 위의 쟁점들 중 어느 것도 정확하게 부"
+"모/자식 관계의 의미를 가진, <literal>&lt;composite-element&gt;</literal> 매핑"
+"들의 경우에는 존재하지 않는다. 불행히도, composite 요소 클래스들에 대한 두 개"
+"의 커다란 제약들이 존재한다: composite 요소들은 콜렉션들을 소유하지 않고, 그"
+"것들은 유일한 부모가 아닌 다른 어떤 엔티티의 자식일 수는 없다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,56 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "예제: Weblog 어플리케이션"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "영속 클래스들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"영속 클래스들은 웹로그, 그리고 웹 로그 내에 게시된 항목을 표현한다.그것들은 "
+"표준 부모/자식 관계로 모형화 될 것이지만, 우리는 set 대신에 순서지워진 bag를 "
+"사용할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Hibernate 매핑들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "XML 매핑들은 이제 매우 간단해질 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Hibernate 코드"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr ""
+"다음 클래스는 우리가 Hibernate를 사용하여 이들 클래스들로 행할 수 있는 몇몇 "
+"종류의 것들을 설명한다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,179 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "데이터 필터링하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3은 혁신적인 \"가시성(visibility)\" 규칙들로서 데이터를 처리하는 새"
+"로운 접근법을 제공한다. <emphasis>Hibernate 필터</emphasis>는 특정 Hibernate "
+"세션에 대해 이용 가능하게 되거나 이용 불가능하게 될 수도 있는 전역, 명명된 파"
+"라미터화 된 필터이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Hibernate 필터들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"Hibernate3은 필터 기준(criteria)을 미리 정의하고 클래스 레벨과 콜렉션 레벨 양"
+"자에서 그들 필터들을 첨부할 능력을 추가시킨다. 필터 기준(criteria)은 클래스 "
+"요소와 다양한 콜렉션 요소들에 대해 이용 가능한 기존의 \"where\" 속성과 매우 "
+"유사한 하나의 제한 절을 정의하는 능력이다. 이것들을 제외하면 필터 조건들은 파"
+"라미터화 될 수 있다. 그때 어플리케이션은 주어진 필터들이 이용 가능한지 여부 "
+"그리고 그들 파라미터 값들이 무엇이어야 하는지를 실행 시에 결정할 수 있다. 필"
+"터들은 데이터베이스 뷰들 처럼 사용될 수 있지만, 어플리케이션 내부에 파라미터"
+"화 된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"필터들을 사용하기 위해서, 그것들은 먼저 정의되고 나서 적절한 매핑 요소들에 첨"
+"가되어야 한다. 필터를 정의하기 위해, <literal>&lt;hibernate-mapping/&gt;</"
+"literal> 요소 내부에 <literal>&lt;filter-def/&gt;</literal> 요소를 사용하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "그때 이 필터는 클래스에 첨가될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or, to a collection:"
+msgstr "또는 콜렉션에 첨가될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "또는 동시에 양자에(또는 각각의 여러번) 첨가될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"<literal>Session</literal> 상의 메소드들은 다음과 같다: <literal>enableFilter"
+"(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, <literal>disableFilter(String filterName)</literal>. 디폴트로, 필터"
+"들은 주어진 세션에 대해 이용 가능하지 <emphasis>않다</emphasis>; 그것들은 "
+"<literal>Session.enableFilter()</literal> 메소드의 사용을 통해 명시적으로 이"
+"용 가능하게 되어야 한다. <literal>Session.enableFilter()</literal>는 "
+"<literal>Filter</literal> 인터페이스의 인스턴스를 반환한다. 위에 정의된 간단"
+"한 필터를 사용하면, 이것은 다음과 같을 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"org.hibernate.Filter 인터페이스 상의 메소드들은 Hibernate에 매우 공통된 "
+"method-chaining을 허용한다는 점을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr "유효한 기록 날짜 패턴을 가진 시간 데이터를 사용하는 전체 예제 :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"그때 당신이 현재 유효한 레코드들을 항상 얻는 것을 확실히 하기 위해, employee "
+"데이터를 검색하기 전에 세션 상에 필터를 간단하게 이용 가능하게 하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"위의 HQL 에서, 심지어 비록 우리가 결과들에 대한 봉급 컨스트레인트를 명시적으"
+"로 언급만 했을지라도, 이용 가능한 필터 때문에 그 질의는 봉급이 백만달러 이상"
+"인 현재 채용중인 직원들만을 반환할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"노트: 만일 당신이 outer 조인에 대해 필터들을 사용할 계획이라면 (HQL이든 로드 "
+"페칭이든) 조건 표현식의 방향을 주의하라. 이것을 left outer join으로 설정하는 "
+"것이 가장 안전하다; 일반적으로 오퍼레이터 뒤에 있는 컬럼 이름(들)이 뒤따르는 "
+"첫번째에 파라미터를 위치지워라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"필터가 정의된 후에는 그것 자신의 조건에 대해 각각 여러 개의 엔티티들 그리고/"
+"또는 콜렉션들에 첨가될 수 있다. 조건들이 매번 동일할 때 그것은 지루할 수 있"
+"다. 따라서 <literal>&lt;filter-def/&gt;</literal>은 attribute 든 CDATA 든 어"
+"느것이든 디폴트 조건을 정의하는 것을 허용해준다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"그때 이 디폴트 조건은 그 필터가 어떤 조건을 지정함이 없이 어떤 것에 첨가될때"
+"마다 사용될 수 있다. 이것은 당신이 특정한 경우에 디폴트 조건을 오버라이드 시"
+"키는 필터의 첨가 부분으로서 특정 조건을 부여할 수 있음을 의미함을 노트하라."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,542 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Inheritance mapping"
+msgstr "상속 매핑"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "The three strategies"
+msgstr "세 가지 방도들"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr "Hibernate는 세 가지 기본적인 상속 매핑 방도들을 지원한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "table per class hierarchy"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "table per subclass"
+msgstr "Table per subclass"
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "table per concrete class"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr "게다가 Hibernate는 네 번째의 약간 다른 종류의 다형성을 지원한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "implicit polymorphism(함축적인 다형성)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy. You can then make use of implicit "
+"polymorphism to achieve polymorphism across the whole hierarchy. However, "
+"Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, "
+"<literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-"
+"subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</"
+"literal> element. It is possible to mix together the table per hierarchy and "
+"table per subclass strategies under the the same <literal>&lt;class&gt;</"
+"literal> element, by combining the <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+"동일한 상속 계층구조의 다른 가지들에 대해 다른 매핑 방도들을 사용하는 것이 가"
+"능하고, 그런 다음 전체 계층 구조를 가로질러 다형성을 성취하는데 함축적인 다형"
+"성을 사용하라. 하지만 Hibernate는 동일한 루트 <literal>&lt;class&gt;</"
+"literal> 요소 하에서 <literal>&lt;subclass&gt;</literal> 그리고 <literal>&lt;"
+"joined-subclass&gt;</literal> 그리고 <literal>&lt;union-subclass&gt;</"
+"literal> 매핑들을 혼합하는 것을 지원하지 않는다. 동일한 <literal>&lt;"
+"class&gt;</literal> 요소 하에서 <literal>&lt;subclass&gt;</literal> 요소와 "
+"<literal>&lt;join&gt;</literal> 요소를 결합시킴으로써 table per hierarchy 방"
+"도와 table per subclass 방도를 함께 혼합시키는 것이 가능하다(아래를 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierarchy by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Previously this "
+"feature made the ordering of the mapping documents important. Since "
+"Hibernate3, the ordering of mapping files is irrelevant when using the "
+"extends keyword. The ordering inside a single mapping file still needs to be "
+"defined as superclasses before subclasses."
+msgstr ""
+"별도의 매핑 문서 내에, <literal>hibernate-mapping</literal> 바로 밑에 "
+"<literal>subclass</literal>, <literal>union-subclass</literal>, 그리고 "
+"<literal>joined-subclass</literal> 매핑들을 정의하는 것이 가능하다. 이것은 단"
+"지 하나의 새로운 매핑 파일을 추가시켜서 하나의 class 계층구조를 확장하는 것"
+"을 당신에게 허용해준다. 당신은 subclass 매핑 내에 앞서 매핑된 슈퍼클래스를 명"
+"명하여 <literal>extends</literal> 속성을 지정해야 한다. 노트 : 명백하게 이 특"
+"징은 매핑 문서들의 순서를 중요하게끔 만들었다. Hibernate3 이후로, 매핑 파일들"
+"의 순서는 extends 키워드를 사용할 때 상관없다. 하나의 매핑 파일 내의 순서는 "
+"여전히 서브클래스들에 앞서 슈퍼클래스들을 정의하는데 여전히 필요하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "Table per class hierarchy"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal> with the "
+"implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, and <literal>ChequePayment</literal>. The table per hierarchy "
+"mapping would display in the following way:"
+msgstr ""
+"우리가 <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, "
+"<literal>ChequePayment</literal> 구현자들을 가진 하나의 인터페이스 "
+"<literal>Payment</literal>를 갖고 있다고 가정하자. table per hierarchy 매핑"
+"은 다음과 같을 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Exactly one table is required. There is a limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"정확히 하나의 테이블이 필요하다. 이 매핑 방도에는 다음의 하나의 큰 제약이 존"
+"재한다: <literal>CCTYPE</literal>과 같이, 서브 클래스들에 의해 선언된 컬럼들"
+"은 <literal>NOT NULL</literal> 컨스트레인트들을 가질 수 없다."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "Table per subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr "table per subclass 매핑은 다음과 같을 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table so the relational model is actually a "
+"one-to-one association."
+msgstr ""
+"네 개의 테이블들이 필요하다. 세 개의 서브클래스 테이블들은 슈퍼클래스 테이블"
+"에 대한 프라이머리 키 연관들을 갖는다 (따라서 그 관계형 모형은 실제로 one-to-"
+"one 연관이다)."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "discriminator를 사용하는, table per subclass"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's implementation of table per subclass does not require a "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass that requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement, but arguably more correct from a relational point of "
+"view. If you want to use a discriminator column with the table per subclass "
+"strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+"table-per-subclass에 대한 Hibernate의 구현은 discriminator(판별자) 컬럼을 필"
+"요로 하지 않음을 노트하라. 다른 객체/관계형 매핑기들은 슈퍼클래스 테이블 속"
+"에 하나의 타입 판별자 컬럼을 필요로 하는 table-per-subclass에 대한 다른 구현"
+"을 사용한다. Hibernate에 의해 채택된 접근법은 구현하기가 훨씬 더 어렵지만 관"
+"계형 관점에서는 아마 틀림없이 보다 더 정확하다. 만일 당신이 table per "
+"subclass 방도에 대해 하나의 판별자 컬럼을 사용하고 싶다면, 당신은 다음과 같"
+"이 <literal>&lt;subclass&gt;</literal>와 <literal>&lt;join&gt;</literal>의 사"
+"용을 결합시킬 수도 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"선택적인 <literal>fetch=\"select\"</literal> 선언은 슈퍼클래스를 질의할 때 "
+"outer join을 사용하여 <literal>ChequePayment</literal> 서브클래스 데이터를 페"
+"치시키지 않도록 Hibernate에게 알려준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "table per class hierarchy와 table per subclass를 혼합하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even mix the table per hierarchy and table per subclass strategies "
+"using the following approach:"
+msgstr ""
+"당신은 이 접근법을 사용하여 table per hierarchy 방도와 table per subclass 방"
+"도를 혼합시킬 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;"
+"</literal>."
+msgstr ""
+"이들 매핑 방도들 중 어떤 것에 대해, 루트 <literal>Payment</literal> 클래스에 "
+"대한 하나의 다형성 연관은 <literal>&lt;many-to-one&gt;</literal>을 사용하여 "
+"매핑된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "Table per concrete class"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are two ways we can map the table per concrete class strategy. First, "
+"you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+"우리가 table per concrete class 방도 매핑에 대해 취할 수 있는 두 가지 방법들"
+"이 존재한다. 첫 번째는 <literal>&lt;union-subclass&gt;</literal>를 사용하는 "
+"것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"세 개의 테이블들이 슈퍼클래스들에 대해 수반된다. 각각의 테이블은 상속된 프로"
+"퍼티들을 포함하여, 그 클래스의 모든 프로퍼티들에 대한 컬럼들을 정의한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. The "
+"identity generator strategy is not allowed in union subclass inheritance. "
+"The primary key seed has to be shared across all unioned subclasses of a "
+"hierarchy."
+msgstr ""
+"이 접근법의 제약은 만일 하나의 프로퍼티가 슈퍼클래스 상으로 매핑될 경우, 그 "
+"컬럼 이름이 모든 서브클래스 테이블들 상에서 같아야 한다는 점이다.(장래의 "
+"Hibernate 배포본에서 우리는 이 제약을 풀 수도 있다.) identity 생성기 방도는 "
+"union 서브클래스 상속에서 허용되지 않으며, 진정 프라이머리 키 시드는 하나의 "
+"계층구조의 모든 unioned 서브클래스들을 가로질러 공유되어야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. If it is not abstract, an additional table (it defaults to "
+"<literal>PAYMENT</literal> in the example above), is needed to hold "
+"instances of the superclass."
+msgstr ""
+"만일 당신의 슈퍼클래스가 abstract일 경우에, 그것을 <literal>abstract=\"true"
+"\"</literal>로 매핑하라. 물론 만일 그것이 abstract가 아닐 경우, 추가적인 테이"
+"블(위의 예제에서는 디폴트로 <literal>PAYMENT</literal>)이 슈퍼클래스의 인스턴"
+"스들을 소유하는데 필요하다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr "함축적인 다형성을 사용하는, table per concrete class"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "대안적인 접근법은 함축적인 다형성을 사용하는 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Notice that the <literal>Payment</literal> interface is not mentioned "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> "
+"declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+"어느 곳에서도 우리가 명시적으로 <literal>Payment</literal> 인터페이스를 언급"
+"하지 않음을 주목하라. 또한 <literal>Payment</literal>의 프로퍼티들이 서브클래"
+"스들 각각에서 매핑된다는 점을 주목하라. 만일 당신이 중복을 피하고자 원한다"
+"면, XML 엔티티들을 사용하는 것을 고려하라(예를 들어 매핑에서 "
+"<literal>DOCTYPE</literal> 선언과 <literal>&amp;allproperties&semi;</literal>에서 "
+"<literal>[ &lt;!ENTITY allproperties SYSTEM \"allproperties.xml\"&gt; ]</"
+"literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"이 접근법의 단점은 다형성 질의들을 수행할 때 Hibernate가 생성된 SQl "
+"<literal>UNION</literal>들을 생성시키는 않는다는 점이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+"이 매핑 방도의 경우, <literal>Payment</literal>에 대한 하나의 다형성 연관은 "
+"대개 <literal>&lt;any&gt;</literal>를 사용하여 매핑된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "함축적인 다형성을 다른 상속 매핑들과 혼합하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Since the subclasses are each mapped in their own <literal>&lt;class&gt;</"
+"literal> element, and since <literal>Payment</literal> is just an "
+"interface), each of the subclasses could easily be part of another "
+"inheritance hierarchy. You can still use polymorphic queries against the "
+"<literal>Payment</literal> interface."
+msgstr ""
+"이 매핑에 대해 주목할 하나 이상의 것이 존재한다. 서브클래스들이 그것들 자신의"
+"<literal>&lt;class&gt;</literal> 요소 내에 각각 매핑되므로(그리고 "
+"<literal>Payment</literal>가 단지 인터페이스이므로), 서브클래스들 각각은 쉽"
+"게 또 다른 상속 계층구조의 부분일 수 있다! (그리고 당신은 <literal>Payment</"
+"literal> 인터페이스에 대해 여전히 다형성 질의들을 사용할 수 있다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once again, <literal>Payment</literal> is not mentioned explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface, for "
+"example <literal>from Payment</literal>, Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal>, but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"다시 한번, 우리는 <literal>Payment</literal>를 명시적으로 언급하지 않는다. 만"
+"일 우리가 <literal>Payment</literal> 인터페이스에 대해 하나의 질의를 실행할 "
+"경우-예를 들어, from Payment-, Hibernate는 <literal>CreditCardPayment</"
+"literal> (와 그것의 서브클래스들, 왜냐하면 그것들 또한 <literal>Payment</"
+"literal>를 구현하므로), <literal>CashPayment</literal> 그리고 "
+"<literal>ChequePayment</literal> 인스턴스들을 자동적으로 반환할 것이지만 "
+"<literal>NonelectronicTransaction</literal>의 인스턴스들을 반환하지 않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "제약들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are limitations to the \"implicit polymorphism\" approach to the table "
+"per concrete-class mapping strategy. There are somewhat less restrictive "
+"limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+"table per concrete-class 매핑 방도에 대한 \"함축적인 다형성\" 접근법에는 어"
+"떤 제약들이 존재한다. <literal>&lt;union-subclass&gt;</literal> 매핑들에 대해"
+"서는 다소 덜 제한적인 제약들이 존재한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"다음 표는 Hibernate에서 table per concrete-class 매핑들에 대한 제약들, 그리"
+"고 함축적인 다형성에 대한 제약들을 보여준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "상속 매핑들의 특징들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "상속 방도"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "다형성 다대일"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "다형성 일대일"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "다형성 일대다"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "다형성 다대다"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "다형성 질의들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "다형성 조인들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Outer join fetching"
+msgstr "Outer 조인 페칭"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per class-hierarchy"
+msgstr "table per class-hierarchy"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "&lt;many-to-one&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "&lt;one-to-one&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "&lt;one-to-many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "&lt;many-to-many&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "s.get(Payment.class, id)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr "from Order o join o.payment p"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "table per concrete-class (union-subclass)"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "table per concrete class (implicit polymorphism)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "&lt;many-to-any&gt;"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+msgstr ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+
+#, fuzzy
+#~ msgid "<para>table per subclass</para>"
+#~ msgstr "table per subclass"
+
+#~ msgid "from Payment p"
+#~ msgstr "from Payment p"
+
+#~ msgid "supported"
+#~ msgstr "지원됨"
+
+#, fuzzy
+#~ msgid "<entry>table per subclass</entry>"
+#~ msgstr "table per subclass"
+
+#~ msgid "&lt;any&gt;"
+#~ msgstr "&lt;any&gt;"
+
+#~ msgid "not supported"
+#~ msgstr "지원되지 않음"
+
+#~ msgid "load()/get()"
+#~ msgstr "load()/get()"
+
+#~ msgid "Polymorphic <placeholder-1/>"
+#~ msgstr "다형성 <placeholder-1/>"
+
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "<placeholder-1/> (for <placeholder-2/> only)"
+#~ msgstr "<placeholder-1/> (for <placeholder-2/> only)"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2232 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "퍼포먼스 개선하기"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "페칭 방도들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"<emphasis>페칭 방도</emphasis>는 어플리케이션이 연관을 네비게이트할 필요가 있"
+"을 때 Hibernate가 연관된 객체들을 검색하는데 사용하게 될 방도이다.페치 방도들"
+"은 O/R 매핑 메타데이터 내에서 선언될 수 있거나 하나의 특정 HQL 또는 "
+"<literal>Criteria</literal> 질의에 의해 오버라이드 될 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3는 다음 페칭 방도들을 정의한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>Join 페칭</emphasis> - Hibernate는 <literal>OUTER JOIN</literal>을 "
+"사용하여 연관된 인스턴스 또는 동일한 <literal>SELECT</literal> 내에서 콜렉션"
+"을 검색한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>Select 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 연과"
+"된 엔티티 또는 콜렉션을 검색하는데 사용된다. 당신이 <literal>lazy=\"false\"</"
+"literal>를 지정함으로써 명시적으로 lazy 페칭을 사용 불가능하게 하지 않는 한, "
+"이 두 번째 select는 당신이 그 연관에 실제로 액세스할 때 오직 실행될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>Subselect 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 이"
+"전 질의 또는 페치에서 검색된 모든 엔티티들에 대해 연관된 콜렉션들을 검색하는"
+"데 사용된다. 당신이 <literal>lazy=\"false\"</literal>를 지정하여 명시적으로 "
+"lazy 페칭을 사용 불가능하게 하지 않는 한, 이 두 번째 select는 당신이 실제로 "
+"그 연관에 접근할 때 오직 실행될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>Batch 페칭</emphasis> - select 페칭을 위한 최적화 방도 - Hibernate"
+"는 프라이머리 키들이나 foreign 키들의 리스트를 지정함으로써 하나의"
+"<literal>SELECT</literal> 내에서 엔티티 인스턴스들이나 콜렉션들에 대한 batch"
+"를 검색한다."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "Hibernate는 또한 다음 사이를 구별 짓는다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>즉각적인 페칭</emphasis> - 소유자가 로드될 때, 연관, 콜렉션 또는 속"
+"성이 즉시 페치된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>Lazy 콜렉션 페칭</emphasis> - 어플리케이션이 그 콜렉션에 대해 하나"
+"의 오퍼레이션을 호출할 때 콜렉션이 페치된다.(이것은 콜렉션들에 대해 디폴트이"
+"다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>\"Extra-lazy\" 콜렉션 페칭</emphasis> - 콜렉션의 개별 요소들은 필요"
+"할 때 데이터베이스로부터 접근된다. Hibernate는 절대적으로 필요하지 않은 한 전"
+"체 콜렉션을 메모리 내로 페치하려고 시도하지 않는다(매우 큰 콜렉션에 적합함)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>프락시 페칭</emphasis> - 식별자 getter가 아닌 다른 메소드가 연관된 "
+"객체에 대해 호출될 때 단일 값 연관이 페치된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>\"No-proxy\" 페칭</emphasis> - 인스턴스 변수가 접근될 때 단일 값 연"
+"관이 페치된다. 프락시 페칭과 비교할 때, 이 접근법은 다소 덜 lazy하지만(그 연"
+"관은 심지어 유일하게 식별자가 접근될 때에도 페치된다)보다 투명하다. 왜냐하면 "
+"프락시는 어플리케이션에 가시적이지 않기 때문이다. 이 접근법은 빌드 시 바이트"
+"코드 수단을 필요로 하며 드물게 필요하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Lazy 속성 페칭</emphasis> - 인스턴스 변수가 접근될 때 속성 또는 단"
+"일 값 연관이 페치된다 이 접근법은 빌드시 바이트코드 수단을 필요로 하며 드물"
+"게 필요하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"우리는 여기서 두 개의 직교하는 개념들을 갖는다: 연관이 페치될 <emphasis>때</"
+"emphasis>, 그리고 그것이 페치되는 <emphasis>방법</emphasis>(사용되는 SQL). 그"
+"것들을 혼동하지 말라! 우리는 퍼포먼스를 튜팅하는데 <literal>페치</literal>를 "
+"사용한다. 우리는 특정 클래스의 어떤 detached 인스턴스 내에서 항상 이용 가능"
+"한 데이터가 무엇인지에 대한 계약을 정의하는데 <literal>lazy</literal>를 사용"
+"할 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "lazy 연관들로 작업하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"디폴트로 Hibernate3는 콜렉션들에 대해 lazy select 페칭을 사용하고, 단일 값 연"
+"관들에 대해 lazy 프락시 페칭을 사용한다. 이들 디폴트들은 거의 모든 어플리케이"
+"션들에서 거의 모든 연관들에 대해 유의미하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"<emphasis>노트:</emphasis> 만일 당신이 <literal>hibernate."
+"default_batch_fetch_size</literal>를 설정하는 경우, Hibernate는 lazy 페칭을 "
+"위한 batch 페치 최적화를 사용할 것이다(이 최적화는 또한 더 많은 과립상의 레벨"
+"에서 이용 가능할 수 있다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"하지만, lazy 페칭은 당신이 알고 있어야 하는 한 가지 문제를 제기한다. 열려진 "
+"Hibernate 세션 컨텍스트 외부에서 lazy 연관에 대한 접근은 예외상황으로 귀결될 "
+"것이다. 예를 들면 :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"<literal>Session</literal>이 닫혔을 때 permissions 콜렉션이 초기화 되지 않았"
+"으므로, 그 콜렉션은 그것의 상태를 로드시킬 수가 없을 것이다. "
+"<emphasis>Hibernate 는 detached 객체들에 대한 lazy 초기화를 지원하지 않는다."
+"</emphasis> 정정은 콜렉션으로부터 읽어들이는 코드를 커밋 바로 직전으로 이동시"
+"키는 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"다른 방법으로 연관 매핑에 대해 <literal>lazy=\"false\"</literal>를 지정함으로"
+"써, non-lazy 콜렉션 또는 non-lazy 연관을 사용할 수 있다. 하지만 lazy 초기화"
+"는 거의 모든 콜렉션들과 연관들에 대해 사용되도록 고안되어 있다. 만일 당신이 "
+"당신의 객체 모형 내에 너무 많은 non-lazy 연관들을 정의할 경우, Hibernate는 모"
+"든 트랜잭션에서 전체 데이터베이스를 메모리 속으로 페치하는 필요성을 끝내게 "
+"될 것이다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"다른 한편으로, 우리는 특정 트랜잭션 내에서 select 페칭 대신에 (고유하게 non-"
+"lazy인) join 페칭을 선택하기를 자주 원한다. 우리는 이제 페칭 방도를 맞춤화 시"
+"키는 방법을 알게 될 것이다. Hibernate3에서, 페치 방도를 선택하는 메커니즘은 "
+"단일 값 연관들과 콜렉션들에 대해 동일하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "페치 방도들을 튜닝하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"select 페칭(디폴트)은 N+1 selects 문제점들에 매우 취약해서, 우리는 매핑 문서"
+"에서 join 페칭을 사용 가능하게 하기를 원할 수도 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"매핑 문서 내에 정의된 <literal>fetch</literal> 방도는 다음에 영향을 준다:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr "<literal>get()</literal> 또는 <literal>load()</literal>를 통한 검색"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr "연관이 네비게이트될 때 함축적으로 발생하는 검색"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "<literal>Criteria</literal> 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "<literal>subselect</literal> 페칭이 사용될 경우에 HQL 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"당신이 사용하는 페칭 방도가 무엇인가에 상관없이, 정의된 비-lazy 그래프가 메모"
+"리 내로 로드되는 것이 보장된다. 이것은 하나의 특별한 HQL 질의를 실행시키는데 "
+"사용되는 몇몇 즉시적인 select들로 귀결될 수 있음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"대개, 우리는 페칭을 맞춤화 시키는데 매핑 문서를 사용하지 않는다. 대신에, 우리"
+"는 디폴트 특징을 유지하고, HQL에서 <literal>left join fetch</literal>를 사용"
+"하여, 특정 트랜잭션에 대해 그것을 오버라이드 시킨다. 이것은 outer join을 사용"
+"하여 첫 번째 select에서 초기에 그 연관을 eagerly 페치시킬 것을 Hibernate에게 "
+"알려준다. <literal>Criteria</literal> query API에서, 우리는 "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>을 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"만일 당신이 <literal>get()</literal> 또는 <literal>load()</literal>에 의해 사"
+"용된 페칭 방도를 변경시킬 수 있기를 당신이 원한다고 느낄 경우, 단순하게 "
+"<literal>Criteria</literal> 질의를 사용하라. 예를 들면:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"(이것은 몇몇 ORM 솔루션들이 \"페치 계획\"이라고 부르는 것에 대한 Hibernate의 "
+"등가물이다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"N+1 개의 select들을 가진 문제점들을 피하는 완전히 다른 방법은 second-level 캐"
+"시를 사용하는 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "Single-ended 연관 프락시"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"콜렉션들에 대한 Lazy 페칭은 영속 콜렉션들에 대한 Hibernate 자신의 구현을 사용"
+"하여 구현된다. 하지만 다른 메커니즘은 single-ended 연관들에서 lazy 특징에 필"
+"요하다. 연관의 대상 엔티티는 프락시 되어야 한다. Hibernate는 (훌륭한 CGLIB 라"
+"이브러리를 통해) 런타임 바이트코드 증진을 사용하여 영속 객체들에 대한 lazy 초"
+"기화 프락시들을 구현한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"디폴트로, Hibernate3는 모든 영속 클래스들에 대해 (시작 시에) 프락시들을 생성"
+"시키고 <literal>many-to-one</literal> 연관과 <literal>one-to-one</literal> 연"
+"관에 대해 lazy 페칭을 이용 가능하게 하는데 그것들을 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"매핑 파일은 그 클래스에 대한 프락시 인터페이스로서 사용할, <literal>proxy</"
+"literal> 속성을 가진, 인터페이스를 선언할 수도 있다. 디폴트로 Hibernate는 그 "
+"클래스의 서브클래스를 사용한다. <emphasis>프락시된 클래스는 최소한의 패키지 "
+"가시성 (visibility)을 가진 디폴트 생성자를 구현해야 함을 노트하라. 우리는 모"
+"든 영속 클래스들에 대해 이 생성자를 권장한다!</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr ""
+"다형성 클래스들에 대해 이 접근법을 확장할 때 의식해야 하는 몇몇 난처함들이 존"
+"재한다. 예를 들면."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"첫 번째로, 심지어 기본 인스턴스가 <literal>DomesticCat</literal>의 인스턴스"
+"인 경우조차도, <literal>Cat</literal>의 인스턴스들은 결코 "
+"<literal>DomesticCat</literal>으로 타입캐스트가 가능하지 않을 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "두번째로, 프락시 <literal>==</literal>를 파기할 가능성이 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"하지만, 그 경우는 보이는 만큼 그렇게 나쁘지는 않다. 심지어 우리가 이제 다른 "
+"프락시 객체들에 대한 두 개의 참조를 가질지라도, 기본 인스턴스는 여전히 동일"
+"한 객체들일 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"세번째로, 당신은 <literal>final</literal> 클래스 또는 임의의 <literal>final</"
+"literal> 메소드들을 가진 클래스에 대해 CGLIB 프락시를 사용하지 않을 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"마지막으로, 만일 당신의 영속 객체가 초기화 시에 어떤 리소스들을 필요로 할 경"
+"우(예를 들어, initializer들 또는 디폴트 생성자 내에서), 그때 그들 리소스들이 "
+"또한 프락시에 의해 획득될 것이다. 프락시 클래스는 영속 클래스에 대한 실제 서"
+"브클래스이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"이들 문제점들은 모두 자바의 단일 상속 모형의 기본적인 제약 때문이다. 만일 당"
+"신이 이들 문제점들을 피하고자 원할 경우 당신의 영속 클래스들은 각각 그것의 비"
+"지니스 메소드들을 선언하는 인터페이스를 구현해야 한다. 당신은 매핑 파일 속에 "
+"이들 인터페이스들을 지정해야 한다. 예를 들면."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"첫 번째로, 심지어 기본 인스턴스가 <literal>DomesticCat</literal>의 인스턴스"
+"인 경우조차도, <literal>Cat</literal>의 인스턴스들은 결코 "
+"<literal>DomesticCat</literal>으로 타입캐스트가 가능하지 않을 것이다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>Criteria</literal> 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"관계들은 또한 lazy 초기화 된다. 이것은 당신이 임의의 프로퍼티들을 "
+"<literal>CatImpl</literal> 타입이 아닌 <literal>Cat</literal> 타입으로 선언해"
+"야 함을 의미한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+"어떤 오퍼레이션들은 프락시 초기화를 필요로 하지 <emphasis>않는다</emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>, 만일 영속 클래스가 <literal>equals()</literal>"
+"를 오버라이드 시키지 않는 경우"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>, 만일 영속 클래스가<literal>hashCode()</"
+"literal>를 오버라이드 시키지 않는 경우"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "식별자 getter 메소드"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate는 <literal>equals()</literal> 또는 <literal>hashCode()</literal>를 "
+"오버라이드 시키는 영속 클래스들을 검출할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"디폴트 <literal>lazy=\"proxy\"</literal> 대신에 <literal>lazy=\"no-proxy\"</"
+"literal>를 선택하여, 우리는 타입캐스팅과 연관된 문제점들을 피할 수 있다. 하지"
+"만 우리는 빌드 시 바이트코드 수단을 필요로 할 것이고, 모든 연산들은 즉각적인 "
+"프락시 초기화로 귀결될 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "콜렉션들과 프락시들을 초기화 시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"만일 초기화 되지 않은 콜렉션이나 프락시가 <literal>Session</literal> 영역의 "
+"외부에서 접근될 경우에, 예를 들어 콜렉션을 소유하거나 프락시에 대한 참조를 가"
+"진 엔티티가 detached 상태에 있을 때, <literal>LazyInitializationException</"
+"literal>이 Hibernate에 의해 던져질 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"때때로 우리는<literal>Session</literal>을 닫기 전에 프락시 또는 콜렉션이 초기"
+"화 됨을 확실히 할 필요가 있다. 물론 우리는 예를 들어 <literal>cat.getSex()</"
+"literal> 또는 <literal>cat.getKittens().size()</literal>를 호출하여 항상 초기"
+"화를 강제시킬 수 있다. 그러나 그것은 코드의 독자들에게는 혼동스럽고 일반적인 "
+"코드로 편의적이지 않다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"static 메소드들 <literal>Hibernate.initialize()</literal>와 "
+"<literal>Hibernate.isInitialized()</literal>는 lazy 초기화 된 콜렉션들이나 프"
+"락시들에 대해 작업하는 편리한 방법을 어플리케이션에 제공한다. "
+"<literal>Hibernate.initialize(cat)</literal>은 그것의 <literal>Session</"
+"literal>이 여전히 열려져 있는 한 프락시 <literal>cat</literal>의 초기화를 강"
+"제할 것이다. <literal>Hibernate.initialize( cat.getKittens())</literal>는 "
+"kittens의 콜렉션에 대해 유사한 효과를 갖는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"또 다른 옵션은 모든 필요한 콜렉션들과 프락시들이 로드되기 전까지 "
+"<literal>Session</literal>을 열린 채로 유지하는 것이다. 몇몇 어플리케이션 아"
+"키텍처들, 특히 Hibernate를 사용하여 데이터에 접근하는 코드, 그리고 다른 어플"
+"리케이션 계층들이나 다른 물리적 프로세스들 내에서 그것을 사용하는 코드에서, "
+"그것은 콜렉션이 초기화 될 때 <literal>Session</literal>이 열려져 있음을 확실"
+"히 하는 문제일 수 있다. 이 쟁점을 다루는 두 가지 기본 방법들이 존재한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"웹 기반 어플리케이션에서, 서블릿 필터는 뷰 렌더링이 완료되는, 사용자 요청의 "
+"바로 끝에서만 <literal>Session</literal>을 닫는데 사용될 수 있다"
+"(<emphasis>Open Session in View</emphasis> 패턴). 물론 이것은 당신의 어플리케"
+"이션 인프라스트럭처의 예외상황 처리의 정정에 관한 무거운 요구를 부과한다. 뷰 "
+"렌더링 동안에 하나의 예외상황이 발생할때에도 사용자에게 반환되기 전에 "
+"<literal>Session</literal>이 닫혀지고 트랜잭션이 종료되는 것은 지극히 중요하"
+"다. 이 \"Open Session in View\" 패턴에 관한 예제들은 Hibernate 위키를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"별도의 비지니스 티어를 가진 어플리케이션에서, 비지니스 로직은 반환 전에 웹 티"
+"어에 필요한 모든 콜렉션들을 \"준비\"해야 한다. 이것은 비지니스 티어가 모든 데"
+"이터를 로드시키고 이미 초기화된 모든 데이터를 특정 쓰임새에 필요한 프리젠테이"
+"션/웹 티어로 반환해야 함을 의미한다. 대개 어플리케이션은 웹 티어에 필요하게 "
+"될 각각의 콜렉션에 대해 <literal>Hibernate.initialize()</literal>를 호출하거"
+"나(이 호출은 세션이 닫히기 전에 발생해야 한다) 또는 <literal>FETCH</literal> "
+"절을 갖거나 또는 <literal>Criteria</literal> 내에 <literal>FetchMode.JOIN</"
+"literal>을 가진 Hibernate 질의를 사용하여 콜렉션을 열심히 검색한다. 이것은 대"
+"개 당신이 <emphasis>Session Facade</emphasis> 대신 <emphasis>Command</"
+"emphasis> 패턴을 채택할 경우에 더 쉽다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"당신은 또한 초기화 되지 않은 콜렉션들(또는 다른 프락시들)에 접근하기 전에 "
+"<literal>merge()</literal> 또는 <literal>lock()</literal>으로 앞서 로드된 객"
+"체를 새로운 <literal>Session</literal>n에 첨부할 수도 있다. 아니다. Hibernate"
+"는 이것을 자동적으로 행하지 않고, 확실히 자동적으로 행하지 <emphasis>않을 것"
+"이다</emphasis>. 왜냐하면 그것은 특별한 목적을 위한 트랜잭션 의미를 도입할 것"
+"이기 때문이다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"때때로 당신은 거대한 콜렉션을 초기화 시키는 것을 원하지 않지만, 여전히 (그것"
+"의 사이즈와 같은) 그것에 대한 어떤 정보 또는 데이터의 부분집합을 필요로 한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"당신은 그것을 초기화 시키지 않고서 콜렉션의 사이즈를 얻는데 콜렉션 필터를 사"
+"용할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"<literal>createFilter()</literal> 메소드는 또한 전체 콜렉션을 초기화 시킬 필"
+"요 없이 콜렉션의 부분집합들을 효율적으로 검색하는데 사용된다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "batch 페칭 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"Hibernate는 배치 페칭을 효율적으로 사용할 수 있다. 즉 하나의 프락시가 액세스 "
+"될 경우에 Hibernate는 몇몇 초기화 되지 않은 프락시들을 로드시킬 수 있다(또는 "
+"콜렉션들). batch 페칭은 lazy select 페칭 방도에 대한 최적화이다. 당신이 "
+"batch 페칭을 튜닝시킬 수 있는 두 가지 방법들이 존재한다: 클래스 레벨에서 그리"
+"고 콜렉션 레벨에서."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"클래스들/엔티티들에 대한 batch 페칭은 이해하기가 더 쉽다. 당신이 실행 시에 다"
+"음 상황에 처한다고 상상하라: 당신은 하나의 <literal>Session</literal> 속에 로"
+"드된 25개의 <literal>Cat</literal> 인스턴스들을 갖고 있고, 각각의 "
+"<literal>Cat</literal>은 그것의 <literal>소유자</literal> 즉, "
+"<literal>Person</literal>에 대한 참조를 갖고 있다. <literal>Person</literal> "
+"클래스는 프락시 <literal>lazy=\"true\"</literal>로서 매핑된다. 만일 당신이 이"
+"제 모든 cat들을 통해 반복하고 각각의 cat에 대해 <literal>getOwner()</literal>"
+"를 호출할 경우, Hibernate는 프락시된 소유자들을 검색하기 위해 25개의 "
+"<literal>SELECT</literal> 문장들을 디폴트로 실행시킬 것이다. 당신은 "
+"<literal>Person</literal> 매핑에서 <literal>batch-size</literal>를 지정함으로"
+"써 이 동작을 튜닝시킬 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+"Hibernate는 이제 세 개의 질의들 만을 실행시킬 것이고, 그 패턴은 10,10, 5 이"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"당신은 또한 콜렉션들에 대해 batch 페칭을 이용 가능하게 할 수도 있다. 예를 들"
+"어, 만일 각각의 <literal>Person</literal>이 <literal>Cat</literal>들을 가진 "
+"lazy 콜렉션을 갖고, 10개의 person들이 <literal>Sesssion</literal> 내에 현재 "
+"로드되어 있을 경우, 모든 person들에 대한 반복은 10개의 <literal>SELECT</"
+"literal>들을 생성시킬 것이고, <literal>getCats()</literal>에 대한 매번의 호출"
+"에 대해 하나의 <literal>SELECT</literal>를 생성시킬 것이다. 만일 당신이 "
+"<literal>Person</literal> 매핑에서 <literal>cats</literal> 콜렉션에 대해 "
+"batch 페칭을 사용가능하게 할 경우, Hibernate는 콜렉션들을 미리-페치 시킬 수 "
+"있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"<literal>batch-size</literal> 8로서, Hibernate는 4개의 SELECT들에서 3, 3, 3, "
+"1 개의 콜렉션들을 로드시킬 것이다. 다시 그 속성의 값은 특정 "
+"<literal>Session</literal> 내에서 초기화 되지 않은 콜렉션들의 예상되는 개수"
+"에 의존한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"만일 당신이 항목들의 포개진 트리를 가질 경우, 예를 들어 전형적인 bill-of-"
+"materials 패턴인 경우, (비록 <emphasis>내포된 set</emphasis> 또는 <emphasis>"
+"실체화된 경로(materialized path)</emphasis>가 주로-읽기-트리들에 대해 더 좋"
+"은 옵션일 수 있을지라도) 콜렉션들에 대한 batch 페칭이 특히 유용하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "subselect 페칭 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"만일 한 개의 lazy 콜렉션이나 단일 값 프락시가 페치되어야 한다면, Hibernate는 "
+"하나의 subselect 내에서 원래의 질의를 다시 실행하여 그것들 모두를 로드시킨"
+"다. 이것은 조각난 로딩 없이 batch 페칭과 동일한 방식으로 동작한다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Fetch profiles"
+msgstr "페칭 방도들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "lazy 프로퍼티 페칭 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"Hibernate3은 개별적인 프로퍼티들에 대한 lazy 페칭을 지원한다. 이 최적화 기술"
+"은 또한 <emphasis>fetch groups</emphasis> 으로 알려져 있다. 이것이 대개 마케"
+"팅 특징임을 노트하길 바란다. 왜냐하면 실제로 행 읽기를 최적화 시키는 것이 컬"
+"럼 읽기에 대한 최적화 보다 훨씬 더 중요하기 때문이다. 하지만 리거시 테이블들"
+"이 수백 개의 컬럼들을 갖고 데이터 모형이 개선될 수 없을 때, 오직 클래스의 몇"
+"몇 프로퍼티들을 로드시키는 것 만이 유용할 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"lazy 프로퍼티 로딩을 이용가능하게 하려면, 당신의 특정 property 매핑들에 대해 "
+"<literal>lazy</literal> 속성을 설정하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"Lazy property 로딩은 빌드 시 바이트코드 수단을 필요로 한다! 만일 당신의 영속 "
+"클래스들이 개선되지 않을 경우, Hibernate는 조용하게 lazy 프로퍼티 설정들을 무"
+"시하고 즉각적인 페칭으로 후퇴할 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr "bytecode 수단으로, 다음 Ant 태스크를 사용하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"불필요한 컬럼 읽기를 피하는 다른 (더 좋은?) 방법은 적어도 읽기 전용 트랜잭션"
+"의 경우에 HQL 질의 또는 Criteria 질의의 투사(projection) 특징들을 사용하는 것"
+"이다. 이것은 빌드 시 바이트코드 처리에 대한 필요성을 피하게 해주고 확실히 선"
+"호되는 해결책이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"당신은 HQL에서 <literal>fetch all properties</literal>를 사용하여 프로퍼티들"
+"에 대한 통상의 eager 페칭을 강제시킬 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "두번째 레벨 캐시"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Hibernate <literal>Session</literal>은 영속 데이터에 대한 트랜잭션 레벨 캐시"
+"이다. class-by-class와 collection-by-collection 기반 위에 클러스터 또는 JVM-"
+"레벨(<literal>SessionFactory</literal>-레벨) 캐시를 구성하는 것이 가능하다. "
+"당신은 클러스터링 된 캐시 속에 플러그인 할 수도 있다. 주의하라. 캐시들은 (비"
+"록 그것들이 캐시된 데이터를 정기적으로 만료되도록 구성되어 있을지라도) 또 다"
+"른 어플리케이션에 의해 영속 저장소에 대해 행해진 변경들을 결코 알지 못한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"디폴트로, Hibernate는 JVM-레벨의 캐싱에 EHCache를 사용한다. (JCS 지원은 이제 "
+"진부하게 되었고 Hibernate의 장래 버전에서 제거될 것이다.) 당신은 "
+"<literal>hibernate.cache.provider_class</literal> 프로퍼티를 사용하여 "
+"<literal>org.hibernate.cache.CacheProvider</literal>를 구현하는 클래스의 이름"
+"을 지정함으로써 다른 구현을 선택할 수도 있다. You have the option to tell "
+"Hibernate which caching implementation to use by specifying the name of a "
+"class that implements <literal>org.hibernate.cache.CacheProvider</literal> "
+"using the property <literal>hibernate.cache.provider_class</literal>. "
+"Hibernate comes bundled with a number of built-in integrations with open-"
+"source cache providers (listed below); additionally, you could implement "
+"your own and plug it in as outlined above. Note that versions prior to 3.2 "
+"defaulted to use EhCache as the default cache provider; that is no longer "
+"the case as of 3.2. 당신은 <literal>hibernate.cache.provider_class</literal> "
+"프로퍼티를 사용하여 <literal>org.hibernate.cache.CacheProvider</literal>를 구"
+"현하는 클래스의 이름을 지정함으로써 어느 캐싱 구현을 사용할 것인지를 "
+"Hibernate에게 알려주는 옵션을 갖는다. Hibernate는 (아래에 열거된) 오픈-소스 "
+"프로바이더들을 가진 많은 빌드되어 있는 통합들을 번들로 갖고 있다; 추가적으로 "
+"당신은 위에서 언급했듯이 그것에 당신 자신의 것을 구현할 수 있고 그것에 플러"
+"그 시킬 수 있다. 3.2 이번 버전들은 디플트 캐시 프로바이더로서 EhCache를 사용"
+"하도록 디포릍로 내장되어 있음을 노트하라; 버전 3.2의 경우에 그것은 더이상 디"
+"폴트 내장이 아니다."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "캐시 프로바이더들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "캐시"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "프로바이더 클래스"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "타입"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "클러스터 안전"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "질의 캐시 지원"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"Hashtable (제품 용도로 고안되어 있지 않음)\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"Hashtable (제품용으로 고안되지 않음)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "org.hibernate.cache.HashtableCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "memory"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "yes"
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"yes\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"yes\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"yes\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"예"
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "org.hibernate.cache.EhCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "memory, disk"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "org.hibernate.cache.OSCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "org.hibernate.cache.SwarmCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "clustered (ip multicast)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "yes (clustered invalidation)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr "JBoss TreeCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "org.hibernate.cache.TreeCacheProvider"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "clustered (ip multicast), transactional"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "yes (replication)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "yes (clock sync req.)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "JBoss Cache 2"
+msgstr "JBoss TreeCache"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "org.hibernate.cache.EhCacheProvider"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "yes (clustered invalidation)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "Cache 매핑들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"클래스 또는 콜렉션 매핑의 <literal>&lt;cache&gt;</literal> 요소는 다음 형식"
+"을 갖는다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal>(필수) 캐싱 방도를 지정한다: <literal>transactional</"
+"literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</"
+"literal> 또는 <literal>read-only</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (옵션, 디폴트는 class 또는 콜렉션 role 이름) "
+"second level 캐시 영역의 이름을 지정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (옵션, 디폴트는 <literal>all</literal>) "
+"<literal>non-lazy</literal>는 <literal>lazy=\"true\"</literal>로 매핑된 엔티"
+"티의 프로퍼티들을 지정하며 속성-레벨 lazy 페칭이 이용 가능할 때 키시될 수 없"
+"다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"다른 방법으로 (선호적으로?), 당신은 <literal>hibernate.cfg.xml</literal> 내"
+"에 <literal>&lt;class-cache&gt;</literal>와 <literal>&lt;collection-cache&gt;"
+"</literal> 요소들을 지정할 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"<literal>usage</literal> 속성은 <emphasis> 캐시 동시성 방도</emphasis>를 지정"
+"한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "방도: 읽기 전용"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"당신의 어플리케이션이 영속 클래스의 인스턴스들을 읽어들일 필요가 있지만 결코 "
+"변경할 필요가 없을 경우에 <literal>read-only</literal> 캐시가 사용될 수 있"
+"다. 이것은 가장 간단한 최상의 퍼포먼스를 위한 방도이다. 그것은 클러스터 내 사"
+"용에는 완벽하게 안전하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "방도: 읽기/쓰기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"어플리케이션이 데이터를 업데이트 할 필요가 있을 경우, <literal>read-write</"
+"literal> 캐시가 적절하다. 만일 직렬화 가능한(serializable) 트랜잭션 격리 레벨"
+"이 필요한 경우에는 이 캐시 방도가 결코 사용되지 말아야 한다. 만일 캐시가 JTA "
+"환경에서 사용될 경우, 당신은 JTA <literal>TransactionManager</literal>를 얻"
+"는 방도를 명명하는 <literal>hibernate.transaction.manager_lookup_class</"
+"literal> 프로퍼티를 지정해야 한다. 다른 환경들에서, 당신은<literal>Session."
+"close()</literal> 또는 <literal>Session.disconnect()</literal>가 호출될 때 트"
+"랜잭션이 완료되는 것을 확실히 해야 한다. 만일 당신이 클러스터 내에 이 방도를 "
+"사용하고자 원할 경우, 당신은 기본 캐시 구현이 잠금을 지원하도록 하는 것을 확"
+"실히 해야 한다. 미리 만들어진 캐시 프로바이더들은 그렇게 행하지 <emphasis>않"
+"는다</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "방도: 엄격하지 않은 읽기/쓰기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"만일 어플리케이션이 오직 데이터를 자주 업데이트할 필요가 있고(예를 들어, 만"
+"일 두 개의 트랜잭션들이 동시에 동일한 항목을 업데이트 하려고 시도하는 정말 있"
+"음직하지 않은 경우) 그리고 엄격한 트랜잭션 격리가 필요하지 않은 경우, "
+"<literal>nonstrict-read-write</literal> 캐시가 적절할 수 있다. 만일 그 캐시"
+"가 JTA 환경에서 사용될 경우, 당신은 <literal>hibernate.transaction."
+"manager_lookup_class</literal>를 지정해야 한다. 다른 환경들에서, 당신은 "
+"<literal>Session.close()</literal> 또는 <literal>Session.disconnect()</"
+"literal>가 호출될 때 트랜잭션이 완료되도록 확실히 해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "방도: transactional"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"<literal>transactional</literal> 캐시 방도는 JBoss TreeCache와 같은 전체 트랜"
+"잭션적인 캐시 프로바이더들에 대한 지원을 제공한다. 그런 캐시는 오직 JTA 환경 "
+"내에서 사용될 수 있고 당신은 <literal>hibernate.transaction."
+"manager_lookup_class</literal>를 지정해야 한다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "캐시 동시성 방도 지원"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"캐시 프로바이더들 중 어느 것도 모든 캐시 동시성 방도들을 지원하지 않는다. 다"
+"음 테이블은 어느 프로바이더들이 어느 동시성 방도들과 호환되는지를 보여준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"캐시 프로바이더들 중 어느 것도 모든 캐시 동시성 방도들을 지원하지 않는다. 다"
+"음 테이블은 어느 프로바이더들이 어느 동시성 방도들과 호환되는지를 보여준다."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr "캐시 동시성 방도 지원"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "읽기 전용"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "엄격하지 않은 읽기-쓰기"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "읽기-쓰기"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transactional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "캐시들을 관리하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"당신이 객체를 <literal>save()</literal>, <literal>update()</literal> 또는 "
+"<literal>saveOrUpdate()</literal>에 전달할 때마다 그리고 당신이 <literal>load"
+"()</literal>, <literal>get()</literal>, <literal>list()</literal>, "
+"<literal>iterate()</literal> 또는 <literal>scroll()</literal>을 사용하여 객체"
+"를 검색할 때마다, 그 객체는 <literal>Session</literal>의 내부 캐시에 추가된"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"<literal>flush()</literal>가 차후적으로 호출될 때, 그 객체의 상태는 데이터베"
+"이스와 동기화 될 것이다. 만일 당신이 이 동기화가 발생되는 것을 원하지 않거나 "
+"만일 당신이 대량의 객체들을 처리 중이고 메모리를 효율적으로 관리할 필요가 있"
+"을 경우, <literal>evict()</literal> 메소드는 first-level 캐시로부터 그 객체"
+"와 그것의 콜렉션들을 제거하는데 사용될 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"<literal>Session</literal>은 또한 인스턴스가 세션 캐시에 속하는지 여부를 결정"
+"하는데 <literal>contains()</literal> 메소드를 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"세션 캐시로부터 모든 객체들을 완전하게 퇴거시키기 위해, <literal>Session."
+"clear()</literal>를 호출하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"second-level 캐시의 경우, 하나의 인스턴스, 전체 클래스, 콜렉션 인스턴스 또는 "
+"전체 콜렉션 role의 캐시된 상태를 퇴거시키는 <literal>SessionFactory</"
+"literal> 상에 정의된 메소드들이 존재한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"<literal>CacheMode</literal>는 특정 세션이 second-level 캐시와 어떻게 상호작"
+"용하는지를 제어한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - second-level 캐시로부터 아이템들을 읽어"
+"들이고 second-level 캐시로 아이템들을 기록한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal> - second-level 캐시로부터 아이템들을 읽어들"
+"이지만, 데이터를 업데이트할 때를 제외하면 second-level 캐시로 기록하지 않는다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal> - 아이템들을 second-level 캐시에 기록하지"
+"만, second-level 캐시로부터 읽어들이지 않는다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal> - 아이템들을 second-level 캐시로기록하지"
+"만, second-level 캐시로부터 읽어들이지 않고, 데이터베이스로부터 읽어들인 모"
+"든 아이템들에 대한 second-level 캐시의 갱신을 강제시켜, <literal>hibernate."
+"cache.use_minimal_puts</literal>의 효과를 무시한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"second-level 캐시 또는 질의 캐시 영역의 내용물을 브라우징하려면 "
+"<literal>Statistics</literal> API를 사용하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"당신은 통계를 이용 가능하게 하고, 선택적으로 Hibernate로 하여금 캐시 엔트리들"
+"을 보다 인간에게 이해가능한 형식으로 유지시키도록 강제시키는 것이 필요할 것이"
+"다:"
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "질의 캐시"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"질의 결과 셋들이 또한 캐시될 수도 있다. 이것은 동일한 파라미터들을 가지고 자"
+"주 실행되는 질의들에만 유용하다. 질의 캐시를 사용하기 위해 당신은 먼저 그것"
+"을 이용 가능하도록 해야 한다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"대부분의 질의들은 캐싱으로부터 이점이 없기에, 디폴트로 질의들은 캐시되지 않는"
+"다. 캐싱을 이용 가능하도록 하려면, <literal>Query.setCacheable(true)</"
+"literal>를 호출하라. 이 호출은 기존 캐시 결과들을 찾는 것을 질의에게 허용해주"
+"거나 질의가 실행될 때 그것의 결과들을 캐시에 추가하는 것을 허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Query cache regions"
+msgstr "질의 캐시 지원"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"만일 당신이 질의 캐시 만료 정책들에 대한 세밀한 제어를 필요로 할 경우, 당신"
+"은 <literal>Query.setCacheRegion()</literal>을 호출함으로써 특별한 질의에 대"
+"해 명명되니 캐시 영역을 지정할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"만일 질의가 그것의 질의 캐시 영역의 갱신을 강제시켜야 하는 경우에, 당신은 "
+"<literal>Query.setCacheMode(CacheMode.REFRESH)</literal>를 호출해야 한다. 이"
+"것은 기본 데이터가 별도의 프로세스를 통해 업데이트되었고(예를 들면, Hibernate"
+"를 통해 변경되지 않았고) 특정 질의 결과 셋들을 선택적으로 갱신하는 것을 어플"
+"리케이션에게 허용해주는 경우들에서 특별히 유용하다. 이것은 "
+"<literal>SessionFactory.evictQueries()</literal>를 통해 질의 캐시 영역을 퇴거"
+"시키는 보다 효과적인 대안이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "콜렉션 퍼포먼스 이해하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "분류"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "Hibernate는 세 가지 기본적인 종류의 콜렉션들을 정의한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "값들을 가진 콜렉션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "one-to-many associations"
+msgstr "one to many 연관들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "many-to-many associations"
+msgstr "many to many 연관들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"이 분류는 여러 가지 테이블과 foreign key 관계들을 구별짓지만 우리가 관계형 모"
+"형에 대해 알 필요가 있는 모든 것을 우리에게 말해주지 않는다. 관계형 구조와 퍼"
+"포먼스 특징들을 완전하게 이해하기 위해, 우리는 또한 콜렉션 행들을 업데이트하"
+"거나 삭제하기 위해 Hibernate에 의해 사용되는 프라이머리 키의 구조를 검토해야 "
+"한다. 이것은 다음 분류를 제안한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "인덱싱 된 콜렉션들"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "set들"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "bag들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"모든 인덱싱된 콜렉션들(map들, list들, array들)은 <literal>&lt;key&gt;</"
+"literal>와 <literal>&lt;index&gt;</literal> 컬럼들로 이루어진 프라이머리 키"
+"를 갖는다. 이 경우에 콜렉션 업데이트들은 대개 극히 효율적이다 - Hibernate가 "
+"그것을 업데이트나 삭제를 시도할 때 프라이머리 키는 효율적으로 인덱싱될 수 있"
+"고 특정 행은 효율적으로 위치지워질 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"Set들은 <literal>&lt;key&gt;</literal>와 요소 컬럼들로 구성된 프라이머리 키"
+"를 갖는다. 이것은 몇몇 유형의 콜렉션 요소, 특히 composite 요소들 또는 대형 텍"
+"스트 또는 바이너리 필드들에 대해 덜 효율적일 수 있다; 데이터베이스는 복잡한 "
+"프라이머리 키를 효율적으로 인덱싱하는 것이 불가능할 수도 있다. 반면에 one to "
+"many 또는 many to many 연관들의 경우, 특히 합성 식별자들의 경우에는 효율적일 "
+"수 있을 것 같다.(부수-노트: 만일 당신이 당신을 위한 <literal>&lt;set&gt;</"
+"literal>의 프라이머리 키를 실제로 생성시키기 위해 <literal>SchemaExport</"
+"literal>를 원한다면 당신은 모든 컬럼들을 <literal>not-null=\"true\"</literal>"
+"로 선언해야 한다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal> 매핑들은 대용 키를 정의하여서, 그것들은 항"
+"상 업데이트에 매우 효율적이다. 사실, 그것들은 최상의 경우이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"Bag들은 가장 나쁜 경우이다. 왜냐하면 하나의 bag은 중복 요소 값들을 허용하고 "
+"인덱스 컬럼을 갖지 않기 때문에, 프라이머리 키가 정의될 수 없다. Hibernate는 "
+"중복 행들 사이를 구분 짓는 방법을 갖고 있지 않다. Hibernate는 그것이 변경될 "
+"때마다 (한 개의 DELETE로) 콜렉션을 완전하게 제거하고 다시 생성시킴으로써 이 "
+"문제를 해결한다. 이것은 매우 비효율적이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"one-to-many 연관의 경우, \"프라이머리 키\"는 데이터베이스 테이블의 물리적인 "
+"프라이머리 키가 아닐 수도 있지만- 이 경우에서도 위의 분류는 여전히 유용하다. "
+"(그것은 여전히 Hibernate가 콜렉션의 개별 행들을 어떻게 \"위치지우는\"지를 반"
+"영한다.)"
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr "List, map, idbag, set들은 update에 가장 효율적인 콜렉션들이다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"위의 논의에서, 인덱싱된 콜렉션들과 (대개) set들이 요소들을 추가하고, 제거하"
+"고 업데이트함에 있어 가장 효율적인 오퍼레이션을 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"아마 인덱싱 된 콜렉션들이 many to many 연관들을 위한 또는 값들을 가진 콜렉션"
+"들을 위한 set들에 대해 갖고 있는 하나 이상의 장점들이 존재한다. "
+"<literal>Set</literal>의 구조 때문에, Hibernate는 요소가 \"변경\"될 때 행을 "
+"<literal>UPDATE</literal> 하지 않는다. <literal>Set</literal>에 대한 변경들"
+"은 항상 (개별 행들에 대한) <literal>INSERT</literal>와 <literal>DELETE</"
+"literal>를 통해 동작한다. 다시 이 검토는 one to many 연관들에 적용되지 않는"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"배열들이 lazy 될 수 없음을 관찰 한 후에, 우리는 list들, map들, 그리고 idbag들"
+"이 단독이 아닌 set들을 가진 가장 퍼포먼스가 좋은(non-inverse) 콜렉션 타입들임"
+"을 결론 지을 것이다. Set들은 Hibernate 어플리케이션들에서 가장 공통된 종류의 "
+"콜렉션이 될 것이라 예상된다. 이것은 \"set\" 의미가 관계형 모형에서 가장 고유"
+"한 것이기 때문이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"하지만, 잘 설계된 Hibernate 도메인 모형들에서, 우리는 대개 대부분의 콜렉션들"
+"이 사실 <literal>inverse=\"true\"</literal>를 가진 one-to-many 연관들임을 보"
+"게 된다. 이들 연관들의 경우, 업데이트는 연관의 many-to-one 엔드에 의해 처리되"
+"고, 따라서 콜렉션 업데이트 퍼포먼스에 대한 검토들은 단순히 적용되지 않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "Bag들과 list들은 가장 효율적인 inverse 콜렉션들이다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"단지 당신이 영원히 bag들을 버리기 전에, bag들(과 또한 list들)이 set들보다 훨"
+"씬 더 성능이 좋은 특별한 경우들이 존재한다. <literal>inverse=\"true\"</"
+"literal>를 가진 콜렉션들(예를 들어, 표준 양방향 one-to-many 관계 특질)의 경"
+"우, 우리는 bag 요소들을 초기화(페치) 시킬 필요 없이 bag 또는 list에 요소들을 "
+"추가시킬 수 있다! 이것은 <literal>Collection.add()</literal> 또는 "
+"<literal>Collection.addAll()</literal>이 (<literal>Set</literal>과는 달리) 항"
+"상 bag 또는 <literal>List</literal>에 대해 true를 반환해야하기 때문이다. 이것"
+"은 훨씬 다음 공통적인 코드를 더 빠르게 만들 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "원 샷 delete"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"종종 콜렉션 요소들을 하나씩 삭제하는 것은 극히 비효율적일 수 있다! Hibernate"
+"는 완전하게 바보가 아니어서, 그것은 새로운 공백의 콜렉션의 경우(예를 들어 당"
+"신이 <literal>list.clear()</literal>를 호출했을 경우)에 그것을 행하지 않을 것"
+"임을 알고 있다. 이 경우에, Hibernate는 하나의 <literal>DELETE</literal> 명령"
+"을 내릴 것이고 우리는 모두 행했다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"우리가 길이 20인 하나의 콜렉션에 한 개의 요소를 추가하고 그런 다음 두 개의 요"
+"소들을 제거한다고 가정하자. Hibernate는 (콜렉션이 bag가 아닌 한) 한 개의 "
+"<literal>INSERT</literal> 문장과 두 개의 <literal>DELETE</literal> 문장을 명"
+"령 내릴 것이다. 이것은 확실히 마음에 든다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"하지만, 우리가 두 개의 요소들을 남겨둔채 18 개의 요소들을 제거하고 나서 세 개"
+"의 새로운 요소들을 추가한다고 가정하자. 두 가지 가능한 처리 방법들이 존재한"
+"다."
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr "하나씩 열 여덟 개의 행들을 삭제한 다음에 세 개의 행들을 삽입시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr ""
+"(한 개의 SQL <literal>DELETE</literal>로)전체 콜렉션을 삭제하고 모든 다섯개"
+"의 현재 요소들을 (하나씩) insert 시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"Hibernate는 두 번째 옵션이 아마 이 경우에 더 빠르다는 점을 알 만큼 충분히 영"
+"리하지 않다.(그리고 Hibernate가 그렇게 영리해지는 것을 희망 하는 것은 가능하"
+"지 않을 것이다; 그런 특징은 데이터베이스 트리거들 등을 혼동스럽게 할 수도 있"
+"다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"다행히, 당신은 원래의 콜렉션을 폐기시키고(예를 들어 참조 해제하고) 모든 현재 "
+"요소들을 가진 새로이 초기화된 콜렉션을 반환함으로써 아무때든지 이 특징을 강제"
+"시킬 수 있다. 이것은 시간이 흐름에 따라 매우 유용하고 강력해질 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"물론 단 한번의 삭제(one-shot-delete)는 <literal>inverse=\"true\"</literal>로 "
+"매핑된 콜렉션들에 적용되지 않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "퍼포먼스 모니터링하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"최적화는 퍼포먼스 관련 숫자들에 대한 모니터링과 접근 없이는 많이 사용되지 않"
+"는다. Hibernate는 그것의 내부적인 오퍼레이션들에 대한 전체 영역의 특징들을 제"
+"공한다. Hibernate에서 Statistics는 <literal>SessionFactory</literal>에 대해 "
+"이용 가능하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "SessionFactory 모니터링 하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"당신은 두 가지 방법들로 <literal>SessionFactory</literal> metrics에 접근할 "
+"수 있다. 당신의 첫 번째 옵션은 <literal>sessionFactory.getStatistics()</"
+"literal>를 호출하고 당신 스스로 <literal>Statistics</literal>를 읽거나 디스플"
+"레이 하는 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"만일 당신이 <literal>StatisticsService</literal> MBean을 이용 가능하도록 할 "
+"경우 Hibernate는 또한 metrics를 발표하는데 JMX를 사용할 수 있다. 당신은 모든 "
+"당신의<literal>SessionFactory</literal>에 대해 한 개의 MBean 또는 팩토리 당 "
+"한 개를 이용 가능하게 할 수 있다. 최소한의 구성 예제들은 다음 코드를 보라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"당신은 <literal>SessionFactory</literal>에 대한 모니터링을 (비)활성화 시킬 "
+"수 있다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"구성 시 : <literal>hibernate.generate_statistics</literal>, 디폴트는 "
+"<literal>false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"실행 시 : <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> 또"
+"는 <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"Statistics(통계량들)은 <literal>clear()</literal> 메소드를 사용하여 프로그래"
+"밍 방식으로 재설정 될 수 있다. 요약은 <literal>logSummary()</literal> 메소드"
+"를 사용하여 logger(info 레벨)에게 전송될 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "Metrics"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"Hibernate는 매우 기본적인 것에서부터 어떤 시나리오들에만 관련된 전문 정보에 "
+"이르는 많은 metrics를 제공한다. 모든 이용 가능한 카운터들은 "
+"<literal>Statistics</literal> interface API에서 3개의 카테고리로 설명되어 있"
+"다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"열려진 세션들의 개수, 검색된 JDBC 커넥션들의 개수 등과 같은 일반적인 "
+"<literal>Session</literal> 사용에 관련된 metrics."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr ""
+"전체적으로 엔티티들, 콜렉션들, 질의들, 그리고 캐시들에 관련된 metrics(전역 "
+"metrics로 알려져 있음),"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr "특정한 엔티티, 콜렉션, 질의 또는 캐시 영역에 관련된 상세 metrics."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"예를 들어 당신은 엔티티, 콜렉션, 질의들의 캐시 성공율 및 실패율, put(역자 "
+"주, 캐시 시도, putt) 비율, 콜렉션들과 질의들, 그리고 평균 질의 요구 시간 등"
+"을 찾을 수 있다. 수 밀리초들가 자바에서 근사치에 종속됨을 의식하라. Hibernate"
+"는 JVM 정밀도에 묶여 있고, 몇몇 플랫폼들에서 이것은 심지어 약 10초가 될 수도 "
+"있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"간단한 getter들은 (예를 들어 특정 엔티티, 콜렉션, 캐시 영역에 묶이지 않은) 전"
+"역 metrics에 접근하는데 사용된다. 당신은 그것(특정 엔티티, 콜렉션, 또는 캐시 "
+"영역)의 이름을 통해, 그리고 질의들에 대한 그것의 HQL 또는 SQL 표현을 통해 특"
+"정 엔티티, 콜렉션, 또는 캐시 영역의 metrics에 접근할수 있다. 추가 정보는 "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, 그리고 "
+"<literal>QueryStatistics</literal>를 참조하라. 다음 코드는 간단한 예제를 보여"
+"준다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"모든 엔티티들, 콜렉션들, 콜렉션들,질의들 그리고 영역 캐시들에 대해 작업하기 "
+"위해, 당신은 다음 메소드들로서 엔티티들, 콜렉션들, 질의들, 그리고 영역 캐시들"
+"에 대한 이름들의 목록을 검색할 수 있다: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, 그리고 <literal>getSecondLevelCacheRegionNames()</literal>."
+
+#, fuzzy
+#~ msgid ""
+#~ "This setting creates two new cache regions: one holding cached query "
+#~ "result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), "
+#~ "the other holding timestamps of the most recent updates to queryable "
+#~ "tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). "
+#~ "Note that the query cache does not cache the state of the actual entities "
+#~ "in the result set; it caches only identifier values and results of value "
+#~ "type. The query cache should always be used in conjunction with the "
+#~ "second-level cache."
+#~ msgstr ""
+#~ "이 설정은 두 개의 새로운 캐시 영역들 - 캐시된 질의 결과 셋들을 보관하는 "
+#~ "것 (<literal>org.hibernate.cache.StandardQueryCache</literal>), 질의 가능"
+#~ "한 테이블들에 대한 가장 최신 업데이트들에 대한 timestamp들을 보관하는 다"
+#~ "른 것 (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>)-의 생"
+#~ "성을 강제한다 . 질의 캐시는 결과 셋 내에 실제 엔티티들의 상태를 캐시시키"
+#~ "지 않음을 노트하라; 그것은 오직 식별자 값들과 값 타입의 결과들 만을 캐시시"
+#~ "킨다. 따라서 질의 캐시는 항상 second-level 캐시와 함께 사용되어야 한다."
+
+#~ msgid ""
+#~ "where <literal>CatImpl</literal> implements the interface <literal>Cat</"
+#~ "literal> and <literal>DomesticCatImpl</literal> implements the interface "
+#~ "<literal>DomesticCat</literal>. Then proxies for instances of "
+#~ "<literal>Cat</literal> and <literal>DomesticCat</literal> may be returned "
+#~ "by <literal>load()</literal> or <literal>iterate()</literal>. (Note that "
+#~ "<literal>list()</literal> does not usually return proxies.)"
+#~ msgstr ""
+#~ "여기서 <literal>CatImpl</literal>은 <literal>Cat</literal> 인터페이스를 구"
+#~ "현하고 <literal>DomesticCatImpl</literal>은 <literal>DomesticCat</"
+#~ "literal> 인터페이스를 구현한다. 그때 <literal>Cat</literal>과 "
+#~ "<literal>DomesticCat</literal>의 인스턴스들에 대한 프락시들은 "
+#~ "<literal>load()</literal> 또는 <literal>iterate()</literal>에 의해 반환될 "
+#~ "수 있다. (<literal>list()</literal>가 대개 프락시들을 반환하지 않음을 노트"
+#~ "하라.)"
+
+#~ msgid ""
+#~ "We've already spent quite some time talking about collections. In this "
+#~ "section we will highlight a couple more issues about how collections "
+#~ "behave at runtime."
+#~ msgstr ""
+#~ "우리는이미 콜렉션들에 관해 얘기하는데 꽤 많은 시간을 소요했다. 이 절에서 "
+#~ "우리는 콜렉션들이 실행 시에 어떻게 행위하는지에 관한 한 쌍의 쟁점들을 조명"
+#~ "할 것이다."
+
+#~ msgid ""
+#~ "TODO: This doesn't make sense: In the first case, we retrieve and use the "
+#~ "MBean directly. In the second one, we must give the JNDI name in which "
+#~ "the session factory is held before using it. Use "
+#~ "<literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</"
+#~ "literal>"
+#~ msgstr ""
+#~ "TODO: 이것은 의미가 없다: 첫번째 경우에, 우리는 직접 MBean을 검색하고 사용"
+#~ "한다. 두 번째 경우에 우리는 JNDI 이름을 사용하기 전에 세션 팩토리가 보관하"
+#~ "고 있는 JNDI 이름을 부여해야 한다. <literal>hibernateStatsBean."
+#~ "setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>을 사용하라."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,614 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "영속 클래스들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state. For example, an instance can instead be transient "
+"or detached."
+msgstr ""
+"영속 클래스들은 비지니스 문제의 엔티티들(예를 들어 E-Commerce 어플리케이션에"
+"서 고객이나 주문)을 구현하는 어플리케이션 내의 클래스들이다. 영속 클래스들의 "
+"인스턴스들은 영속 상태에 있는 것으로 전혀 간주되지 않는다 - 대신에 하나의 인"
+"스턴스는 transient 또는 detached 상태일 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You can express a domain model "
+"in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+"Hibernate는 이들 클래스들이 Plain Old Java Object (POJO) 프로그래밍 모형으로"
+"서 알려진, 몇몇 간단한 규칙들을 따를 경우에 가장 잘 동작한다. 하지만 이들 규"
+"칙들 중 어떤 것도 어려운 사양들이 아니다. 진정 Hibernate3는 당신의 영속 객체"
+"들의 특징에 대해 매우 적은 것을 가정한다. 당신은 다른 방법들로 도메인 모형을 "
+"표현할 수 있다 : 예를 들어 <literal>Map</literal> 인스턴스의 트리들을 사용하"
+"기."
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "간단한 POJO 예제"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Most Java applications require a persistent class representing felines. For "
+"example:"
+msgstr ""
+"대부분의 자바 어플리케이션들은 고양이과들을 표현하는 영속 클래스를 필요로 한"
+"다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The four main rules of persistent classes are explored in more detail in the "
+"following sections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "아규먼트 없는 생성자를 구현하라"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which can be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. It "
+"is recommended that you have a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal>은 아규먼트 없는 생성자를 갖는다. 모든 영속 클래스들은 "
+"Hibernate는 <literal>Constructor.newInstance()</literal>를 사용하여 그것들을 "
+"초기화 시킬 수 있도록 디폴트 생성자 (public이 아닐 수 있다)를 가져야 한다. 우"
+"리는 Hibernate 내에서 런타임 프락시 생성을 위한 최소한의 <emphasis>패키지</"
+"emphasis> 가시성(visibility)를 가진 디폴트 생성자를 가질 것을 강력하게 권장한"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "identifier 프로퍼티를 제공하라(옵션)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. If your legacy database table has "
+"composite keys, you can use a user-defined class with properties of these "
+"types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+"<literal>Cat</literal>은 <literal>id</literal>로 명명된 하나의 프로퍼티를 갖"
+"는다. 이 프로퍼티는 데이터베이스 테이블의 프라이머리 키 컬럼으로 매핑된다. "
+"이 프로퍼티는 어떤 것으로 명명될 수도 있고, 그것의 타입은 임의의 원시 타입, "
+"원시 \"wrapper\" 타입, <literal>java.lang.String</literal> 또는 "
+"<literal>java.util.Date</literal>일 수 있다. (만일 당신의 리거시 데이터베이"
+"스 테이블이 composite 키들을 갖고 있다면, 당신은 이들 타입들을 가진 사용자 정"
+"의 클래스를 사용할 수도 있다 - 나중에 composite 식별자들에 대한 절을 보라)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"identifier 프로퍼티는 엄격하게 옵션이다. 당신은 그것을 생략할 수도 있고, "
+"Hibernate로 하여금 내부적으로 객체 식별자들을 추적하도록 할 수 있다. 하지만 "
+"우리는 이것을 권장하지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes that declare an "
+"identifier property:"
+msgstr ""
+"사실, 어떤 기능은 identifier 프로퍼티를 선언하는 클래스들에 대해서만 이용 가"
+"능하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+"detached 객체들에 대한 Transitive reattachment(cascade update 또는 cascade "
+"merge) - <xref linkend=\"objectstate-transitive\"/>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "Session.saveOrUpdate()"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "Session.merge()"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We recommend that you declare consistently-named identifier properties on "
+"persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+"우리는 당신이 영속 클래스들에 대해 일관되게 명명된 identifier 프로퍼티들을 선"
+"언할 것을 권장한다. 게다가 우리는 당신이 nullable 타입(예를 들어 non-"
+"primitive)을 사용할 것을 권장한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "final이 아닌 클래스들을 선호하라(옵션)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Hibernate의 중심 특징인, 프락시(<emphasis>proxies</emphasis>)들은 final이 아"
+"닌 영속 클래스들 또는 모두 public 메소드들로 선언된 인터페이스의 구현인 영속 "
+"클래스들에 의존한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate. You will not, however, be able to use proxies for "
+"lazy association fetching which will ultimately limit your options for "
+"performance tuning."
+msgstr ""
+"당신은 Hibernate로 인터페이스를 구현하지 않은 <literal>final</literal> 클래스"
+"들을 영속화 시킬 수 있지만 당신은 lazy 연관 페칭(lazy association fetching)"
+"에 대해 프락시들을 사용할 수 없을 것이다 -그것은 퍼포먼스 튜닝을 위한 당신의 "
+"옵션들을 제한시킬 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"당신은 또한 non-final 클래스들 상에 <literal>public final</literal> 메소드들"
+"을 선언하는 것을 피해야 한다. 만일 당신이 <literal>public final</literal> 메"
+"소드를 가진 클래스를 사용하고자 원할 경우, 당신은 <literal>lazy=\"false\"</"
+"literal>를 설정함으로써 명시적으로 프락싱을 사용 불가능하도록 해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr "영속 필드들을 위한 accessor들과 mutator들을 선언하라(옵션)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. It is "
+"better to provide an indirection between the relational schema and internal "
+"data structures of the class. By default, Hibernate persists JavaBeans style "
+"properties and recognizes method names of the form <literal>getFoo</"
+"literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If "
+"required, you can switch to direct field access for particular properties."
+msgstr ""
+"<literal>Cat</literal>은 그것의 모든 영속 필드들에 대해 accessor 메소드들을 "
+"선언한다. 많은 다른 ORM 도구들은 인스턴스 변수들을 직접 영속화 시킨다. 우리"
+"는 관계형 스키마와 클래스의 내부적인 데이터 구조들 사이에 간접적인 수단을 제"
+"공하는 것이 더 좋다고 믿고 있다. 디폴트로 Hibernate는 자바빈즈 스타일 프로퍼"
+"티들을 영속화 시키고, <literal>getFoo</literal>, <literal>isFoo</literal>와 "
+"<literal>setFoo</literal> 형식의 메소드 이름들을 인지한다. 당신은 진정으로 특"
+"정 프로퍼티에 대한 직접적인 필드 접근으로 전환할 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"프로퍼티들은 public으로 선언될 필요가 <emphasis>없다</emphasis> - Hibernate"
+"는 디폴트로 <literal>protected</literal> get/set 쌍 또는 <literal>private</"
+"literal> get/set 쌍을 가진 프로퍼티를 영속화 시킬 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "상속 구현하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+"서브클래스는 또한 첫 번째 규칙들과 두 번째 규칙들을 주시해야 한다. 그것은 슈"
+"퍼클래스 <literal>Cat</literal>으로부터 그것의 identifier 프로퍼티를 상속받는"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr "<literal>equals()</literal>와 <literal>hashCode()</literal> 구현하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you:"
+msgstr ""
+"만일 당신이 다음의 경우라면, 당신은 <literal>equals()</literal>와 "
+"<literal>hashCode()</literal> 메소드들을 오버라이드 시켜야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations); <emphasis>and</"
+"emphasis>"
+msgstr ""
+"하나의 <literal>Set</literal> 속에 영속 클래스들의 인스턴스들을 집어넣고자 의"
+"도하고 (many-valued 연관들에 대해 권장되는 방법) <emphasis>그리고</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "detached 인스턴스들의 reattachment(재첨부)를 사용하고자 의도하는"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. When you mix instances "
+"retrieved in different sessions, you must implement <literal>equals()</"
+"literal> and <literal>hashCode()</literal> if you wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate는 특정 session 범위 내에서만 persistent identity(데이터베이스 행)"
+"과 Java identity의 같음을 보장한다. 따라서 우리가 다른 세션들에서 검색된 인스"
+"턴스들을 혼합시키자마자, 우리가 <literal>Set</literal>들에 대해 유의미하게 만"
+"들고자 원할 경우, 우리는 <literal>equals()</literal>와 <literal>hashCode()</"
+"literal>를 구현해야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, "
+"because they are equal. If both are added to a <literal>Set</literal>, you "
+"will only have one element in the <literal>Set</literal>). Unfortunately, "
+"you cannot use that approach with generated identifiers. Hibernate will only "
+"assign identifier values to objects that are persistent; a newly created "
+"instance will not have any identifier value. Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. This is not a "
+"Hibernate issue, but normal Java semantics of object identity and equality."
+msgstr ""
+"가장 명백한 방법은 두 객체들의 identifier 값을 비교함으로써 <literal>equals()"
+"</literal>/<literal>hashCode()</literal>를 구현하는 것이다. 만일 그 값이 동일"
+"하다면, 둘다 동일한 데이터베이스 행이어야 하고, 그러므로 그것들은 같다(둘다 "
+"하나의 <literal>Set</literal>에 추가되는 경우에, 우리는 <literal>Set</"
+"literal> 속에서 하나의 요소만을 갖게 될 것이다). 불행하게도, 우리는 생성되는 "
+"식별자들을 갖는 그 접근법을 사용할 수 없다! Hibernate는 오직 식별자 값들을 영"
+"속화 되는 객체들에 할당할 것이고, 새로이 생성된 인스턴스는 임의의 identifier "
+"값을 갖지 않을 것이다! 만일 인스턴스가 저장되지 않고 현재 하나의 "
+"<literal>Set</literal> 속에 있을 경우에, 그것을 저장하는것은 하나의 식별자 값"
+"을 그 객체에게 할당할 것이다. 만일 <literal>equals()</literal>와 "
+"<literal>hashCode()</literal>가 그 식별자 값에 기초할 경우, hash 코드는 "
+"<literal>Set</literal>의 계약을 파기하여 변경될 것이다. 이 문제에 대한 전체 "
+"논의에 대해서는 Hibernate 웹 사이트를 보라. 이것은 Hibernate 쟁점이 아닌, 객"
+"체 identity와 equality에 관한 통상의 자바 의미론임을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> using <emphasis>Business key equality</"
+"emphasis>. Business key equality means that the <literal>equals()</literal> "
+"method compares only the properties that form the business key. It is a key "
+"that would identify our instance in the real world (a <emphasis>natural</"
+"emphasis> candidate key):"
+msgstr ""
+"우리는 <emphasis>Business key equality</emphasis>를 사용하여 <literal>equals"
+"()</literal>와 <literal>hashCode()</literal>를 구현할 것 권장한다. Business "
+"key equality는 <literal>equals()</literal> 메소드가 비지니스 키, 즉 실세계에"
+"서 우리의 인스턴스를 식별하게 될 키(<emphasis>natural</emphasis> 후보 키)를 "
+"형성하는 프로퍼티들만을 비교한다는 점을 의미한다 :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A business key does not have to be as solid as a database primary key "
+"candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable "
+"or unique properties are usually good candidates for a business key."
+msgstr ""
+"하나의 비지니스 키는 데이터베이스 프라이머리 키 후보 만큼 견고하지 않아야 한"
+"다(<xref linkend=\"transactions-basics-identity\"/>를 보라). 대개 변경할 수 "
+"없는 프로퍼티 또는 유일한(unique) 프로퍼티는 대개 비지니스 키에 대한 좋은 후"
+"보들이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "동적인 모형들"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>The following features are currently considered experimental and "
+"may change in the near future.</emphasis>"
+msgstr ""
+"다음 특징들은 현재 실험적으로 고려되고 있으며 장래에는 변경될 수 있음을 노트"
+"하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Persistent entities do not necessarily have to be represented as POJO "
+"classes or as JavaBean objects at runtime. Hibernate also supports dynamic "
+"models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) "
+"and the representation of entities as DOM4J trees. With this approach, you "
+"do not write persistent classes, only mapping files."
+msgstr ""
+"영속 엔티티들은 반드시 실행시에 POJO 클래스들로 또는 자바빈즈 객체들로 표현되"
+"어야할 필요는 없다. Hibernate는 또한 (실행 시에 <literal>Map</literal>들을 가"
+"진 <literal>Map</literal>들을 사용하여) 동적인 모형들을 지원하고 DOM4J 트리들"
+"로서 엔티티들에 대한 표현을 지원한다. 이 접근법으로, 당신은 영속 클래스들을 "
+"작성하지 않고, 오직 매핑 파일들 만을 작성한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You can set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+"디폴트로, Hibernate는 통산의 POJO 모드로 동작한다. 당신은 "
+"<literal>default_entity_mode</literal> 구성 옵션을 사용하여 특별한 "
+"<literal>SessionFactory</literal>에 대해 디폴트 엔티티 표현 모드를 설정할 수 "
+"있다 (<xref linkend=\"configuration-optional-properties\"/>을 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following examples demonstrate the representation using <literal>Map</"
+"literal>s. First, in the mapping file an <literal>entity-name</literal> has "
+"to be declared instead of, or in addition to, a class name:"
+msgstr ""
+"다음 예제들은<literal>Map</literal>들을 사용하는 표현을 설명한다. 먼저 매핑 "
+"파일에서, <literal>entity-name</literal>은 클래스 이름 대신에(또는 클래스 이"
+"름에 덧붙여) 선언되어야 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even though associations are declared using target class names, the target "
+"type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+"심지어 비록 연관들이 대상(target) 클래스 이름들을 사용하여 선언될지라도, 연관"
+"들의 대상(target) 타입은 또한 POJO가 아닌 동적인 엔티티일 수 있음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, you can, at runtime, work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"<literal>SessionFactory</literal>에 대한 디폴트 엔티티 모드를 "
+"<literal>dynamic-map</literal>으로 설정한 후에, 우리는 <literal>Map</literal>"
+"들을 가진 <literal>Map</literal>들에 대해 실행 시에 작업할 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the main advantages of dynamic mapping is quick turnaround time for "
+"prototyping, without the need for entity class implementation. However, you "
+"lose compile-time type checking and will likely deal with many exceptions at "
+"runtime. As a result of the Hibernate mapping, the database schema can "
+"easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"dynamic 매핑의 장점들은 엔티티 클래스 구현에 대한 필요 없이도 프로토타이핑을 "
+"위한 빠른 전환 시간이다. 하지만 당신은 컴파일 시 타입 체킹을 잃고 실행 시에 "
+"많은 예외상황들을 다루게 될 것이다. Hibernate 매핑 덕분에, 나중에 고유한 도메"
+"인 모형 구현을 상단에 추가하는 것이 허용되어서, 데이터베이스 스키마가 쉽게 정"
+"규화 되고 소리가 울려 퍼질 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"엔티티 표현 모드들은 또한 하나의 단위 <literal>Session</literal> 기준에 대해 "
+"설정될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you do not have to call <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"<literal>EntityMode</literal>를 사용하는 <literal>getSession()</literal>에 대"
+"한 호출은 <literal>SessionFactory</literal>가 아닌, <literal>Session</"
+"literal> API에 대한 것임을 노트하길 바란다. 그 방법으로, 새로운 "
+"<literal>Session</literal>은 기본 JDBC 커넥션, 트랜잭션, 그리고 다른 컨텍스"
+"트 정보를 공유한다. 이것은 당신이 두 번째 <literal>Session</literal> 상에서 "
+"<literal>flush()</literal>와 <literal>close()</literal>를 호출하지 말아야 하"
+"고, 또한 트랜잭션 및 커넥션 핸들링을 주된 작업 단위에게 맡긴다는 점을 의미한"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\" />."
+msgstr ""
+"XML 표현 가용성들에 대한 추가 정보는 <xref linkend=\"xml\"/>에서 찾을 수 있"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "Tuplizer들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing that knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the corresponding tuplizer knows how create the POJO "
+"through its constructor. It also knows how to access the POJO properties "
+"using the defined property accessors."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, 그리고 그것의 서브-인터페이"
+"스들은 데이터의 조각에 대한 특별한 표현의 <literal>org.hibernate.EntityMode</"
+"literal>가 주어지면 그 표현을 관리하는 책임이 있다. 만일 주어진 데이터 조각"
+"이 하나의 데이터 구조로 간주될 경우, 그때 하나의 tuplizer는 그런 데이터 구조"
+"를 생성시키는 방법과 그런 데이터 구조로부터 값들을 추출시키는 방법 그리고 그"
+"런 데이터구조 속으로 값들을 삽입시키는 방법을 알고 있는 것이다. 예를 들어, "
+"POJO 엔티티 모드의 경우, 대응하는 tuplizer는 그것의 생성자를 통해 POJO를 생성"
+"시키는 방법, 그리고 정의된 프로퍼티 접근자들을 사용하여 POJO 프로퍼티들에 접"
+"근하는 방법을 안다. <literal>org.hibernate.tuple.entity.EntityTuplizer</"
+"literal> 인터페이스와 <literal>org.hibernate.tuple.component."
+"ComponentTuplizer</literal> 인터페이스에 의해 표현되는 두 가지 고급 유형의 "
+"Tuplizer들이 존재한다. <literal>EntityTuplizer</literal>들은 엔티티들에 관해"
+"서는 위에 언급된 계약들을 매핑할 책임이 있는 반면에, "
+"<literal>ComponentTuplizer</literal>들은 컴포넌트들에 대해서도 동일한 것을 행"
+"한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two high-level types of Tuplizers, represented by the <literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> interfaces. "
+"<literal>EntityTuplizer</literal>s are responsible for managing the above "
+"mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Users can also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode. Or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizer definitions are attached to the entity or component "
+"mapping they are meant to manage. Going back to the example of our customer "
+"entity:"
+msgstr ""
+"사용자들은 또한 그들 자신의 tuplizer들을 플러그 시킬 수 있다. 아마 당신은 "
+"dynamic-map entity-mode 동안에 사용되는 <literal>java.util.HashMap</literal> "
+"대신에 하나의 <literal>java.util.Map</literal> 구현을 필요로 한다; 또는 아마 "
+"당신은 디폴트로 사용되는 방도 보다는 하나의 다른 다른 프릭시 산출 방도를 필요"
+"로 한다. 둘다 하나의 맞춤형 tuplizer를 정의함으로써 성취될 것이다. Tuplizer"
+"들 정의들은 그것들이 관리할 수단인 엔티티 매핑 또는 컴포넌트 매핑에 첨부된"
+"다. 우리의 고객 엔티티에 대한 예제로 되돌아가면:"
+
+#. Tag: title
+#, no-c-format
+msgid "EntityNameResolvers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"interface is a contract for resolving the entity name of a given entity "
+"instance. The interface defines a single method "
+"<methodname>resolveEntityName</methodname> which is passed the entity "
+"instance and is expected to return the appropriate entity name (null is "
+"allowed and would indicate that the resolver does not know how to resolve "
+"the entity name of the given entity instance). Generally speaking, an "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> is going to "
+"be most useful in the case of dynamic models. One example might be using "
+"proxied interfaces as your domain model. The hibernate test suite has an "
+"example of this exact style of usage under the <package>org.hibernate.test."
+"dynamicentity.tuplizer2</package>. Here is some of the code from that "
+"package for illustration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to register an <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> users must either:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link>, implementing the <methodname>getEntityNameResolvers</methodname> "
+"method."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (which is the implementation class for <interfacename>org."
+"hibernate.SessionFactory</interfacename>) using the "
+"<methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+
+#~ msgid "There are four main rules to follow here:"
+#~ msgstr "준수할 네 개의 주요 규칙들이 다음에 있다:"
+
+#~ msgid ""
+#~ "TODO: Document user-extension framework in the property and proxy packages"
+#~ msgstr ""
+#~ "TODO: property 패키지와 proxy 패키지 내에 user-extension 프레임웍을 문서"
+#~ "화 할 것."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,242 @@
+# Language ko-KR translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: 2009-07-14 19:56+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Portability Basics"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dialect"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dialect resolution"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\">public Dialect resolveDialect(DatabaseMetaData "
+"metaData) throws JDBCConnectionException</programlisting>. The basic "
+"contract here is that if the resolver 'understands' the given database "
+"metadata then it returns the corresponding Dialect; if not it returns null "
+"and the process continues to the next resolver. The signature also "
+"identifies <exceptionname>org.hibernate.exception.JDBCConnectionException</"
+"exceptionname> as possibly being thrown. A JDBCConnectionException here is "
+"interpreted to imply a \"non transient\" (aka non-recoverable) connection "
+"problem and is used to indicate an immediate stop to resolution attempts. "
+"All other exceptions result in a warning and continuing on to the next "
+"resolver."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generation"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate was changed slightly once the implication of this was better "
+"understood so that the insert is delayed in cases where that is feasible."
+msgstr ""
+
+#. Tag: note
+#, no-c-format
+msgid ""
+"The underlying issue is that the actual semanctics of the application itself "
+"changes in these cases."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are specifically 2 bundled <emphasis>enhanced</emphasis>generators:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+msgstr ""
+
+#. Tag: note
+#, no-c-format
+msgid ""
+"The idea behind these generators is to port the actual semantics of the "
+"identifer value generation to the different databases. For example, the "
+"<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> "
+"mimics the behavior of a sequence on databases which do not support "
+"sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Database functions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Type mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,180 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "머리말"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an Object/Relational Mapping tool for Java environments. The term Object/"
+"Relational Mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"객체 지향 소프트웨어와 관계형 데이터베이스로 작업하는 것은 오늘날의 엔터프라"
+"이즈 환경들에서 성가시고 시간이 소비될 수 있다. Hibernate는 자바 환경들을 위"
+"한 객체/관계형 매핑 도구이다. object/relational mapping(ORM) 용어는 객체 모형"
+"으로부터 SQL-기반의 스키마를 가진 관계형 데이터 모형으로의 데이터 표상을 매핑"
+"하는 기술을 언급한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities. It can also significantly reduce development "
+"time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate는 자바 클래스들로부터 데이터베이스로의 매핑(그리고 자바 데이터 타입"
+"들로부터 SQL 데이터 타입들로의 매핑)을 처리할 뿐만 아니라, 또한 데이터 질의"
+"와 검색 편의들을 제공하며, SQL과 JDBC로 수작업 데이터 핸들링에 소요되는 개발 "
+"시간을 현저하게 단축시켜줄 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"Hibernate의 목적은 공통된 데이터 영속화 관련 프로그래밍 작업들의 95%를 덜어주"
+"는 것이다. Hibernate는 데이터베이스에서 비지니스 로직을 구현하는데 내장 프로"
+"시저들을 전용으로 사용하는 데이터 중심적 어플리케이션에 대한 최상의 솔루션이 "
+"아닐 수도 있지만, 그것은 자바 기반 미들-티어에서 객체 지향 도메인 모형들과 비"
+"지니스 로직에 가장 유용하다. 하지만 Hibernate는 벤더 지정적인 SQL 코드를 제거"
+"하거나 캡슐화 시키는 당신을 확실히 도와줄 수 있고 테이블 형식의 표현으로부터 "
+"객체들의 그래프로 결과 셋을 변환하는 공통된 태스크를 도와줄 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"만일 당신이 Hibernate와 Object/Relational 매핑 또는 심지어 자바에 초심자라"
+"면, 다음 단계들을 따르기 바란다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"더 많은 단계적인 사용 설명서들을 가진 더 긴 튜토리얼은 <xref linkend="
+"\"tutorial\"/> 을 읽어라. 튜토리얼을 위한 소스 코드는 <literal>doc/reference/"
+"tutorial/</literal> 디렉토리에 포함되어 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\" /> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Hibernate가 사용될 수 있는 환경을 이해려면 <xref linkend=\"architecture\"/> "
+"를 읽어라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"View the <literal>eg/</literal> directory in the Hibernate distribution. It "
+"contains a simple standalone application. Copy your JDBC driver to the "
+"<literal>lib/</literal> directory and edit <literal>etc/hibernate."
+"properties</literal>, specifying correct values for your database. From a "
+"command prompt in the distribution directory, type <literal>ant eg</literal> "
+"(using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Hibernate 배포본 내의 <literal>eg/</literal> 디렉토리를 살펴 보라. 이 디렉토"
+"리는 간단한 스탠드얼론 어플리케이션을 포함하고 있다. 당신의 JDBC 드라이버를 "
+"<literal>lib/</literal> 디렉토리에 복사하고 당신의 데이터베이스에 맞는 정확"
+"한 값을 지정하여 <literal>etc/hibernate.properties</literal> 를 편집하라. 배"
+"보본 디렉토리에서 명령 라인 프롬프트에서 (Ant를 사용하여) <literal>ant eg</"
+"literal> 를 타이핑 하거나 , Windows 하에서 <literal>build eg</literal> 를 타"
+"이프 하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need "
+"more help with application design, or if you prefer a step-by-step tutorial. "
+"Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download "
+"the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+"당신의 주된 정보의 소스로서 이 참조 문서를 사용하라. 만일 어플리케이션 설계"
+"에 대해 더 많은 도움을 필요로 하거나 당신이 단계적인 튜토리얼을 선호한다면 "
+"<emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/"
+"bauer2)을 읽는 것을 고려하라.또한 http://caveatemptor.hibernate.org에 방문하"
+"여 Java Persistence with Hibernate용 예제 어플리케이션을 다운로드 하라."
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr "FAQ들은 Hibernate 웹 사이트 상에 답변되어 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Links to third party demos, examples, and tutorials are maintained on the "
+"Hibernate website."
+msgstr ""
+"제 3의 데모들, 예제들, 그리고 튜토리얼들은 Hibernate 웹 사이트 상에 링크되어 "
+"있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"Hibernate 웹사이트 상의 공동체 영역은 설계 패턴과 다양한 통합 솔루션들"
+"(Tomcat, JBoss AS, Struts, EJB 등.)에 관한 좋은 리소스이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue tracking system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"질문이 있다면, Hibernate 상에 링크되어 있는 사용자 포럼을 사용하라. 우리는 또"
+"한 버그 보고와 특징 요청들을 위한 JIRA 쟁점 추적 시스템을 제공한다. 당신이 "
+"Hibernate의 개발에 관심이 있다면, 개발자 메일링 리스트에 참여하라. 만일 당신"
+"이 이 문서를 당신의 언어로 번역하는 것에 관심이 있다면, 개발자 메일링 리스트"
+"에 접촉하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"Hibernate를 위한 상용 개발 지원, 제품 지원, 그리고 교육은 JBoss Inc를 통해 이"
+"용 가능하다 (http://www.hibernate.org/SupportTraining/를 보라). Hibernate는 "
+"JBoss Professional Open Source product 프로젝트이고 제품들에 대한 JBoss "
+"Enterprise Middleware System (JEMS) suite의 중대한 컴포넌트이다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,405 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "Criteria 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr "Hibernate는 직관적인, 확장 가능한 criteria query API를 특징 짓는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "<literal>Criteria</literal> 인스턴스 생성하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"<literal>org.hibernate.Criteria</literal>인터페이스는 특정 영속 클래스에 대"
+"한 질의를 표현한다. <literal>Session</literal>은 <literal>Criteria</literal> "
+"인스턴스들에 대한 팩토리이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "결과 셋 제한하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"개별적인 질의 기준은 <literal>org.hibernate.criterion.Criterion</literal> 인"
+"터페이스의 인스턴스이다. <literal>org.hibernate.criterion.Restrictions</"
+"literal> 클래스는 어떤 미리 만들어진 <literal>Criterion</literal> 타입들을 얻"
+"는 팩토리 메소드들을 정의한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "제한들은 논리적으로 그룹지워질 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There are a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses). One of the most useful allows you to specify SQL "
+"directly."
+msgstr ""
+"미리 만들어진 criterion 타입들(<literal>Restrictions</literal> 서브클래스들)"
+"의 영역이 꽤 존재하지만, 특히 유용한 것은 당신으로 하여금 SQL을 직접 지정하도"
+"록 해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"질의된 엔티티의 행 alias에 의해 대체된 <literal>{alias}</literal> "
+"placeholder."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also obtain a criterion from a <literal>Property</literal> instance. "
+"You can create a <literal>Property</literal> by calling <literal>Property."
+"forName()</literal>:"
+msgstr ""
+"criterion을 얻는 대안적인 접근법은 <literal>Property</literal> 인스턴스로부"
+"터 그것을 얻는 것이다. 당신은 <literal>Property.forName()</literal>을 호출하"
+"여 <literal>Property</literal>를 생성시킬 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "결과들을 순서지우기(ordering)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"당신은 <literal>org.hibernate.criterion.Order</literal>를 사용하여 결과들을 "
+"순서(ordering)지울 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "연관들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By navigating associations using <literal>createCriteria()</literal> you can "
+"specify constraints upon related entities:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The second <literal>createCriteria()</literal> returns a new instance of "
+"<literal>Criteria</literal> that refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"두 번째 <literal>createCriteria()</literal>는 <literal>Criteria</literal>의 "
+"새로운 인스턴스를 반환하며, 그것은 <literal>kittens</literal> 콜렉션의 요소들"
+"을 참조한다는 점을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"There is also an alternate form that is useful in certain circumstances:"
+msgstr "다음 대체 형식은 어떤 환경들에서 유용하다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal>는 <literal>Criteria</literal>의 새로운 인스"
+"턴스를 생성시키지 않는다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The kittens collections held by the <literal>Cat</literal> instances "
+"returned by the previous two queries are <emphasis>not</emphasis> pre-"
+"filtered by the criteria. If you want to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"앞의 두 개의 질의들에 의해 반환된 <literal>Cat</literal> 인스턴스들에 의해 보"
+"관된 kittens 콜렉션들은 criteria에 의해 사전-필터링되지 <emphasis>않는다</"
+"emphasis>는 점을 노트하라! 만일 당신이 criteria(기준)과 일치하는 고양이 새끼"
+"들을 단지 검색하고자 원할 경우, 당신은 하나의 <literal>ResultTransformer</"
+"literal>를 사용해야 한다."
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return all of the <literal>Cat</literal>s with a mate whose name "
+"starts with \"good\" ordered by their mate's age, and all cats who do not "
+"have a mate. This is useful when there is a need to order or limit in the "
+"database prior to returning complex/large result sets, and removes many "
+"instances where multiple queries would have to be performed and the results "
+"unioned by java in memory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Without this feature, first all of the cats without a mate would need to be "
+"loaded in one query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second query would need to retreive the cats with mates who's name started "
+"with \"good\" sorted by the mates age."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "동적인 연관 페칭"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"당신은 <literal>setFetchMode()</literal>를 사용하여 실행 시에 연관 페칭 의미"
+"를 지정할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\" /> for "
+"more information."
+msgstr ""
+"이 질의는 outer 조인으로 <literal>mate</literal>와 <literal>kittens</"
+"literal> 모두를 페치할 것이다. 추가 정보는 <xref linkend=\"performance-"
+"fetching\"/>을 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "예제 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"<literal>org.hibernate.criterion.Example</literal> 클래스는 주어진 인스턴스로"
+"부터 질의 기준(criterion)을 구조화 시키는 것을 당신에게 허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"버전 프로퍼티들, 식별자들, 연관관계들이 무시된다. 디폴트로 null 값 프로퍼티들"
+"이 제외된다."
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr "당신은 <literal>Example</literal>이 적용되는 방법을 조정할 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr ""
+"당신은 연관된 객체들에 대한 criteria(기준)을 위치지우는데 examples를 사용할 "
+"수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "Projections, aggregation 그리고 grouping"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. You can apply a "
+"projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"<literal>org.hibernate.criterion.Projections</literal> 클래스는 "
+"<literal>Projection</literal> 인스턴스들에 대한 팩토리이다. 우리는 "
+"<literal>setProjection()</literal>을 호출하여 하나의 질의에 projection(투사,"
+"투영)을 적용시킨다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"criteria 질의 내에서는 명시적인 \"group by\"가 필수적이지 않다. 어떤 "
+"projection 타입들은 <emphasis>grouping projections</emphasis>들이게끔 정의되"
+"고, 그것은 또한 SQL <literal>group by</literal> 절 속에 나타난다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An alias can be assigned to a projection so that the projected value can be "
+"referred to in restrictions or orderings. Here are two different ways to do "
+"this:"
+msgstr ""
+"alias는 선택적으로 projection에 할당될 수 있어서, 투사된(projected) 값은 제한"
+"(restriction)들 또는 ordering들 내에서 참조될 수 있다. 다음은 이것을 행하는 "
+"두 개의 다른 방법들이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"<literal>alias()</literal> 메소드와 <literal>as()</literal> 메소드는 또 다른 "
+"alias 된 <literal>Projection</literal>의 인스턴스 내에 하나의 projection 인스"
+"턴스를 간단하게 포장한다. 지름길로서, 당신이 projection을 projection 리스트"
+"에 추가할 때 당신은 alias를 할당할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"당신은 또한 projection들을 표현하는데 <literal>Property.forName()</literal>"
+"을 사용할 수 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "Detached 질의들과 서브질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class allows you to create a query "
+"outside the scope of a session and then execute it using an arbitrary "
+"<literal>Session</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal> 클래스는 당신에게 세션 영역의 외부에서 질"
+"의를 생성시키도록 하고, 그런 다음 나중에 어떤 임의의 <literal>Session</"
+"literal>을 사용하여 그것을 실행하도록 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> can also be used to express a "
+"subquery. Criterion instances involving subqueries can be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal>는 또한 서브질의를 표현하는데 사용된다. 서"
+"브질의들을 포함하는 Criterion 인스턴스들은 <literal>Subqueries</literal> 또"
+"는 <literal>Property</literal>를 통해 얻어질 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "심지어 상관관계 지워진 서브질의들이 가능하다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "natural 식별자에 의한 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not "
+"efficient because query cache invalidation occurs too frequently. However, "
+"there is a special kind of query where you can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"대부분의 질의들에서, criteria 질의들을 포함하여, 질의 캐시는 매우 효율적이지 "
+"않다. 왜냐하면 질의 캐시 비유효성이 너무 자주 발생하기 때문이다. 하지만, 우리"
+"가 캐시 비유효성 알고리즘을 최적화 시킬 수 있는 한 가지 특별한 종류의 질의가 "
+"존재한다: 상수 natural 키에 의한 룩업. 몇몇 어플리케이션들에서, 이런 종류의 "
+"질의가 자주 발생한다. criteria API는 이 쓰임새를 위한 특별한 설비를 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, map the natural key of your entity using <literal>&lt;natural-id&gt;</"
+"literal> and enable use of the second-level cache."
+msgstr ""
+"첫번째로 당신은 <literal>&lt;natural-id&gt;</literal>를 사용하여 당신의 엔티"
+"티에 대한 natural 키를 매핑 시켜야 하고, second-level 캐시 사용을 가능하게 해"
+"야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"이 기능은 <emphasis>가변성 있는</emphasis> natural 키들을 가진 엔티티들의 용"
+"도로 고안되어 있지 않음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Once you have enabled the Hibernate query cache, the <literal>Restrictions."
+"naturalId()</literal> allows you to make use of the more efficient cache "
+"algorithm."
+msgstr ""
+"이제 <literal>Restrictions.naturalId()</literal>는 캐시 알고리즘을 보다 효율"
+"적으로 사용할 수 있도록 우리에게 허용해준다."
+
+#~ msgid ""
+#~ "You may easily specify constraints upon related entities by navigating "
+#~ "associations using <literal>createCriteria()</literal>."
+#~ msgstr ""
+#~ "당신은 <literal>createCriteria()</literal>를 사용하여 연관들을 네비게이트"
+#~ "함으로써 관계된 엔티티들에 대한 컨스트레인트들을 쉽게 지정할 수 있다."
+
+#~ msgid "Next, enable the Hibernate query cache."
+#~ msgstr "다음으로 , Hibernate 질의 캐시를 사용 가능하도록 하라."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1418 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: 하이버네이트 질의 언어(Hibernate Query Language)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate uses a powerful query language (HQL) that is similar in appearance "
+"to SQL. Compared with SQL, however, HQL is fully object-oriented and "
+"understands notions like inheritance, polymorphism and association."
+msgstr ""
+"Hibernate는 (아주 의도적으로) SQL과 매우 흡사하게 보이는 극히 강력한 질의 언"
+"어를 구비하고 있다. 그러나 그 구문에 의해 우롱당하지 말라; HQL은 상속, 다형"
+"성 그리고 연관과 같은 개념들을 이해하여서, 전체적으로 객체 지향적이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "대소문자 구분"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With the exception of names of Java classes and properties, queries are case-"
+"insensitive. 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 ""
+"질의들은 Java 클래스들과 프로퍼티들의 이름들을 제외하면 대소문자를 구분하지 "
+"않는다. 따라서 <literal>SeLeCT</literal>는 <literal>SELECT</literal>와 같고 "
+"<literal>SELECT</literal>와도 같지만 <literal>org.hibernate.eg.FOO</literal>"
+"는 <literal>org.hibernate.eg.Foo</literal>과 같지 않고 <literal>foo.barSet</"
+"literal>은 <literal>foo.BARSET</literal>과 같지 않다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but this convention is unsuitable for "
+"queries embedded in Java code."
+msgstr ""
+"이 매뉴얼은 소문자 HQL 키워드를 사용한다. 몇몇 사용자들은 보다 나은 가독성을 "
+"위해 대문자 키워드들을 가진 질의들을 찾지만, 우리는 자바 코드 속에 삽입될 때 "
+"이 컨벤션이 추하다는 점을 발견한다."
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "from ì ˆ"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "가장 간단한 가능한 Hibernate 질의는 다음 형식이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This returns all instances of the class <literal>eg.Cat</literal>. You do "
+"not usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. For example:"
+msgstr ""
+"이것은 <literal>eg.Cat</literal> 클래스의 모든 인스턴스들을 간단하게 반환한"
+"다. 우리는 대개 클래스 이름을 수식할 필요가 없다. 왜냐하면, <literal>auto-"
+"import</literal>가 디폴트이기 때문이다. 따라서 우리는 대개 항상 단지 다음과 "
+"같이 작성한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to refer to the <literal>Cat</literal> in other parts of the query, "
+"you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so you can use that alias later in the query. The "
+"<literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+"이 질의는 alias <literal>cat</literal>을 <literal>Cat</literal> 인스턴스들에 "
+"할당하여서, 우리는 나중에 질의 속에서 그 alias를 사용할 수 있을 것이다. "
+"<literal>as</literal> 키워드는 옵션이다; 우리는 또한 다음과 같이 작성할 수 있"
+"다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Multiple classes can appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"여러 개의 클래스들은 cartesian product(카티젼 곱) 또는 \"크로스\" 조인으로 귀"
+"결되어 나타날 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is good practice to name query aliases using an initial lowercase as this "
+"is consistent with Java naming standards for local variables (e.g. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"로컬 변수들에 대한 Java 네이밍 표준들과 일치되게, 첫 소문자를 사용하여 질의 "
+"alias들을 명명하는 것은 좋은 습관으로 간주된다 (예를 들면 "
+"<literal>domesticCat</literal>)."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "연관들과 조인들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also assign aliases to associated entities or to elements of a "
+"collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+"우리는 또한 <literal>join</literal>을 사용하여 , 연관된 엔티티들에 또는 값들"
+"을 가진 콜렉션의 요소들에도 alias들을 할당할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "지원되는 join 타입들은 ANSI SQL로부터 빌려왔다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "또는 <literal>List</literal>로서,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>full join</literal> (대개 유용하지 않음)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "right outer join"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>full join</literal> (대개 유용하지 않음)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"<literal>inner join</literal>, <literal>left outer join</literal>, 그리고 "
+"<literal>right outer join</literal> 구조체들이 약칭될 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"당신은 HQL <literal>with</literal> 키워드를 사용하여 특별한 조인 조건들을 제"
+"공할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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 outer join and lazy declarations of the mapping file for associations "
+"and collections. See <xref linkend=\"performance-fetching\" /> for more "
+"information."
+msgstr ""
+"게다가, \"fetch\" join은 값들을 가진 콜렉션들이나 연관관계들이 한 개의 select"
+"를 사용하여, 그것들의 부모 객체들에 따라 초기화 되는 것을 허용해준다. 이것은 "
+"콜렉션의 경우에 특히 유용하다. 그것은 연관관계들과 콜렉션들에 대한 매핑 파일"
+"의 outer join과 lazy 선언들을 효율적으로 오버라이드 시킨다. 추가 정보는 "
+"<xref linkend=\"performance-fetching\"/>을 보라."
+
+#. Tag: para
+#, fuzzy, 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). The associated objects are also not returned directly "
+"in the query results. Instead, they may be accessed via the parent object. "
+"The only reason you might need an alias is if you are recursively join "
+"fetching a further collection:"
+msgstr ""
+"fetch join은 대개 alias를 할당할 필요가 없다. 왜냐하면, 연관된 객체들이 "
+"<literal>where</literal> 절(또는 어떤 다른 절) 속에 사용되지 않을 것이기 때문"
+"이다. 또한 연관된 객체들은 질의 결과들 속에 직접 반환되지 않는다. 대신 그것들"
+"은 부모 객체를 통해 접근될 수 있다. 우리가 alias를 필요로 할 수 있는 유일한 "
+"이유는 더 많은 콜렉션들을 재귀적으로 조인 페칭시키는 경우이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>fetch</literal> construct cannot be used in queries called "
+"using <literal>iterate()</literal> (though <literal>scroll()</literal> can "
+"be used). <literal>Fetch</literal> should be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, "
+"as these operations are based on the result rows which usually contain "
+"duplicates for eager collection fetching, hence, the number of rows is not "
+"what you would expect. <literal>Fetch</literal> should also not be used "
+"together with impromptu <literal>with</literal> condition. It is possible to "
+"create a cartesian product by join fetching more than one collection in a "
+"query, so take care in this case. Join fetching multiple collection roles "
+"can produce unexpected results for bag mappings, so user discretion is "
+"advised when formulating queries in this case. Finally, note that "
+"<literal>full join fetch</literal> and <literal>right join fetch</literal> "
+"are not meaningful."
+msgstr ""
+"(비록 <literal>scroll()</literal>이 사용될 수 있을지라도) <literal>fetch</"
+"literal> 구조체는 <literal>iterate()</literal>를 사용하여 호출되는 질의들 내"
+"에 사용될 수 없음을 노트하라. 이들 오퍼레이션들이 결과 행들에 기초하고 있기 "
+"때문에 <literal>fetch</literal>는 <literal>setMaxResults()</literal> 또는 "
+"<literal>setFirstResult()</literal>과 함께 사용되지 말아야 하며, 그것들(결과 "
+"행들)은 대개 각각의 eager 콜렉션 페칭에 대해 중복들을 포함하므로 많은 행들이 "
+"당신이 기대하는 것이 아니다. <literal>fetch</literal>는 특별한 용도의 "
+"<literal>with</literal> 조건과도 함께 사용될 수 없다.한 개의 질의 내에 하나 "
+"이상의 콜렉션을 조인 페칭시켜 카티젼 곱을 생성시키는 것이 가능한데, 이 경우"
+"에 주의하라. 다중 콜렉션 role들을 조인 페칭시키는 것은 또한 때때로 bag 매핑들"
+"에 대해 예기치 않은 결과들을 가져다주기 때문에, 당신이 이 경우에 당신의 질의"
+"들을 처방하는 방법에 대해 주의하라. 마지막으로 <literal>full join fetch</"
+"literal>와 <literal>right join fetch</literal>는 의미가 없다."
+
+#. Tag: para
+#, fuzzy, 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 in the first query immediately using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"만일 당신이 (바이트코드 방편으로) property-레벨 lazy 페칭을 사용할 경우, "
+"Hibernate로 하여금 <literal>fetch all properties</literal>를 사용하여 (첫 번"
+"째 질의에서) lazy 프로퍼티들을 즉시 페치하도록 강제시키는 것이 가능하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "join 구문의 형식들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL은 두 가지 형식의 연관 조인을 지원한다: <literal>암묵적</literal> 그리고 "
+"<literal>명시적</literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form, that is, where the join keyword is explicitly used in the "
+"from clause. This is the recommended form."
+msgstr ""
+"앞의 절에서 보여진 질의들은 모두 join 키워드가 from 절 내에 명시적으로 사용되"
+"는 <literal>명시적인</literal> 형식을 사용한다. 이것은 권장되는 형식이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"<literal>함축적인</literal> 형식은 join 키워드를 사용하지 않는다. 대신에, 연"
+"관들은 dot(.) 표기를 사용하여 \"dot-참조된다(dereferenced)\". <literal>함축적"
+"인</literal> 조인들은 임의의 HQL 절들내에 나타날 수 있다. <literal>함축적인</"
+"literal> join은 결과되는 SQL 문장에서 inner join으로 귀결된다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Referring to identifier property"
+msgstr "식별자 속성 참조하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr ""
+"개략적으로 말하자면, 엔티티의 식별자 속성을 참조하는 2가지 방법들이 존재한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that the "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"<emphasis>엔티티가 id로 명명된 비식별자 속성을 정의하지 않는다고 가정하면</"
+"emphasis> 특별한 속성(소문자) <literal>id</literal>가 엔티티의 식별자 속성을 "
+"참조하는데 사용될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you can use that property "
+"name."
+msgstr ""
+"만일 그 엔티티가 명명된 식별자 속성을 정의하는 경우, 당신은 그 속성 이름을 사"
+"용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named. Otherwise, "
+"the special <literal>id</literal> property can be used to reference the "
+"identifier property."
+msgstr ""
+"composite 식별자 속성들에 대한 참조들은 동일한 네이밍 규칙들을 따른다. 만일 "
+"그 엔티티가 id로 명명된 비식별자를 갖고 있을 경우, composite 속성은 오직 그것"
+"의 정의된 명명에 의해 참조될 수 있다; 그밖의 경우 특별한 <literal>id</"
+"literal> 속성이 식별자 속성을 참조하는데 사용될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please note that, starting in version 3.2.2, this has changed significantly. "
+"In previous versions, <literal>id</literal> <emphasis>always</emphasis> "
+"referred to the identifier property regardless of its actual name. A "
+"ramification of that decision was that non-identifier properties named "
+"<literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+"노트: 이것은 버전 3.2.2에서 시작될 때 현격하게 변경되었다. 이전 버전들에서, "
+"<literal>id</literal>는 <emphasis>항상</emphasis> 그것의 실제 이름에 관계없"
+"이 식별자 속성을 참조했다. 그 결정의 분기점은 <literal>id</literal>로 명명된 "
+"비식별자 속성들이 Hibernate 질의들 내에서 결코 참조될 수 없었다는 점이었다."
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "select ì ˆ"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider the following:"
+msgstr ""
+"<literal>select</literal> 절은 질의 결과 셋 속에 반환할 객체들과 프로퍼티들"
+"이 어느 것인지를 골라 내도록 강제한다. 다음을 검토하자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. You can express this query more compactly as:"
+msgstr ""
+"질의는 다른 <literal>Cat</literal>들의 <literal>mate</literal>들을 select 할 "
+"것이다. 실제로 당신은 이 질의들을 다음과 같이 보다 축약형으로 표현할수도 있"
+"다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"질의들은 컴포넌트 타입의 프로퍼티들을 포함하는 임의의 값 타입의 프로퍼티들을 "
+"반환할 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>:"
+msgstr ""
+"<literal>Family</literal> 클래스가 적당한 생성자를 갖고 있음을 가정하면, 질의"
+"들은 여러 객체들 그리고/또는 프로퍼티들을 <literal>Object[]</literal> 타입의 "
+"배열로서,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "또는 <literal>List</literal>로서,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Or - assuming that the class <literal>Family</literal> has an appropriate "
+"constructor - as an actual typesafe Java object:"
+msgstr "반환할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"당신은 <literal>as</literal>를 사용하여 select되는 표현식들에 alias들을 할당"
+"할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr ""
+"다음은 <literal>select new map</literal>과 함께 사용될 때 가장 유용하다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"이 질의는 select된 값들에 대한 alias로부터 한 개의 <literal>Map</literal>을 "
+"반환한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "집계 함수들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL queries can even return the results of aggregate functions on properties:"
+msgstr ""
+"HQL 질의들은 프로퍼티들에 대한 집계(aggregate) 함수들의 결과들을 반환할수도 "
+"있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "지원되는 집계 함수들은 다음과 같다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "avg(...), sum(...), min(...), max(...)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "또는 <literal>List</literal>로서,"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "count(...), count(distinct ...), count(all...)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"당신은 select 절 속에 산술 연산자들, 연결 연산자, 그리고 인지된 SQL 함수들을 "
+"사용할 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords can be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"<literal>distinct</literal> 키워드와 all <literal>all</literal>가 사용될 수 "
+"있고 SQL의 경우와 동일한 의미를 갖는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Polymorphic(다형성) 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "다음과 같은 질의:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries can name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. 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 ""
+"은 <literal>Cat</literal>의 인스턴스들 뿐만 아니라, 또한 "
+"<literal>DomesticCat</literal>과 같은 서브클래스들 또한 반환한다. Hibernate "
+"질의들은 <literal>from</literal> 절 내에 <emphasis>임의의</emphasis> 자바 클"
+"래스나 인터페이스를 명명할 수 있다. 질의는 그 클래스를 확장하거나 그 인터페이"
+"스를 구현하는 모든 영속 클래스들의 인스턴스들을 반환할 것이다. 다음 질의는 모"
+"든 영속 객체들을 반환할 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"인터페이스 <literal>Named</literal>는 여러 가지 영속 클래스들에 의해 구현될 "
+"수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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 cannot call these "
+"queries using <literal>Query.scroll()</literal>."
+msgstr ""
+"이들 마지막 두 개의 질의들은 하나 이상의 SQL <literal>SELECT</literal>를 필요"
+"로 할 것임을 노트하라. 이것은 <literal>order by</literal> 절이 정확하게 전체 "
+"결과 셋을 순서지우지 않음을 의미한다.(그것은 또한 당신이 <literal>Query."
+"scroll()</literal>을 사용하여 이들 질의들을 호출할 수 없음을 의미한다)."
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "where ì ˆ"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to refine the list of "
+"instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+"<literal>where</literal> 절은 반환된 인스턴스들의 목록을 제한시키는 것을 당신"
+"에게 허용해준다. 만일 alias가 존재하지 않을 경우, 당신은 이름에 의해 프로퍼티"
+"들을 참조할 수도 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr ""
+"만일 한 개의 alias가 존재할 경우, 하나의 수식어가 붙은 프로퍼티 이름을 사용하"
+"라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "는 'Fritz'로 명명된 <literal>Cat</literal>의 인스턴스들을 반환한다."
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+"는 <literal>Foo</literal>의 <literal>startDate</literal> 프로퍼티와 동일한 "
+"<literal>date</literal> 프로퍼티를 가진 <literal>bar</literal>의 인스턴스가 "
+"존재하는 <literal>Foo</literal>의 모든 인스턴스를 반환할 것이다. 합성 경로 표"
+"현식들은 <literal>where</literal> 절을 매우 강력하게 만들어준다. 다음을 검토"
+"하자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+"이 질의는 테이블 (inner) join을 가진 SQL 질의로 번역된다. 만일 당신이 다음과 "
+"같은 어떤 것을 작성했다면"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr ""
+"당신은 SQL에서 네 개의 테이블 join들을 필요로 하는 하나의 질의로 끝낼 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>=</literal> operator can be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"<literal>=</literal> 연산자는 프로퍼티들 뿐만 아니라 또한 인스턴스들을 비교하"
+"는데 사용될 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> can be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\" /> for more information."
+msgstr ""
+"특별한 프로퍼티(소문자) <literal>id</literal>는 객체의 유일 식별자를 참조하는"
+"데 사용될 수 있다. 추가 정보는 <xref linkend=\"queryhql-identifier-property"
+"\"/>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "두 번째 질의가 효율적이다. 테이블 join이 필요 없다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Properties of composite identifiers can also be used. Consider the following "
+"example where <literal>Person</literal> has composite identifiers consisting "
+"of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+"composite(합성) 식별자들의 프로퍼티들이 또한 사용될 수 있다. "
+"<literal>Person</literal>이 <literal>country</literal>와 "
+"<literal>medicareNumber</literal>로 구성된 composite 식별자를 갖는다고 가정하"
+"자. 식별자 속성들을 참조하는 것과 관련된 추가 정보는 다시 <xref linkend="
+"\"queryhql-identifier-property\"/>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "다시 한번, 두 번째 질의는 테이블 join을 필요로 하지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"queryhql-identifier-property\" /> for more information "
+"regarding referencing identifier properties)"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"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."
+msgstr ""
+"마찬가지로, 특별한 프로퍼티 <literal>class</literal>는 다형적인 영속성"
+"(polymorphic persistence)의 경우에 인스턴스의 판별자(discriminator) 값에 액세"
+"스한다. where 절 속에 삽입된 Java 클래스 이름은 그것의 판별자(discriminator) "
+"값으로 변환될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\" /> for more "
+"information."
+msgstr ""
+"당신은 또한 컴포넌트들 또는 composite 사용자 타입들, 또는 명명된 컴포넌트 타"
+"입들의 속성들을 사용할 수도 있다. 상세한 것은 <xref linkend=\"queryhql-"
+"components\"/>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal> that allows you to express a join in the following "
+"way (where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>):"
+msgstr ""
+"\"임의의\" 타입은 다음 방법으로 join을 표현하는 것을 우리에게 허용해주는, 특"
+"별한 프로퍼티들 <literal>id</literal>와 <literal>class</literal>를 갖는다(여"
+"기서 <literal>AuditLog.item</literal>은 <literal>&lt;any&gt;</literal>로 매핑"
+"된 프로퍼티이다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <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 ""
+"<literal>log.item.class</literal>와 <literal>payment.class</literal>는 위의 "
+"질의 내에서 완전히 다른 데이터베이스 컬럼들의 값들을 참조할 것임을 노트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "표현식들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Expressions used in the <literal>where</literal> clause include the "
+"following:"
+msgstr ""
+"<literal>where</literal> 절 속에 허용되는 표현식들은 당신이 SQL로 작성할 수 "
+"있는 대부분의 종류의 것들을 포함한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "산술 연산자들 <literal>+, -, *, /</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr ""
+"바이너리 비교 연산자들 <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "논리 연산들 <literal>and, or, not</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "그룹핑을 나타내는 괄호들 <literal>( )</literal>, indicating grouping"
+
+#. Tag: para
+#, 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 ""
+"<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>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"\"간단한\" 경우, <literal>case ... when ... then ... else ... end</literal>, "
+"그리고 \"검색인\" 경우, <literal>case when ... then ... else ... end</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"문자열 연결 <literal>...||...</literal> or <literal>concat(...,...)</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, and "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
+
+#. Tag: para
+#, 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(), mod()"
+"</literal>"
+msgstr ""
+"EJB-QL 3.0에 의해 정의된 임의의 함수 또는 오퍼레이터: <literal>substring(), "
+"trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), "
+"mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> 그리고 <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"numeric 값들이나 temporal 값들을 가독성 있는 문자열로 변환시키는 <literal>str"
+"()</literal>"
+
+#. Tag: para
+#, 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 ""
+"<literal>cast(... as ...)</literal>, 여기서 두번 째 아규먼트는 Hibernate 타입"
+"의 이름이고, ANSI <literal>cast()</literal>와 <literal>extract()</literal>가 "
+"기반 데이터베이스에 의해 지원될 경우에는 <literal>extract(... from ...)</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"조인된 인덱싱된 콜렉션의 alias들에 적용되는, HQL <literal>index()</literal> "
+"함수"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions that can be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"콜렉션 값을 가진 경로 표현식들을 취하는 HQL 함수들 : <literal>some, all, "
+"exists, any, in</literal>을 사용하여 정량화 될 수 있는 특별한 "
+"<literal>elements()</literal>와 <literal>indices</literal> 함수들과 함께 "
+"<literal>size(), minelement(), maxelement(), minindex(), maxindex()</"
+"literal>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</"
+"literal>"
+msgstr ""
+"<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</"
+"literal>, <literal>sin()</literal>과 같이 임의의 데이터베이스 지원 SQL 스칼"
+"라 함수"
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "JDBC-스타일 위치 파라미터들 <literal>?</literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"and <literal>:x1</literal>"
+msgstr ""
+"명명된 파라미터들 <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"SQL 리터럴들 <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"Java <literal>public static final</literal> 상수들. <literal>eg.Color.TABBY</"
+"literal>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr ""
+"<literal>in</literal> 과 <literal>between</literal>은 다음과 같이 사용될 수 "
+"있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "그리고 부정형들은 다음과 같이 작성될 수 있다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similarly, <literal>is null</literal> and <literal>is not null</literal> can "
+"be used to test for null values."
+msgstr ""
+"마찬가지로, <literal>is null</literal>과 <literal>is not null</literal>은 "
+"null 값들을 테스트하는데 사용될 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Booleans can be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Boolean들은 Hibernate 구성 내에 HQL 질의 치환들을 선언함으로써 표현식들 내에 "
+"쉽게 사용될 수 있다:"
+
+#. Tag: para
+#, 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 ""
+"이것은 키워드 <literal>true</literal>와 <literal>false</literal> 키워드들을 "
+"이 HQL로부터 번역된 SQL에서 리터럴 <literal>1</literal>과 <literal>0</"
+"literal>으로 대체될 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can test the size of a collection with the special property "
+"<literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+"당신은 특별한 프로퍼티 <literal>size</literal>로서 또는 특별한 <literal>size"
+"()</literal> 함수로서 콜렉션의 사이즈를 테스트할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For indexed collections, you can refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you can refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. For example:"
+msgstr ""
+"인덱싱된 콜렉션들에 대해, 당신은<literal>minindex</literal>와 "
+"<literal>maxindex</literal> 함수들을 사용하여 최소 인덱스과 최대 인덱스를 참"
+"조할 수 있다. 유사하게 당신은 <literal>minelement</literal>와 "
+"<literal>maxelement</literal> 함수를 사용하여 기본 타입을 가진 콜렉션의 최소 "
+"요소 및 최대 요소를 참조할 수 있다."
+
+#. Tag: para
+#, fuzzy, 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):"
+msgstr ""
+"SQL 함수들 <literal>any, some, all, exists, in</literal>은 콜렉션의 요소 또"
+"는 인덱스 세트(<literal>elements</literal> 함수와 <literal>indices</literal> "
+"함수), 또는 서브질의의 결과를 전달했을 때 지원된다(아래를 보라)."
+
+#. Tag: para
+#, fuzzy, 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> - can only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"이들 구조체들-<literal>size</literal>, <literal>elements</literal>, "
+"<literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</"
+"literal>, <literal>minelement</literal>, <literal>maxelement</literal>-는 "
+"Hibernate3에서 where 절 내에서만 사용될 것임을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, and maps) can be referred to "
+"by index in a where clause only:"
+msgstr ""
+"인덱싱 된 콜렉션들의 요소들(배열들, 리스트들, map들)은 인덱스에 의해 참조될 "
+"수 있다(where 절 안에서만):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> can even be an arithmetic "
+"expression:"
+msgstr "<literal>[]</literal> 내부의 표현식은 산술 표현실일 수 있다."
+
+#. Tag: para
+#, fuzzy, 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 ""
+"HQL은 또한 one-to-many 연관 또는 값들을 가진 콜렉션의 요소들에 대해 미리 만들"
+"어진 <literal>index()</literal> 함수를 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr "기본 데이터베이스에 의해 제공되는 Scalar SQL 함수들이 사용될 수도 있다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Consider how much longer and less readable the following query would be in "
+"SQL:"
+msgstr ""
+"당신이 아직 이 모든 것을 납득하지 못한다면, SQL 내에서 다음 질의가 가독성이 "
+"얼마나 많고 적은지를 생각해보라:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>힌트</emphasis> : 다음과 같은 어떤 것"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "order by ì ˆ"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The list returned by a query can be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"질의에 의해 반환된 리스트는 반환된 클래스 또는 컴포넌트들의 프로퍼티에 의해 "
+"순서(ordering)지워질 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"<literal>asc</literal> 옵션 또는 <literal>desc</literal> 옵션은 각각 오름차"
+"순 또는 내림차순 정렬을 나타낸다."
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "group by ì ˆ"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A query that returns aggregate values can be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"aggregate 값들을 반환하는 질의는 반환된 클래스나 컴포넌트들의 프로퍼티에 의"
+"해 그룹지워질 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "또한 <literal>having</literal> 절이 허용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses if they are supported by "
+"the underlying database (i.e., not in MySQL)."
+msgstr ""
+"SQL 함수들과 집계 함수들이 기본 데이터베이스에 의해 지원될 경우(예를 들어 "
+"MySQL은 지원되지 않는다) <literal>having</literal> 절과 <literal>order by</"
+"literal> 절 속에 허용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Neither the <literal>group by</literal> clause nor the <literal>order by</"
+"literal> clause can contain arithmetic expressions. Hibernate also does not "
+"currently expand a grouped entity, so you cannot write <literal>group by "
+"cat</literal> if all properties of <literal>cat</literal> are non-"
+"aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+"<literal>group by</literal> 절도 <literal>order by</literal> 절 어느 것도 산"
+"술 표현식들을 포함할 수 없다는 점을 노트하라. 또한 Hibernate는 현재 그룹지워"
+"진 엔티티를 확장하지 않아서 만일 <literal>cat</literal>의 모든 속성들이 집계"
+"되지 않을 경우에 당신이 <literal>group by cat</literal>을 쓸수 없음을 노트하"
+"라. 당신은 명시적으로 모든 집계되지 않는 속성들을 리스트해야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "서브질의들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate 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 ""
+"subselect들을 지원하는 데이터베이스들의 경우, Hibernate는 질의들 내에 서브질"
+"의들을 지원한다. 서브질의는 괄호로 묶여져야 한다(자주 SQL 집계함수 호출에 의"
+"해). 심지어 서로 상관된 서브질의들(외부 질의 내에서 alias를 참조하는 서브질의"
+"들)이 허용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+"HQL 서브질의들이 select 절 또는 where 절 내에서만 일어날 수 있음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more "
+"information."
+msgstr ""
+"서브질의들은 또한 <literal>row value constructor</literal> 구문을 활용할 수 "
+"있다. 상세한 것은 <xref linkend=\"queryhql-tuple\"/>를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "HQL 예제들"
+
+#. Tag: para
+#, fuzzy, 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 main strengths. The following "
+"example queries are similar to queries that have been used on recent "
+"projects. Please note that most queries you will write will be much simpler "
+"than the following examples."
+msgstr ""
+"Hibernate 질의들은 매우 강력하고 복잡할 수 있다. 사실, 질의 언어의 힘은 "
+"Hibernate의 주요 판매 포인트들 중 하나이다. 다음은 내가 최근의 프로젝트에서 "
+"사용했던 질의들과 매우 유사한 몇몇 예제 질의들이다. 당신이 작성하게 될 대부분"
+"의 질의들은 이것들보다 훨씬 간단하다는 점을 노트하라!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following query returns the order id, number of items, the given minimum "
+"total value and the total value of the order for all unpaid orders for a "
+"particular customer. The results are ordered 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 ""
+"다음 질의는 특정 고객에 대한 모든 지불되지 않은 주문들의 주문 id, 항목들의 개"
+"수, 그리고 주문의 전체 합계값 그리고 주어진 최소 전체 합계를 전체 합계값에 따"
+"라 결과들을 순서지워서 반환한다. 가격 결정에 있어, 그것은 현재의 카타록을 사"
+"용한다. 귀결되는 SQL 질의는 <literal>ORDER</literal>, <literal>ORDER_LINE</"
+"literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal>, "
+"<literal>PRICE</literal> 테이블들에 대한 네 개의 inner 조인들과 한 개의(상관"
+"지워지지 않은) subselect를 갖고 있다."
+
+#. Tag: para
+#, 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: para
+#, 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 ""
+"다음 질의는 현재 사용자에 의해 가장 최근의 상태 변경이 행해졌던 "
+"<literal>AWAITING_APPROVAL</literal> 상태에 있는 모든 지불들을 제외한, 각각"
+"의 상태에 있는 지불들의 개수를 카운트 한다. 그것은 <literal>PAYMENT</"
+"literal>, <literal>PAYMENT_STATUS</literal>, <literal>PAYMENT_STATUS_CHANGE</"
+"literal> 테이블들에 대한 두 개의 inner 조인들과 하나의 상관관계 지워진 "
+"subselect를 가진 SQL 질의로 변환된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the <literal>statusChanges</literal> collection was mapped as a list, "
+"instead of a set, the query would have been much simpler to write."
+msgstr ""
+"만일 내가 <literal>statusChanges</literal> 콜렉션을 set가 아닌 list로 매핑했"
+"다면, 그 질의는 작성하기가 훨씬 더 간단했을 것이다."
+
+#. Tag: para
+#, 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 ""
+"다음 질의는 현재의 사용자가 속해 있는 조직의 모든 계정들과 지불되지 않은 지불"
+"들을 반환하는데 MS SQL Server <literal>isNull()</literal> 함수를 사용한다. 그"
+"것은 <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, "
+"<literal>ORGANIZATION</literal>, <literal>ORG_USER</literal> 테이블들에 대한 "
+"세 개의 inner 조인들, 하나의 outer 조인, 그리고 하나의 subselect를 가진 한 개"
+"의 SQL 질의로 번역된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"몇몇 데이터베이스들의 경우, 우리는 (상관관계 지워진) subselect를 없앨 필요가 "
+"있을 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "대량 update와 delete"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\" /> for more information."
+msgstr ""
+"HQL은 이제 <literal>update</literal>, <literal>delete</literal> 그리고 "
+"<literal>insert ... select ...</literal> 문장들을 지원한다. 상세한 것은 "
+"<xref linkend=\"batch-direct\"/>를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "팁들 &amp; 트릭들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr ""
+"당신은 실제로 질의 결과들을 반환하지 않고서 그것들(질의 결과들)의 개수를 카운"
+"트할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+"콜렉션의 크기에 따라 결과를 순서(ordering)지우려면, 다음 질의를 사용하라:"
+
+#. Tag: para
+#, 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 ""
+"만일 당신의 데이터베이스가 subselect들을 지원할 경우, 당신은 당신의 질의의 "
+"where 절 내에 selection 사이즈에 대한 조건을 위치지울 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr ""
+"만일 당신의 데이터베이스가 subselect를 지원하지 않을 경우, 다음 질의를 사용하"
+"라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As this solution cannot return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"이 해결책이 inner 조인 때문에 0개의 메시지를 가진 <literal>User</literal>를 "
+"반환할 수 없으므로, 다음 형식이 또한 유용하다:"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+"하나의 JavaBean의 프로퍼티들은 명명된 질의 파라미터들에 바인드될 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"콜렉션들은 필터를 가진 <literal>Query</literal> 인터페이스를 사용하여 쪼매김"
+"하는 것이 가능하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+"콜렉션 요소들은 질의 필터를 사용하여 순서(ordering)지워지거나 그룹지워질 수 "
+"도 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr "당신은 콜렉션을 초기화 하지 않고서 그것(콜렉션)의 크기를 찾을 수 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "컴포넌트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Components can be used similarly to the simple value types that are used in "
+"HQL queries. They can appear in the <literal>select</literal> clause as "
+"follows:"
+msgstr ""
+"컴포넌트들은 단지 간단한 값 유형들이 HQL 질의들 내에 사용될 수 있는 모든 방법"
+"으로 사용될 수 있다. 그것들은 <literal>select</literal> 절 내에 나타날 수 있"
+"다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"여기서 Person의 name 속성은 컴포넌트이다. 컴포넌트들은 또한 <literal>where</"
+"literal> 절 내에 사용될 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr "컴포넌트들은 또한 <literal>order by</literal> 절 내에 사용될 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"컴포넌트들에 대한 또 다른 공통적인 사용은 <xref linkend=\"queryhql-tuple"
+"\">row value constructors</xref>에 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "Row value constructor 구문"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax, sometimes referred to AS <literal>tuple</literal> syntax, even "
+"though the underlying database may not support that notion. Here, we are "
+"generally referring to multi-valued comparisons, typically associated with "
+"components. Consider an entity Person which defines a name component:"
+msgstr ""
+"HQL은 ANSI SQL <literal>row value constructor</literal> 구문(종종 "
+"<literal>tuple</literal> 구문이라 명명된다)의 사용을 지원한다. 비록 데이터베"
+"이스가 그 개념을 지원하지 않을지라도 그러하다. 여기서 우리는 전형적으로 컴포"
+"넌트들과 연관되어 있는 다중-값 비교들을 일반적으로 언급하고 있다. name 컴포넌"
+"트를 정의하는 Person 엔티티를 검토하자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"That is valid syntax although it is a little verbose. You can make this more "
+"concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+"비록 약간 장황스럽지만 그것은 유효한 구문이다. 이것을 약간 더 간결하게 만들"
+"고 <literal>row value constructor</literal> 구문을 사용하는 것이 좋다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr ""
+"<literal>select</literal>절 내에 이것을 지정하는 것이 또한 유용할 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Using <literal>row value constructor</literal> syntax can also be beneficial "
+"when using subqueries that need to compare against multiple values:"
+msgstr ""
+"<literal>row value constructor</literal> 구문을 사용하는 또 다른 경우는 다중 "
+"값들에 대해 비교할 필요가 있는 서브 질의들을 사용할 때이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax, is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"만일 당신이 이 구문을 사용하고자 원할 경우에 고려해야 할 한 가지는 질의가 메"
+"타데이터 내에 있는 컴포넌트 서브-속성들의 순서에 종속될 것이라는 점이다."
+
+#~ msgid "inner join"
+#~ msgstr "inner join"
+
+#~ msgid "left outer join"
+#~ msgstr "left outer join"
+
+#~ msgid "count(*)"
+#~ msgstr "count(*)"
+
+#~ msgid ""
+#~ "Most of the time, you will need to assign an <emphasis>alias</emphasis>, "
+#~ "since you will want to refer to the <literal>Cat</literal> in other parts "
+#~ "of the query."
+#~ msgstr ""
+#~ "대개 당신은 한 개의 <emphasis>alias</emphasis>를 할당할 필요가 있을 것이"
+#~ "다. 왜냐하면 당신은 질의의 다른 부분들에서 <literal>Cat</literal>을 참조하"
+#~ "고자 원할 것이기 때문이다."
+
+#~ msgid "or as an actual typesafe Java object,"
+#~ msgstr "또는 실제 typesafe 자바 객체로서,"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,969 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "Native SQL"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can 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 <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"당신은 또한 당신의 데이터베이스의 native SQL dialect로 질의들을 표현할 수도 "
+"있다. 당신이 오라클의 질의 힌트들 또는 <literal>CONNECT</literal> 키워드와 같"
+"은 데이터베이스 지정적인 특징들을 활용하고자 원할 경우에 이것이 유용하다. 그"
+"것은 또한 직접적인 SQL/JDBC 기반의 어플리케이션으로부터 Hibernate로의 보다 명"
+"료한 이전 경로를 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL, including stored "
+"procedures, for all create, update, delete, and load operations."
+msgstr ""
+"Hibernate3은 또한 모든 create, update, delete, load 오퍼레이션들에 대해 (내"
+"장 프로시저들을 포함하여) 손으로 작성된 SQL을 지정하는 것을 당신에게 허용해준"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "<literal>SQLQuery</literal> 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following sections describe how to use this "
+"API for querying."
+msgstr ""
+"native SQL 질의들의 실행은 <literal>SQLQuery</literal> 인터페이스를 통해 제어"
+"되며, 그것은 <literal>Session.createSQLQuery()</literal>을 호출하여 획득된"
+"다. 다음은 이 API를 질의에 사용하는 방법을 설명한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "스칼라 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr "가장 기본적인 SQL 질의는 스칼라들(값들)의 목록을 얻는 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These will return a List of Object arrays (Object[]) with scalar values for "
+"each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"이것들은 둘다 CATS 테이블 내에 있는 각각의 컬럼에 대한 스칼라 값들을 가진 "
+"Object 배열들의 List를 반환할 것이다. Hibernate는 반환되는 스칼라 값들의 실"
+"제 순서와 타입들을 도출하는데 ResultSetMetadata를 사용할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal>, or "
+"simply to be more explicit in what is returned, one can use "
+"<literal>addScalar()</literal>:"
+msgstr ""
+"<literal>ResultSetMetadata</literal> 사용의 오버헤드를 피하거나 간단하게는 반"
+"환되는 것을 보다 명시적이게끔 하기 위해 우리는 <literal>addScalar()</literal>"
+"를 사용할 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "이 질의는 다음을 지정했다:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "SQL 질의 문자열"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "반환할 컬럼들과 타입들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This will return Object arrays, but now it will not use "
+"<literal>ResultSetMetadata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"이것은 여전히 Object 배열들을 반환할 것이지만, 이제 그것은 "
+"<literal>ResultSetMetdata</literal>를 사용하지 않을 것이고 대신에 기반 결과셋"
+"으로부터 ID, NAME 그리고 BIRTHDATE 컬럼을 각각 Long, String 그리고 Short 타입"
+"으로 반환할 것이다. 심지어 그 질의가 <literal>*</literal>를 사용하고 세 개의 "
+"열거된 컬럼들 보다 더 많은 것을 반환할 수 있을지라도, 이것은 또한 오직 이들 "
+"세 개의 컬럼들 만이 반환될 것임을 의미한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr "스칼라들 중 몇몇 또는 전부에 대한 타입 정보를 남겨두는 것이 가능하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to determine the type of NAME "
+"and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+"이것은 본질적으로 앞의 것과 동일한 질의이지만, 이제 "
+"<literal>ResultSetMetaData</literal>는 ID의 타입이 명시적으로 지정되어 있으므"
+"로 NAME과 BIRTHDATE의 타입을 결정하는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped, or does not result in the expected type, it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"java.sql.Types returned from ResultSetMetaData이 Hibernate 타입들로 매핑되는 "
+"방법은 Dialect에 의해 제어된다. 만일 특정 타입이 매핑되지 않거나 예상되는 타"
+"입으로 귀결되지 않을 경우에 Dialect 내에 있는 "
+"<literal>registerHibernateType</literal>에 대한 호출들을 통해 그것을 맞춤화 "
+"시키는 것이 가능하다."
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "Entity 질의들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"위의 질의들은 스칼라 값들을 반환하는 것, 결과셋들로부터 \"원래의\" 값들을 기"
+"본적으로 반환하는 것에 대한 전부였다. 다음은 <literal>addEntity()</literal>"
+"를 통해 native sql 질의로부터 엔티티 객체들을 얻는 방법을 보여준다."
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "그 질의에 의해 반환되는 엔티티"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Cat이 컬럼 ID, NAME 그리고 BIRTHDATE로서 매핑된다고 가정하면, 위의 질의들은 "
+"둘다 각각의 요소가 하나의 Cat 엔티티인 하나의 List를 반환할 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"만일 그 엔티티가 또 다른 엔티티에 대해 <literal>many-to-one</literal>로 매핑"
+"되어 있다면 또한 native 질의를 실행할 때 이것을 반환하는 것이 필수적고, 그 밖"
+"의 경우 데이터베이스 지정적인 \"컬럼이 발견되지 않았습니다\" 오류가 일어날 것"
+"이다. 추가적인 컬럼은 * 표기를 사용할 자동적으로 반환될 것이지만, 우리는 다"
+"음 <literal>Dog</literal>에 대한 <literal>many-to-one</literal> 예제에서처럼 "
+"명시적인 것을 더 선호한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "이것은 cat.getDog()이 고유하게 기능하는 것을 허용한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "연관들과 콜렉션들을 처리하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"프락시를 초기화 시킴에 있어 가능한 특별한 라운드트립을 피하기 위해서 "
+"<literal>Dog</literal>에서 eagerly join시키는 것이 간으하다. 이것은 "
+"<literal>addJoin()</literal> 메소드를 통해 행해지는데, 그것은 연관이나 콜렉"
+"션 내에서 조인시키는 것을 당신에게 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example, the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that you added an alias name (\"cat\") to "
+"be able to specify the target property path of the join. It is possible to "
+"do the same eager joining for collections, e.g. if the <literal>Cat</"
+"literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"이 예제에서 반환되는 <literal>Cat</literal>들은 데이터베이스에 대한 임의의 특"
+"별한 라운드크립 없이 전체적으로 초기화된 그것들의 <literal>dog</literal> 프로"
+"퍼티를 갖는다. 우리가 join의 대상 프로퍼티 경로를 지정하는 것을 가능하도록 하"
+"기 위해 하나의 alias 이름(\"cat\")을 추가했음을 주지하라. 대신에 예를 들어 "
+"<literal>Cat</literal>이 <literal>Dog</literal>에 대해 one-to-many를 가질 경"
+"우, 콜렉션들에 대해 동일한 eager joining을 행하는 것이 가능하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"At this stage you are reaching the limits of what is possible with native "
+"queries, without starting to enhance the sql queries to make them usable in "
+"Hibernate. Problems can arise when returning multiple entities of the same "
+"type or when the default alias/column names are not enough."
+msgstr ""
+"이 단계에서 우리는 Hibernate에서 native 질의들을 사용가능하도록 만들기 위해 "
+"sql 질의들을 강화시키지는 것을 시작하지 않고서도 native 질의들로서 가능한 것"
+"의 한계에 도달하고 있다; 문제점들은 동일한 타입의 여러 엔티티들을 반환할 때 "
+"또는 디폴트 alias/column 이름들이 충분하지 않을 때 발생하기 시작한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "여러 개의 엔티티들을 반환하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Until now, the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries that join multiple tables, since the same column names can "
+"appear in more than one table."
+msgstr ""
+"지금까지 결과 셋 컬럼 이름들은 매핑 문서 내에 지정된 컬럼 이름들과 동일하다"
+"고 가정되어 있다. 동일한 컬럼이 하나 이상의 테이블 내에서 나타날 수 있기 때문"
+"에, 이것은 여러 개의 테이블들을 조인시키는 SQL 질의들에 대해 문제가 될 수 있"
+"다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr "컬럼 alias 주입은 다음 질의(아마 실패할 것이다)에서 필요하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The query was intended to return two Cat instances per row: a cat and its "
+"mother. The query will, however, fail because there is a conflict of names; "
+"the instances are mapped to the same column names. Also, on some databases "
+"the returned column aliases will most likely be on the form \"c.ID\", \"c."
+"NAME\", etc. which are not equal to the columns specified in the mappings "
+"(\"ID\" and \"NAME\")."
+msgstr ""
+"이 질의의 목적은 단위 행 당 두 개의 Cat 인스턴스들, 하나의 cat 그리고 그것의 "
+"mother를 반환하는 것이다. 왜냐하면 그것들이 동일한 컬럼 이름들로 매핑되어 있"
+"기 때문에 이것은 실패할 것이고 데이베이스 상에서 반환된 컬럼 alias들은 아마 "
+"매핑들 내에 지정된 컬럼들(\"ID\" 와 \"NAME\")과 같지 않은 \"c.ID\", \"c.NAME"
+"\" 등의 형식일 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr "다음 형식은 컬럼 이름 중복 취약점을 갖지 않는다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"컬럼 alias들을 주입하기 위한 Hibernate용 placeholder들을 가진 SQL 질의 문자열"
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "그 질의에 의해 반환되는 엔티티들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you can list the columns explicitly, but even "
+"in this case Hibernate injects the SQL column aliases for each property. The "
+"placeholder for a column alias is just the property name qualified by the "
+"table alias. In the following example, you retrieve Cats and their mothers "
+"from a different table (cat_log) to the one declared in the mapping "
+"metadata. You can even use the property aliases in the where clause."
+msgstr ""
+"위에 사용된 {cat.*} 과 {mother.*} 표기는 \"모든 프로퍼티들\"에 대한 생략이"
+"다. 다른 방법으로 당신은 컬럼들을 명시적으로 열거할 수도 있지만, 이 경우에 우"
+"리는 Hibernate로 하여금 SQL 컬럼 alias들을 각각의 컬럼에 주입시키도록 강제한"
+"다. 컬럼 alias를 위한 placeholder는 단지 그 테이블 alias에 의해 수식된 프로퍼"
+"티 이름이다. 다음 예제에서, 우리는 다른 테이블(cat_log)로부터 매핑 메타데이"
+"터 내에 선언된 것으로의 Cat들과 그것들의 mother들을 검색한다. 우리는 우리가 "
+"좋다면 심지어 where 절 내에 프로퍼티 alias를 사용할 수도 있음을 주지하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "alias 참조와 프로퍼티 참조"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In most cases the above alias injection is needed. For queries relating to "
+"more complex mappings, like composite properties, inheritance "
+"discriminators, collections etc., you can use specific aliases that allow "
+"Hibernate to inject the proper aliases."
+msgstr ""
+"대부분의 경우에 위의 alias 주입이 필요하지만, composite 프로퍼티들, 상속 판별"
+"자들 (inheritance discriminators), 콜렉션 등과 같은 보다 복잡한 매핑들과 관련"
+"된 질의들의 경우에는 고유한 alias들을 주입시키는 것을 Hibernate에게 허용하는"
+"데 사용될 몇몇 특별한 alias들이 존재한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table shows the different ways you can use the alias "
+"injection. Please note that the alias names in the result are simply "
+"examples; each alias will have a unique and probably different name when "
+"used."
+msgstr ""
+"다음 테이블은 alias 주입을 사용하는 다른 가능성들을 보여준다. 노트: 결과 내"
+"에 있는 alias 이름들이 예제이며, 각각의 alias는 사용될 때 하나의 유일한 이름"
+"과 아마 다른 이름을 가질 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "alias 주입 이름들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "설명"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "구문"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "예제"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "간단한 프로퍼티"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "{[aliasname].[propertyname]"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "A_NAME as {item.name}"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "composite 프로퍼티"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "{[aliasname].[componentname].[propertyname]}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+msgstr "CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}"
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "엔티티의 판별자(Discriminator)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "{[aliasname].class}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "DISC as {item.class}"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "엔티티의 모든 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "{[aliasname].*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "<literal>SQLQuery</literal> 사용하기"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "콜렉션 키"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "{[aliasname].key}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "ORGID as {coll.key}"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "콜렉션의 id"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "{[aliasname].id}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "EMPID as {coll.id}"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "콜렉션의 요소"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "{[aliasname].element}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "XID as {coll.element}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "property of the element in the collection"
+msgstr "콜렉션 내에 있는 요소의 프로퍼티"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "{[aliasname].element.[propertyname]}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "NAME as {coll.element.name}"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "콜렉션 내에 있는 요소의 모든 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "{[aliasname].element.*}"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "{coll.element.*}"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the the collection"
+msgstr "콜렉션의 모든 프로퍼티들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "<literal>SQLQuery</literal> 사용하기"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "non-managed 엔티티들을 반환하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native SQL queries, allowing "
+"it to return non-managed entities."
+msgstr ""
+"native sql 질의에 ResultTransformer를 적용하는 것이 가능하다. 예를 들어 non-"
+"managed 엔티티들을 반환하기 위해 ResultTransformer를 허용하는 것."
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "결과 변환자(transformer)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"위의 질의는 초기화되어 있고 NAME과 BIRTHNAME의 값들을 <literal>CatDTO</"
+"literal>의 대응하는 프로퍼티들과 필드들 속으로 주입시킨 <literal>CatDTO</"
+"literal>의 리스트를 반환할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "상속 처리하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Native SQL queries which query for entities that are mapped as part of an "
+"inheritance must include all properties for the baseclass and all its "
+"subclasses."
+msgstr ""
+"상속의 부분으로서 매핑되는 엔티티들을 질의하는 native sql 질의들은 baseclass"
+"의 모든 프로퍼티들을 포함해야 하고 그 모든 것이 서브클래스화 되어야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "파라미터들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+"Native sql 질의들은 위치 파라미터들 뿐만 아니라 명명된 파라미터들을 지원한다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "명명된 SQL 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Named SQL queries can be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, you do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"명명된 SQL 질의들은 HQL 질의와 동일한 방법으로 매핑 문서 속에 정의될 수 있고 "
+"정확하게 호출될 수도 있다. 이 경우에, 우리는 <literal>addEntity()</literal> "
+"호출을 필요로 하지 <emphasis>않는다</emphasis>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>&lt;return-join&gt;</literal> element is use to join "
+"associations and the <literal>&lt;load-collection&gt;</literal> element is "
+"used to define queries which initialize collections,"
+msgstr ""
+"<literal>&lt;return-join&gt;</literal> 요소와 <literal>&lt;load-"
+"collection&gt;</literal> 요소는 연관들을 조인시키고 콜렉션들을 각각 초기화 시"
+"키는 질의들을 정의하는데 사용된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> "
+"element:"
+msgstr ""
+"명명된 SQL 질의는 스칼라 값을 반환할수도 있다. 당신은 <literal>&lt;return-"
+"scalar&gt;</literal> 요소를 사용하여 컬럼 alias와 Hibernate 타입을 선언해야 "
+"한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can externalize the resultset mapping information in a <literal>&lt;"
+"resultset&gt;</literal> element which will allow you to either reuse them "
+"across several named queries or through the <literal>setResultSetMapping()</"
+"literal> API."
+msgstr ""
+"당신은 여러 개의 명명된 질의들을 가로질러 재사용하거나 "
+"<literal>setResultSetMapping()</literal> API를 통해 결과셋 매핑정보들을 재사"
+"용하기 위해 <literal>&lt;resultset&gt;</literal> 요소 속에 결과셋 매핑 정보들"
+"을 구체화 시킬 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can, alternatively, use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"다른방법으로 당신은 당신의 hbm 파일들 내에 직접 자바 코드로 된 결과셋 매핑 정"
+"보를 사용할 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr "명시적으로 column/alias 이름들을 지정하는데 return-property 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can explicitly tell Hibernate what column aliases to use with "
+"<literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}"
+"</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+"Hibernate로 하여금 그것 자신의 alias들을 끼워넣도록 하기 위해 <literal>{}</"
+"literal>-구문을 사용하는 것 대신에, <literal>&lt;return-property&gt;</"
+"literal>로서 당신은 사용할 컬럼 alias들이 무엇인지를 Hibernate에게 명시적으"
+"로 알려줄 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>&lt;return-property&gt;</literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which cannot "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal>&lt;return-property&gt;</literal>는 또한 다중 컬럼들에 대해 동작한"
+"다. 이것은 다중-컬럼 프로퍼티들에 대한 fine grained 제어를 허용할 수 없는 "
+"<literal>{}</literal>-구문을 가진 제약을 해결해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this example <literal>&lt;return-property&gt;</literal> was used in "
+"combination with the <literal>{}</literal>-syntax for injection. This allows "
+"users to choose how they want to refer column and properties."
+msgstr ""
+"이 예제에서 우리는 끼워넣기(injection)를 위해 <literal>{}</literal>-구문과 함"
+"께 <literal>&lt;return-property&gt;</literal>를 사용했음을 주목하라. 사용자들"
+"이 컬럼과 프로퍼티들을 참조하고자 원하는 방법을 선택하는 것을 사용자들에게 허"
+"용해줌으로써."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal>&lt;return-"
+"discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+"만일 당신의 매핑이 한 개의 판별자(discriminator )를 가질 경우 당신은 판별자 "
+"컬럼을 지정하는데 <literal>&lt;return-discriminator&gt;</literal>를 사용해야 "
+"한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "질의를 위한 내장 프로시저 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate3 provides support for queries via stored procedures and functions. "
+"Most of the following documentation is equivalent for both. The stored "
+"procedure/function must return a resultset as the first out-parameter to be "
+"able to work with Hibernate. An example of such a stored function in Oracle "
+"9 and higher is as follows:"
+msgstr ""
+"Hibernate 3은 내장 프로시저들과 함수들을 통한 질의 지원을 도입한다. 대부분의 "
+"다음 문서는 양자 모두에 동일하게 적용된다. 내장 프로시저/함수는 Hibernate와 "
+"동작하는 것이 가능하도록 첫 번째 out-파라미터로서 한 개의 결과셋을 반환해야 "
+"한다. Oracle9 이상의 버전에서 그런 내장 프로시저에 대한 예제는 다음과 같다:"
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+"Hibernate에서 이 질의를 사용하기 위해 당신은 하나의 명명된 질의(a named "
+"query)를 통해 그것을 매핑할 필요가 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Stored procedures currently only return scalars and entities. <literal>&lt;"
+"return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are "
+"not supported."
+msgstr ""
+"내장 프로시저들은 현재 스칼라들과 엔티티들 만을 반환함을 주목하라. "
+"<literal>&lt;return-join&gt;</literal>ê³¼ <literal>&lt;load-collection&gt;</"
+"literal>은 지원되지 않는다."
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "내장 프로시저들을 사용하는 규칙들/제약들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You cannot use stored procedures with Hibernate unless you follow some "
+"procedure/function rules. If they do not follow those rules they are not "
+"usable with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Hibernate에서 내장 프로시저들을 사용하기 위해서 프로시저들/함수들은 다음 몇"
+"몇 규칙들을 따라야 한다. 만일 그것들이 그들 규칙들을 따르지 않을 경우 그것들"
+"은 Hibernate와 함께 사용 불가능하다. 만일 당신이 여전히 이들 프로시저들을 사"
+"용하고자 원할 경우, 당신은 <literal>session.connection()</literal>을 통해 그"
+"것들을 실행시켜야 한다. 데이터베이스 벤더들이 다른 내장 프로시저 의미론/구문"
+"을 갖고 있기 때문에, 규칙들은 각각의 데이터베이스에 따라 차이가 난다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Stored procedure queries cannot be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"내장 프로시저 질의들은 <literal>setFirstResult()/setMaxResults()</literal>로"
+"서 쪽매김 될 수 없다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+"권장되는 호출 형식은 표준 SQL92이다: <literal>{ ? = call functionName(&lt;"
+"parameters&gt;) }</literal> 또는 <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native 호출 구문은 지원되지 않는다."
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "Oracle의 경우 다음 규칙들이 적용된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type. See Oracle "
+"literature for further information."
+msgstr ""
+"하나의 함수는 하나의 결과 셋을 반환해야 한다. 프로시저의 첫 번째 파라미터는 "
+"하나의 결과 셋을 반환하는 하나의 <literal>OUT</literal>이어야 한다. 이것은 "
+"Oracle 9 또는 10에서 하나의 <literal>SYS_REFCURSOR</literal>를 사용하여 행해"
+"진다. Oracle에서 당신은 <literal>REF CURSOR</literal> 타입을 정의할 필요가 있"
+"는데, Oracle 보고서를 보라."
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "Sybase 또는 MS SQL server의 경우 다음 규칙들이 적용된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can "
+"return multiple result sets and update counts, Hibernate will iterate the "
+"results and take the first result that is a result set as its return value. "
+"Everything else will be discarded."
+msgstr ""
+"프로시저는 한 개의 결과 셋을 반환해야 한다. 이들 서버들이 여러 개의 결과셋들"
+"과 업데이트 카운트들을 반환 할수 있다/할 것이이므로, Hibernate는 결과들을 반"
+"복 순환할 것이고 그것의 반환 값으로서 하나의 결과 셋인 첫 번째 결과를 취할 것"
+"이다. 그 밖의 모든 것은 폐기될 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"만일 당신이 당신의 프로시저 내에 <literal>SET NOCOUNT ON</literal>을 이용 가"
+"능하게 할 수 있다면 그것은 아마 보다 효율적이게 될 것이지만 이것은 필요 조건"
+"이 아니다."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr "create, update 그리고 delete를 위한 맞춤형 SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL for create, update, and delete operations. The "
+"SQL can be overridden at the statement level or inidividual column level. "
+"This section describes statement overrides. For columns, see <xref linkend="
+"\"mapping-column-read-and-write\" />."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The class and collection persisters in Hibernate already contain a set of "
+"configuration time generated strings (insertsql, deletesql, updatesql etc.). "
+"The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-"
+"delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override "
+"these strings:"
+msgstr ""
+"Hibernate3는 create, update, delete 오퍼레이션들을 위한 맞춤형 문장들을 사용"
+"할 수 있다. Hibernate에서 클래스와 콜렉션 영속자들은 구성 시에 생성된 문자열"
+"들의 집합(insertsql, deletesql, updatesql 등)을 이미 포함하고 있다. "
+"<literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-delete&gt;</"
+"literal>, <literal>&lt;sql-update&gt;</literal> 매핑 태그들은 이들 문자열들"
+"을 오버라이드 시킨다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you can use any dialect "
+"you like. This will reduce the portability of your mapping if you use "
+"database specific SQL."
+msgstr ""
+"SQL이 당신의 데이터베이스 내에서 직접 실행되어서, 당신이 좋아하는 임의의 "
+"dialect를 사용하는 것이 자유롭다. 만일 당신이 데이터베이스 지정적인 SQL을 사"
+"용할 경우 이것은 물론 당신의 매핑의 이식성을 감소시킬 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"만일 <literal>callable</literal> 속성이 설정되면 내장 프로시저들이 지원된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The order of the positional parameters is vital, as they must be in the same "
+"sequence as Hibernate expects them."
+msgstr ""
+"위치 파라미터들은 Hibernate가 그것들을 기대하는 것과 같은 순서가 되어야 하므"
+"로, 위치 파라미터들의 순서는 현재 절대적으로 중요하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can view the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled, Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. To view the expected sequence, do not include "
+"your custom SQL in the mapping files, as this will override the Hibernate "
+"generated static SQL."
+msgstr ""
+"당신은 <literal>org.hiberate.persister.entity</literal> 레벨로 디버그 로깅을 "
+"사용 가능하게 함으로써 예상된 순서를 볼 수 있다. 이 레벨을 이용 가능하게 하"
+"면 Hibernate는 엔티티들을 생성시키고, 업데이트하고, 삭제하는데 사용되는 정적"
+"인 SQL을 출력할 것이다. (예상되는 결과를 보려면, Hibernate 생성된 정적인 sql"
+"을 오버라이드 시키게 매핑 파일들 속에 당신의 맞춤형 SQL을 포함시키지 않도록 "
+"염두에 두라.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The stored procedures are in most cases required to return the number of "
+"rows inserted, updated and deleted, as Hibernate has some runtime checks for "
+"the success of the statement. Hibernate always registers the first statement "
+"parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+"Hibernate가 문장의 성공을 위해 몇몇 실행 시 체크들을 행하므로, 내장 프로시저"
+"들은 대부분의 경우들(읽기:다른 경우들 보다 그것을 더 잘 행한다)에서 insert되"
+"고/업데이트되고/삭제된 행들의 개수를 반환하는데 필요하다. Hibernate는 항상 "
+"CUD 오퍼레이션들에 대한 숫자 출력 파라미터로서 첫 번째 문장 파라미터를 등록시"
+"킨다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "로딩을 위한 맞춤형 SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also declare your own SQL (or HQL) queries for entity loading. As "
+"with inserts, updates, and deletes, this can be done at the individual "
+"column level as described in <xref linkend=\"mapping-column-read-and-write"
+"\" /> or at the statement level. Here is an example of a statement level "
+"override:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You can "
+"reference this named query in a class mapping:"
+msgstr ""
+"이것은 앞서 논의했듯이 단지 명명된 질의 선언이다. 당신은 class 매핑 속에 이 "
+"명명된 질의를 참조할 수 있다:"
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "이것은 심지어 내장 프로시저들에 동작한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr "당신은 콜렉션 로딩을 위한 한 개의 질의를 정의할 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"당신은 심지어 조인 페칭에 의해 하나의 콜렉션을 로드시키는 하나의 엔티티를 정"
+"의할 수 있다:"
+
+#~ msgid "{item.*}"
+#~ msgstr "{item.*}"
+
+#~ msgid "{coll.*}"
+#~ msgstr "{coll.*}"
+
+#, fuzzy
+#~ msgid ""
+#~ "You can also declare your own SQL (or HQL) queries for entity loading:"
+#~ msgstr ""
+#~ "당신은 또한 엔티티 로딩을 위한 당신 자신의 SQL (또는 HQL)을 선언할 수도 있"
+#~ "다:"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/quickstart.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/quickstart.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/quickstart.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,474 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=utf-8\n"
+#: index.docbook:5
+msgid "appended paragraph 1"
+msgstr "Tomcat으로 빠른 시작"
+
+#: index.docbook:8
+msgid "appended paragraph 2"
+msgstr "Hibernate 시작하기"
+
+#: index.docbook:10
+msgid "appended paragraph 3"
+msgstr "이 튜토리얼은 웹 기반의 어플리케이션 용 Apache Tomcat 서블릿 컨테이너에 대한 Hibernate 3.0 셋업을 설명한다(우리는 버전 4.1을 사용했다. 5.0에 대한 차이점들은 적을 것이다). Hibernate는 모든 주요 J2EE 어플리케이션 서버들의 관리되는 환경에서 잘 동작하고, 또는 심지어 스탠드얼론 어플리케이션들에서도 잘 동작 한다. 이 튜토리얼에 사용되는 데이터베이스 시스템은 PostgreSQL 7.4이고, 다른 데이터베이스에 대한 지원은 단지 Hibernate SQL dialect 구성과 커넥션 프로퍼티들을 변경시키는 것에만 관계된다."
+
+#: index.docbook:18
+msgid "appended paragraph 4"
+msgstr "먼저 우리는 모든 필수적인 라이브러리들을 Tomcat 설치 장소에 복사해야 한다. 우리는 이 튜토리얼을 위해 별도의 웹 컨텍스트(<literal>webapps/quickstart</literal>)를 사용하며, 따라서 우리는 전역 라이브러리 검색 경로 (<literal>TOMCAT/common/lib</literal>)와 <literal>webapps/quickstart/WEB-INF/lib</literal> (JAR 파일들의 경우)와 <literal>webapps/quickstart/WEB-INF/classes</literal> 내 에 있는 컨텍스트 레벨에서 클래스로더 양자를 고려해야 한다. 우리는 두 개의 클래스로더 레벨들을 전역 classpath와 컨텍스트 classpath로서 언급한다."
+
+#: index.docbook:27
+msgid "appended paragraph 5"
+msgstr "이제 라이브러리들을 두 개의 classpath들에 복사하라:"
+
+#: index.docbook:33
+msgid "appended paragraph 6"
+msgstr "데이터베이스 용 JDBC 드라이버를 전역 classpath로 복사하라. 이것은 Tomcat에 번들로구성된 DBCP 커넥션 풀 소프트웨어에 필요하다. Hibernate는 데이터베이스 상에서 SQL을 실행시키는데 JDBC 커넥션들을 사용하므로, 당신은 풀링된 JDBC 커넥션들을 제공해야 하거나, 직접 지원되는 풀들(C3P0, Proxool) 중 하나를 사용하기 위해 Hibernate를 구성해야 한다. 이 튜토리얼을 위해, (PostgreSQL 7.4와 JDK 1.4용) <literal>pg74jdbc3.jar</literal> 라이브러리를 전역 classloaders 경로로 복사하라. 만일 당신이 다른 데이터베이스를 사용하고자 원할 경우, 간단하게 그것의 적절한 JDBC 드라이버를 복사하라."
+
+#: index.docbook:43
+msgid "appended paragraph 7"
+msgstr "그 밖의 어떤 것을 Tomcat 내의 전역 클래스로더 경로에 복사하지 말라. 또는 당신은 Log4j, commons-logging 그리고 다른 것들을 포함하는 여러 가지 도구들에 관련된 문제점들을 얻게 될 것이다. 각각의 웹 어플리케이션에 대해 컨텍스트 classpath를 사용하라. 즉 라이브러리들을 <literal>WEB-INF/lib</literal>에 복사하고, 당신 자신의 클래스들과 구성 파일들/프로퍼티 파일들을 <literal>WEB-INF/classes</literal>에 복사하라. 두 디렉토리들 양자는 디폴트로 컨텍스트 classpath 내에 있다."
+
+#: index.docbook:52
+msgid "appended paragraph 8"
+msgstr "Hibernate는 JAR 라이브러리로서 패키지화 되어 있다. <literal>hibernate3.jar</literal> 파일은 어플리케이션의 다른 클래스들과 함께 컨텍스트 classpath 속에 복사되어야 한다. Hibernate는 실행 시에 어떤 제 3의 라이브러리들을 필요로하고, 이것들은 <literal>lib/</literal> 디렉토리 내의 Hibernate 배포본에 번들화되어 있다; <xref linkend=\"3rdpartylibs\"/>를 보라. 필요한 제3의 라이브러리들을 컨텍스트 classpath로 복사하라."
+
+#: index.docbook:62
+msgid "appended paragraph 9"
+msgstr "Hibernate 제3의 라이브러리"
+
+#: index.docbook:70
+msgid "appended paragraph 10"
+msgstr "라이브러리"
+
+#: index.docbook:73
+msgid "appended paragraph 11"
+msgstr "<entry>설명</entry>"
+
+#: index.docbook:80
+msgid "appended paragraph 12"
+msgstr "antlr (필수)"
+
+#: index.docbook:83
+msgid "appended paragraph 13"
+msgstr "Hibernate는 질의 파서들을 산출하는데 ANTLR을 사용하고, 이 라이브러리는 또한 실행 시에 필요하다."
+
+#: index.docbook:89
+msgid "appended paragraph 14"
+msgstr "dom4j (필수)"
+
+#: index.docbook:92
+msgid "appended paragraph 15"
+msgstr "Hibernate는 XML 구성과 XML 매핑 메타데이터 파일들을 파싱하는데 dom4j를 사용 한다."
+
+#: index.docbook:98
+msgid "appended paragraph 16"
+msgstr "CGLIB, asm (필수)"
+
+#: index.docbook:101
+msgid "appended paragraph 17"
+msgstr "Hibernate는 (Java reflection과 결합하여) 런타임 시에 클래스들을 고양시키는데 코드 생성 라이브러리를 사용한다."
+
+#: index.docbook:107
+msgid "appended paragraph 18"
+msgstr "Commons Collections, Commons Logging (필수)"
+
+#: index.docbook:110
+msgid "appended paragraph 19"
+msgstr "Hibernate는 Apache Jakarta Commons 프로젝트로부터 다양한 유틸리티 라이브러리 들을 사용한다."
+
+#: index.docbook:116
+msgid "appended paragraph 20"
+msgstr "EHCache (필수)"
+
+#: index.docbook:119
+msgid "appended paragraph 21"
+msgstr "Hibernate는 second-level 캐시를 위한 다양한 캐시 프로바이더들을 사용할 수 있다. 만일 구성에서 변하지 않을 경우 EHCache가 디폴트 캐시 프로바이더이다."
+
+#: index.docbook:125
+msgid "appended paragraph 22"
+msgstr "Log4j (옵션)"
+
+#: index.docbook:128
+msgid "appended paragraph 23"
+msgstr "Hibernate는 기본 로깅 메커니즘으로서 Log4j를 사용할 수 있는, Commons Logging API를 사용한다. 만일 Log4j 라이브러리가 컨텍스트 라이브러리 디렉토리 속에서 이용 가능하다면, Commons Logging은 Log4j와 컨텍스트 classpath 내에 있는 <literal>log4j.properties</literal> 구성을 사용할 것이다. Log4j에 대한 예제 properties 파일은 Hibernate 배포본에 번들화 되어 있다. 따라서 당신이 이면에서 무엇이 진행되는 지을 보고자 원할 경우에 log4j.jar와 (<literal>src/</literal>에 있는) 구성 파일을 당신의 컨텍스트 classpath 속으로 복사하라."
+
+#: index.docbook:138
+msgid "appended paragraph 24"
+msgstr "필수 여부?"
+
+#: index.docbook:141
+msgid "appended paragraph 25"
+msgstr "Hibernate 배포본 내에 있는 <literal>lib/README.txt</literal> 파일을 살펴보라. 이것은 Hibernate에 배포된 제 3의 라이브러리들의 최신 목록이다. 당신은 그곳에 열거된 모든 필수 라이브러리들과 옵션 라이브러리들을 찾게 될 것이다(여기서 \"빌드 시 필요함\"은 당신의 어플리케이션이 아니라 Hibernate에 대한 의미임을 노트하라)."
+
+#: index.docbook:152
+msgid "appended paragraph 26"
+msgstr "우리는 이제 Tomcat과 Hibernate 양자에서 데이터베이스 커넥션 풀링과 공유를 설정한다. 이것은 Tomcat이 (그것의 미리 빌드되어 있는 DBCP 풀링 특징을 사용하여) 풀링된 JDBC 커넥션들을 제공할 것이고, Hibernate가 JNDI를 통해 이들 커넥션들을 요청한다는 것을 의미한다. 달리 당신은 Hibernate로 하여금 커넥션 풀을 관리하도록 할 수 있다. Tomcat은 그것의 커넥션 풀을 JNDI에 바인드 시킨다; 우리는 리소스 선언을 Tomcat 메인 구성 파일인 <literal>TOMCAT/conf/server.xml</literal>에 추가한다:"
+
+#: index.docbook:160
+msgid "appended paragraph 27"
+msgstr ""
+      "<![CDATA[<Context path=\"/quickstart\" docBase=\"quickstart\">\n"
+      "    <Resource name=\"jdbc/quickstart\" scope=\"Shareable\" type=\"javax.sql.DataSource\"/>\n"
+      "    <ResourceParams name=\"jdbc/quickstart\">\n"
+      "        <parameter>\n"
+      "            <name>factory</name>\n"
+      "            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>\n"
+      "        </parameter>\n"
+      "\n"
+      "        <!-- DBCP database connection settings -->\n"
+      "        <parameter>\n"
+      "            <name>url</name>\n"
+      "            <value>jdbc:postgresql://localhost/quickstart</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>driverClassName</name><value>org.postgresql.Driver</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>username</name>\n"
+      "            <value>quickstart</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>password</name>\n"
+      "            <value>secret</value>\n"
+      "        </parameter>\n"
+      "\n"
+      "        <!-- DBCP connection pooling options -->\n"
+      "        <parameter>\n"
+      "            <name>maxWait</name>\n"
+      "            <value>3000</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>maxIdle</name>\n"
+      "            <value>100</value>\n"
+      "        </parameter>\n"
+      "        <parameter>\n"
+      "            <name>maxActive</name>\n"
+      "            <value>10</value>\n"
+      "        </parameter>\n"
+      "    </ResourceParams>\n"
+      "</Context>]]>"
+
+#: index.docbook:162
+msgid "appended paragraph 28"
+msgstr "우리가 이 예제에서 구성하는 컨텍스트는 <literal>quickstart</literal>로 명명되고, 그것의 베이스는 <literal>TOMCAT/webapp/quickstart</literal> 디렉토리이다. 임의의 서블릿들에 접근하기 위해, (물론 당신의 <literal>web.xml</literal> 속에 매핑된 서블릿의 이름을 추가하여) 당신의 브라우저에서 <literal>http://localhost:8080/quickstart</literal> 경로를 호출하라. 당신은 또한 계속 진행하고 이제 공백의 <literal>process()</literal> 메소드를 가진 간단한 서블릿을 생성시킬 수 있다."
+
+#: index.docbook:170
+msgid "appended paragraph 29"
+msgstr "Tomcat은 이제 <literal>java:comp/env/jdbc/quickstart</literal>로 JNDI을 통해 커넥션들을 제공한다. 만일 당신이 실행 중인 커넥션 풀을 얻는 것에 문제가 있다면 Tomcat 문서를 참조하라. 당신이 JDBC 드라이버 예외상황 메시지를 얻을 경우, 먼저 Hibernate 없이 JDBC 커넥션 풀을 셋업하라. Tomcat &amp; JDBC 튜토리얼들은 그 웹 서이트에서 이용 가능하다."
+
+#: index.docbook:177
+msgid "appended paragraph 30"
+msgstr "당신의 다음 단계는 Hibernate를 구성하는 것이다. Hibernate는 그것이 JDBC 커넥션들을 얻는 방법을 알고 있어야 한다. 우리는 Hibernate의 XML 기반 구성을 사용한다. properties 파일을 사용하는 다른 접근법은 거의 동일하지만 XML 구문이 허용하는 몇몇 특징들을 누락하고 있다. XML 구성 파일은 <literal>hibernate.cfg.xml</literal>로서 컨텍스트 classpath (<literal>WEB-INF/classes</literal>) 내에 위치해 있다:"
+
+#: index.docbook:184
+msgid "appended paragraph 31"
+msgstr ""
+      "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+      "<!DOCTYPE hibernate-configuration PUBLIC\n"
+      "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+      "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
+      "\n"
+      "<hibernate-configuration>\n"
+      "\n"
+      "    <session-factory>\n"
+      "\n"
+      "        <property name=\"connection.datasource\">java:comp/env/jdbc/quickstart</property>\n"
+      "        <property name=\"show_sql\">false</property>\n"
+      "        <property name=\"dialect\">org.hibernate.dialect.PostgreSQLDialect</property>\n"
+      "\n"
+      "        <!-- Mapping files -->\n"
+      "        <mapping resource=\"Cat.hbm.xml\"/>\n"
+      "\n"
+      "    </session-factory>\n"
+      "\n"
+      "</hibernate-configuration>]]>"
+
+#: index.docbook:186
+msgid "appended paragraph 32"
+msgstr "우리는 SQL 명령들에 대한 로깅을 사용하지 않고 Hibernate에게 사용되는 데이터베이스 SQL direct가 무엇인지 그리고 (Tomcat 바인드된 풀의 JNDI 주소를 선언하여) JDBC 커넥션들을 얻는 곳을 알려준다. dialect는 필수적인 설정이고, 데이터베이스들은 SQL \"표준\"에 대한 그것들의 해석을 달리한다. Hibernate는 차이점들을 처리하고 모든 주요 상용 데이터베이스들 및 오픈 소스 데이터베이스들 용도의 direct들을 번들로 포함하고 있다."
+
+#: index.docbook:193
+msgid "appended paragraph 33"
+msgstr "<literal>SessionFactory</literal>는 단일 데이터저장소에 관한 개념이고, 여러 데이터베이스들은 여러 개의 XML 구성 파일들을 생성시키고 당신의 어플리케이션 속에서 여러 개의 <literal>Configuration</literal> 및 <literal>SessionFactory</literal> 객체들을 생성시켜서 사용될 수 있다."
+
+#: index.docbook:199
+msgid "appended paragraph 34"
+msgstr "<literal>hibernate.cfg.xml</literal>의 마지막 요소는 영속 클래스 <literal>Cat</literal>에 대한 Hibernate XML 매핑 파일의 이름으로써 <literal>Cat.hbm.xml</literal>을 선언한다. 이 파일은 데이터베이스 테이블(또는 테이블들)로 POJO 클래스 <literal>Cat</literal> 을 매핑시키는 메타데이터를 포함한다. 우리는 곧 그 파일로 되돌아 갈 것이다. 먼저 POJO 클래스를 작성하고 그런 다음 그것을 위한 매핑 메타데이터를 선언하자."
+
+#: index.docbook:209
+msgid "appended paragraph 35"
+msgstr "첫 번째 영속 클래스"
+
+#: index.docbook:211
+msgid "appended paragraph 36"
+msgstr "Hibernate는 영속 클래스들에 대한 Plain Old Java Objects (POJOs, 종종 Plain Ordinary Java Objects로 명명된다) 프로그래밍 모형으로 가장 잘 동작한다. POJO는 공용으로 가시적인 인터페이스로부터 내부적인 표상을 은폐시켜, getter와 setter 메소드들을 통해 접근가능한 클래스들의 프로퍼티들을 가진 자바빈과 꽤 유사하다(필요하다면 Hibernate는 또한 필드들에 직접 접근할 수 있다):"
+
+#: index.docbook:218
+msgid "appended paragraph 37"
+msgstr ""
+      "<![CDATA[package org.hibernate.examples.quickstart;\n"
+      "\n"
+      "public class Cat {\n"
+      "\n"
+      "    private String id;\n"
+      "    private String name;\n"
+      "    private char sex;\n"
+      "    private float weight;\n"
+      "\n"
+      "    public Cat() {\n"
+      "    }\n"
+      "\n"
+      "    public String getId() {\n"
+      "        return id;\n"
+      "    }\n"
+      "\n"
+      "    private void setId(String id) {\n"
+      "        this.id = id;\n"
+      "    }\n"
+      "\n"
+      "    public String getName() {\n"
+      "        return name;\n"
+      "    }\n"
+      "\n"
+      "    public void setName(String name) {\n"
+      "        this.name = name;\n"
+      "    }\n"
+      "\n"
+      "    public char getSex() {\n"
+      "        return sex;\n"
+      "    }\n"
+      "\n"
+      "    public void setSex(char sex) {\n"
+      "        this.sex = sex;\n"
+      "    }\n"
+      "\n"
+      "    public float getWeight() {\n"
+      "        return weight;\n"
+      "    }\n"
+      "\n"
+      "    public void setWeight(float weight) {\n"
+      "        this.weight = weight;\n"
+      "    }\n"
+      "\n"
+      "}]]>"
+
+#: index.docbook:220
+msgid "appended paragraph 38"
+msgstr "Hibernate는 그것의 프로퍼티 타입들의 사용에 제약되지 않고, 자바 콜렉션 프레임웍에서의 클래스들을 포함하여, 모든 자바 JDK 타입들과 (<literal>String</literal>, <literal>char</literal>와 <literal>Date</literal> 같은) 원시타입들이 매핑될 수 있다. 당신은 그것을 값들로서, 값들을 가진 콜렉션들로서, 또는 다른 엔티티들에 대한 연관들로서 매핑시킬 수 있다. <literal>id</literal>는 그 클래스의 데이터베이스 식별자(프라이머리 키)를 표현하는 특별한 프로퍼티이고, 그것은 <literal>Cat</literal>과 같은 엔티티들에 대해 매우 권장된다. Hibernate는 내부적으로만 식별자들을 사용할 수 있지만, 우리는 우리의 어플리케이션 아키텍처에서 어떤 유연성을 상실하게 될 것이다."
+
+#: index.docbook:229
+msgid "appended paragraph 39"
+msgstr "특정 인터페이스는 영속 클래스들에 대해 구현되지 말아야 하거나 특정 루트 영속 클래스로부터 서브 클래스로 만들지 말아야 한다. Hibernate는 또한 바이트 코드 처리와 같은, 어떤 빌드 시 처리를 필요로 하지 않고, 그것은 오직 자바 reflection과 (CGLIB를 통한) 런타임 클래스 고양에만 의존한다. 따라서 Hibernate에 대한 POJO 클래스의 어떤 의존성 없이도, 우리는 그것을 데이터베이스 테이블로 매핑할 수 있다."
+
+#: index.docbook:239
+msgid "appended paragraph 40"
+msgstr "cat 매핑하기"
+
+#: index.docbook:241
+msgid "appended paragraph 41"
+msgstr "<literal>Cat.hbm.xml</literal> 매핑파일은 객체/관계형 매핑에 필요한 메타데이터를 포함한다. 메타데이터는 영속 클래스들의 선언과 데이터베이스 테이블들에 대한 (컬럼들과 다른 엔티티들에 대한 foreign 키 관계들에 대한) 프로퍼티들의 매핑을 포함한다."
+
+#: index.docbook:247
+msgid "appended paragraph 42"
+msgstr ""
+      "<![CDATA[<?xml version=\"1.0\"?>\n"
+      "<!DOCTYPE hibernate-mapping PUBLIC\n"
+      "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+      "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+      "\n"
+      "<hibernate-mapping>\n"
+      "\n"
+      "    <class name=\"org.hibernate.examples.quickstart.Cat\" table=\"CAT\">\n"
+      "\n"
+      "        <!-- A 32 hex character is our surrogate key. It's automatically\n"
+      "            generated by Hibernate with the UUID pattern. -->\n"
+      "        <id name=\"id\" type=\"string\" unsaved-value=\"null\" >\n"
+      "            <column name=\"CAT_ID\" sql-type=\"char(32)\" not-null=\"true\"/>\n"
+      "            <generator class=\"uuid\"/>\n"
+      "        </id>\n"
+      "\n"
+      "        <!-- A cat has to have a name, but it shouldn' be too long. -->\n"
+      "        <property name=\"name\">\n"
+      "            <column name=\"NAME\" length=\"16\" not-null=\"true\"/>\n"
+      "        </property>\n"
+      "\n"
+      "        <property name=\"sex\"/>\n"
+      "\n"
+      "        <property name=\"weight\"/>\n"
+      "\n"
+      "    </class>\n"
+      "\n"
+      "</hibernate-mapping>]]>"
+
+#: index.docbook:249
+msgid "appended paragraph 43"
+msgstr "모든 영속 클래스는 식별자 속성을 가져야 한다(실제로 value-타입의 클래스들에 의존하지 않는, 엔티티들을 표현하는 유일한 클래스들은 엔티티을 가진 컴포넌트들로 매핑된다). 이 프로퍼티는 영속 객체들을 구별짓는데 사용된다: 만일 <literal>catA.getId().equals(catB.getId())</literal>가 true일 경우, 두 개의 cat들은 같고, 이 개념은 <emphasis>database identity</emphasis>로 명명된다. Hibernate는 (데이터베이스 시퀀스, hi/lo 식별자 테이블들, 그리고 어플리케이션 할당 식별자들에 대한 native 생성기들을 포함하는) 다른 시나리오들에 대해 여러 가지 식별자 생성기들을 번들로 갖고 있다. 우리는 UUID 생성기(데이터이스에 의해 생성된 정수 대용 키들이 선호될 것이므로, 테스트용으로만 권장됨)를 사용하고 또한 Hibernate 생성된 식별자 값을 위한 <literal>CAT</liter!
 al> 테이블의 <literal>CAT_ID</literal> 컬럼을 (테이블의 프라이머리 키로서) 지정한다."
+
+#: index.docbook:260
+msgid "appended paragraph 44"
+msgstr "<literal>Cat</literal>의 모든 다른 프로퍼티들은 동일한 테이블로 매핑된다. <literal>name</literal> 프로퍼티의 경우에, 우리는 그것을 명시적인 데이터베이스 컬럼 선언으로 매핑시켰다. 데이터베이스 스키마가 Hibernate의 <emphasis>SchemaExport</emphasis> 도구에 의해 매핑 선언으로부터 (SQL DDL 문장들로) 자동적으로 생성될 때 이것이 특별히 유용하다. 모든 다른 프로퍼티들은 Hibernate의 디폴트 설정들을 사용하여 매핑되고, 디폴트 설정들은 당신이 가장 많은 시간을 필요로 하는 것이다. 데이터베이스 내의 테이블 <literal>CAT</literal>은 다음과 같다:"
+
+#: index.docbook:268
+msgid "appended paragraph 45"
+msgstr ""
+      "<![CDATA[ Column |         Type          | Modifiers\n"
+      "--------+-----------------------+-----------\n"
+      " cat_id | character(32)         | not null\n"
+      " name   | character varying(16) | not null\n"
+      " sex    | character(1)          |\n"
+      " weight | real                  |\n"
+      "Indexes: cat_pkey primary key btree (cat_id)]]>"
+
+#: index.docbook:270
+msgid "appended paragraph 46"
+msgstr "당신은 이제 수작업으로 당신의 데이터베이스 내에 이 테이블을 생성시킬 것이고, 만일 당신이 <literal>hbm2ddl</literal> 도구로 이 단계를 자동화 시키고자 원할 경우 <xref linkend=\"toolsetguide\"/>를 읽어라. 이 도구는 테이블 정의, 맞춤형 컬럼 타입 컨스트레인트들, 유일 컨스트레인트들과 인덱스들을 포함하는, 전체 SQL DDL을 생성시킬 수 있다."
+
+#: index.docbook:279
+msgid "appended paragraph 47"
+msgstr "cat들에 작업하기"
+
+#: index.docbook:281
+msgid "appended paragraph 48"
+msgstr "우리는 이제 Hibernate의 <literal>Session</literal>을 시작할 준비가 되어 있다. 그것은 <emphasis>persistence manager</emphasis> (영속 관리자)이고, 우리는 데이터베이스로 <literal>Cat</literal>들을 저장하고 데이터베이스로부터 <literal>Cat</literal>들을 검색하는데 그것을 사용한다. 그러나 먼저 우리는 <literal>SessionFactory</literal>로부터 <literal>Session</literal>(Hibernate의 작업 단위)를 얻어야 한다:"
+
+#: index.docbook:288
+msgid "appended paragraph 49"
+msgstr ""
+      "<![CDATA[SessionFactory sessionFactory =\n"
+      "            new Configuration().configure().buildSessionFactory();]]>"
+
+#: index.docbook:290
+msgid "appended paragraph 50"
+msgstr "<literal>configure()</literal> 호출은 <literal>hibernate.cfg.xml</literal> 구성 파일을 로드시키고 <literal>Configuration</literal> 인스턴스를 초기화 시킨다. 당신이 SessionFactory(불변적임)를 빌드하기 <emphasis>이전에</emphasis> 당신은 <literal>Configuration</literal>에 접근함으로써 다른 프로퍼티들을 설정할 수 있다(그리고 심지어 매핑 메타데이터를 변경시킬 수 있다). 우리는 어디서 <literal>SessionFactory</literal>를 생성시키고 우리의 어플리케이션 속에서 어떻게 그것에 접근할 수 있나?"
+
+#: index.docbook:298
+msgid "appended paragraph 51"
+msgstr "<literal>SessionFactory</literal>는 대개 오직 한번만, 예를 들어 대개 <emphasis>load-on-startup</emphasis> 서블릿으로 시작 시에 빌드된다. 이것은 또한 당신이 당신의 서블릿들 내에 있는 인스턴스 변수 속에 그것을 유지하지 않을 것이지만 어떤 다른 위치에 유지시킬 것임을 의미한다. 더구나 우리는 어떤 종류의 <emphasis>Singleton</emphasis>을 필요로 하며, 따라서 우리는 어플리케이션 코드로 쉽게 <literal>SessionFactory</literal>에 액세스 할 수 있다. 다음에 보여진 접근법은 두 문제 모두를 해결한다: 시작 구성과 <literal>SessionFactory</literal>에 대한 쉬운 접근."
+
+#: index.docbook:306
+msgid "appended paragraph 52"
+msgstr "우리는 <literal>HibernateUtil</literal> helper 클래스를 구현한다:"
+
+#: index.docbook:310
+msgid "appended paragraph 53"
+msgstr ""
+      "<![CDATA[import org.hibernate.*;\n"
+      "import org.hibernate.cfg.*;\n"
+      "\n"
+      "public class HibernateUtil {\n"
+      "\n"
+      "    private static Logger log = LoggerFactory.getLogger(HibernateUtil.class);\n"
+      "\n"
+      "    private static final SessionFactory sessionFactory;\n"
+      "\n"
+      "    static {\n"
+      "        try {\n"
+      "            // Create the SessionFactory\n"
+      "            sessionFactory = new Configuration().configure().buildSessionFactory();\n"
+      "        } catch (Throwable ex) {\n"
+      "            // Make sure you log the exception, as it might be swallowed\n"
+      "            log.error(\"Initial SessionFactory creation failed.\", ex);\n"
+      "            throw new ExceptionInInitializerError(ex);\n"
+      "        }\n"
+      "    }\n"
+      "\n"
+      "    public static final ThreadLocal session = new ThreadLocal();\n"
+      "\n"
+      "    public static Session getCurrentSession() {\n"
+      "        Session s = (Session) session.get();\n"
+      "        // Open a new Session, if this Thread has none yet\n"
+      "        if (s == null) {\n"
+      "            s = sessionFactory.openSession();\n"
+      "            session.set(s);\n"
+      "        }\n"
+      "        return s;\n"
+      "    }\n"
+      "\n"
+      "    public static void closeSession() {\n"
+      "        Session s = (Session) session.get();\n"
+      "        if (s != null)\n"
+      "            s.close();\n"
+      "        session.set(null);\n"
+      "    }\n"
+      "}]]>"
+
+#: index.docbook:312
+msgid "appended paragraph 54"
+msgstr "이 클래스는 static 초기자를 가진 <literal>SessionFactory</literal>를 처리할 뿐만 아니라 또한 현재의 쓰레드를 위한 <literal>Session</literal>을 소유하는 <literal>ThreadLocal</literal> 변수를 갖는다. 이 helper를 사용하려고 시도하기 전에 thread-local 변수에 대한 자바 개념을 이해해야 한다. 보다 복잡하고 강력한 <literal>HibernateUtil</literal> 클래스는 http://caveatemptor.hibernate.org/의 <literal>CaveatEmptor</literal>에서 찾을 수 있다."
+
+#: index.docbook:319
+msgid "appended paragraph 55"
+msgstr "<literal>SessionFactory</literal>는 threadsafe이고, 많은 쓰레드들이 동시에 그것에 접근할 수 있고 <literal>Session</literal>들을 요청할 수 있다. 하나의 <literal>Session</literal>은 데이터베이스에 대해 한 개의 단위 작업을 나타내는 non-threadsafe 객체이다. <literal>Session</literal>들은 <literal>SessionFactory</literal> 로부터 열려지고 모든 작업이 완료될 때 닫혀진다. 당신의 서블릿의 <literal>process()</literal> 메소드 내에 있는 예제는 다음과 같을 수 있다(예외상황 처리 없이):"
+
+#: index.docbook:327
+msgid "appended paragraph 56"
+msgstr ""
+      "<![CDATA[Session session = HibernateUtil.getCurrentSession();\n"
+      "Transaction tx = session.beginTransaction();\n"
+      "\n"
+      "Cat princess = new Cat();\n"
+      "princess.setName(\"Princess\");\n"
+      "princess.setSex('F');\n"
+      "princess.setWeight(7.4f);\n"
+      "\n"
+      "session.save(princess);\n"
+      "\n"
+      "tx.commit();\n"
+      "HibernateUtil.closeSession();]]>"
+
+#: index.docbook:329
+msgid "appended paragraph 57"
+msgstr "하나의 <literal>Session</literal> 내에서 모든 데이터베이스 오퍼레이션은 데이터베이스 오퍼레이션들(심지어 읽기 전용 오퍼레이션들 조차도)을 격리시키는 하나의 트랜잭션 내부에서 발생한다. 우리는 기본 트랜잭션 방도(우리의 경우, JDBC 트랜잭션들)로부터 추상화시키는데 Hibernates <literal>Transaction</literal> API 를 사용한다. 이것은 우리의 코드가 임의의 변경들 없이도 (JTA를 사용하는) 컨테이너-관리되는 트랜잭션들에 배치되는 것을 허용해준다."
+
+#: index.docbook:336
+msgid "appended paragraph 58"
+msgstr "당신이 원하는 만큼 당신이 <literal>HibernateUtil.getCurrentSession();</literal>을 호출할 수 있고, 당신은 이 쓰레드의 현재 <literal>Session</literal>을 항상 얻을 것임을 노트하라. 당신은 서블릿 코드 내에서든 또는 서블릿 필터 내에서든 HTTP response가 전송되기 전에, 당신의 단위 작업이 완료된 후에 <literal>Session</literal>이 확실히 닫혀지도록 해야 한다. 두 번째 옵션의 좋은 측면은 쉬운 lazy 초기화이다: 뷰가 렌더링 될 때 <literal>Session</literal>이 여전히 열려져 있어서, Hibernate는 당신이 현재 객체 그래프를 네비게이트 하는 동안 초기화 되지 않은 객체들을 로드시킬 수 있다."
+
+#: index.docbook:344
+msgid "appended paragraph 59"
+msgstr "Hibernate는 데이터베이스로부터 객체들을 검색하는데 사용될 수 있는 다양한 메소드들을 갖고 있다. 가장 유연한 방법은 Hibernate Query Language (HQL)을 사용하는 것이다. Hibernate Query Language (HQL)은 배우기가 쉽고 SQL에 대한 강력한 객체 지향 확장이다:"
+
+#: index.docbook:350
+msgid "appended paragraph 60"
+msgstr ""
+      "<![CDATA[Transaction tx = session.beginTransaction();\n"
+      "\n"
+      "Query query = session.createQuery(\"select c from Cat as c where c.sex = :sex\");\n"
+      "query.setCharacter(\"sex\", 'F');\n"
+      "for (Iterator it = query.iterate(); it.hasNext();) {\n"
+      "    Cat cat = (Cat) it.next();\n"
+      "    out.println(\"Female Cat: \" + cat.getName() );\n"
+      "}\n"
+      "\n"
+      "tx.commit();]]>"
+
+#: index.docbook:352
+msgid "appended paragraph 61"
+msgstr "Hibernate는 또한 type-safe 질의들을 공식화 시키는데 사용될 수 있는 객체-지향 <emphasis>query by criteria</emphasis> API을 제공한다. 물론 Hibernate는 데이터베이스와의 모든 SQL 통신을 위해 <literal>PreparedStatement</literal>들과 파라미터 바인딩을 사용한다. 당신은 또한 Hibernate 직접적인 SQL 질의 특징을 사용할 수도 있거나 드문 경우에 <literal>Session</literal>으로부터 plain JDBC 커넥션을 얻을 수도 있다."
+
+#: index.docbook:362
+msgid "appended paragraph 62"
+msgstr "마지막으로"
+
+#: index.docbook:364
+msgid "appended paragraph 63"
+msgstr "우리는 이 작은 튜토리얼 내에서 단지 Hibernate의 표면을 훑기만 했다. 우리는 우리의 예제들 속에 어떤 서블릿 지정적 코드를 포함하지 않음을 노트하라. 당신이 적합한지를 알려고 할 때 당신은 당신 자신의 서블릿을 생성시켜야 하고 Hibernate 코드를 삽입해야 한다."
+
+#: index.docbook:370
+msgid "appended paragraph 64"
+msgstr "데이터 접근 계층으로서 Hibernate는 당신의 어플리케이션에 강하게 통합됨을 염두에 두라. 대개 모든 다른 레이어들은 영속 메커니즘에 의존했다. 당신은 이 설계의 함축을 확실히 이해하도록 하라."
+
+#: index.docbook:375
+msgid "appended paragraph 65"
+msgstr "보다 복잡한 어플리케이션 예제는 http://caveatemptor.hibernate.org/ 를 보고 http://caveatemptor.hibernate.org/에 있는 다른 튜토리얼들을 살펴보라."
+
+msgid "ROLES_OF_TRANSLATORS"
+msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+msgid "CREDIT_FOR_TRANSLATORS"
+msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1603 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "객체들로 작업하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a natural object-oriented view of persistence "
+"in Java applications."
+msgstr ""
+"Hibernate는 기본 데이터베이스 관리 시스템의 상세로부터 개발자들을 은폐시켜줄 "
+"뿐만 아니라, 또한 객체들에 대한 <emphasis>상태 관리</emphasis>를 제공하는 하"
+"나의 완전한 객체/관계형 매핑 솔루션이다. 이것은 공통적인 JDBC/SQL 영속 계층"
+"들 내에서의 SQL <literal>문장들</literal>에 대한 관리와는 반대로, 자바 어플리"
+"케이션들에서 영속에 관한 매우 고유한 객체-지향적 관점이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"달리 말해, Hibernate 어플리케이션 개발자들은 그들의 객체들의 <emphasis>상태</"
+"emphasis>에 대해 항상 생각해야 하고, SQL 문장들의 실행에 대해서는 필수적이지 "
+"않다. 이 부분은 Hibernate에 의해 처리되고 시스템의 퍼포먼스를 튜닝할 때 어플"
+"리케이션 개발자와 유일하게 관련된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Hibernate 객체 상태들"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr "Hibernate 다음 객체 상태들을 정의하고 지원한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application does not hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transient</emphasis> - 만일 객체가 <literal>new</literal> 연산자를 "
+"사용하여 방금 초기화 되었다면 객체는 transient이고, 그것은 Hibernate "
+"<literal>Session</literal>과 연관되어 있지 않다. 그것은 데이터베이스 내에서 "
+"영속 표상을 갖지 않고 식별자 값이 할당되지 않았다. 만일 어플리케이션이 더 이"
+"상 참조를 소유하지 않을 경우 transient 인스턴스들은 쓰레기 수집기에 의해 파괴"
+"될 것이다. 객체를 영속화 시키는데 (그리고 이 전이(transition)에 대해 실행될 "
+"필요가 있는 SQL 문장들을 Hibernate로 하여금 처리하도록 하는데) Hibernate "
+"<literal>Session</literal>을 사용하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers do not execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistent</emphasis> - 하나의 영속 인스턴스는 데이터베이스 내에서 "
+"하나의 표상을 갖고 하나의 식별자 값을 갖는다. 그것은 방금 저장되었거나 로드되"
+"었을 수 있지만, 정의상 그것은 <literal>Session</literal>의 범위 내에 있다. "
+"Hibernate는 영속 상태에서 객체에 대해 행해진 임의의 변경들을 검출해낼 것이고 "
+"단위 작업이 완료될 때 그 상태를 데이터베이스와 동기화 시킬 것이다. 개발자들"
+"은 하나의 객체가 transient로 되어야 할 때 <literal>UPDATE</literal> 문장들이"
+"나 <literal>DELETE</literal> 문장들을 수작업으로 실행하지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e., a unit of work "
+"from the point of view of the user."
+msgstr ""
+"<emphasis>Detached</emphasis> - 하나의 detached 인스턴스는 영속화 되었지만, "
+"그것의 <literal>Session</literal>이 닫혀진 객체이다. 물론 그 객체에 대한 참조"
+"는 여전히 유효하고, 그 detached 인스턴스는 이 상태에서도 변경될 수도 있다. 하"
+"나의 detached 인스턴스는 나중에 그것(과 모두 변경들)을 다시 영속화 시켜서 새"
+"로운 <literal>Session</literal>에 다시 첨부될 수 있다. 이 특징은 사용자가 생"
+"각할 시간을 필요로 하는 장 기간 실행되는 작업 단위를 위한 프로그래밍 모형을 "
+"가능하게 해준다. 우리는 그것들을 <emphasis>어플리케이션 트랜잭션들</"
+"emphasis>, 즉 사용자의 관점의 작업 단위라고 부른다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"이제 우리는 상태들과 상태 전이(transition)들(그리고 전이를 트리거 시키는 "
+"Hibernate 메소드들)을 상세하게 논의할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "객체들을 영속화 시키기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Newly instantiated instances of a a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"하나의 영속 클래스의 새로이 초기화 된 인스턴스들은 Hibernate에 의해 "
+"<emphasis>transient</emphasis>로 간주된다. 우리는 그것을 세션과 연관지어서 "
+"transient 인스턴스를 <emphasis>영속화</emphasis> 시킬 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You can also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"만일 <literal>Cat</literal>이 생성된 식별자를 가질 경우, <literal>save()</"
+"literal>가 호출될 때 그 식별자가 생성되고 <literal>cat</literal>에 할당된다. "
+"만일 <literal>Cat</literal>이 하나의 <literal>assigned</literal> 식별자나 하"
+"나의 composite key를 가질 경우, <literal>save()</literal>를 호출하기 전에 그 "
+"식별자가<literal>cat</literal> 인스턴스에 할당될 것이다. 당신은 또한 EJB3 초"
+"기 드래프트에서 정의된 의미로 <literal>save()</literal> 대신 <literal>persist"
+"()</literal>를 사용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it does not guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+"UNTRANSLATED! <literal>persist()</literal> makes a transient instance "
+"persistent. However, it doesn't guarantee that the identifier value will be "
+"assigned to the persistent instance immediately, the assignment might happen "
+"at flush time. <literal>persist()</literal> also guarantees that it will not "
+"execute an <literal>INSERT</literal> statement if it is called outside of "
+"transaction boundaries. This is useful in long-running conversations with an "
+"extended Session/persistence context."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+msgstr ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Alternatively, you can assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"다른 방법으로, 당신은 <literal>save()</literal>의 오버로드된 버전을 사용하여 "
+"식별자를 할당할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects can be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"만일 당신이 영속화 시키는 객체가 연관된 객체들(예를 들면. 앞의 예제에 있는 "
+"<literal>kittens</literal> 콜렉션)을 갖고 있다면, 당신이 하나의 foreign 키 컬"
+"럼에 대해 하나의 <literal>NOT NULL</literal> 컨스트레인트를 갖지 않는 한, 이"
+"들 객체들은 당신이 좋아하는 임의의 순서로 영속화 되었을 수도 있다. foreign "
+"키 컨스트레인트들을 위배하는 위험성이 결코 존재하지 않는다. 하지만 당신이 잘"
+"못된 순서로 그 객체들을 <literal>save()</literal> 시킬 경우 당신은 "
+"<literal>NOT NULL</literal> 컨스트레인트를 위배할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Usually you do not bother with this detail, as you will normally use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations do not occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"당신이 연관된 객체들을 자동적으로 저장시키는데 Hibernate의 "
+"<emphasis>transitive persistence(전이 영속)</emphasis> 특징을 사용하는 것을 "
+"매우 좋아할 것이므로 대개 당신은 이 상세를 내버려둔다. 그때 <literal>NOT "
+"NULL</literal> 컨스트레인트 위배들이 발생되지 않을지라도 - Hibernate는 모든 "
+"것을 처리할 것이다. Transitive persistence(전이 영속)은 이 장에서 후반부에서 "
+"논의된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "객체를 로드시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> provide "
+"a way of retrieving a persistent instance if you know its identifier. "
+"<literal>load()</literal> takes a class object and loads the state into a "
+"newly instantiated instance of that class in a persistent state."
+msgstr ""
+"<literal>Session</literal>의 <literal>load()</literal> 메소드들은 만일 당신"
+"이 그것(영속 인스턴스)의 식별자들을 이미 알고 있을 경우에 영속 인스턴스를 검"
+"색하는 방법을 당신에게 제공한다. <literal>load()</literal>는 하나의 클래스 객"
+"체를 취하고 그 상태를 영속(persistent) 상태로 그 클래스의 새로이 초기화 된 인"
+"스턴스 속으로 로드시킬 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr "다른 방법으로 당신은 주어진 인스턴스 속으로 상태를 로드시킬 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Be aware that <literal>load()</literal> will throw an unrecoverable "
+"exception if there is no matching database row. If the class is mapped with "
+"a proxy, <literal>load()</literal> just returns an uninitialized proxy and "
+"does not actually hit the database until you invoke a method of the proxy. "
+"This is useful if you wish to create an association to an object without "
+"actually loading it from the database. It also allows multiple instances to "
+"be loaded as a batch if <literal>batch-size</literal> is defined for the "
+"class mapping."
+msgstr ""
+"만일 일치하는 데이터베이스 행이 존재하지 않을 경우에 <literal>load()</"
+"literal>가 unrecoverable(복구 불가능한) 예외상황을 던질 것임을 노트하라. 만"
+"일 클래스가 프락시를 갖도록 매핑된 경우, <literal>load()</literal>는 초기화 "
+"되지 않은 프락시를 단지 반환하고 당신이 그 프락시의 메소드를 호출하기 전까지"
+"는 실제로 데이터베이스에 접속하지 않는다. 당신이 데이터베이스로부터 객체에 대"
+"한 연관을 실제로 로드시키지 않고서 객체에 대한 연관을 생성시키고자 원할 경우"
+"에 이 특징이 매우 유용하다. 만일 <literal>batch-size</literal>가 class 매핑"
+"에 정의되는 경우 그것은 또한 다중 인스턴스들이 하나의 배치로서 로드되는 것을 "
+"허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"만일 당신이 하나의 일치하는 행이 존재하는지를 확신할 수 없을 경우, 당신은 "
+"<literal>get()</literal> 메소드를 사용해야 한다. 그것(<literal>get()</"
+"literal> 메소드)는 데이터베이스에 즉시 접속하고 만일 일치하는 행이 없을 경우 "
+"null을 반환한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"당신은 하나의 <literal>LockMode</literal>를 사용하는, <literal>SELECT ... "
+"FOR UPDATE</literal>를 사용하여 하나의 객체를 로드시킬 수도 있다. 추가 정보"
+"는 API 문서를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Any associated instances or contained collections will <emphasis>not</"
+"emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to "
+"specify <literal>lock</literal> or <literal>all</literal> as a cascade style "
+"for the association."
+msgstr ""
+"어떤 연관된 인스턴스들이나 포함된 콜렉션들은 당신이 그 연관에 대한 케스케이"
+"드 스타일로서 <literal>lock</literal> 또는 <literal>all</literal>을 지정하도"
+"록 결정하지 않는 한, <literal>FOR UPDATE</literal>로 선택되지 않음을 노트하"
+"라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"<literal>refresh()</literal> 메소드를 사용하여, 아무때나 하나의 객체와 모든 "
+"그것의 콜렉션들을 다시 로드시키는 것이 가능하다. 데이터베이스 트리거들이 그 "
+"객체의 프로퍼티들 중 어떤 것을 초기화 시키는데 사용될 때 이것이 유용하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"How much does Hibernate load from the database and how many SQL "
+"<literal>SELECT</literal>s will it use? This depends on the "
+"<emphasis>fetching strategy</emphasis>. This is explained in <xref linkend="
+"\"performance-fetching\" />."
+msgstr ""
+"중요한 질문이 대개 이 지점에서 나타난다: Hibernate는 데이터베이로부터 그것을 "
+"얼마나 많이 로드시키고 그리고 얼마나 많은 SQL <literal>SELECT</literal>들이 "
+"그것을 사용할 것인가? 이것은 <emphasis>페칭 방도</emphasis>에 의존하고 <xref "
+"linkend=\"performance-fetching\"/>에 설명되어 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "질의하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you do not know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You can also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"만일 당신이 당신이 찾고 있는 객체들에 대한 식별자들을 모를 경우, 당신은 하나"
+"의 질의를 필요로 한다. Hibernate는 사용이 쉽지만 강력한 객체 지향 질의 언어"
+"(HQL)를 지원한다. 프로그램 상의 질의 생성을 위해, Hibernate는 정교한 "
+"Criteria 및 Example 질의 특징(QBC와 QBE)를 지원한다. 당신은 또한 객체들로의 "
+"결과 셋 변환을 위한 선택적인 Hibernate의 지원으로, 당신의 데이터베이스의 "
+"native SQL 속에 당신의 질의를 표현할 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "질의들을 실행하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
+msgstr ""
+"HQL 질의와 native SQL 질의는 <literal>org.hibernate.Query</literal>의 인스턴"
+"스로 표현된다. 이 인터페이스는 파라미터 바인딩, 결과셋 핸들링을 위한, 그리고 "
+"실제 질의의 실행을 위한 메소드들을 제공한다. 당신은 항상 현재 "
+"<literal>Session</literal>을 사용하여 하나의 <literal>Query</literal>를 얻는"
+"다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A query is usually executed by invoking <literal>list()</literal>. The "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in a persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Queries that make use of eager "
+"fetching of collections usually return duplicates of the root objects, but "
+"with their collections initialized. You can filter these duplicates through "
+"a <literal>Set</literal>."
+msgstr ""
+"하나의 질의는 대개 <literal>list()</literal>를 호출하여 실행되고, 질의의 결과"
+"는 메모리 내에서 하나의 콜렉션 속으로 전체적으로 로드될 것이다. 하나의 질의"
+"에 의해 검색된 엔티티 인스턴스들은 영속(persistent) 상태에 있다. 당신의 질의"
+"가 하나의 객체를 오직 반환할 것임을 당신이 알고 있을 경우에 "
+"<literal>uniqueResult()</literal> 메소드는 단축을 제공한다. 콜렉션들에 대해 "
+"eager 페칭을 사용하는 질의들은 대개 (그것들의 초기화된 콜렉션들을 가진) 루트 "
+"객체들에 대한 중복들을 대개 반환한다. 당신은 <literal>Set</literal>을 통해 이"
+"들 중복들을 간단하게 필터링할 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "결과들을 반복하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will usually "
+"be the case if you expect that the actual entity instances returned by the "
+"query will already be in the session or second-level cache. If they are not "
+"already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"종종, 당신은 <literal>iterate()</literal> 메소드를 사용하여 질의를 실행함으로"
+"써 더 나은 퍼포먼스를 성취하는 것이 가능할 수 있다. 이것은 오직 대개 질의에 "
+"의해 반환되는 실제 엔티티 인스턴스들이 이미 세션 내에 있거나 second-level 캐"
+"시 내에 있을 것임을 당신이 예상하는 경우일 것이다. 만일 그것들이 이미 캐시되"
+"지 않았다면, <literal>iterate()</literal>는 <literal>list()</literal> 보다 "
+"더 느릴 것이고 간단한 질의에 대해 많은 데이터베이스 접속들을, 대개 오직 식별"
+"자들을 반환하는 초기 select에 대해 <emphasis>1</emphasis>번의 접속과 실제 인"
+"스턴스들을 초기화 시키는 추가적인 select들에 대해 <emphasis>n</emphasis> 번"
+"의 접속을 필요로 할 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "튜플들을 반환하는 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate queries sometimes return tuples of objects. Each tuple is returned "
+"as an array:"
+msgstr ""
+"Hibernate 질의들은 때때로 객체들의 튜플들을 반환하고, 그 경우에 각각의 튜플"
+"은 배열로서 반환된다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "스칼라 결과들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Queries can specify a property of a class in the <literal>select</literal> "
+"clause. They can even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+"질의들은 <literal>select</literal> 절 내에 하나의 클래스에 대한 하나의 프로퍼"
+"티를 지정할 수 있다. 그것들은 심지어 SQL 집계 함수들을 호출할 수도 있다. 프로"
+"퍼티들이나 aggregate들은 \"스칼라\" 결과들(그리고 영속 상태에 있는 엔티티들"
+"이 아닌 것으)로 간주된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "바인드 프라미터들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are as follows:"
+msgstr ""
+"<literal>Query</literal> 상의 메소드들은 명명된 파라미터들 또는 JDBC-스타일"
+"의 <literal>?</literal> 파라미터들에 바인딩 값들을 제공한다. <emphasis>JDBC와"
+"는 대조적으로, Hibernate 숫자 파라미터들은 0에서 시작된다.</emphasis> 명명된 "
+"파라미터들은 질의 문자열 속에서 <literal>:name</literal> 형식의 식별자들이"
+"다. 명명된 파라미터들의 장점들은 다음과 같다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters are insensitive to the order they occur in the query string"
+msgstr "명명된 파라미터들은 그것들이 질의 문자열 내에 발생하는 순서에 관계없다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "그것들은 동일한 질의 내에서 여러 번 발생할 수 있다"
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "그것은 자기-설명적이다"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "쪽매김"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set, that is, the maximum "
+"number of rows you want to retrieve and/or the first row you want to "
+"retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"만일 당신이 당신의 결과 셋에 경계(당신이 검색하고자 원하는 최대 개수 그리고/"
+"또는 당신이 검색하고자 원하는 첫 번째 행)을 지정할 필요가 있다면 당신은 "
+"<literal>Query</literal> 인터페이스의 메소드들을 사용해야 한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"Hibernate는 이 limit 질의를 당신의 DBMS의 native SQL로 번역하는 방법을 알고 "
+"있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "스크롤 가능한 iteration"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface can be used to obtain a "
+"<literal>ScrollableResults</literal> object that allows flexible navigation "
+"of the query results."
+msgstr ""
+"당신의 JDBC 드라이버가 스크롤 가능한 <literal>ResultSet</literal>들을 지원할 "
+"경우, <literal>Query</literal> 인터페이스는 <literal>ScrollableResults</"
+"literal> 객체를 얻는데 사용될 수 있고, 그것은 질의 결과들에 대한 유연한 네비"
+"게이션을 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that an open database connection and cursor is required for this "
+"functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"열려진 데이터베이스 커넥션(과 커서)가 이 기능에 필요함을 노트하고, 만일 당신"
+"이 쪽매김 기능을 작동시킬 필요가 있다면 <literal>setMaxResult()</literal>/"
+"<literal>setFirstResult()</literal>를 사용하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "명명된 질의들을 구체화 시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also define named queries in the mapping document. Remember to use a "
+"<literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup."
+msgstr ""
+"당신은 또한 매핑 문서 속에 명명된 질의들을 정의할 수 있다.(만일 당신의 질의"
+"가 마크업으로서 해석될 수 있는 문자들을 포함할 경우에 <literal>CDATA</"
+"literal> 섹션을 사용하는 것을 기억하라))"
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr "파라미터 바인딩과 실행은 프로그램 상으로 행해진다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The actual program code is independent of the query language that is used. "
+"You can also define native SQL queries in metadata, or migrate existing "
+"queries to Hibernate by placing them in mapping files."
+msgstr ""
+"실제 프로그램 코드는 사용되는 질의 언어에 독립적이고, 당신은 또한 메타데이터"
+"로 native SQL 질의들을 정의할 수도 있거나 그것들을 매핑 파일들 속에 기존 질의"
+"들을 위치지움으로써 기존 질의들을 Hibernate로 이전시킬 수도 있음을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal>&lt;hibernate-"
+"mapping&gt;</literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal>&lt;class&gt;</literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"또한 <literal>&lt;hibernate-mapping&gt;</literal> 요소 내에서 하나의 질의 선"
+"언은 그 질의에 대한 전역 유일 이름을 필요로 하고, 반면에 <literal>&lt;"
+"class&gt;</literal> 요소 내에서의 질의 선언은 클래스 이름으로 수직된이름을 첨"
+"가하여 자동적으로 유일하게 만들어진다. 예를 들어 <literal>eg.Cat."
+"ByNameAndMaximumWeight</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "콜렉션들을 필터링 하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that can "
+"be applied to a persistent collection or array. The query string can refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"콜렉션 <emphasis>필터</emphasis>는 영속 콜렉션 또는 배열에 적용될 수 있는 질"
+"의의 특별한 타입이다. 질의 문자열은 현재의 콜렉션 요소를 의미하는 "
+"<literal>this</literal>를 참조할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The returned collection is considered a bag that is a copy of the given "
+"collection. The original collection is not modified. This is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+"반환되는 콜렉션은 하나의 bag으로 간주되고, 그것은 주어진 콜렉션에 대한 사본이"
+"다. 원래의 콜렉션은 변경되지 않는다 (이것은 이름 \"filter\"의 의미와는 정반대"
+"이지만, 예상되는 행위와 일치된다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause, "
+"although they can have one if required. Filters are not limited to returning "
+"the collection elements themselves."
+msgstr ""
+"필터들은 <literal>from</literal> 절을 필요로 하지 않음을 관찰하라(필요할 경우"
+"에 필터들이 한 개의 from 절을 가질 수 있을지라도). 필터들은 콜렉션 요소들 자"
+"체들을 반환하는 것으로 한정되지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"large collection:"
+msgstr ""
+"심지어 하나의 공백의 필터 질의도 예를 들어 거대한 콜렉션 내에 있는 요소들의 "
+"부분집합들을 로드시키는데 유용하다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "Criteria 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"HQL is extremely powerful, but some developers prefer to build queries "
+"dynamically using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL은 극히 강력하지만 몇몇 개발자들은 질의 문자열들을 빌드하기 보다, 객체 지"
+"향 API를 사용하여 동적으로 질의들을 빌드시키는 것을 선호한다. Hibernate는 이"
+"들 경우들을 위한 직관적인 <literal>Criteria</literal> query API를 제공한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria"
+"\" />."
+msgstr ""
+"<literal>Criteria</literal>와 연관된 <literal>Example</literal> API 는 <xref "
+"linkend=\"querycriteria\"/>에서 상세하게 논의된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "native SQL에서 질의들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate manage the mapping from result sets to objects. You can at "
+"any time call <literal>session.connection()</literal> and use the JDBC "
+"<literal>Connection</literal> directly. If you choose to use the Hibernate "
+"API, you must enclose SQL aliases in braces:"
+msgstr ""
+"당신은 <literal>createSQLQuery()</literal>를 사용하여 SQL 속에 하나의 질의를 "
+"표현할 수 있고, Hibernate로 하여금 결과 셋들로부터 객체들로의 매핑을 처리하도"
+"록 할수도 있다. 당신은 아무때나 <literal>session.connection()</literal>을 호"
+"출할 수 있고 직접 JDBC <literal>Connection</literal>을 사용할 수 있음을 노트"
+"하라. 만일 당신이 Hibernate API를 사용하고자 선택한 경우에 , 당신은 SQL alias"
+"들을 중괄호들 속에 포함시켜야 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"SQL queries can contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\" />."
+msgstr ""
+"SQL 질의들은 Hibernate 질의들처럼 명명된 파라미터들과 위치 파라미터들을 포함"
+"할 수도 있다. SQL 질의들에 대한 추가 정보는 <xref linkend=\"querysql\"/>에서 "
+"찾을 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "영속 객체들을 변경하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (i.e. objects "
+"loaded, saved, created or queried by the <literal>Session</literal>) can be "
+"manipulated by the application, and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis>. This is discussed later in this chapter. There is no need to call "
+"a particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. The most straightforward way "
+"to update the state of an object is to <literal>load()</literal> it and then "
+"manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+"<emphasis>트랜잭션 상의 영속 인스턴스들</emphasis> (예를들면. "
+"<literal>Session</literal>에 의해 로드되고, 저장되고, 생성되거나 질의된 객체"
+"들)은 어플리케이션에 의해 처리될 수 있고 영속 상태에 대한 임의의 변경들은 "
+"<literal>Session</literal>이 <emphasis>flush될</emphasis> 때 영속화 될 것이다"
+"(이 장의 뒷 부분에서 논의됨). 당신의 변경들을 영속화 시키기 위해 (다른 용도"
+"를 가진 <literal>update()</literal>와 같은) 특별한 메소드를 호출할 필요가 없"
+"다. 따라서 객체의 상태를 업데이트 시키는 가장 간단한 방법은 "
+"<literal>Session</literal>이 열려 있는 동안, 그것을 <literal>load()</literal>"
+"시키고 나서, 그것을 직접 처리하는 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient, as it requires in the same "
+"session both an SQL <literal>SELECT</literal> to load an object and an SQL "
+"<literal>UPDATE</literal> to persist its updated state. Hibernate offers an "
+"alternate approach by using detached instances."
+msgstr ""
+"때때로 이 프로그래밍 모형은 불충분하다. 왜냐하면 그것은 동일한 세션 내에서 "
+"(객체를 로드시키는) SQL <literal>SELECT</literal>와 (그것의 업데이트된 상태"
+"를 영속화 시키는) SQL <literal>UPDATE</literal> 양자를 필요로 할 것이기 때문"
+"이다. 그러므로 Hibernate는 detached 인스턴스들을 사용하는 대안적인 접근법을 "
+"제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you do not have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate can, however, provide special mass operation functions. See <xref "
+"linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+"Hibernate는 <placeholder-1/> 문장 또는 <placeholder-2/> 문장의 직접적인 실행"
+"을 위한 그것 자신의 API를 제공하지 않음을 노트하라. Hibernate는 하나의 "
+"<placeholder-3/> 서비스이고, 당신은 그것을 사용할 <placeholder-4/>을 생각하"
+"지 말아야 한다. JDBC는 SQL 문장들을 실행시키는 완전한 API이고, 당신은 "
+"<placeholder-5/>을 호출하여 아무때나 한 개의 JDBC <placeholder-6/>을 얻을 수 "
+"있다. 게다가 대량 오퍼레이션의 개념은 온라인 트랜잭션 처리-지향적인 어플리케"
+"이션들을 위한 객체/관계형 매핑과 충돌한다. 하지만 Hibernate의 장래 버전들은 "
+"특별한 대용량의 오퍼레이션 기능들을 제공할 수도 있다. 몇몇 가능한 배치 오퍼레"
+"이션 트릭들에 대해서는 <xref linkend=\"batch\"/>을 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "detached 객체들을 변경시키기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"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 ""
+"많은 어플리케이션들은 하나의 트랜잭션 내에서 하나의 객체를 검색하고, 처리를 "
+"위한 UI 계층으로 그것을 전송하고, 그런 다음 새로운 트랜잭션 내에서 변경들을 "
+"저장할 필요가 있다. 고도의-동시성 환경에서 이런 종류의 접근법을 사용하는 어플"
+"리케이션들은 대개 작업의 \"긴\" 단위를 확실히 격리시키기 위해 버전화 된 데이"
+"터를 사용한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate는 <literal>Session.update()</literal> 메소드 또는 <literal>Session."
+"merge()</literal> 메소드를 사용하여 detached 인스턴스들의 재첨부를 제공함으로"
+"써 이 모형을 지원한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"만일 <literal>catId</literal> 식별자를 가진 <literal>Cat</literal>이 "
+"<literal>secondSession</literal>에 의해 이미 로드되었을 경우에 어플리케이션"
+"이 그것을 다시 재첨부하려고 시도할 때, 예외상황이 던져졌을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are certain that the session does not "
+"contain an already persistent instance with the same identifier. Use "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that the reattachment of your detached instances is "
+"the first operation that is executed."
+msgstr ""
+"만일 그 세션이 동일한 식별자를 가진 영속 인스턴스를 이미 포함하지 않음을 당신"
+"이 확신하는 경우에는 <literal>update()</literal>를 사용하고, 만일 당신이 세션"
+"의 상태를 고려하지 않은채로 아무때나 당신의 변경을 병합시키고자 원할 경우에"
+"는 <literal>merge()</literal>를 사용하라. 달리 말해, 당신의 detached 인스턴스"
+"들에 대한 재첨부가 실행되는 첫 번째 오퍼레이션임을 확실히 함으로써, "
+"<literal>update()</literal>는 대개 갓 만들어진 세션에서 당신이 호출하게 될 "
+"첫 번째 메소드이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances that are reachable from the given detached instance "
+"<emphasis>only</emphasis> if it wants their state to be updated. This can be "
+"automated using <emphasis>transitive persistence</emphasis>. See <xref "
+"linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+"어플리케이션은 만일 그것이 detached 인스턴스들의 상태가 또한 업데이트 되는 것"
+"을 원할 경우에<emphasis>만</emphasis> 주어진 detached 인스턴스로부터 도달 가"
+"능한 detached 인스턴스들을 개별적으로<literal>update()</literal> 시킬 것이"
+"다. 이것은 물론 <emphasis>transitive persistence(전이 영속)</emphasis>을 사용"
+"하여 자동화 될 수 있고, <xref linkend=\"objectstate-transitive\"/>를 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified."
+msgstr ""
+"<literal>lock()</literal> 메소드는 또한 하나의 객체를 새로운 세션에 대해 다"
+"시 연관시키는것을 어플리케이션에게 허용해준다. 하지만 detached 인스턴스는 변"
+"경되지 않아야 한다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s. See the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"<literal>lock()</literal>이 여러가지 <literal>LockMode</literal>들에 사용될 "
+"수 있음을 노트하고, 상세한 것은 API 문서와 트랜잭션 처리에 관한 장을 보라. 재"
+"첨부는 <literal>lock()</literal>에 대한 유일한 쓰임새는 아니다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\" />."
+msgstr ""
+"긴 작업 단위에 대한 다른 모형들은 <xref linkend=\"transactions-optimistic\"/>"
+"에서 논의된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "자동적인 상태 검출"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Hibernate 사용자들은 새로운 식별자를 생성시켜서 transient 인스턴스를 저장하거"
+"나 그것의 현재 식별자와 연관된 detached 인스턴스들을 업데이트/재첨부 시키는 "
+"일반적인 용도의 메소드를 요청했다. <literal>saveOrUpdate()</literal> 메소드"
+"는 이 기능을 구현한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"<literal>saveOrUpdate()</literal>의 사용 예제와 의미는 초심자들에게는 혼동스"
+"러워 보인다. 먼저, 하나의 세션에서 온 인스턴스를 또 다른 새로운 세션 내에서 "
+"사용하려고 시도하지 않는 한, 당신은 <literal>update()</literal>, "
+"<literal>saveOrUpdate()</literal>, 또는 <literal>merge()</literal>를 사용할 "
+"필요는 없을 것이다. 몇몇 전체 어플리케이션들은 이들 메소드들 중 어느 것도 결"
+"코 사용하지 않을 것이다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"대개 <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>는 다"
+"음 시나리오에서 사용된다:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "어플리케이션이 첫 번째 세션 내에 객체를 로드시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "객체가 UI 티어로 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "몇몇 변경들이 그 객체에 행해진다"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "객체가 비지니스 로직 티어로 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"어플리케이션은 두 번째 세션에서 <literal>update()</literal>를 호출함으로써 이"
+"들 변경들을 영속화 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal>는 다음을 행한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr ""
+"만일 객체가 이 세션 내에서 이미 영속화 되어 있을 경우, 아무것도 행하지 않는다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"만일 그 세션과 연관된 또 다른 객체가 동일한 식별자를 가질 경우, 예외상황을 던"
+"진다"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+"만일 그 객체가 식별자 프로퍼티를 갖지 않을 경우, 그것을 <literal>save()</"
+"literal> 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"만일 객체의 식별자가 새로이 초기화 된 객체에 할당된 값을 가질 경우, 그것을 "
+"<literal>save()</literal> 시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"if the object is versioned by a <literal>&lt;version&gt;</literal> or "
+"<literal>&lt;timestamp&gt;</literal>, and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"만일 객체가 (<literal>&lt;version&gt;</literal> 또는 <literal>&lt;"
+"timestamp&gt;</literal>에 의해) 버전화 되고, version 프로퍼티 값이 새로이 초"
+"기화 된 객체에 할당된 것과 동일한 값일 경우, 그것을 <literal>save()</"
+"literal> 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr "그 밖의 경우 그 객체를 <literal>update()</literal> 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "그리고 <literal>merge()</literal>는 매우 다르다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"만일 세션과 현재 연관된 동일한 식별자를 가진 영속 인스턴스가 존재할 경우, 주"
+"어진 객체의 상태를 영속 인스턴스 상으로 복사한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"만일 세션과 현재 연관된 영속 인스턴스가 존재하지 않을 경우, 데이터베이스로부"
+"터 그것을 로드시키려고 시도하거나 새로운 영속 인스턴스를 생성시키려고 시도한"
+"다"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "영속 인스턴스가 반환된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"주어진 인스턴스는 세션과 연관되지 않고, 그것은 detached 상태에 머무른다"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "영속 객체들을 삭제하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Your application, however, can still hold a reference to a deleted "
+"object. It is best to think of <literal>delete()</literal> as making a "
+"persistent instance, transient."
+msgstr ""
+"<literal>Session.delete()</literal>는 데이터베이스로부터 객체의 상태를 제거"
+"할 것이다. 물론 당신의 어플리케이션은 여전히 detached 객체에 대한 참조를 소유"
+"할 것이다. 영속 인스턴스를 transient로 만들 때 <literal>delete()</literal>를 "
+"생각하는 것이 최상이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can delete objects in any order, without risk of foreign key constraint "
+"violations. It is still possible to violate a <literal>NOT NULL</literal> "
+"constraint on a foreign key column by deleting objects in the wrong order, e."
+"g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"당신은 foreign 키 컨스트레인트 위배들에 대한 위험성 없이 당신이 좋아하는 어"
+"떤 순서로 객체들을 삭제할 수도 있다. 잘못된 순서로 객체들을 삭제함으로써 "
+"foreign 키 컬럼에 대한 <literal>NOT NULL</literal> 컨스트레인트를 위배할 가능"
+"성이 여전히 존재한다. 예를 들어, 당신이 부모를 삭제하지만, 그 자식들을 삭제하"
+"는 것을 잊은 경우."
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "두 개의 다른 데이터저장소들 사이에 객체들을 복제하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is sometimes useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"영속 인스턴스들의 그래프를 취하고 식별자 값들을 다시 생성시키지 않고서 그것들"
+"을 다른 저장소 속에 영속화 시키는 것을 가능하도록 만드는 것이 종종 유용하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+"<literal>ReplicationMode</literal>는 <literal>replicate()</literal>가 데이터"
+"베이스 내에 있는 기존의 행들과의 충돌을 처리하게될 방법을 결정한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal> - 동일한 식별자를 가진 기존 데이터"
+"베이스 행이 존재할 경우에 그 객체를 무시한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal> - 동일한 식별자를 가진 어떤 기존"
+"의 데이터베이스 행을 덮어 쓴다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal> - 만일 동일한 식별자를 가진 기"
+"존 데이터베이스 행이 존재할 경우에 예외상황을 던진다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - 행의 버전 번호가 객체의 "
+"버전 번호 보다 이전의 것이면 덮어쓰고, 그 밖의 경우에 그 객체를 무시한다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"이 특징의 쓰임새들은 다른 데이터베이스 인스턴스들 속으로 입력된 데이터 일치시"
+"키기, 제품 업그레이드 동안에 시스템 구성 정보 업데이트 하기, non-ACID 트랜잭"
+"션들 동안에 행해진 변경들을 롤백시키기 등을 포함한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "Session을 flush 시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes the <literal>Session</literal> will execute the SQL statements "
+"needed to synchronize the JDBC connection's state with the state of objects "
+"held in memory. This process, called <emphasis>flush</emphasis>, occurs by "
+"default at the following points:"
+msgstr ""
+"시간이 지남에 따라 <literal>Session</literal>은 JDBC 커넥션의 상태와 메모리 "
+"내에 보관된 객체들의 상태를 동기화 시키는데 필요한 SQL 문장들을 실행시킬 것이"
+"다. 이 프로세스 <emphasis>flush</emphasis>는 다음 시점들에서 디폴트로 발생한"
+"다"
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "몇몇 질의들이 실행되기 전에"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "<literal>org.hibernate.Transaction.commit()</literal> 시점에서"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "<literal>Session.flush()</literal> 시점에서"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "SQL 문장들이 다음 순서로 실행 명령이 내려진다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"all entity insertions in the same order the corresponding objects were saved "
+"using <literal>Session.save()</literal>"
+msgstr ""
+"대응하는 객체들이 <literal>Session.save()</literal>를 사용하여 저장되었던 것"
+"과 같은 순서로, 모든 엔티티 삽입들"
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "모든 엔티티 업데이트들"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "모든 콜렉션 삭제들"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr "모든 콜렉션 요소 삭제들, 업데이트들 그리고 삽입들"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "모든 콜렉션 삽입들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"all entity deletions in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"대응하는 객체들이 <literal>Session.delete()</literal>를 사용하여 삭제되었던 "
+"것과 같은 순서로 모든 엔티티 삭제들."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved."
+msgstr ""
+"(한가지 예외는 객체들이 저장될 때 <literal>native</literal> ID 생성을 사용하"
+"는 객체들이 insert 되는 점이다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Except when you explicitly <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale or incorrect data."
+msgstr ""
+"당신이 명시적으로 <literal>flush()</literal> 시킬 때를 제외하면, "
+"<literal>Session</literal>이 JDBC 호출들을 실행시키는 <emphasis>시점</"
+"emphasis>, 그것들이 실행되는 <emphasis>순서</emphasis>만을 절대적으로 보장하"
+"지는 않는다. 하지만 Hibernate는 <literal>Query.list(..)</literal>가 실효성이 "
+"없는 데이터를 결코 반환하지 않을 것임을 보장하거나; 그것들이 잘못된 데이터도 "
+"반환하지 않을 것임을 보장한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time when the Hibernate <literal>Transaction</"
+"literal> API is used, flush automatically using the explained routine, or "
+"never flush unless <literal>flush()</literal> is called explicitly. The last "
+"mode is useful for long running units of work, where a <literal>Session</"
+"literal> is kept open and disconnected for a long time (see <xref linkend="
+"\"transactions-optimistic-longsession\" />)."
+msgstr ""
+"flush가 너무 자주 발생하지 않도록 디폴트 행위를 변경하는 것이 가능하다. "
+"<literal>FlushMode</literal> 클래스는 세 개의 다른 모드들을 정의한다: 오직 커"
+"밋 시(그리고 Hibernate <literal>Transaction</literal> API가 사용될 때에만) "
+"flush 모드, 설명된 루틴을 사용하는 자동적인 flush 모드, 또는 <literal>flush()"
+"</literal>가 명시적으로 호출되지 않는 한 flush 시키지 않는 모드. 마지막 모드"
+"는 오래 동안 실행되는 작업 단위에 대해 유용하고, 여기서 <literal>Session</"
+"literal>은 열려진채로 유지되고 오랜 시간 동안 연결이 해제된 채로 유지된다. "
+"(<xref linkend=\"transactions-optimistic-longsession\"/>를 보라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\" />."
+msgstr ""
+"flush 동안에, 하나의 예외상황이 발생할 수도 있다(예를 들면. 만일 DML 오퍼레이"
+"션이 컨스트레인트를 위반할 경우). 예외상황들을 처리하는 것은 Hibernatem의 트"
+"랜잭션 특징에 관한 어떤 이해를 수반하며, 우리는 <xref linkend=\"transactions"
+"\"/>에서 그것을 논의한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "Transitive persistence(전이 영속)"
+
+#. Tag: para
+#, 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
+#, fuzzy, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved and when the parent is deleted, the children will be deleted, etc. "
+"This works for operations such as the removal of a child from the "
+"collection. Since value-typed objects cannot have shared references, "
+"Hibernate will detect this and delete the child from the database."
+msgstr ""
+"만일 부모/자식 관계에서 자식들이 값(value) 타입(예를 들면. 주소들 또는 문자열"
+"들을 가진 하나의 콜렉션)일 경우, 그것들의 생명주기는 부모에 의존할 것이고 상"
+"태 변경들에 대해 편리한 \"케스케이딩\"에 더 이상의 액션이 필요하지 않을 것이"
+"다. 만일 부모가 저장될 때, 값(value)-타입의 자식 객체들도 마찬가지로 저장되"
+"고, 부모가 삭제될 때, 자식들이 삭제될 것이다. 이것은 심지어 콜렉션으로부터 하"
+"나의 자식을 제거하는 그런 오퍼레이션들에 대해서도 동작한다; Hibernate는 이것"
+"을 검출하고, 값(value)-타입의 객체들은 참조를 공유할 수 없으므로, 데이터베이"
+"스로부터 그 자식을 삭제시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"이제 값(value) 타입이 아닌, 엔티티들인 부모와 자식 객체들을 가진 동일한 시나"
+"리오를 검토하자(예를 들면. 카테고리들과 아이템들, 또는 부모 고양이나 자식 고"
+"양이). 엔티티들은 그것들 자신의 생명주기를 갖고, 공유된 참조들을 지원하고 (따"
+"라서 콜렉션으로부터 하나의 엔티티를 제거하는 것은 그것이 삭제될 수 있음을 의"
+"미하지 않는다), 그리고 디폴트로 하나의 엔티티로부터 어떤 다른 연관된 엔티티들"
+"로의 상태의 케스케이딩은 존재하지 않는다. Hibernate는 디폴트로 <emphasis>도달"
+"가능성에 의한 영속성(persistence by reachability)</emphasis>을 구현하지 않는"
+"다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"- <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal>를 포함하는- Hibernate 세션에 대한 각각의 기본 "
+"오퍼레이션에 대해서 하나의 대응하는 케스케이딩 스타일이 존재한다. 케스케이드 "
+"스타일들 각각은 <literal>create, merge, save-update, delete, lock, refresh, "
+"evict, replicate</literal>로 명명된다. 만일 당신이 하나의 오퍼레이션이 하나"
+"의 연관에 따라 케스케이딩되는 것을 원할 경우, 당신은 매핑 문서 내에 그것을 지"
+"시해야 한다. 예를 들면:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr "케스케이딩 스타일들이 결합될 수도 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"당신은 <emphasis>모든</emphasis> 오퍼레이션들이 그 연관에 따라 케스케이드 되"
+"어야 함을 지정하는데 <literal>cascade=\"all\"</literal>을 사용할 수도 있다. "
+"디폴트<literal>cascade=\"none\"</literal>은 오퍼레이션들이 케스케이드 되지 않"
+"을 것임을 지정한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"특정한 케스케이드 스타일인, <literal>delete-orphan</literal>은 오직 one-to-"
+"many 연관들에만 적용되고, <literal>delete()</literal> 오퍼레이션이 그 연관으"
+"로부터 제거되는 임의의 자식 객체에 적용되어야 함을 나타낸다."
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "권장사항들 :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It does not usually make sense to enable cascade on a <literal>&lt;many-to-"
+"one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. "
+"Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and "
+"<literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+"하나의 <literal>&lt;many-to-one&gt;</literal> 또는 <literal>&lt;many-to-"
+"many&gt;</literal> 연관에 대해 케스케이드를 가능하게 하는 것은 대개 의미가 없"
+"다. 케스케이드는 <literal>&lt;one-to-one&gt;</literal> 연관과 <literal>&lt;"
+"one-to-many&gt;</literal> 연관에 대해 종종 유용하다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"만일 자식 객체의 수명이 그 부모 객체의 수명에 묶여져 있을 경우, "
+"<literal>cascade=\"all,delete-orphan\"</literal>을 지정함으로써 그것을 "
+"<emphasis>생명 주기 객체</emphasis>로 만들어라."
+
+#. Tag: para
+#, 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 "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"그 밖의 경우, 당신은 케스케이드를 전혀 필요로 하지 않을 수 있다. 그러나 만일 "
+"당신이 동일한 트랜잭션 내에서 부모와 자식에 대해 자주 함께 작업하게 될 것이"
+"라 생각되고, 당신 스스로 타이핑 하는 것을 절약하고자 원할 경우, "
+"<literal>cascade=\"persist,merge,save-update\"</literal>를 사용하는 것을 고려"
+"하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"<literal>cascade=\"all\"</literal>을 가진 (단일 값 연관이든 하나의 콜렉션이"
+"든) 하나의 연관을 매핑시키는 것은 그 연관을 부모의 저장/업데이트/삭제가 자식 "
+"또는 자식들의 저장/업데이트/삭제로 귀결되는 <emphasis>부모/자식</emphasis> 스"
+"타일의 관계로 마크한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Furthermore, a mere reference to a child from a persistent parent will "
+"result in save/update of the child. This metaphor is incomplete, however. A "
+"child which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"게다가, 하나의 영속 부모로부터 하나의 자식에 대한 단순한 참조는 자식의 저장/"
+"업데이트로 귀결될 것이다. 하지만 이 메타포는 불완전하다. 그것의 부모에 의해 "
+"참조 해제되는 자식은 <literal>cascade=\"delete-orphan\"</literal>으로 매핑된 "
+"하나의 <literal>&lt;one-to-many&gt;</literal> 연관의 경우를 제외하면, 자동적"
+"으로 삭제되지 <emphasis>않는다</emphasis>. 하나의 부모/자식 관계에 대한 케스"
+"케이딩 오퍼레이션의 정확한 의미는 다음과 같다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"만일 부모가 <literal>persist()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>persist()</literal>에 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"만일 부모가 <literal>merge()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>merge()</literal>에 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"만일 부모가 <literal>save()</literal>, <literal>update()</literal> 또는 "
+"<literal>saveOrUpdate()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>saveOrUpdate()</literal>에 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"만일 transient 또는 detached 자식이 영속 부모에 의해 참조될 경우, 그것은 "
+"<literal>saveOrUpdate()</literal>에 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"만일 부모가 삭제될 경우, 모든 자식들이 <literal>delete()</literal>에 전달된다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"만일 자식이 영속 부모에 의해 참조 해제 될 경우, <literal>cascade=\"delete-"
+"orphan\"</literal>이 아닌 한, <emphasis>특별한 어떤 것도 발생하지 않는다</"
+"emphasis> - 어플리케이션은 필요한 경우에 자식을 명시적으로 삭제해야 한다 -, "
+"<literal>cascade=\"delete-orphan\"</literal>인 경우에 \"orphaned(고아)\"인 경"
+"우 자식이 삭제된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-update</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"마지막으로 오퍼레이션들의 케스케이딩이 <emphasis>호출 시점</emphasis>에서 또"
+"는 <emphasis>flush 시점</emphasis>에서 객체 그래프에 적용될 수 있음을 노트하"
+"라. 이용 가능할 경우에 모든 오퍼레이션들은 그 오퍼레이션이 실행될 때 도달 가"
+"능한 연관된 엔티티들에 대해 케스케이드 된다. 하지만 <literal>save-upate</"
+"literal>와 <literal>delete-orphan</literal>은 <literal>Session</literal>의 "
+"flush 동안에 도달 가능한 모든 연관된 엔티티들에 대해 이행적(transitive)이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "메타데이터 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate requires a rich meta-level model of all entity and value types. "
+"This model can be useful to the application itself. For example, the "
+"application might use Hibernate's metadata to implement a \"smart\" deep-"
+"copy algorithm that understands which objects should be copied (eg. mutable "
+"value types) and which objects that should not (e.g. immutable value types "
+"and, possibly, associated entities)."
+msgstr ""
+"Hibernate는 모든 엔티티와 값(value) 타입들을 가진 매우 풍부한 메타-레벨 모형"
+"을 필요로 한다. 시간이 지남에 따라, 이 모형은 어플리케이션 그 자체에 매우 유"
+"용하다. 예를 들어, 어플리케이션은 어느 객체들이 복사되어야 하는지(예를 들면 "
+"가변적인 값(value) 타입들) 그리고 어느 것이 복사되지 말아야 하는지(예를 들"
+"면, 불변의 value 타입들과 가능한 연관된 엔티티들)를 인지하는 \"스마트\" deep-"
+"copy 알고리즘을 구현하는데 Hibernate의 메타데이터를 사용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces can be obtained "
+"from the <literal>SessionFactory</literal>."
+msgstr ""
+"Hibernate는 <literal>ClassMetadata</literal> 인터페이스와 "
+"<literal>CollectionMetadata</literal> 인터페이스 그리고 <literal>Type</"
+"literal> 계층구조를 통해 메타데이터를 노출시킨다. 메타데이터 인터페이스들의 "
+"인스턴스들은 <literal>SessionFactory</literal>로부터 얻어질 수도 있다."
+
+#~ msgid "UPDATE"
+#~ msgstr "UPDATE"
+
+#~ msgid "DELETE"
+#~ msgstr "DELETE"
+
+#~ msgid "state management"
+#~ msgstr "상태 관리"
+
+#~ msgid "statements"
+#~ msgstr "문장들"
+
+#~ msgid "Connection"
+#~ msgstr "session.connection()"
+
+#~ msgid "session.connection()"
+#~ msgstr "Connection"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,949 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "도구셋 안내"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, and Ant tasks."
+msgstr ""
+"Hibernate에 대한 라운드트립 엔지니어링은 Eclipse 플러그인 세트, 명령라인 도구"
+"들, 뿐만 아니라 Ant 태스크들을 사용하여 가능하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"<emphasis>Hibernate 도구들</emphasis>은 현재 기존 데이터베이스들에 대한 리버"
+"스 엔지니어링을 위해 Ant 태스크들 뿐만 아니라 Eclipse IDE용 플러그인들을 포함"
+"하고 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping "
+"files that supports auto-completion and syntax highlighting. It also "
+"supports semantic auto-completion for class names and property/field names, "
+"making it more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>매핑 편집기:</emphasis> 자동 완성 기능과 구문 강조를 지원하는 "
+"Hibernate XML 매핑 파일들에 대한 편집기. 그것은 또한 통상의 XML 편집기 보다 "
+"훨씬 더 융통성 있게 만들어서 클래스 이름들과 프로퍼티/필드 이름들에 대한 의미"
+"론적 자동 완성 기능을 지원한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> the console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you are also "
+"provided with an interactive view of your persistent classes and their "
+"relationships. The console allows you to execute HQL queries against your "
+"database and browse the result directly in Eclipse."
+msgstr ""
+"<emphasis>콘솔:</emphasis> 콘솔은 Eclipse에서 새로운 뷰이다. 당신의 콘솔 구성"
+"들에 대한 tree overview에 덧붙여, 당신은 또한 당신의 영속 클래스들과 그것들"
+"의 관계들에 대한 상호작용 뷰를 얻는다. 콘솔은 당신의 데이터베이스에 대해 HQL "
+"질의들을 실행하고 그 결과를 Eclipse 내에서 직접 브라우징 하도록 당신에게 허용"
+"해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> several wizards are provided with "
+"the Hibernate Eclipse tools. You can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or to reverse engineer an existing "
+"database schema into POJO source files and Hibernate mapping files. The "
+"reverse engineering wizard supports customizable templates."
+msgstr ""
+"<emphasis>개발 마법사들:</emphasis> 몇몇 마법사들이 Hibernate Eclipse 도구들"
+"에 제공된다; 당신은 Hibernate 구성 (cfg.xml) 파일들을 빠르게 생성시키는데 마"
+"법사를 사용하거나, 심지어 당신은 기존 데이터베이스 스키마를 POJO 소스 파일들"
+"과 Hibernate 매핑 파일들로 완전하게 리버스 엔지니어링할 수도 있다. 리버스 엔"
+"지니어링 마법사는 맞춤 가능한 템플릿들을 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package "
+"documentation for more information."
+msgstr ""
+"추가 정보는 <emphasis>Hibernate Tools</emphasis> 패키지와 그것의 문서를 참조"
+"하길 바란다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool : "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even "
+"be used from \"inside\" Hibernate."
+msgstr ""
+"하지만 Hibernate 메인 패키지는 통합 도구에 번들화 되어 있다(그것은 심지어 플"
+"라이 상에서 Hibernate \"내에서\" 사용될 수 있다): <emphasis>SchemaExport</"
+"emphasis> 별칭은 <literal>hbm2ddl</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "자동적인 스키마 생성"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"DDL can be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints, primary and "
+"foreign keys, for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"DDL은 Hibernate 유틸리티에 의해 당신의 매핑 파일들로부터 생성될 수 있다. 생성"
+"된 스키마는 엔티티 테이블과 콜렉션 테이블에 대한 참조 무결성 컨스트레인트들"
+"(프라이머리 키와 foreign 키들)을 포함한다. 테이블들과 시퀀스들은 또한 페칭된 "
+"식별자 생성기들에 대해 생성된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor-specific."
+msgstr ""
+"DDL이 매우 벤더에 특정하므로, 이 도구를 사용할 때 당신은 <literal>hibernate."
+"dialect</literal> 프로퍼티를 통해 한 개의 SQL <literal>Dialect</literal>를 지"
+"정<emphasis>해야 한다</emphasis>."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, you must customize your mapping files to improve the generated "
+"schema. The next section covers schema customization."
+msgstr ""
+"먼저 생성된 스키마를 개선시키기 위해 당신의 매핑 파일들을 맞춤화 시켜라."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "스키마 맞춤화 시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You can set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"많은 Hibernate 매핑 요소들은 <literal>length</literal>로 명명된 옵션 속성을 "
+"정의한다. 당신은 이 속성으로 컬럼의 길이를 설정할 수 있다.(또는 numeric/"
+"decimal 데이터 타입들, 배정도에 대해 ). 많은 Hibernate 매칭 요소들은 "
+"<literal>length</literal>, <literal>precision</literal> 그리고 "
+"<literal>scale</literal>로 명명된 옵션 속성들을 정의하고 있다. 당신은 이 속성"
+"으로서 컬럼이 길이, 정밀도, 크기를 설정할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute for generating "
+"a <literal>NOT NULL</literal> constraint on table columns, and a "
+"<literal>unique</literal> attribute for generating <literal>UNIQUE</literal> "
+"constraint on table columns."
+msgstr ""
+"몇몇 태그들은 또한 (테이블 컬럼들에 대한 <literal>NOT NULL</literal> 컨스트레"
+"인트를 생성시키는) <literal>not-null</literal> 속성과 (테이블 컬럼들에 대한 "
+"<literal>UNIQUE</literal> 컨스트레인트를 생성시키는) <literal>unique</"
+"literal> 속성을 수용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute can be used to group columns in a "
+"single, unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL. It is only used to group the "
+"columns in the mapping file."
+msgstr ""
+"<literal>unique-key</literal> 속성은 하나의 유일 키 컨스트레인트로 컬럼들을 "
+"그룹지우는데 사용될 수도 있다. 현재 <literal>unique-key</literal> 속성의 지정"
+"된 값은 산출된 DDL내에서 컨스트레인트를 명명하는데 사용되지 <emphasis>않고</"
+"emphasis>, 오직 매핑 파일 내에서 컬럼들을 그룹 지우는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns can be "
+"grouped into the same index by simply specifying the same index name."
+msgstr ""
+"<literal>index</literal> 속성은 매핑된 컬럼 또는 컬럼들을 사용하여 생성될 인"
+"덱스의 이름을 지정한다. 간단하게 동일한 인덱스 이름을 지정함으로써 여러 컬럼"
+"들이 동일한 인덱스 내로 그룹지워질 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute can be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"<literal>foreign-key</literal> 속성은 임의의 산출된 foreign 키 컨스트레인트"
+"의 이름을 오버라이드 시키는데 사용될 수 도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal>&lt;column&gt;</literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"많은 매핑 요소들은 또한 하나의 자식 <literal>&lt;column&gt;</literal> 요소를 "
+"허용한다. 이것은 특히 다중 컬럼 타입들을 매핑하는데 유용하다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>default</literal> attribute allows you to specify a default "
+"value for a column.You should assign the same value to the mapped property "
+"before saving a new instance of the mapped class."
+msgstr ""
+"다른 방법으로, 이들 요소들은 또한 자식 <literal>&lt;column&gt;</literal> 요소"
+"를 수용한다. 이것은 다중 컬럼 타입들에 특히 유용하다: <literal>default</"
+"literal> 속성은 당신으로 하여금 하나의 컬럼에 대한 디폴트 값을 설정하도록 한"
+"다(당신은 매핑된 클래스의 새로운 인스턴스를 저장하기 전에 매핑된 프로퍼티에 "
+"동일한 값을 할당하게 될 것이다)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"<literal>sql-type</literal> 속성은 SQL 데이터타입에 대한 Hibernate 타입의 디"
+"폴트 매핑을 오버라이드 시키는 것을 사용자에게 허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"<literal>check</literal> 속성은 check 컨스트레인트를 지정하는 것을 당신에게 "
+"허용해준다."
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "요약"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "속성"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "값들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "해석"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>length</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "number"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "컬럼 길이"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "컬럼 decimal 정밀도"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "컬럼 decimal 크기"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "컬럼이 null이 아니어야 함을 지정한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "컬럼이 하나의 유일 컨스트레인트를 가져야함을 지정한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>index</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "(다중-컬럼) 인덱스의 이름을 지정한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "다중-컬럼 유일 컨스트레인트의 이름을 지정한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "foreign_key_name"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-"
+"to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-"
+"to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"하나의 연관에 대해, <placeholder-1/>, <placeholder-2/>, <placeholder-3/>, 또"
+"는 <placeholder-4/> 매핑 요소에 대해 foreign key 컨스트레인트의 이름을 지정한"
+"다.<placeholder-5/> 측들은 <placeholder-6/>에 의해 고려되지 않을 것임을 노트"
+"하라."
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "SQL column type"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal>&lt;column&gt;</"
+"literal> element only)"
+msgstr ""
+"디폴트 컬럼 타입을 오버라이드 시킨다 (<placeholder-1/> 요소의 속성에만)"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>default</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "SQL expression"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "컬럼에 대한 디폴트 값을 지정한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>check</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr "컬럼 또는 테이블에 대한 SQL check 컨스트레인트를 생성시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;comment&gt;</literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"<literal>&lt;comment&gt;</literal> 요소는 생성된 스키마에 대한 주석들을 지정"
+"하는 것을 당신에게 허용해준다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL where supported."
+msgstr ""
+"이것은 (지원되는 경우) 생성된 DDL에서 <literal>comment on table</literal> 또"
+"는 <literal>comment on column</literal> 문장으로 귀결된다."
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "도구 실행하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"<literal>SchemaExport</literal> 도구는 DDL 스크립트를 표준 출력으로 기록 하"
+"고/하거나 DDL 문장들을 실행시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaExport</literal> command "
+"line options"
+msgstr "<literal>SchemaExport</literal> 명령 라인 옵션들"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "<literal>SchemaExport</literal> 명령 라인 옵션들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "옵션"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "설명"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not output the script to stdout"
+msgstr "스크립트를 표준출력으로 출력하지 않는다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "오직 테이블들을 드롭시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "오직 테이블들을 생성시킨다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not export to the database"
+msgstr "데이터베이스로 내보내기 하지 않는다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "--output=my_schema.ddl"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "ddl 스크립트를 파일로 출력한다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "--naming=eg.MyNamingStrategy"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "--config=hibernate.cfg.xml"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "XML 파일로부터 Hibernate 구성을 읽어들인다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "read database properties from a file"
+msgstr ""
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어들인다\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어 들인다\n"
+"#-#-#-#-#  - (PACKAGE VERSION)  #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어들인다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "생성된 SQL을 스크립트 내에 좋게 형식지운다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "스크립트를 위한 라인 경계의 끝을 설정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaExport</literal>를 삽입시킬 수"
+"도 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "프로퍼티들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Database properties can be specified:"
+msgstr "데이터베이스 프로퍼티들은 다음과 같이 지정될 수 있다"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+msgstr ""
+"<literal>-D</literal><emphasis>&lt;property&gt;</emphasis>를 가진 시스템 프로"
+"퍼티로서"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr "<literal>--properties</literal>를 가진 명명된 프로퍼티들 내에서"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "필요한 프로퍼티들은 다음과 같다:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "SchemaExport 커넥션 프로퍼티들"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "프로퍼티 이름"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "hibernate.connection.driver_class"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "jdbc 드라이버 클래스"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "jdbc url"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "데이터베이스 사용자"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "사용자 패스워드"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "<literal>hibernate.properties</literal> 내에서"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "dialect"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "Ant 사용하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"당신은 당신의 Ant 빌드 스크립트에서 <literal>SchemaExport</literal>를 호출할 "
+"수 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "점증하는 스키마 업데이트들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon "
+"the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+"<literal>SchemaUpdate</literal> 도구는 \"점증하는\" 변경들을 가진 기존 스키마"
+"를 변경시킬 것이다. <literal>SchemaUpdate</literal>는 JDBC 메타데이터 API에 "
+"무겁게 의존하여서, 그것은 모든 JDBC 드라이버들에 동작하지 않을 것임을 주목하"
+"라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "<literal>SchemaUpdate</literal> 명령 라인 옵션들"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "do not export the script to the database"
+msgstr "스크립트를 데이터베이스로 내보내기 하지 않는다"
+
+#. Tag: entry
+#, fuzzy, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "<placeholder-1/> 파일을 지정한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaUpdate</literal>를 삽입시킬 "
+"수 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "점증하는 스키마 업데이트들에 Ant 사용하기"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr ""
+"당신은 Ant 스크립트에서<literal>SchemaUpdate</literal>를 호출할 수 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "스키마 유효성 검사"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. The "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API and, as such, will not work with all JDBC drivers. This tool is "
+"extremely useful for testing."
+msgstr ""
+"<literal>SchemaValidator</literal> 도구는 기존의 데이터베이스 스키마가 당신"
+"의 매핑 문서들과 \"일치하는지\"를 유효성 검사할 것이다. "
+"<literal>SchemaValidator</literal>가 JDBC 메타데이터 API에 무겁게 의존하므로 "
+"그것은 모든 JDBC 드라이버들에 대해 동작하지 않을 것이다. 이 도구는 테스팅에 "
+"극히 유용하다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaValidator</literal> command "
+"line options:"
+msgstr "<literal>SchemaValidator</literal> 명령 라인 옵션들"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "<literal>SchemaValidator</literal> 명령 라인 옵션들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaValidator</literal>을 삽입시"
+"킬 수 도 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "스키마 유효성 검사를 위해 Ant 사용하기"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr ""
+"당신은 Ant 스크립트에서 <literal>SchemaValidator</literal>를 호출할 수 있다:"
+
+#~ msgid "length"
+#~ msgstr "length"
+
+#~ msgid "precision"
+#~ msgstr "precision"
+
+#~ msgid "scale"
+#~ msgstr "scale"
+
+#~ msgid "not-null"
+#~ msgstr "not-null"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "unique"
+#~ msgstr "unique"
+
+#~ msgid "index"
+#~ msgstr "index"
+
+#~ msgid "index_name"
+#~ msgstr "index_name"
+
+#~ msgid "unique-key"
+#~ msgstr "unique-key"
+
+#~ msgid "unique_key_name"
+#~ msgstr "unique_key_name"
+
+#~ msgid "foreign-key"
+#~ msgstr "foreign-key"
+
+#~ msgid "sql-type"
+#~ msgstr "sql-type"
+
+#~ msgid "default"
+#~ msgstr "default"
+
+#~ msgid "check"
+#~ msgstr "check"
+
+#~ msgid "--quiet"
+#~ msgstr "--quiet"
+
+#~ msgid "--drop"
+#~ msgstr "--drop"
+
+#~ msgid "--create"
+#~ msgstr "--create"
+
+#~ msgid "--text"
+#~ msgstr "--text"
+
+#~ msgid "--properties=hibernate.properties"
+#~ msgstr "--properties=hibernate.properties"
+
+#~ msgid "--format"
+#~ msgstr "--format"
+
+#~ msgid "--delimiter=;"
+#~ msgstr "--delimiter=;"
+
+#~ msgid "hibernate.connection.url"
+#~ msgstr "hibernate.connection.url"
+
+#~ msgid "hibernate.connection.username"
+#~ msgstr "hibernate.connection.username"
+
+#~ msgid "hibernate.connection.password"
+#~ msgstr "hibernate.connection.password"
+
+#~ msgid "hibernate.dialect"
+#~ msgstr "hibernate.dialect"
+
+#~ msgid "Ant Tasks:"
+#~ msgstr "Ant 태스크들:"
+
+#~ msgid "&lt;one-to-one&gt;"
+#~ msgstr "&lt;one-to-one&gt;"
+
+#~ msgid "&lt;many-to-one&gt;"
+#~ msgstr "&lt;many-to-one&gt;"
+
+#~ msgid "&lt;key&gt;"
+#~ msgstr "&lt;key&gt;"
+
+#~ msgid "&lt;many-to-many&gt;"
+#~ msgstr "&lt;many-to-many&gt;"
+
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "SchemaExport"
+#~ msgstr "SchemaExport"
+
+#~ msgid "&lt;column&gt;"
+#~ msgstr "&lt;column&gt;"
+
+#~ msgid "java -cp"
+#~ msgstr "java -cp"
+
+#~ msgid "hibernate_classpaths"
+#~ msgstr "hibernate_classpaths"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaExport"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaExport"
+
+#~ msgid "options mapping_files"
+#~ msgstr "options mapping_files"
+
+#~ msgid "NamingStrategy"
+#~ msgstr "NamingStrategy"
+
+#~ msgid "select a <placeholder-1/>"
+#~ msgstr "하나의 <placeholder-1/>를 선택한다"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+
+#~ msgid ".cfg.xml"
+#~ msgstr ".cfg.xml"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaValidator"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaValidator"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1779 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "트랜잭션들과 동시성"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. It is recommended "
+"that you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"Hibernate와 동시성 제어에 대한 가장 중요한 점은 이해하기가 매우 쉽다는 점이"
+"다. Hibernate는 어떤 추가적인 잠금 행위 없이 JDBC 커넥션들과 JTA 리소스들을 "
+"직접 사용한다. 우리는 당신의 데이터베이스 관리 시스템의 JDBC, ANSI, 그리고 트"
+"랜잭션 격리 명세에 약간의 시간을 할애할 것을 매우 권장한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Through <literal>Session</literal>, which is also a transaction-scoped "
+"cache, Hibernate provides repeatable reads for lookup by identifier and "
+"entity queries and not reporting queries that return scalar values."
+msgstr ""
+"Hibernate는 메모리 내에서 객체들을 잠그지 않는다. 당신의 어플리케이션은 격리 "
+"레벨에 의해 정의된 대로 행위를 기대할 수 있다. 또한 transaction-영역의 캐시"
+"인 <literal>Session</literal> 덕분에, Hibernate는 (스칼라 값들을 반환하는 질"
+"의들을 보고하지 않는) 식별자와 엔티티 질의들에 의한 룩업을 위해 반복 가능한 "
+"읽기를 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> "
+"syntax, a (minor) API for pessimistic locking of rows. Optimistic "
+"concurrency control and this API are discussed later in this chapter."
+msgstr ""
+"자동적인 optimistic 동시성 제어를 위한 버전화에 덧붙여, Hibernate는 또한 "
+"<literal>SELECT FOR UPDATE</literal> 구문을 사용하여 행들에 대한 pessimistic "
+"잠금을 위한 하나의 (마이너)API를 제공한다. optimistic 동시성 제어와 이 API는 "
+"이 장의 뒷부분에서 논의된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The discussion of concurrency control in Hibernate begins with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"우리는 <literal>Configuration</literal>, <literal>SessionFactory</literal>, "
+"<literal>Session</literal>, 알갱이를 가진 Hibernate에서의 동시성 제어 뿐만 아"
+"니라 데이터베이스 트랜잭션과 장기간에 걸친 (컴퓨터와의)대화들에 대한 논의를 "
+"시작한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "세션 영역과 트랜잭션 영역"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object, intended to be shared by all application threads. It is created "
+"once, usually on application startup, from a <literal>Configuration</"
+"literal> instance."
+msgstr ""
+"<literal>SessionFactory</literal>는 모든 어플리케이션 쓰레드들에 의해 공유되"
+"도록 고안된 생성에 비용이 드는, 쓰레드안전(threadsafe) 객체이다. 그것은 대개 "
+"어플리케이션 시작 시에 <literal>Configuration</literal> 인스턴스로부터 한번 "
+"생성된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once and then discarded for: a single request, a conversation "
+"or a single unit of work. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, "
+"unless it is needed. It will not consume any resources until used."
+msgstr ""
+"<literal>Session</literal>은 하나의 요청, 하나의 대화 , 하나의 작업 단위를 위"
+"해 한번만 사용되고 나서 폐기될 예정인, 비용이 들지 않는, 쓰레드 안전하지 않"
+"은 객체이다. <literal>Session</literal>은 커넥션이 필요하지 않으면 하나의 "
+"JDBC <literal>Connection</literal>(또는 <literal>Datasource</literal>)를 얻"
+"지 않을 것이므로, 사용될 때까지 리소스들을 소비하지 않는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In order to reduce lock contention in the database, a database transaction "
+"has to be as short as possible. Long database transactions will prevent your "
+"application from scaling to a highly concurrent load. It is not recommended "
+"that you hold a database transaction open during user think time until the "
+"unit of work is complete."
+msgstr ""
+"이 그림을 완성하기 위해 당신은 또한 데이터베이스 트랜재션들에 대해 생각해야 "
+"한다. 데이터베이스 트랜잭션은 데이터베이스에서 잠금 다툼을 줄이기 위해 가능"
+"한 짧아야 한다. 긴 데이터베이스 트랜잭션들은 당신의 어플리케이션이 고도의 동"
+"시성 로드로의 가용성을 높이는 것을 방해할 것이다. 그러므로 사용자가 생각하는 "
+"시간 동안 단위 작업이 완료될 때까지 데이터베이스 트랜잭션을 열려진채로 소유하"
+"는 것은 대개 결코 좋은 설계는 아니다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+"하나의 작업 단위의 영역은 무엇인가? 하나의 Hibernate <literal>Session</"
+"literal>은 몇몇 데이터베이스 트랜잭션들에 걸칠 수 있는가 또는 이것은 영역들"
+"의 one-to-one 관계인가? 당신은 언제 <literal>Session</literal>을 열고 닫는가 "
+"그리고 당신은 데이터베이스 트랜잭션 경계들을 어떻게 한정하는가?"
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "작업 단위"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, let's define a unit of work. A unit of work is a design pattern "
+"described by Martin Fowler as <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation> In other words, its a series of operations we wish to carry out "
+"against the database together. Basically, it is a transaction, though "
+"fulfilling a unit of work will often span multiple physical database "
+"transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really "
+"we are talking about a more abstract notion of a transaction. The term "
+"\"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use the <emphasis>session-per-operation</emphasis> antipattern: do "
+"not open and close a <literal>Session</literal> for every simple database "
+"call in a single thread. 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. This also means that auto-commit after "
+"every single SQL statement is useless in an application as this mode is "
+"intended for ad-hoc SQL console work. Hibernate disables, or expects the "
+"application server to disable, auto-commit mode immediately. Database "
+"transactions are never optional. All communication with a database has to "
+"occur inside a transaction. Auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also more maintainable and "
+"extensible."
+msgstr ""
+"첫번째로, <emphasis>session-per-operation</emphasis> anti-패턴을 사용하지 말"
+"라. 즉, 단일 쓰레드 내에서 모든 간단한 데이터베이스 호출에 대해 "
+"<literal>Session</literal>을 열고 닫지 말라! 물론 같은 것이 데이터베이스 트랜"
+"잭션들에 대해서도 참이다. 어플리케이션 내의 데이터베이스 호출들은 계획된 순서"
+"를사용하여 행해지며, 그것들은 원자 작업 단위 속으로 그룹지워진다. (이것은 또"
+"한 모든 하나의 SQL 문장 뒤의 auto-commit(자동-커밋)이 어플리케이션 내에서 무"
+"용지물임을 의미하고, 이 모드가 SQL 콘솔 작업을 돕도록 고안되었음을 노트하라. "
+"Hibernate는 의미하고, 이 모드는 Hibernate는 즉시 자동-커밋 모드를 사용 불가능"
+"하게 하거나, 어플리케이션 서버가 그렇게 행하고, 즉시 자동-커밋시키는 것을 사"
+"용불가능하게 하거나 ,그렇게 행하는 것을 기대한다.) 데이터베이스 트랜잭션들은 "
+"결코 옵션이 아니며, 하나의 데이터베이스와의 모든 통신은 당신이 데이터를 읽든 "
+"쓰단간에 상관없이 하나의 트랜잭션 내에서 발생해야 한다. 설명하였듯이, 데이터 "
+"읽기를 위한 auto-commit 특징을 피해야 할 것이며, 많은 작은 트랜잭션들은 하나"
+"의 명료하게 정의된 작업 단위보다 더 좋게 수행될 것 같지 않다. 후자가 또한 훨"
+"씬 더 유지가능하고 확장적이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is sent to the server, where the Hibernate persistence layer runs. A "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. On completion of the work, and "
+"once the response for the client has been prepared, the session is flushed "
+"and closed. Use a single database transaction to serve the clients request, "
+"starting and committing it when you open and close the <literal>Session</"
+"literal>. The relationship between the two is one-to-one and this model is a "
+"perfect fit for many applications."
+msgstr ""
+"다중 사용자 클라이언트/서버 어플리케이션에서 가장 공통된 패턴은 "
+"<emphasis>session-per-request</emphasis>이다. 이 모형에서, 클라이언트로부터"
+"의 요청은 (Hibernate 영속 계층이 실행되는) 서버로 전송되고, 새로운 Hibernate "
+"<literal>Session</literal>이 열려지고, 모든 데이터베이스 오퍼레이션들이 이 작"
+"업 단위 내에서 실행된다. 일단 그 작업이 완료되었다면(그리고 클라이언트에 대"
+"한 응답이 준비되었다면), 그 세션은 flush 되고 닫혀진다. 당신은 또한 당신이 "
+"<literal>Session</literal>을 열고 닫을 때 그것을 시작하고 커밋시켜서 클라이언"
+"트 요청에 서비스하는데 한 개의 데이터베이스 트랜잭션을 사용하게 될 것이다. "
+"둘 사이의 관계는 일대일 대응이고 이 모형은 많은 어플리케이션들에서 완전하게 "
+"적합하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. Start a "
+"transaction when a server request has to be processed, and end the "
+"transaction before the response is sent to the client. Common solutions are "
+"<literal>ServletFilter</literal>, AOP interceptor with a pointcut on the "
+"service methods, or a proxy/interception container. An EJB container is a "
+"standardized way to implement cross-cutting aspects such as transaction "
+"demarcation on EJB session beans, declaratively with CMT. If you use "
+"programmatic transaction demarcation, for ease of use and code portability "
+"use the Hibernate <literal>Transaction</literal> API shown later in this "
+"chapter."
+msgstr ""
+"난제는 구현에 놓여있다: Hibernate는 이 패턴을 단순화 시키기 위해 \"현재 세션"
+"\"에 관한 미리 빌드된 관리를 제공한다. 당신이 행해야할 모든 것은 서버 요청이 "
+"처리되어야 할 때 트랜잭션을 시작하고, 그 응답이 클라이언트로 전송되기 전에 트"
+"랜잭션을 끝내는 것이다. 당신은 당신이 좋아하는 임의의 방법으로 이것을 행할 "
+"수 있으며, 공통된 해결책들은 서비스 메소드들 상의 첨단, 또는 하나의 프락시/인"
+"터셉션 컨테이너를 가진 APO 인터셉터인, <literal>ServletFilter</literal>이다. "
+"하나의 EJB 컨테이너는 CMT의 경우에 선언적으로 EJB session beans 상에 트랜잭"
+"션 경계구분과 같은 동시 대조 측면들을 구현하는 표준 방법이다. 만일 당신이 프"
+"로그램 상의 트랜잭션 경계구분을 사용하고자 결정한다면, 사용의 용이성과 코드 "
+"이식성을 위해 이 장의 뒷 부분에서 보여진 Hibernate <literal>Transaction</"
+"literal>을 선호하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by calling <literal>sessionFactory.getCurrentSession()</literal>. "
+"You will always get a <literal>Session</literal> scoped to the current "
+"database transaction. This has to be configured for either resource-local or "
+"JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+"당신의 어플리케이션 코드는 어디서든 필요할 때 종종 <literal>sessionFactory."
+"getCurrentSession()</literal>을 간단히 호출함으로써 요청을 처리할 \"현재 세션"
+"\"에 접근할 수 있다. 당신은 현재 데이터베이스 트랜잭션으로 영역화된 하나의 "
+"<literal>Session</literal>을 항상 얻게 될 것이다. 이것은 resource-local 환경 "
+"또는 JTA 환경에 대해 구성되어야 하며, <xref linkend=\"architecture-current-"
+"session\"/>을 보라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can extend the scope of a <literal>Session</literal> and database "
+"transaction until the \"view has been rendered\". This is especially useful "
+"in servlet applications that utilize a separate rendering phase after the "
+"request has been processed. Extending the database transaction until view "
+"rendering, is achieved by implementing your own interceptor. However, this "
+"will be difficult if you rely on EJBs with container-managed transactions. A "
+"transaction will be completed when an EJB method returns, before rendering "
+"of any view can start. See the Hibernate website and forum for tips and "
+"examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+"때때로 \"뷰가 렌더링될 때까지\" 하나의 <literal>Session</literal> 과 데이터베"
+"이스 트랜잭션의 영역을 확장시키는 것이 편리하다. 이것은 요청이 처리된 후에 하"
+"나의 별도의 렌더링 단계를 활용하는 서블릿 어플리케이션들에서 특히 유용하다. "
+"뷰 렌더링이 완료될 때까지 데이터베이스 트랜잭션을 확장하는 것은 당신이 당신 "
+"자신의 인터셉터를 구현하는 경우에 행하기가 쉽다. 하지만 만일 당신이 컨테이너"
+"에 의해 관리되는 트랜잭션들을 가진 EJB들에 의존할 경우에, 하나의 EJB 메소드"
+"가 반환될 때 임의의 뷰 렌더링이 시작될 수 있기 전에 하나의 트랜잭션이 완료되"
+"기 때문에, 행하는 것이 쉽지 않다. 이 <emphasis>Open Session in View</"
+"emphasis> 패턴을 둘러싼 팁들과 예제들은 Hibernate 웹 사이트와 포럼을 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "장기간의 대화"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The session-per-request pattern is not the only way of designing units of "
+"work. Many business processes require a whole series of interactions with "
+"the user that are interleaved with database accesses. In web and enterprise "
+"applications, it is not acceptable for a database transaction to span a user "
+"interaction. Consider the following example:"
+msgstr ""
+"session-per-request 패턴은 당신이 작업 단위들을 설계하는데 사용할 수 있는 유"
+"일한 유용한 개념이 아니다. 많은 비지니스 프로세스들은 데이터베이스 접근들을 "
+"중재하는 사용자 사이의 전체 일련의 상호작용들을 필요로 한다. 웹과 엔터프라이"
+"즈 어플리케이션에서 사용자 상호작용에 걸치는 것은 데이터베이스 트랜잭션에 허"
+"용되지 않는다. 다음 예제를 검토하자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The first screen of a dialog opens. The data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"대화상자의 첫 번째 화면이 열리고, 사용자에게 보여진 데이터는 특정 "
+"<literal>Session</literal>과 데이터베이스 트랜잭션 속에 로드되었다. 사용자가 "
+"객체들을 변경시키는 것이 자유롭다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects their modifications to "
+"be made persistent. The user also expects that they were the only person "
+"editing this information and that no conflicting modification has occurred."
+msgstr ""
+"사용자는 5분 후에 \"저장\"을 클릭하고 그의 변경들이 영속화 되기를 기대한다; "
+"그는 또한 그가 이 정보를 편집하는 유일한 개인이고 변경 충돌이 발생하지 않기"
+"를 기대한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"From the point of view of the user, we call this unit of work a long-running "
+"<emphasis>conversation</emphasis> or <emphasis>application transaction</"
+"emphasis>. There are many ways to implement this in your application."
+msgstr ""
+"우리는 사용자의 관점에서, 이것을 작업 단위, 장기간 실행되는 <emphasis>대화</"
+"emphasis> (또는 <emphasis>어플리케이션 트랜잭션</emphasis>)이라고 명명한다. "
+"당신이 당신의 어플리케이션에서 이것을 어떻게 구현할 수 있는 많은 방법들이 존"
+"재한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow "
+"the application to scale with the number of concurrent users."
+msgstr ""
+"첫 번째 naive 구현은 동시성 변경을 방지하고, 격리와 atomicity(원자 단위성)을 "
+"보장하기 위해 데이터베이스에 의해 소유된 잠금으로 사용자가 생각하는동안 "
+"<literal>Session</literal>과 데이터베이스 트랜잭션을 유지할 수도 있다. 이것"
+"은 물론 anti-패턴이다. 왜냐하면 잠금 다툼은 어플리케이션이 동시 사용자들의 가"
+"용 숫자를 높이는 것을 허용하지 않을 것이기 때문이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You have to use several database transactions to implement the conversation. "
+"In this case, maintaining isolation of business processes becomes the "
+"partial responsibility of the application tier. A single conversation "
+"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 (for example, in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+"명료하게, 우리는 대화(<emphasis>어플리케이션 트랜잭션</emphasis>)를 구현하는"
+"데 몇몇 데이터베이스 트랜잭션들을 사용해야 한다. 이 경우에, 비지니스 프로세스"
+"들의 격리를 유지하는 것은 어플리케이션 티어의 부분적인 책임이 된다. 단일 대화"
+"는 대개 여러 개의 데이터베이스 트랜잭션들에 걸친다. 그것은 이들 데이터베이스 "
+"트랜잭션들 중 오직 한 개(마지막 트랜잭션)가 업데이트된 데이터를 저장하고, 모"
+"든 다른 트랜잭션들이 단순히 데이터를 읽는 (예를 들면, 몇몇 요청/응답 주기에 "
+"걸치는 마법사 스타일의 대화 상자에서) 경우에만 원자단위가 될 것이다. 특히 당"
+"신이 Hibernate의 특징들을 사용할 경우에 , 이것은 들리는 것보다 구현하기가 더 "
+"쉽다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic "
+"optimistic concurrency control for you. It can automatically detect if a "
+"concurrent modification occurred during user think time. Check for this at "
+"the end of the conversation."
+msgstr ""
+"<emphasis>자동적인 버전화</emphasis> - Hibernate는 당신을 위해 자동적인 "
+"optimistic 동시성 제어를 행할 수 있고, 그것은 사용자가 생각하는 시간 동안 동"
+"시적인 변경이 발생했는지를 자동적으로 검출할 수 있다. 대개 우리는 오직 대화"
+"의 끝에서 체크한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis>: if you decide to use the "
+"<emphasis>session-per-request</emphasis> pattern, all loaded instances will "
+"be in the detached state during user think time. Hibernate allows you to "
+"reattach the objects and persist the modifications. The pattern is called "
+"<emphasis>session-per-request-with-detached-objects</emphasis>. Automatic "
+"versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Detached 객체들</emphasis> - 만일 당신이 이미 논의된 "
+"<emphasis>session-per-request</emphasis> 패턴을 사용하고자 결정하는 경우, 모"
+"든 로드된 인스턴스들은 사용자가 생각하는 시간 동안 detached 상태에 있을 것이"
+"다. Hibernate는 그 객체들을 재첨부시키고 변경들을 영속화 시키는 것을 허용해주"
+"며, 그 패턴은 <emphasis>session-per-request-with-detached-objects(detached-객"
+"체들을 가진 요청 당 세션)</emphasis>으로 명명된다. 자동적인 버전화는 동시성 "
+"변경들을 격리시키는데 사용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis>: the Hibernate "
+"<literal>Session</literal> can be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed and reconnected "
+"when a new client request occurs. This pattern is known as <emphasis>session-"
+"per-conversation</emphasis> and makes even reattachment unnecessary. "
+"Automatic versioning is used to isolate concurrent modifications and the "
+"<literal>Session</literal> will not be allowed to be flushed automatically, "
+"but explicitly."
+msgstr ""
+"<emphasis>확장된 (또는 Long) Session</emphasis> - Hibernate "
+"<emphasis>Session</emphasis>은 데이터베이스 트랜잭션이 커밋된 후에 기본 JDBC "
+"커넥션이 연결 해제될 수도 있고, 새로운 클라이언트 요청이 발생할 때 다시 연결"
+"될 수 있다. 이 패턴은 <emphasis>session-per-conversation(대화 당 세션)</"
+"emphasis>으로 알려져 있고 재첨부를 불필요하게 만든다. 자동적인 버전화는 동시"
+"성 변경들을 격리시키는데 사용되고 <literal>Session</literal>은 자동적으로 "
+"flush되는 것이 허용되지 않지만 명시적으로 flush되는 것은 허용된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages. These disadvantages are discussed later in this chapter in "
+"the context of optimistic concurrency control."
+msgstr ""
+"<emphasis>session-per-request-with-detached-objects</emphasis>ê³¼ "
+"<emphasis>session-per-conversation</emphasis> 양자는 장점들과 단점들을 갖는"
+"데, 우리는 이 장의 뒷 부분에서 optimistic 동시성 제어 단락에서 그것들을 논의"
+"한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "객체 identity 고려하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An application can concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. It "
+"is for this reason that there are two different notions of identity:"
+msgstr ""
+"어플리케이션은 두 개의 다른 <literal>Session</literal>들 내에 있는 동일한 영"
+"속 상태에 동시에 접근할 수도 있다. 하지만 영속 클래스의 인스턴스는 두 개의 "
+"<literal>Session</literal> 인스턴스들 사이에 결코 공유되지 않는다. 그러므로 "
+"identity에 대한 두 개의 다른 개념들이 존재한다:"
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "데이터베이스 Identity"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "foo.getId().equals( bar.getId() )"
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "JVM Identity"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For objects attached to a <emphasis>particular</emphasis> <literal>Session</"
+"literal> (i.e., in the scope of a <literal>Session</literal>), the two "
+"notions are equivalent and JVM identity for database identity is guaranteed "
+"by Hibernate. While the application might concurrently access the \"same"
+"\" (persistent identity) business object in two different sessions, the two "
+"instances will actually be \"different\" (JVM identity). Conflicts are "
+"resolved using an optimistic approach and automatic versioning at flush/"
+"commit time."
+msgstr ""
+"그때 (예를 들어 <literal>Session</literal> 영역에서) <emphasis>특정</"
+"emphasis><literal>Session</literal>에 첨부된 객체들의 경우 두 개의 개념들은 "
+"동등한 것이고, 데이터베이스 identity에 대한 JVM identity가 Hibernate에 의해 "
+"보장된다. 하지만, 어플리케이션이 두 개의 다른 세션들에서 \"동일한\" (영속 "
+"identity) 비지니스 객체에 동시에 접근하는 동안, 두 개의 인스턴스들은 실제로 "
+"\"다르다\"(JVM identity). 충돌들은 flush/커밋 시에 (자동적인 버전화)를 사용하"
+"여, optimistic 접근법을 사용하여 해결된다."
+
+#. Tag: para
+#, fuzzy, 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 means that it does not need expensive locking or "
+"other means of synchronization. The application does not need to synchronize "
+"on any business object, as long as it maintains a single thread per "
+"<literal>Session</literal>. Within a <literal>Session</literal> the "
+"application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+"이 접근법은 Hibernate와 데이터베이스가 동시성에 대해 걱정하지 않도록 해준다; "
+"그것은 또한 최상의 scalability를 제공한다. 왜냐하면 단일 쓰레드-작업 단위 내"
+"에서 identity 보장은 단지 비용이 드는 잠금이나 다른 동기화 수단들을 필요로 하"
+"지 않기 때문이다. 어플리케이션은 그것이 <literal>Session</literal> 당 단일 쓰"
+"레드를 강제하는 한, 어떤 비지니스 객체에 대해 결코 동기화 시킬 필요가 없다. "
+"하나의 <literal>Session</literal> 내에서 어플리케이션은 객체들을 비교하는데 "
+"<literal>==</literal>를 안전하게 사용할 수가 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal> might produce 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). JVM identity, "
+"however, is by definition not guaranteed for instances in a detached state. "
+"The developer has to override the <literal>equals()</literal> and "
+"<literal>hashCode()</literal> methods in persistent classes and implement "
+"their own notion of object equality. There is one caveat: never use the "
+"database identifier to implement equality. Use a business key that is a "
+"combination of unique, usually immutable, attributes. The database "
+"identifier will change if a transient object is made persistent. 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 business keys do not 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. Please note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+"하지만, 하나의 <literal>Session</literal> 외부에서 <literal>==</literal>를 사"
+"용하는 어플리케이션은 예기치 않은 결과들을 보게 될 수도 있다. 이것은 어떤 예"
+"기치 않은 장소들에서, 예를 들어 당신이 두 개의 detached 인스턴스들을 동일한 "
+"<literal>Set</literal> 내에 집어넣을 경우에 발생할 수도 있다. 둘 다 동일한 데"
+"이터베이스 identity를 가질 수 있지만 (예를 들어 그것들은 동일한 행을 표현한"
+"다), JVM identity는 정의 상 detached 상태에 있는 인스턴스들을 보장하지 않는"
+"다. 개발자는 영속 클래스들내에 <literal>equals()</literal> 메소드와 "
+"<literal>hashCode()</literal> 메소드를 오버라이드 시켜야 하고 객체 equality"
+"에 대한 그 자신의 개념을 구현해야 한다. 하나의 경고가 존재한다: equality를 구"
+"현하는데 데이터베이스 identifier를 결코 사용하지 말고, 하나의 비지니스 키, 유"
+"일한, 대개 불변인 속성들의 조합을 사용하라. 데이터베이스 식별자는 만일 "
+"transient 객체가 영속화되는 경우에 변경될 것이다. 만일 transient 인스턴스가"
+"(대개 detached 인스턴스들과 함께) <literal>Set</literal> 내에 보관되는 경우"
+"에, hashcode 변경은 <literal>Set</literal>의 계약을 파기시킨다. 비지니스 키들"
+"에 대한 속성들은 데이터베이스 프라이머리 키들 만큼 안정적이어서는 안되며, 당"
+"신은 오직 객체들이 동일한 <literal>Set</literal> 내에 있는 한에서 안정성을 보"
+"장해야만 한다. 이 쟁점에 관한 논의에 대한 더 많은 것을 Hibernate 웹 사이트를 "
+"보라. 또한 이것이 Hibernate 쟁점이 아니며, 단지 자바 객체 identity와 equality"
+"가 구현되어야 하는 방법임을 노트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "공통된 쟁점들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> "
+"or <emphasis>session-per-application</emphasis> (there are, however, rare "
+"exceptions to this rule). Some of the following issues might also arise "
+"within the recommended patterns, so ensure that you understand the "
+"implications before making a design decision:"
+msgstr ""
+"안티-패턴들 <emphasis>session-per-user-session</emphasis> 또는 "
+"<emphasis>session-per-application</emphasis>을 결코 사용하지 말라(물론 이 규"
+"칙에 대한 드문 예외상황들이 존재한다). 다음 쟁점들 중 몇몇이 또한 권장되는 패"
+"턴들로 나타날 수 있음을 노트하고, 당신이 설계 결정을 내리기 전에 내포된 의미"
+"들을 확실히 이해하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things that work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if a <literal>Session</literal> instance is shared. If "
+"you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (this is discussed later in the chapter), you "
+"should consider synchronizing access to your Http session. Otherwise, a user "
+"that clicks reload fast enough can use the same <literal>Session</literal> "
+"in two concurrently running threads."
+msgstr ""
+"<literal>Session</literal>은 쓰레드-안전하지 않다. HTTP 요청들, 세션 빈즈, 또"
+"는 Swing worker들처럼 동시에 작업하는 것으로 가정되는 것들은 하나의 "
+"<literal>Session</literal> 인스턴스가 공유될 경우에 경쟁 조건들을 발생시킬 것"
+"이다. 만일 당신이 당신의 <literal>HttpSession</literal> 내에 Hibernate "
+"<literal>Session</literal>을 유지시키는 경우(나중에 논의됨), 당신은 당신의 "
+"Http 세션에 대한 접근을 동기화 시키는 것을 고려해야 한다. 그 밖의 경우, 충분"
+"히 빠르게 reload를 클릭하는 사용자는 두 개의 동시적으로 실행되는 쓰레드들 내"
+"에서 동일한 <literal>Session</literal>을 사용할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (this is "
+"discussed in more detail later in the chapter). If your <literal>Session</"
+"literal> is bound to the application, you have to stop the application. "
+"Rolling back the database transaction does not put your business objects "
+"back into the state they were at the start of the transaction. This means "
+"that the database state and the business objects will be out of sync. "
+"Usually this is not a problem, because exceptions are not recoverable and "
+"you will have to start over after rollback anyway."
+msgstr ""
+"Hibernate에 의해 던져진 예외상황은 당신이 당신의 데이터베이스 트랜잭션을 롤"
+"백 시키고 즉시 <literal>Session</literal>을 닫아야 함을 의미한다(나중에 상세"
+"히 논의됨). 만일 당신의 <literal>Session</literal>이 어플리케이션에 바인드 되"
+"어 있는 경우, 당신은 어플리케이션을 중지시켜야 한다. 데이터베이스 트랜잭션 롤"
+"백은 당신의 비지니스 객체들을 그것들이 트랜잭션의 시작 시에 머물렀던 상태로 "
+"되돌리지는 않는다. 이것은 데이터베이스 상태와 비지니스 객체들이 동기화를 벗어"
+"남을 의미한다. 대개 이것은 문제가 아니다. 왜냐하면 예외상황들은 회복가능한 것"
+"이 아니고 당신이 어떻게든 롤백 후에 시작해야 하기 때문이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in a persistent "
+"state (watched and checked for dirty state by Hibernate). If you keep it "
+"open for a long time or simply load too much data, it will grow endlessly "
+"until you get an OutOfMemoryException. One solution is to call <literal>clear"
+"()</literal> and <literal>evict()</literal> to manage the <literal>Session</"
+"literal> cache, but you should consider a Stored Procedure if you need mass "
+"data operations. Some solutions are shown in <xref linkend=\"batch\" />. "
+"Keeping a <literal>Session</literal> open for the duration of a user session "
+"also means a higher probability of stale data."
+msgstr ""
+"<literal>Session</literal>은 (Hibernate에 의해 dirty 상태로 관찰되었거나 체크"
+"된) 영속 상태에 있는 모든 객체를 캐시 시킨다. 이것은 당신이 오랜 시간 동안 "
+"<literal>Session</literal>을 열어둔 채로 유지하거나 단순하게 너무 많은 데이터"
+"를 로드시킬 경우에, 당신이 OutOfMemoryException을 얻기 전까지, 그것이 끝없이 "
+"성장한다는 점을 의미한다. 이것에 대한 하나의 해결책은 <literal>Session</"
+"literal> 캐시를 관리하기 위해 <literal>clear()</literal>와 <literal>evict()</"
+"literal>를 호출하는 것이지만, 당신이 대용량 데이터 오퍼레이션들을 필요로 하"
+"는 경우에 당신은 대개 내장 프로시저를 고려해야 할 것이다. 몇몇 해결책들이 "
+"<xref linkend=\"batch\"/>에 보여져 있다. 사용자 세션 동안에 "
+"<literal>Session</literal>을 열려진 채로 유지하는 것은 또한 실효성이 떨어진 "
+"데이터에 대한 높은 확률을 의미한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "데이터베이스 트랜잭션 경계 설정"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Database, 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. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"데이터베이스 (또는 시스템) 트랜잭션 경계들은 항상 필수적이다. 데이터베이스와"
+"의 통신은 데이터베이스 트랜잭션의 외부에서 발생할 수 없다(이것은 자동-커밋 모"
+"드로 사용되는 많은 개발자들에게는 혼동스러워 보인다). 항상 심지어 읽기 전용 "
+"오퍼레이션들에 대해서도 명료한 트랜잭션 경계들을 사용하라. 당신의 격리 레벨"
+"과 데이터베이스 가용성들에 따라, 이것은 필요하지 않을 수 있지만, 만일 당신이 "
+"항상 트랜잭션들을 명시적으로 경계 설정할 경우에는 하강하는 결점들이 존재하지 "
+"않는다. 확실히, 하나의 데이터베이스 트랜잭션은 심지어 데이터 읽기조차도 많은 "
+"작은 트랜잭션들의 경우보다는 더 좋게 수행될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e., standalone, simple "
+"Web- or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries (begin, commit, or rollback database transactions) themselves. A "
+"managed environment usually provides container-managed transactions (CMT), "
+"with the transaction assembly defined declaratively (in deployment "
+"descriptors of EJB session beans, for example). Programmatic transaction "
+"demarcation is then no longer necessary."
+msgstr ""
+"Hibernate 어플리케이션은 관리되지 않는 환경(예를 들면. 스탠드얼론, 간단히 웹 "
+"어플리케이션들 또는 Swing 어플리케이션들)과 관리되는 J2EE 환경에서 실행될 수 "
+"있다. 관리되지 않는 환경에서, Hibernate는 대개 그것 자신의 데이터베이스 커넥"
+"션 풀에 대한 책임이 있다. 어플리케이션 개발자는 트랜잭션 경계들을 손수 설정해"
+"야 한다. 달리 말해, 개발자 스스로 데이터베이스 트랜잭션들을 시작하고, 커밋시"
+"키거나 롤백시켜야 한다. 관리되는 환경은 대개 예를 들어 EJB 세션 빈즈의 배치 "
+"디스크립터 속에 선언적으로 정의된 트랜잭션 어셈블리를 가진, 컨테이너에 의해-"
+"관리되는 트랜잭션들(CMT)을 제공한다. 그때 프로그램 상의 트랜잭션 경계 설정은 "
+"더 이상 필요하지 않다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"However, it is often desirable to keep your persistence layer portable "
+"between non-managed resource-local environments, and systems that can rely "
+"on JTA but use BMT instead of CMT. In both cases use programmatic "
+"transaction demarcation. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"하지만, CMT 대신 BMT를 사용하는 JTA에 의존할 수 있는 시스템들, 그리고 관리되"
+"지 않는 resource-local 환경들 사이에서 당신의 영속 계층에 이식성을 유지시키"
+"는 것이 자주 희망된다. 두 경우들에서 당신은 프로그램 상의 트랜잭션 경계설정"
+"을 사용할 것이다. Hibernate는 당신의 배치 환경의 고유한 트랜잭션 시스템 속으"
+"로 변환되는 <literal>Transaction</literal>이라 명명되는 wrapper API 를 제공한"
+"다. 이 API는 실제로 옵션이지만 우리는 당신이 CMT session bean 속에 있지 않는 "
+"한 그것의 사용을 강력하게 권장한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+"대개 <literal>Session</literal> 종료는 네 개의 구분되는 단계들을 수반한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "세션을 flush 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "트랜잭션을 커밋 시킨다"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "세션을 닫는다"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "예외상황들을 처리한다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We discussed Flushing the session earlier, so we will now have a closer look "
+"at transaction demarcation and exception handling in both managed and non-"
+"managed environments."
+msgstr ""
+"세션을 flush 시키는 것은 앞서 논의되었고, 우리는 이제 관리되는 환경과 관리되"
+"지 않는 환경 양자에서 트랜잭션 경계 설정과 예외상황을 더 자세히 살펴볼 것이"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "관리되지 않는 환경"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e., non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"만일 Hibernate 영속 계층이 관리되지 않는(non-managed) 환경에서 실행될 경우, "
+"데이터베이스 커넥션들은 대개 Hibernate가 필요로할 때 커넥션들을 획득하는 간단"
+"한 (예를 들면 DataSource가 아닌) 커넥션 풀(pool)들로부터 처리된다. session/"
+"transaction 처리 관용구는 다음과 같다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You do not have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly: the call to <literal>commit()</literal> automatically triggers "
+"the synchronization depending on the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"당신은 <literal>Session</literal>을 명시적으로 <literal>flush()</literal> 하"
+"지 말아야 한다 - <literal>commit()</literal>에 대한 호출은 (그 세션에 대한 "
+"<xref linkend=\"objectstate-flushing\">FlushMode</xref>에 따라)자동적으로 동"
+"기화를 트리거시킨다. <literal>close()</literal>에 대한 호출은 세션의 끝을 마"
+"크한다. <literal>close()</literal>의 주된 구현은 JDBC 커넥션이 그 세션에 의"
+"해 포기될 것이라는 점이다. 이 Java 코드는 관리되지 않는 환경과 JTA 환경 양자"
+"에서 이식성이 있고 실행된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"As outlined earlier, a much more flexible solution is Hibernate's built-in "
+"\"current session\" context management:"
+msgstr ""
+"보다 더 유연한 해결책은 앞서 설명했듯이 Hibernate의 미리 빌드되어 있는 \"현"
+"재 세션\" 컨텍스트 관리이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You will not see these code snippets in a regular application; fatal "
+"(system) exceptions should always be caught at the \"top\". In other words, "
+"the code that executes Hibernate 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. The current context management "
+"by Hibernate can significantly simplify this design by accessing a "
+"<literal>SessionFactory</literal>. Exception handling is discussed later in "
+"this chapter."
+msgstr ""
+"당신은 통상의 어플리케이션에서 비지니스 코드 속에 이 관용구를 결코 보지 않을 "
+"것이다; 치명적인(시스템) 예외상황들은 항상 \"상단\"에서 잡혀야 한다. 달리 말"
+"해, (영속 계층에서) Hibernate 호출들을 실행시키는 코드와 "
+"<literal>RuntimeException</literal>을 처리하(고 대개 오직 제거하고 빠져나갈 "
+"수 있는) 코드는 다른 계층들 속에 있다. Hibernate에 의한 현재 컨텍스트 관리는 "
+"이 설계를 현격하게 단순화시켜서, 당신이 필요로 하는 모든 것은 "
+"<literal>SessionFactory</literal>에 대한 접근이다.예외상황 처리는 이 장의 뒷"
+"부분에서 논의된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, which is the default, and for the second example select <literal>"
+"\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"당신은 (디폴트인) <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>를 선택해야 하고, 두번째 예제의 경우 당신의 <literal>hibernate."
+"current_session_context_class</literal>를 선택해야 함을 노트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "JTA 사용하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (for example, behind "
+"EJB session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"만일 당신의 영속 계층이 어플리케이션 서버에서(예를 들어, EJB 세션 빈즈 이면에"
+"서) 실행될 경우, Hibernate에 의해 획득된 모든 데이터소스 커넥션은 자동적으로 "
+"전역 JTA 트랜잭션의 부분일 것이다. 당신은 또한 스탠드얼론 JTA 구현을 설치할 "
+"수 있고 EJB 없이 그것을 사용할 수 있다. Hibernate는 JTA 통합을 위한 두 개의 "
+"방도들을 제공한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. The transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"만일 당신이 bean-managed transactions(BMT)를 사용할 경우 Hibernate는 당신이 "
+"<literal>Transaction</literal> API를 사용할 경우에 BMT 트랜잭션을 시작하고 종"
+"료하도록 어플리케이션 서버에게 알려줄 것이다. 따라서 트랜잭션 관리 코드는 "
+"non-managed 환경과 동일하다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+"만일 당신이 트랜잭션에 묶인 <literal>Session</literal>, 즉 쉬운 컨텍스트 보급"
+"을 위한 <literal>getCurrentSession()</literal> 기능을 사용하고자 원할 경우, "
+"당신은 JTA <literal>UserTransaction</literal> API를 직접 사용해야 할 것이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"With CMT, transaction demarcation is completed in session bean deployment "
+"descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+"CMT의 경우, 트랜잭션 관할[경계 설정]은 프로그램 상이 아닌, session bean 배치 "
+"디스크립터들 속에서 행해진다. 그러므로 코드는 다음으로 감소된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In a CMT/EJB, even rollback happens automatically. An unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>You do "
+"not need to use the Hibernate <literal>Transaction</literal> API at all with "
+"BMT or CMT, and you get automatic propagation of the \"current\" Session "
+"bound to the transaction.</emphasis>"
+msgstr ""
+"왜냐하면 하나의 세션 빈 메소드에 의해 던져진 처리되지 않은 "
+"<literal>RuntimeException</literal>이 글로벌 트랜잭션을 rollback으로 설정하도"
+"록 컨테이너에게 알려주기 때문에, CMT/EJB에서조차 롤백은 자동적으로 발생된다. "
+"<emphasis>이것은 당신이 BMT 이든 CMT이든 모두에서 Hibernate "
+"<literal>Transaction</literal> API를 사용할 필요가 없으며, 당신은 그 트랜잭션"
+"에 묶인 \"현재\" Session의 자동적인 보급(propagation)을 얻게 됨을 의미한다.</"
+"emphasis>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When configuring Hibernate's transaction factory, choose <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> if you use JTA "
+"directly (BMT), and <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> in a CMT session bean. Remember to also set "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that "
+"your <literal>hibernate.current_session_context_class</literal> is either "
+"unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+"당신이 Hibernate의 트랜잭션 팩토리를 구성할 때, 당신이 JTA를 직접 사용할 경우"
+"(BMT) 당신은 <literal>org.hibernate.transaction.JTATransactionFactory</"
+"literal>를 선택해야하고, CMT session bean에서는 <literal>org.hibernate."
+"transaction.CMTTransactionFactory</literal>를 선택해야 함을 노트하라. 또한 "
+"<literal>org.hibernate.transaction.manager_lookup_class</literal>를 설정하는 "
+"것을 염두에 두라. 게다가 반드시 당신의 <literal>hibernate."
+"current_session_context_class</literal>이 설정되지 않도록 하거나(역호환성), "
+"또는 <literal>\"jta\"</literal>로 설정되도록 하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. 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. Most applications can easily avoid "
+"using <literal>scroll()</literal> or <literal>iterate()</literal> from the "
+"JTA or CMT code.)"
+msgstr ""
+"<literal>getCurrentSession()</literal> 오퍼레이션들은 JTA 환경에서 한 가지 단"
+"점을 갖고 있다. 디폴트로 사용되는, <literal>after_statement</literal> 커넥션 "
+"해제 모드 사용에 대한 하나의 보류 통보가 존재한다. JTA 명세서의 어리석은 제한"
+"으로 인해, Hibernate가 <literal>scroll()</literal> 또는 <literal>iterate()</"
+"literal>에 의해 반환되는 임의의 닫혀지지 않은 <literal>ScrollableResults</"
+"literal> 또는 <literal>Iterator</literal> 인스턴스들을 자동적으로 제거하는 것"
+"이 불가능하다. 당신은 <literal>finally</literal> 블록 내에서 명시적으로 "
+"<literal>ScrollableResults.close()</literal> 또는 <literal>Hibernate.close"
+"(Iterator)</literal>를 호출하여 기본 데이터베이스 커서를 해제<emphasis>시켜"
+"야 한다</emphasis>.(물론 대부분의 어플리케이션들은 JTA 또는 CMT 코드에서 "
+"<literal>scroll()</literal>이나 <literal>iterate()</literal>를 사용하는 것을 "
+"쉽게 피할 수 있다.)"
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "예외상황 처리"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception, including any "
+"<literal>SQLException</literal>, immediately rollback the database "
+"transaction, call <literal>Session.close()</literal> and discard the "
+"<literal>Session</literal> instance. Certain methods of <literal>Session</"
+"literal> will <emphasis>not</emphasis> leave the session in a consistent "
+"state. No exception thrown by Hibernate can be treated as recoverable. "
+"Ensure that the <literal>Session</literal> will be closed by calling "
+"<literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"만일<literal>Session</literal>이 (어떤 <literal>SQLException</literal>을 포함"
+"하는) 예외상황을 던질 경우, 당신은 데이터베이스 트랜잭션을 즉시 롤백시키고, "
+"<literal>Session.close()</literal>를 호출하고 <literal>Session</literal> 인스"
+"턴스를 폐기시켜야한다. <literal>Session</literal>의 어떤 메소드들은 그 세션"
+"을 일관된 상태로 남겨두지 <emphasis>않을</emphasis> 것이다. Hibernate에 의해 "
+"던져진 예외상황은 복구가능한 것으로 취급될 수 없다. 그 <literal>Session</"
+"literal>이 <literal>finally</literal> 블록 내에서 <literal>close()</literal>"
+"를 호출하여 닫혀지도록 확실히 하라."
+
+#. Tag: para
+#, fuzzy, 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. "
+"It was not in older versions of Hibernate. In our opinion, we should not "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e., in higher layers) and "
+"either an error message is presented to the application user or some other "
+"appropriate action is taken. Note that Hibernate might also throw other "
+"unchecked exceptions that are not a <literal>HibernateException</literal>. "
+"These are not recoverable and appropriate action should be taken."
+msgstr ""
+"Hibernate 영속 계층에서 발생할 수 있는 대부분의 오류들을 포장하는, "
+"<literal>HibernateException</literal>은 체크되지 않은 예외상황이다(그것은 "
+"Hibernate의 이전 버전에는 없었다). 우리의 의견으로, 우리는 낮은 계층에서 복구"
+"불가능한 예외상황을 붙잡도록 어플리케이션 개발자에게 강제하지 않을 것이다. 대"
+"부분의 시스템들에서, 체크되지 않은 치명적인 예외상황들은 (예를 들어, 더 높은 "
+"계층에서) 메소드 호출 스택의 첫 번째 프레임들 중 하나 속에서 처리되고, 한 개"
+"의 오류 메시지가 어플리케이션 사용자에게 표시된다(또는 어떤 다른 적절한 액션"
+"이 취해진다). Hibernate는 또한 <literal>HibernateException</literal>이 아닌, "
+"다른 체크되지 않은 예외상황들을 던질 수도 있음을 노트하라. 다시 이것들은 복구"
+"가능하지 않고 적절한 액션이 취해져야 한다."
+
+#. Tag: para
+#, fuzzy, 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 ""
+"Hibernate는 데이터베이스와 상호작용하는 동안에 던져진 <literal>SQLException</"
+"literal>들을 하나의 <literal>JDBCException</literal> 속에 포장한다. 사실, "
+"Hibernate는 그 예외상황을 <literal>JDBCException</literal>의 보다 의미있는 서"
+"브클래스로 변환하려고 시도할 것이다. 기본 <literal>SQLException</literal>은 "
+"<literal>JDBCException.getCause()</literal>를 통해 항상 이용 가능하다. "
+"Hibernate는<literal>SessionFactory</literal>에 첨부된 "
+"<literal>SQLExceptionConverter</literal>를 사용하여 <literal>SQLException</"
+"literal>을 적당한 하나의 <literal>JDBCException</literal> 서브클래스로 변환시"
+"킨다. 디폴트로 <literal>SQLExceptionConverter</literal>는 구성된 dialect에 의"
+"해 정의된다; 하지만 맞춤 구현 속에 플러그인 시키는 것이 또한 가능하다(상세한 "
+"것은 <literal>SQLExceptionConverterFactory</literal> 클래스에 관한 javadocs"
+"를 보라). 표준 <literal>JDBCException</literal> 서브타입은 다음과 같다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal>: indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal> - 기본 JDBC 통신에 대한 오류를 나"
+"타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal>: indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal> - 생겨난 SQL에 대한 문법 또는 구문 문"
+"제점을 나타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal>: indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal> - 무결성 제약 위반에 관한 어"
+"떤 형식을 나타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal>: indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal> - 요청된 오퍼레이션을 실행하는데 "
+"필수적인 잠금 레벨을 획득하는 오류를 나타낸다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal>: a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal> - 다른 카테고리들 중 어떤 것으로 분류"
+"되지 않았던 일반적인 예외상황."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "트랜잭션 타임아웃"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"An important feature provided by a managed environment like EJB, that is "
+"never provided for non-managed code, is transaction timeout. Transaction "
+"timeouts ensure that no misbehaving transaction can indefinitely tie up "
+"resources while returning no response to the user. Outside a managed (JTA) "
+"environment, Hibernate cannot fully provide this functionality. However, "
+"Hibernate can at least control data access operations, ensuring that "
+"database level deadlocks and queries with huge result sets are limited by a "
+"defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functionality is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"관리되지 않는 코드에 대해서는 결코 제공되지 않는 EJB와 같이 관리되는 환경에 "
+"의해 제공되는 한 가지 극히 중요한 특징은 트랜잭션 타임아웃이다. 트랜잭션 타임"
+"아웃은 사용자에게 응답을 반환하지 않는 동안에 무례한 행동을 행하는 트랜잭션"
+"이 자원들을 무한정 묶어둘 수 없음을 보증해준다. 관리되는 (JTA) 환경 외부에"
+"서, Hibernate는 이 기능을 온전하게 제공할 수 없다. 하지만 Hibernate는 데이터"
+"베이스 레벨 데드락들과 거대한 결과 셋들을 가진 질의들이 정의된 타임아웃에 의"
+"해 제약되는 것을 보장함으로써 최소한 데이터 접근 오퍼레이션들을 제어할 수 있"
+"다. 관리되는 환경에서, Hibernate는 트랜잭션 타임아웃을 JTA에게 위임시킬 수 있"
+"다. 이 기능은 Hibernate <literal>Transaction</literal> 객체에 의해 추상화 된"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>setTimeout()</literal> cannot be called in a CMT bean, where "
+"transaction timeouts must be defined declaratively."
+msgstr ""
+"<literal>setTimeout()</literal>은 CMT bean 내에서 호출도리 수 없음을 노트하"
+"라. 여기서 트랜잭션 타임아웃들은 선언적으로 정의되어야 한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "Optimistic 동시성 제어"
+
+#. Tag: para
+#, fuzzy, 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 three possible approaches to "
+"writing application code that uses optimistic concurrency. The use cases we "
+"discuss are in the context of long conversations, but version checking also "
+"has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+"고도의 동시성과 고도의 가용성을 일치시키는 유일한 접근법은 버전화를 가진 "
+"optimistic동시성 제어이다. 버전 체킹은 업데이트 충돌을 검출하기 위해(그리고 "
+"업데이트 손실을 방지하기 위해) 버전 번호들 또는 timestamp들을 사용한다. "
+"Hibernate는 optimistic 동시성을 사용하는 어플리케이션 코드 작성에 세 가지 가"
+"능한 접근법들을 제공한다. 우리가 보여주는 쓰임새들은 장시간의 대화의 상황 속"
+"에 있지만, 버전 체킹 또한 단일 데이터베이스 트랜잭션들에서 업데이트 손실을 방"
+"지하는 이점을 갖고 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "어플리케이션 버전 체킹"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. The application is forced to carry out its own version "
+"checking to ensure conversation transaction isolation. This approach is the "
+"least efficient in terms of database access. It is the approach most similar "
+"to entity EJBs."
+msgstr ""
+"하나의 구현에서 Hibernate로부터 많은 도움이 없이, 데이터베이스에 대한 각각의 "
+"상호작용은 새로운 <literal>Session</literal> 내에서 일어나고, 개발자는 영속 "
+"인스턴스들을 처리하기 전에 데이터베이스로부터 모든 영속 인스턴스들을 다시 로"
+"드시킬 책임이 있다. 이 접근법은 대화 트랜잭션을 확실히 격리시키기 위해 그것 "
+"자신의 버전 체킹을 수행하도록 어플리케이션에게 강제시킨다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>&lt;"
+"version&gt;</literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"version 프로퍼티는 <literal>&lt;version&gt;</literal>을 사용하여 매핑되고, "
+"Hibernate는 만일 엔티티가 dirty일 경우 flush 동안에 그것을 자동적으로 증가시"
+"킬 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you are operating in a low-data-concurrency environment, and do not "
+"require version checking, you can use this approach and skip the version "
+"check. In this case, <emphasis>last commit wins</emphasis> is the default "
+"strategy for long conversations. Be aware 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 ""
+"물론, 당신이 낮은 데이터 동시성 환경에서 작업하고 있고 버전 체킹을 필요로 하"
+"지 않을 경우에, 당신은 이 접근법을 사용할 수 도 있고 단지 버전 체크를 생략할 "
+"수도 있다. 그 경우에, <emphasis>마지막의 커밋 성공</emphasis>은 당신의 장시간"
+"의 대화에 대한 디폴트 방도가 될 것이다. 이것이 어플리케이션의 사용자들을 혼동"
+"시킬 수 있음을 염두에 두라. 왜냐하면 사용자들은 오류 메시지들 또는 충돌 변경"
+"들을 병합시킬 기회 없이 업데이트들 손실을 겪을 수도 있기 때문이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Manual version checking is only feasible in 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 an extended <literal>Session</"
+"literal> or detached instances as the design paradigm."
+msgstr ""
+"명료하게 수작업 버전 체킹은 매우 사소한 환경들에서도 공포적이고 대부분의 어플"
+"리케이션들에 대해 실제적이지 않다. 흔히 단일 인스턴스 뿐만 아니라 변경된 객체"
+"들의 전체 그래프들이 체크되어야 한다. Hibernate는 설계 패러다임으로서 하나의 "
+"확장된 <literal>Session</literal> 또는 detached 인스턴스들에 대해 자동적인 버"
+"전 체킹을 제공한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "확장된 세션과 자동적인 버전화"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"that are used for the whole conversation are known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It is up to "
+"the developer to catch and handle this exception. Common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data."
+msgstr ""
+"하나의 <literal>Session</literal> 인스턴스와 그것의 영속 인스턴스들은 전체 어"
+"플리케이션 트랜잭션에 사용된다. Hibernate는 flush 할 때 인스턴스 버전들을 체"
+"크하고 만일 동시성 변경이 검출될 경우에 예외상황을 던진다. 이 예외상황을 잡아"
+"내고 처리하는 것을 개발자의 몫이다(공통된 옵션들은 변경들을 병합시키거나 또"
+"는 쓸모가 없지 않은 데이터로 비지니스 프로세스를 다시 시작하는 기회를 사용자"
+"에게 주는 것이다). 하나의 <literal>Session</literal> 인스턴스와 그것의 영속 "
+"인스턴스들은 <emphasis>session-per-conversation</emphasis>로 알려진 전체 대화"
+"에 사용된다. Hibernate는 flush 시점에서 인스턴스 버전들을 체크하며, 만일 동시"
+"적인 변경이 검출될 경우에 하나의 예외상황을 던진다. 이 예외상황을 포착하고 처"
+"리하는 것은 개발자의 몫이다(공통된 옵션들은 사용자가 변경들을 병합하거나 손실"
+"되지 않은 데이터를 가지고 비지니스 대화를 재시작하는 기회이다)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application does not version "
+"check or reattach detached instances, nor does it have to reload instances "
+"in every database transaction."
+msgstr ""
+"<literal>Session</literal>은 사용자 상호작용을 기다릴 때 어떤 기본 JDBC 커넥"
+"션으로부터 연결해제된다. 이 접근법은 데이터베이스 접근의 관점에서 보면 가장 "
+"효율적이다. 어플리케이션은 버전 체킹 또는 detached 인스턴스들을 재첨부하는 것"
+"에 그 자체 관계할 필요가 없거나 그것은 모든 데이터베이스 트랜잭션에서 인스턴"
+"스들을 다시 로드시킬 필요가 없다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>foo</literal> object knows which <literal>Session</literal> it "
+"was loaded in. Beginning a new database transaction on an old session "
+"obtains a new connection and resumes the session. Committing a database "
+"transaction disconnects a session from the JDBC connection and returns the "
+"connection to the pool. After reconnection, to force a version check on data "
+"you are not updating, you can call <literal>Session.lock()</literal> with "
+"<literal>LockMode.READ</literal> on any objects that might have been updated "
+"by another transaction. You do not need to lock any data that you "
+"<emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode."
+"MANUAL</literal> on an extended <literal>Session</literal>, so that only the "
+"last database transaction cycle is allowed to actually persist all "
+"modifications made in this conversation. Only this last database transaction "
+"will include the <literal>flush()</literal> operation, and then "
+"<literal>close()</literal> the session to end the conversation."
+msgstr ""
+"<literal>foo</literal> 객체는 그것이 로드되었던 <literal>Session</literal>이 "
+"어느 것인지를 여전히 알고 있다. 이전 세션 상에서 하나의 새로운 데이터베이스 "
+"트랜잭션을 시작하는 것은 하나의 새로운 커넥션을 획득하고 그 세션을 소비한다. "
+"데이터베이스 트랜잭션을 커밋(확약)시키는 것은 그 JDBC 커넥션으로부터 하나의 "
+"세션을 연결해제시키고 그 커넥션을 풀(pool)로 반환시킬 것이다. 재연결 후에, 당"
+"신이 업데이트하고 있지 않은 데이터에 대한 버전 체크를 강제시키기 위해서, 당신"
+"은 또 다른 트랜잭션에 의해 업데이트되었을 수도 있는 임의의 객체들에 대해 "
+"<literal>LockMode.READ</literal>로서 <literal>Session.lock()</literal>을 호출"
+"할 수도 있다. 당신은 당신이 업데이트 중인 임의의 데이터를 잠금할 필요가 없"
+"다. 대개 당신은 마지막 데이터베이스 트랜잭션 주기만이 이 대화 내에서 행해진 "
+"모든 변경들을 실제로 영속화시키는 것이 허용되도록 하기 위해, 하나의 확장된 "
+"<literal>Session</literal>에 대해 <literal>FlushMode.MANUAL</literal>를 설정"
+"할 것이다. 그러므로 오직 이 마지막 데이터베이스 트랜잭션 만이 <literal>flush"
+"()</literal> 오퍼레이션을 포함할 것이고, 또한 대화를 종료시키기 위해 세션을 "
+"<literal>close()</literal>할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time (for example, an <literal>HttpSession</"
+"literal> should be kept as small as possible). As the <literal>Session</"
+"literal> is also the first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. Use a "
+"<literal>Session</literal> only for a single conversation as it will soon "
+"have stale data."
+msgstr ""
+"만일 사용자가 생각하는시간 동안 <literal>Session</literal>이 저장되기에 너무 "
+"큰 경우 이 패턴은 문제성이 있다. 예를 들어 <literal>HttpSession</literal>은 "
+"가능한 작은 것으로 유지되어야 한다. 또한 <literal>Session</literal>은 (필수"
+"의) 첫 번째 레벨 캐시이고 모든 로드된 객체들을 포함하기 때문에, 우리는 아마 "
+"적은 요청/응답 주기들에 대해서만 이 방도를 사용할 수 있다. 당신은 하나의 대화"
+"에 대해서만 하나의 <literal>Session</literal>을 사용해야 한다. 왜냐하면 그것"
+"은 또한 곧 실없는 데이터가 될 것이기 때문이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Earlier versions of Hibernate required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect."
+msgstr ""
+"(초기의 Hibernate 버전들은 <literal>Session</literal>에 대한 명시적인 연결해"
+"제와 재연결을 필요로 했음을 노트하라. 트랜잭션을 시작하고 끝내는 것이 동일한 "
+"효과를 가지므로, 이들 방법들은 진부하게 되었다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Keep the disconnected <literal>Session</literal> close to the persistence "
+"layer. Use an EJB stateful session bean to hold the <literal>Session</"
+"literal> in a three-tier environment. Do not transfer it to the web layer, "
+"or even serialize it to a separate tier, to store it in the "
+"<literal>HttpSession</literal>."
+msgstr ""
+"또한 당신은 영속 계층에 대해 연결해제된 <literal>Session</literal>을 닫혀진채"
+"로 유지해야함을 노트하라. 달 리말해, 하나의 3-tier 환경에서 "
+"<literal>Session</literal>을 소유하는데 EJB stateful session bean을 사용하"
+"고, <literal>HttpSession</literal> 내에 그것을 저장하기 위해 그것을 웹 계층"
+"에 전송하지 말라 (또는 그것을 별도의 티어에 직렬화 시키지도 말라)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki "
+"for examples."
+msgstr ""
+"확장된 세션 패턴, 또는 <emphasis>session-per-conversation</emphasis>은 자동적"
+"인 현재 세션 컨텍스트 관리에 대해 구현하기가 더 어렵다. 당신은 이를 위해 당"
+"신 자신의 <literal>CurrentSessionContext</literal> 구현을 공급할 필요가 있으"
+"며, 예제들은 Hibernate Wiki를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "Detached 객체들과 자동적인 버전화"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. 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 <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"영속 저장소에 대한 각각의 상호작용은 새로운 <literal>Session</literal>에서 일"
+"어난다. 하지만 동일한 영속 인스턴스들은 데이터베이스와의 각각의 상호작용에 재"
+"사용된다. 어플리케이션은 원래 로드되었던 detached 인스턴스들의 상태를 또 다"
+"른 <literal>Session</literal> 내에서 처리하고 나서 <literal>Session.update()"
+"</literal>, <literal>Session.saveOrUpdate()</literal>, <literal>Session.merge"
+"()</literal>를 사용하여 그것들을 다시 첨부시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occurred."
+msgstr ""
+"다시, Hibernate는 flush 동안에 인스턴스 버전들을 체크할 것이고 업데이트 충돌"
+"이 발생할 경우에 예외상황을 던질 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also call <literal>lock()</literal> instead of <literal>update()</"
+"literal>, and use <literal>LockMode.READ</literal> (performing a version "
+"check and bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"당신은 또한 <literal>update()</literal>대신에 <literal>lock()</literal>을 호"
+"출할 수도 있고 만일 그 객체가 변경되지 않았음을 당신이 확신하는 경우에 (버전 "
+"체킹을 수행하고 모든 캐시들을 무시하는) <literal>LockMode.READ</literal>를 사"
+"용할 수 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "자동적인 버전화를 맞춤화 시키기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"당신은 <literal>optimistic-lock</literal> 매핑 속성을 <literal>false</"
+"literal>로 설정함으로써 특정 프로퍼티들과 콜렉션들에 대한 Hibernate의 자동적"
+"인 버전 증가를 불가능하도록 할 수도 있다. 그때 Hibernate는 그 프로퍼티가 "
+"dirty 일 경우에 더 이상 버전을 증가시키지 않을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Legacy database schemas are often static and cannot be modified. Or, other "
+"applications might access the same database and will not know how to handle "
+"version numbers or even timestamps. In both cases, versioning cannot rely on "
+"a particular column in a table. To force a version check with a comparison "
+"of the state of all fields in a row but without a version or timestamp "
+"property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal>&lt;class&gt;</literal> mapping. This conceptually only works if "
+"Hibernate can compare the old and the new state (i.e., if you use a single "
+"long <literal>Session</literal> and not session-per-request-with-detached-"
+"objects)."
+msgstr ""
+"리거시 데이터베이스 스키마들은 자주 static이고 변경될 수 없다. 또는 다른 어플"
+"리케이션들은 또한 동일한 데이터베이스에 접근하고 버전 번호들 또는 심지어 "
+"timestamp들을 처리하는 방법을 모를 수도 있다. 두 경우들에서, 버전화는 테이블 "
+"내의 특정 컬럼에 의지할 수 없다. version 또는 timestamp 프로퍼티 매핑 없이 "
+"행 내의 모든 필드들에 대한 상태를 비교하여 버전 체크를 강제시키기 위해서, "
+"<literal>&lt;class&gt;</literal> 매핑 속에 <literal>optimistic-lock=\"all\"</"
+"literal>을 표시하라. 만일 Hibernate가 이전 상태와 새로운 상태를 비교할 수 있"
+"을 경우에, 예를 들면 당신이 하나의 긴 <literal>Session</literal>을 사용하고 "
+"session-per-request-with-detached-objects을 사용하지 않을 경우 이것은 개념적"
+"으로만 동작함을 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Concurrent modification can be permitted in instances where the changes that "
+"have been made do not overlap. If you set <literal>optimistic-lock=\"dirty"
+"\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate "
+"will only compare dirty fields during flush."
+msgstr ""
+"때때로 행해졌던 변경들이 중첩되지 않는 한 동시적인 변경이 허용될 수 있다. 만"
+"일 <literal>&lt;class&gt;</literal>를 매핑할 때 당신이 <literal>optimistic-"
+"lock=\"dirty\"</literal>를 설정하면, Hibernate는 flush 동안에 dirty 필드들을 "
+"비교만 할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with a full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement, with an appropriate <literal>WHERE</literal> clause, per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate may execute unnecessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did occur "
+"before updating the row."
+msgstr ""
+"두 경우들에서, 전용 version/timestamp 컬럼의 경우 또는 full/dirty 필드 비교"
+"의 경우, Hibernate는 법전 체크를 실행하고 정보를 업데이트하는데 엔티티 당 (적"
+"절한 <literal>WHERE</literal> 절을 가진) 한 개의<literal>UPDATE</literal> 문"
+"장을 사용한다. 만일 당신이 연관된 엔티티들에 대한 재첨부를 케스케이드 하는데 "
+"transitive 영속을 사용할 경우, Hibernate는 불필요하게 업데이트들을 실행할 수"
+"도 있다. 이것은 대개 문제가 아니지만, 심지어 변경들이 detached 인스턴스들에 "
+"대해 행해지지 않았을 때에도 데이터베이스 내에서 <emphasis>on update</"
+"emphasis> 트리거들이 실행될 수도 있다. 그 행을 업데이트하기 전에 변경들이 실"
+"제로 일어났음을 확인하기 위해 인스턴스를 <literal>SELECT</literal>하는 것을 "
+"Hibernate에게 강제시키는, <literal>&lt;class&gt;</literal> 매핑 속에 "
+"<literal>select-before-update=\"true\"</literal>를 설정함으로써 당신은 이 특"
+"징을 맞춤화 시킬 수 있다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Pessimistic locking"
+msgstr "Pessimistic 잠금"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is not intended that users spend much time worrying about locking "
+"strategies. It is usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may wish to obtain exclusive pessimistic locks or re-obtain "
+"locks at the start of a new transaction."
+msgstr ""
+"사용자들은 잠금 방도에 대해 걱정하는데 많은 시간을 할애하하려고 생각하지 않는"
+"다. 대개 JDBC 커넥션들에 대한 격리 레벨을 지정하는 것으로 충분하고 그런 다음 "
+"단순히 데이터베이스로 하여금 모든 작업을 행하도록 한다. 하지만 진일보한 사용"
+"자들은 때때로 배타적인 pessimistic 잠금들을 얻거나 또는 새로운 트랜잭션의 시"
+"작 시에 잠금들을 다시 얻고자 원할 수도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database; it never "
+"lock objects in memory."
+msgstr ""
+"Hibernate는 결코 메모리 내에 있는 객체들이 아닌, 데이터베이스의 잠금 메커니즘"
+"을 항상 사용할 것이다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"<literal>LockMode</literal> 클래스는 Hibernate에 의해 획득될 수 있는 다른 잠"
+"금 레벨들을 정의한다. 잠금은 다음 메커니즘들에 의해 얻어진다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal>는 Hibernate가 한 행을 업데이트 하거나 "
+"insert 할 때 자동적으로 획득된다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal>는 <literal>SELECT ... FOR UPDATE</"
+"literal> 구문을 지원하는 데이터베이스 상에서 <literal>SELECT ... FOR UPDATE</"
+"literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal>는 오라클에서 <literal>SELECT ... "
+"FOR UPDATE NOWAIT</literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수"
+"도 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. It can be "
+"re-acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal>는 Hibernate가 반복 가능한 읽기(Repeatable "
+"Read) 또는 Serialization 격리 레벨에서 데이터를 읽어들일 때 자동적으로 얻어"
+"질 수도 있다. 명시적인 사용자 요청에 의해 다시 얻어질 수도 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal>은 잠금이 없음을 나타낸다. 모든 객체들은 "
+"<literal>Transaction</literal>의 끝에서 이 잠금 모드로 전환된다. "
+"<literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>에 대한 호"
+"출을 통해 세션과 연관된 객체들이 또한 이 잠금 모드로 시작된다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"explicit user request\" is expressed in one of the following ways:"
+msgstr "\"명시적인 사용자 요청\"은 다음 방법들 중 하나로 표현된다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"<literal>LockMode</literal>를 지정한 <literal>Session.load()</literal>에 대"
+"한 호출."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "<literal>Session.lock()</literal>에 대한 호출."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "<literal>Query.setLockMode()</literal>에 대한 호출."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"만일 <literal>Session.load()</literal>가 <literal>UPGRADE</literal> 또는 "
+"<literal>UPGRADE_NOWAIT</literal> 모드로 호출되고 ,요청된 객체가 아직 이 세션"
+"에 의해 로드되지 않았다면, 그 객체는 <literal>SELECT ... FOR UPDATE</literal>"
+"를 사용하여 로드된다. 만일 요청된 것이 아닌 다소 제한적인 잠금으로 이미 로드"
+"되어 있는 객체에 대해 <literal>load()</literal>가 호출될 경우, Hibernate는 "
+"그 객체에 대해 <literal>lock()</literal>을 호출한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used."
+msgstr ""
+"만일 지정된 잠금 모드가 <literal>READ</literal>, <literal>UPGRADE</literal> "
+"또는 <literal>UPGRADE_NOWAIT</literal> 일 경우에 <literal>Session.lock()</"
+"literal>은 버전 번호 체크를 수행한다. (<literal>UPGRADE</literal> 또는 "
+"<literal>UPGRADE_NOWAIT</literal> 인 경우에, <literal>SELECT ... FOR UPDATE</"
+"literal>가 사용된다.)"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If the requested lock mode is not supported by the database, Hibernate uses "
+"an appropriate alternate mode instead of throwing an exception. This ensures "
+"that applications are portable."
+msgstr ""
+"만일 데이터베이스가 요청된 잠금 모드를 지원하지 않을 경우, (예외상황을 던지"
+"는 대신에) Hibernate는 적절한 대체 모드를 사용할 것이다. 이것은 어플리케이션"
+"이 이식 가능할 것임을 확실히 해준다."
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Connection release modes"
+msgstr "연결 해제 모드들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"One of the legacies of Hibernate 2.x JDBC connection management meant that a "
+"<literal>Session</literal> would obtain a connection when it was first "
+"required and then maintain that connection until the session was closed. "
+"Hibernate 3.x introduced the notion of connection release modes that would "
+"instruct a session how to handle its JDBC connections. The following "
+"discussion is pertinent only to connections provided through a configured "
+"<literal>ConnectionProvider</literal>. User-supplied connections are outside "
+"the breadth of this discussion. The different release modes are identified "
+"by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</"
+"literal>:"
+msgstr ""
+"JDBC 커넥션 관리에 관한 Hibernate의 리거시(2.x) 특징은 그것이 처음으로 필요"
+"로 했을 때 하나의 <literal>Session</literal>이 하나의 커넥션을 획득할 것이"
+"고, 그런 다음 그 커넥션은 그 세션이 닫혀질때까지 보관된다는 것이었다. "
+"Hibernate 3.x는 세션에게 그것의 JDBC 커넥션들을 처리하는 방법을 알려주기 위"
+"해 연결 해제 모드들에 관한 개념을 도입했다. 다음 논의는 구성된 "
+"<literal>ConnectionProvider</literal>를 통해 제공되는 커넥션들에 대해서만 적"
+"절하다는 점을 노트하라; 사용자가 제공하는 커넥션들은 <literal>org.hibernate."
+"ConnectionReleaseMode</literal>의 열거된 값들에 의해 식별된다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal>: is the legacy behavior described above. The "
+"Hibernate session obtains a connection when it first needs to perform some "
+"JDBC access and maintains that connection until the session is closed."
+msgstr ""
+"<literal>ON_CLOSE</literal> - 는 본질적으로 위에 설명된 리거시 특징이다. "
+"Hibernate 세션은 그것이 어떤 JDBC 접근을 수행하고 세션이 닫혀질 때까지 그 커"
+"넥션을 보관할 필요가 있을 때 하나의 커넥션을 획득한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal>: releases connections after a "
+"<literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal> - 은 하나의 <literal>org.hibernate."
+"Transaction</literal>이 완료된 후에 연결들을 해제하라고 말한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): "
+"releases connections after every statement execution. This aggressive "
+"releasing is skipped if that statement leaves open resources associated with "
+"the given session. Currently the only situation where this occurs is through "
+"the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (또한 적극적인 해제라고 언급됨) - 는 각각"
+"의 모든 문장 실행 후에 커넥션들을 해제하라고 말한다. 이 적극적인 해제는 그 문"
+"장이 주어진 세션과 연관된 리소스들을 열려진채로 남겨둘 경우에는 건너뛰게"
+"(skip) 된다; 현재 이것이 일어나는 유일한 상황은 <literal>org.hibernate."
+"ScrollableResults</literal>의 사용을 통해서이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values "
+"are as follows:"
+msgstr ""
+"사용할 해제 모드를 지정하기 위해 구성 파라미터 <literal>hibernate.connection."
+"release_mode</literal>가 사용된다. 가능한 값들은 다음과 같다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>auto</literal> (the default): this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this "
+"default behavior as failures due to the value of this setting tend to "
+"indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (디폴트) - 이 선택은 <literal>org.hibernate."
+"transaction.TransactionFactory.getDefaultReleaseMode()</literal> 메소드에 의"
+"해 반환된 해제 모드로 위임시킨다. JTATransactionFactory인 경우, 이것은 "
+"ConnectionReleaseMode.AFTER_STATEMENT를 반환한다; JDBCTransactionFactory인 경"
+"우, 이것은 ConnectionReleaseMode.AFTER_TRANSACTION을 반환한다. 이 설정의 값"
+"이 사용자 코드 내의 버그들 그리고/또는 유효하지 않은 가정들을 가리키는 경향"
+"이 있음으로 인해 이 디폴트 특징을 실패로 변경하는 것은 거의 좋은 생각이 아니"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This "
+"setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+"<literal>on_close</literal> - 는 ConnectionReleaseMode.ON_CLOSE를 사용하라고 "
+"말한다. 이 설정은 역호환성을 위해 남겨졌지만, 그것의 사용은 매우 권장되지 않"
+"는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>after_transaction</literal>: uses ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode, connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal> - 은 ConnectionReleaseMode."
+"AFTER_TRANSACTION을 사용하라고 말한다. 이 설정은 JTA 환경들에서 사용되지 않"
+"을 것이다. 또한 ConnectionReleaseMode.AFTER_TRANSACTION인 경우에 만일 세션이 "
+"auto-commit 모드에 있도록 고려될 경우, 커넥션들은 마치 해제 모드가 "
+"AFTER_STATEMENT인 것처럼 해제될 것임을 또한 노트하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>after_statement</literal>: uses ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time you make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter if we re-establish the same connection."
+msgstr ""
+"<literal>after_statement</literal> - 는 ConnectionReleaseMode.AFTER_STATEMENT"
+"를 사용하라고 말한다. 추가적으로 구성된 <literal>ConnectionProvider</literal>"
+"는 그것이 이 설정 (<literal>supportsAggressiveRelease()</literal>)을 지원하는"
+"지 여부를 알기 위해 참고된다. 만일 지원하지 않을 경우, 해제 모드는 "
+"ConnectionReleaseMode.AFTER_TRANSACTION으로 재설정된다. 이 설정은 우리가 "
+"<literal>ConnectionProvider.getConnection()</literal>을 호출할 때마다 우리가 "
+"동일한 기본 JDBC 커넥션을 다시 필요로 할 수 있는 환경들에서 또는 우리가 동일"
+"한 커넥션을 얻는 것에 상관없는 auto-commit 환경에서 오직 안전하다."
+
+#~ msgid "foo==bar"
+#~ msgstr "foo==bar"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2000 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:22\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Intended for new users, this chapter provides an step-by-step introduction "
+"to Hibernate, starting with a simple application using an in-memory "
+"database. The tutorial is based on an earlier tutorial developed by Michael "
+"Gloegl. All code is contained in the <filename>tutorials/web</filename> "
+"directory of the project source."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial expects the user have knowledge of both Java and SQL. If you "
+"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
+"good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The distribution contains another example application under the "
+"<filename>tutorial/eg</filename> project source directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "파트 1 - 첫 번째 Hibernate 어플리케이션"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For this example, we will set up a small database application that can store "
+"events we want to attend and information about the host(s) of these events."
+msgstr ""
+"우리가 우리가 수반하고자 원하는 이벤트들을 저장할 수 있는 작은 데이터베이스 "
+"어플리케이션과 이들 이벤트들의 호스트들에 대한 정보를 필요로 한다고 가정하자."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although you can use whatever database you feel comfortable using, we will "
+"use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java "
+"database) to avoid describing installation/setup of any particular database "
+"servers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first thing we need to do is to set up the development environment. We "
+"will be using the \"standard layout\" advocated by alot of build tools such "
+"as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has "
+"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
+"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
+"ulink>. As this tutorial is to be a web application, we will be creating and "
+"making use of <filename>src/main/java</filename>, <filename>src/main/"
+"resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will be using Maven in this tutorial, taking advantage of its transitive "
+"dependency management capabilities as well as the ability of many IDEs to "
+"automatically set up a project for us based on the maven descriptor."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not a requirement to use Maven. If you wish to use something else to "
+"build this tutoial (such as Ant), the layout will remain the same. The only "
+"change is that you will need to manually account for all the needed "
+"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> providing transitive dependency management you would "
+"still use the dependencies mentioned below. Otherwise, you'd need to grab "
+"<emphasis>all</emphasis> dependencies, both explicit and transitive, and add "
+"them to the project's classpath. If working from the Hibernate distribution "
+"bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts "
+"in the <filename>lib/required</filename> directory and all files from either "
+"the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/"
+"javassist</filename> directory; additionally you will need both the servlet-"
+"api jar and one of the slf4j logging backends."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "첫 번째 클래스"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, we create a class that represents the event we want to store in the "
+"database; it is a simple JavaBean class with some properties:"
+msgstr ""
+"다음으로 우리는 우리가 데이터베이스 속에 저장시키고자 원하는 이벤트를 표현하"
+"는 한 개의 클래스를 생성시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class uses standard JavaBean naming conventions for property getter and "
+"setter methods, as well as private visibility for the fields. Although this "
+"is the recommended design, it is not required. Hibernate can also access "
+"fields directly, the benefit of accessor methods is robustness for "
+"refactoring."
+msgstr ""
+"당신은 이 클래스가 프로퍼티 getter와 setter 메소드들에 대한 표준 자바빈즈 명"
+"명법들 뿐만 아니라 필드들에 대한 private 가시성을 사용하고 있음을 알 수 있"
+"다. 이것은 권장되는 설계이지만, 필수적이지는 않다. Hibernate는 또한 필드들에 "
+"직접 접근할 수 있으며, accessor 메소드들의 이점은 강건한 리팩토링이다. 아규먼"
+"트 없는 생성자는 reflection을 통해 이 클래스의 객체를 초기화 시킬 필요가 있"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>id</literal> property holds a unique identifier value for a "
+"particular event. All persistent entity classes (there are less important "
+"dependent classes as well) will need such an identifier property if we want "
+"to use the full feature set of Hibernate. In fact, most applications, "
+"especially web applications, need to distinguish objects by identifier, so "
+"you should consider this a feature rather than a limitation. However, we "
+"usually do not manipulate the identity of an object, hence the setter method "
+"should be private. Only Hibernate will assign identifiers when an object is "
+"saved. Hibernate can access public, private, and protected accessor methods, "
+"as well as public, private and protected fields directly. The choice is up "
+"to you and you can match it to fit your application design."
+msgstr ""
+"<literal>id</literal> 프로퍼티는 특별한 이벤트를 위한 유일 식별자를 소유한"
+"다. 모든 영속 엔티티 클래스들 (보다 덜 중요한 종속 클래스들도 존재한다)은 우"
+"리가 Hibernate의 전체 특징 집합을 사용하고자 원할 경우에 그런 식별자 프로퍼티"
+"를 필요로 할 것이다. 사실 대부분의 어플리케이션들(특히 웹 어플리케이션들)은 "
+"식별자에 의해 객체들을 구분지을 필요가 있어서, 당신은 이것을 어떤 제약점이라"
+"기 보다는 하나의 특징으로 간주할 것이다. 하지만 우리는 대개 객체의 항등"
+"(identity)를 처리하지 않으므로, setter 메소드는 private이어야 한다. 객체가 저"
+"장될 때, Hibernate는 단지 식별자들을 할당할 것이다. 당신은 Hibernate가 "
+"public, private, protected 접근자 메소드들 뿐만 아니라 (public, private, "
+"protected) 필드들에도 직접 접근할 수 있음을 알 수 있다. 선택은 당신에게 달려 "
+"있으며, 당신은 당신의 어플리케이션 설계에 적합하도록 그것을 부합시킬 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The no-argument constructor is a requirement for all persistent classes; "
+"Hibernate has to create objects for you, using Java Reflection. The "
+"constructor can be private, however package or public visibility is required "
+"for runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"아규먼트 없는 생성자는 모든 영속 클래스들에 대한 필요조건이다; Hibernate는 당"
+"신을 위해 Java Reflection을 사용하여 객체들을 생성시켜야 한다. 하지만 생성자"
+"는 private 일 수 있고, 패키지 가시성은 런타임 프락시 생성과 바이트코드 방편 "
+"없는 효율적인 데이터 검색에 필요하다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</"
+"filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "The mapping file"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate는 영속 크래스들에 대한 객체들을 로드시키고 저장시키는 방법을 알 필"
+"요가 있다. 이곳은 Hibernate 매핑 파일이 역할을 행하는 곳이다. 매핑 파일은 "
+"Hibernate가 접근해야 하는 데이터베이스 내의 테이블이 무엇인지, 그리고 그것이 "
+"사용해야 하는 그 테이블 내의 컬럼들이 무엇인지를 Hibernate에게 알려준다."
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "매핑 파일의 기본 구조는 다음과 같다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate DTD is sophisticated. You can use it for auto-completion of XML "
+"mapping elements and attributes in your editor or IDE. Opening up the DTD "
+"file in your text editor is the easiest way to get an overview of all "
+"elements and attributes, and to view the defaults, as well as some comments. "
+"Hibernate will not load the DTD file from the web, but first look it up from "
+"the classpath of the application. The DTD file is included in "
+"<filename>hibernate-core.jar</filename> (it is also included in the "
+"<filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+"Hibernate DTD는 매우 정교하다. 당신은 당신의 편집기 또는 IDE 내에서 XML 매핑 "
+"요소들과 속성들에 대한 자동 완성 기능을 위해 그것을 사용할 수 있다. 당신은 또"
+"한 당신의 텍스트 편집기 내에 DTD 파일을 열 수 있을 것이다 - 그것은 모든 요소"
+"들과 속성들에 대한 전체상을 얻고 디폴트들 뿐만 아니라 몇몇 주석들을 보는 가"
+"장 손쉬운 방법이다. Hibernate는 웹으로부터 DTD 파일을 로드시키지 않지만, 먼"
+"저 어플리케이션의 classpath 경로로부터 그것을 먼저 룩업할 것임을 노트하라. "
+"DTD 파일은 <literal>hibernate3.jar</literal> 속에 포함되어 있을 뿐만 아니라 "
+"Hibernate 배포본의 <literal>src/</literal> 디렉토리 속에 포함되어 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is, of course, not optional."
+msgstr ""
+"우리는 코드를 간략화 시키기 위해 장래의 예제에서 DTD 선언을 생략할 것이다. 그"
+"것은 물론 옵션이 아니다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need a mapping to a table in the SQL database:"
+msgstr ""
+"두 개의 <literal>hibernate-mapping</literal> 태그들 사이에 <literal>class</"
+"literal> 요소를 포함시켜라. 모든 영속 엔티티 클래스들(다시금 종속 클래스들일 "
+"수 있고, 그것은 첫번째-급의 엔티티들이 아니다)은 SQL 데이터베이스 내의 테이블"
+"에 대한 그런 매핑을 필요로 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"So far we have told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>. Each "
+"instance is now represented by a row in that table. Now we can continue by "
+"mapping the unique identifier property to the tables primary key. As we do "
+"not want to care about handling this identifier, we configure Hibernate's "
+"identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+"지금까지 우리는 그 테이블 내에 있는 한 행에 의해 표현된 각각의 인스턴스인, 클"
+"래스의 객체를 영속화 시키고 로드시키는 방법을 Hibernate에게 알려주었다. 이제 "
+"우린느 테이블 프라이머리 키에 대한 유일 식별자 프로퍼티 매핑을 계속 행한다. "
+"게다가 우리는 이 식별자를 처리하는 것에 주의를 기울이고자 원하지 않으므로, 우"
+"리는 대용 키 프라이머리 키 컬럼에 대한 Hibernate의 식별자 생성 방도를 구성한"
+"다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifier "
+"property. The <literal>name=\"id\"</literal> mapping attribute declares the "
+"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
+"</literal> and <literal>setId()</literal> methods to access the property. "
+"The column attribute tells Hibernate which column of the <literal>EVENTS</"
+"literal> table holds the primary key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The nested <literal>generator</literal> element specifies the identifier "
+"generation strategy (aka how are identifier values generated?). In this case "
+"we choose <literal>native</literal>, which offers a level of portability "
+"depending on the configured database dialect. Hibernate supports database "
+"generated, globally unique, as well as application assigned, identifiers. "
+"Identifier value generation is also one of Hibernate's many extension points "
+"and you can plugin in your own strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>native</literal> is no longer consider the best strategy in terms "
+"of portability. for further discussion, see <xref linkend=\"portability-idgen"
+"\" />"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Lastly, we need to tell Hibernate about the remaining entity class "
+"properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+"마지막으로 우리는 매핑 파일 속에서 클래스의 영속 프로퍼티들에 대한 선언들을 "
+"포함한다. 디폴트로, 클래스의 프로퍼티들은 영속적인 것으로 간주되지 않는다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Similar to the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. In this case, Hibernate will search for "
+"<literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle"
+"()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+"<literal>id</literal> 요소의 경우처럼, <literal>property</literal> 요소의 "
+"<literal>name</literal> 속성은 사용할 getter 및 setter 메소드들이 어느 것인지"
+"를 Hibernate에게 알려준다. 따라서 이 경우에 Hibernate는 <literal>getDate()/"
+"setDate()</literal> 뿐만 아니라 <literal>getTitle()/setTitle()</literal>을 찾"
+"게 될 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> does "
+"not? Without the <literal>column</literal> attribute, Hibernate by default "
+"uses the property name as the column name. This works for <literal>title</"
+"literal>, however, <literal>date</literal> is a reserved keyword in most "
+"databases so you will need to map it to a different name."
+msgstr ""
+"<literal>date</literal> 프로퍼티 매핑은 <literal>column</literal> 속성을 포함"
+"하는데, 왜 <literal>title</literal>은 <literal>column</literal> 속성을 포함하"
+"지 않는가? <literal>column</literal> 속성이 없을 경우 Hibernate는 디폴트로 컬"
+"럼 이름으로서 프로퍼티 이름을 사용한다. 이것은 에 대해 잘 동작한다. 하지만 "
+"<literal>date</literal>는 대부분의 데이터베이스에서 예약된 키워드이어서, 우리"
+"는 그것을 다른 이름으로 더 좋게 매핑 시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>title</literal> mapping also lacks a <literal>type</literal> "
+"attribute. The types declared and used in the mapping files are not Java "
+"data types; they are not SQL database types either. These types are called "
+"<emphasis>Hibernate mapping types</emphasis>, converters which can translate "
+"from Java to SQL data types and vice versa. Again, Hibernate will try to "
+"determine the correct conversion and mapping type itself if the "
+"<literal>type</literal> attribute is not present in the mapping. In some "
+"cases this automatic detection using Reflection on the Java class might not "
+"have the default you expect or need. This is the case with the "
+"<literal>date</literal> property. Hibernate cannot know if the property, "
+"which is of <literal>java.util.Date</literal>, should map to a SQL "
+"<literal>date</literal>, <literal>timestamp</literal>, or <literal>time</"
+"literal> column. Full date and time information is preserved by mapping the "
+"property with a <literal>timestamp</literal> converter."
+msgstr ""
+"다음 흥미로운 점은 <literal>title</literal> 매핑 또한 <literal>type</"
+"literal> 속성을 갖지 않는다. 우리가 매핑파일들 속에서 선언하고 사용하는 타입"
+"들은 당신이 예상하는 Java 데이터 타입들이 아니다. 그것들은 또한 SQL 데이터베"
+"이스 타입들도 아니다. 이들 타입들은 이른바 <emphasis>Hibernate 매핑 타입들</"
+"emphasis>, 즉 Java 타입들로부터 SQL 타입들로 변환될 수 있고 반대로 SQL 타입들"
+"로부터 Java 타입들로 매핑될 수 있는 컨버터들이다. 다시말해, <literal>type</"
+"literal> 속성이 매핑 속에 존재하지 않을 경우 Hibernate는 정확환 변환 및 매핑 "
+"타입 그 자체를 결정하려고 시도할 것이다. 몇몇 경우들에서 (Java 클래스에 대한 "
+"Reflection을 사용하는) 이 자동적인 검출은 당신이 예상하거나 필요로 하는 디폴"
+"트를 갖지 않을 수도 있다. 이것은 <literal>date</literal> 프로퍼티를 가진 경우"
+"이다. Hibernate는 그 프로퍼티가 SQL <literal>date</literal> 컬럼, "
+"<literal>timestamp</literal> 컬럼 또는 <literal>time</literal> 컬럼 중 어느 "
+"것으로 매핑되어야 하는지를 알 수가 없다. 우리는 <literal>timestamp</literal> "
+"컨버터를 가진 프로퍼티를 매핑함으로써 전체 날짜와 시간 정보를 보존하고 싶다"
+"고 선언한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes this mapping type determination using reflection when the "
+"mapping files are processed. This can take time and resources, so if startup "
+"performance is important you should consider explicitly defining the type to "
+"use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this mapping file as <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Hibernate 구성"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this point, you should have the persistent class and its mapping file in "
+"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
+"run in \"server mode\""
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will utilize the Maven exec plugin to launch the HSQLDB server by "
+"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
+"it start up and bind to a TCP/IP socket; this is where our application will "
+"connect later. If you want to start with a fresh database during this "
+"tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</"
+"filename> directory, and start HSQLDB again."
+msgstr ""
+"개발 디렉토리의 루트에 <literal>data</literal>로 명명된 디렉토리를 생성시켜"
+"라 - 이 디렉토리는 HSQL DB가 그것의 데이터 파일들을 저장하게 될 장소이다. 이"
+"제 이 데이터 디렉토리에서 <literal>java -classpath ../lib/hsqldb.jar org."
+"hsqldb.Server</literal>를 실행시켜서 데이터베이스를 시작시켜라. 당신은 그것"
+"이 시작되고 이것은 우리의 어플리케이션이 나중에 연결하게 될 장소인, 하나의 "
+"TCP/IP 소켓에 바인드 되는 것을 볼 수 있다. 만일 이 튜토리얼 동안에 당신이 새 "
+"데이터베이스로 시작하고자 원할 경우, HSQL DB를 셧다운시키고(왼도우에서 "
+"<literal>CTRL + C</literal>를 눌러라), <literal>data/</literal> 디렉토리 내"
+"에 있는 모든 파일들을 삭제하고 다시 HSQL DB를 시작하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will be connecting to the database on behalf of your application, "
+"so it needs to know how to obtain connections. For this tutorial we will be "
+"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate comes with support for two third-"
+"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. However, we will be using the Hibernate built-in "
+"connection pool for this tutorial."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in Hibernate connection pool is in no way intended for production "
+"use. It lacks several features found on any decent connection pool."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</"
+"literal> file, or even complete programmatic setup. Most users prefer the "
+"XML configuration file:"
+msgstr ""
+"Hibernate의 구성을 위해, 우리는 한 개의 간단한 <literal>hibernate."
+"properties</literal> 파일, 한 개의 약간 더 세련된 <literal>hibernate.cfg."
+"xml</literal> 파일, 또는 심지어 완전한 프로그램 상의 설정을 사용할 수 있다. "
+"대부분의 사용자들은 XMl 구성 파일을 선호한다:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory "
+"is a global factory responsible for a particular database. If you have "
+"several databases, for easier startup you should use several <literal>&lt;"
+"session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+"이 XML 구성이 다른 DTD를 사용함을 노트하라. 우리는 Hibernate의 "
+"<literal>SessionFactory</literal> -특정 데이터베이스에 대해 책임이 있는 전역 "
+"팩토리-를 구성한다. 만일 당신이 여러 데이터베이스들을 갖고 있다면, (보다 쉬"
+"운 시작을 위해) 몇 개의 구성 파일들 속에 여러 개의 <literal>&lt;session-"
+"factory&gt;</literal> 구성들을 사용하라."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases, Hibernate is able to properly determine which dialect to use. "
+"See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate's automatic session management for persistence contexts is "
+"particularly useful in this context. The <literal>hbm2ddl.auto</literal> "
+"option turns on automatic generation of database schemas directly into the "
+"database. This can also be turned off by removing the configuration option, "
+"or redirected to a file with the help of the <literal>SchemaExport</literal> "
+"Ant task. Finally, add the mapping file(s) for persistent classes to the "
+"configuration."
+msgstr ""
+"처음 네 개의 <literal>property</literal> 요소들은 JDBC 커넥션을 위한 필수 구"
+"성을 포함한다. dialect <literal>property</literal> 요소는 Hibernate가 발생시"
+"키는 특별한 SQL 이형(異形)을 지정한다. <literal>hbm2ddl.auto</literal> 옵션"
+"은 -직접 데이터베이스 속으로- 데이터베이스 스키마의 자동적인 생성을 활성화 시"
+"킨다. 물론 이것은 (config 옵션을 제거함으로써) 비활성화 시킬 수 있거나 "
+"<literal>SchemaExport</literal> Ant 태스크의 도움으로 파일로 리다이렉트 될 "
+"수 있다. 마지막으로 우리는 영속 클래스들을 위한 매핑 파일(들)을 추가시킨다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>hibernate.cfg.xml</filename> into the "
+"<filename>src/main/resources</filename> directory."
+msgstr ""
+
+#. Tag: title
+#, fuzzy, no-c-format
+msgid "Building with Maven"
+msgstr "Ant로 빌드하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now build the tutorial with Maven. You will need to have Maven "
+"installed; it is available from the <ulink url=\"http://maven.apache.org/"
+"download.html\">Maven download page</ulink>. Maven will read the <filename>/"
+"pom.xml</filename> file we created earlier and know how to perform some "
+"basic project tasks. First, lets run the <literal>compile</literal> goal to "
+"make sure we can compile everything so far:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "시작과 helper들"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"It is time to load and store some <literal>Event</literal> objects, but "
+"first you have to complete the setup with some infrastructure code. You have "
+"to startup Hibernate by building a global <interfacename>org.hibernate."
+"SessionFactory</interfacename> object and storing it somewhere for easy "
+"access in application code. A <interfacename>org.hibernate.SessionFactory</"
+"interfacename> is used to obtain <interfacename>org.hibernate.Session</"
+"interfacename> instances. A <interfacename>org.hibernate.Session</"
+"interfacename> represents a single-threaded unit of work. The "
+"<interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe "
+"global object that is instantiated once."
+msgstr ""
+"몇몇 <literal>Event</literal> 객체들을 로드시키고 저장할 차례이지만, 먼저 우"
+"리는 어떤 인프라스트럭처 코드로 설정을 완료해야 한다. 우리는 Hibernate를 시작"
+"해야 한다. 이 시작은 전역 <literal>SessionFactory</literal> 객체를 빌드하고 "
+"어플리케이션 내에서 용이한 접근을 위해 그것을 어떤 곳에 저장하는 것을 포함한"
+"다. <literal>SessionFactory</literal>는 새로운 <literal>Session</literal>들"
+"을 열 수 있다. <literal>Session</literal>은 작업의 단일-쓰레드 단위를 표현하"
+"며, <literal>SessionFactory</literal>는 한번 초기화 되는 하나의 thread-safe "
+"전역 객체이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We will create a <literal>HibernateUtil</literal> helper class that takes "
+"care of startup and makes accessing the <interfacename>org.hibernate."
+"SessionFactory</interfacename> more convenient."
+msgstr ""
+"우리는 시작을 처리하고 <literal>Session</literal> 처리를 편리하게 해주는 "
+"<literal>HibernateUtil</literal> helper 클래스를 생성시킬 것이다. 이른바 "
+"<emphasis>ThreadLocal Session</emphasis> 패턴이 여기서 유용하며, 우리는 현재"
+"의 작업 단위를 현재의 쓰레드와 연관지워 유지한다. 구현을 살펴보자:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This class not only produces the global <interfacename>org.hibernate."
+"SessionFactory</interfacename> reference in its static initializer; it also "
+"hides the fact that it uses a static singleton. We might just as well have "
+"looked up the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"reference from JNDI in an application server or any other location for that "
+"matter."
+msgstr ""
+"이 클래스는 (클래스가 로드될 때 JVM에 의해 한번 호출되는) 그것의 static 초기"
+"자 내에 전역 <literal>SessionFactory</literal>를 산출할 뿐만 아니라 또한 현"
+"재 쓰레드에 대한 <literal>Session</literal>을 소유하는 <literal>ThreadLocal</"
+"literal> 변수를 갖는다. 당신이 <literal>HibernateUtil.getCurrentSession()</"
+"literal>을 호출하는 시점에는 문제가 없으며, 그것은 항상 동일 쓰레드 내에 동일"
+"한 Hibernate 작업 단위를 반환할 것이다. <literal>HibernateUtil.closeSession()"
+"</literal>에 대한 호출은 쓰레드와 현재 연관되어 있는 작업 단위를 종료시킨다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you give the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"a name in your configuration, Hibernate will try to bind it to JNDI under "
+"that name after it has been built. Another, better option is to use a JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. Such advanced options are "
+"discussed later."
+msgstr ""
+"당신이 이 helper를 사용하기 전에 thread-local 변수들에 대한 Java 개념을 확실"
+"히 이해하도록 하라. 보다 강력한 <literal>HibernateUtil</literal> helper는 "
+"http://caveatemptor.hibernate.org/에 있는 <literal>CaveatEmptor</literal> 뿐"
+"만 아니라 \"Java Persistence with Hibernate\" 책에서 찾을 수 있다. 당신이 "
+"J2EE 어플리케이션 서버 내에 Hibernate를 배치할 경우에 이 클래스는 필수적이지 "
+"않다: 하나의 <literal>Session</literal>은 현재의 JTA 트랜잭션에 자동적으로 바"
+"인드 될 것이고 당신은 JNDI를 통해 <literal>SessionFactory</literal>를 룩업할 "
+"수 있다. 만일 당신이 JBoss AS를 사용할 경우, Hibernate는 관리되는 시스템 서비"
+"스로서 배치될 수 있고 <literal>SessionFactory</literal>를 JNDI 이름에 자동적"
+"으로 바인드시킬 수 있을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You now need to configure a logging system. Hibernate uses commons logging "
+"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
+"Log4j: copy <literal>log4j.properties</literal> from the Hibernate "
+"distribution in the <literal>etc/</literal> directory to your <literal>src</"
+"literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you "
+"prefer to have more verbose output than that provided in the example "
+"configuration, you can change the settings. By default, only the Hibernate "
+"startup message is shown on stdout."
+msgstr ""
+"이것은 문제 없이 다시 컴파일 될 것이다. 우리는 마지막으로 로깅 시스템을 구성"
+"할 필요가 있다 - Hibernate는 commons logging를 사용하고 Log4j와 JDK 1.4 사이"
+"의 선택은 당신의 몫으로 남겨둔다. 대부분의 개발자들은 Log4j를 선호한다: "
+"Hibernate 배포본에 있는 <literal>log4j.properties</literal>(이것은 디렉토리 "
+"<literal>etc/</literal> 내에 있다)를 <literal>src</literal> 디렉토리로 복사하"
+"고, 다음으로 <literal>hibernate.cfg.xml</literal>을 복사하라. 예제 구성을 살"
+"펴보고 당신이 더 많은 verbose 출력을 원할 경우에 설정들을 변경하라. 디폴트로 "
+"Hibernate 시작 메시지는 stdout 상에 보여진다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The tutorial infrastructure is complete and you are now ready to do some "
+"real work with Hibernate."
+msgstr ""
+"튜토리얼 인프라스트럭처는 완전하다 - 그리고 우리는 Hibernate로 어떤 실제 작업"
+"을 행할 준비가 되어 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "객체 로딩과 객체 저장"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"We are now ready to start doing some real worjk with Hibernate. Let's start "
+"by writing an <literal>EventManager</literal> class with a <literal>main()</"
+"literal> method:"
+msgstr ""
+"마지막으로 우리는 객체들을 로드시키고 저장하는데 Hibernate를 사용할 수 있다. "
+"우리는 한 개의 <literal>main()</literal> 메소드를 가진 한 개의 "
+"<literal>EventManager</literal> 클래스를 작성한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</"
+"literal> object and handed it over to Hibernate. At that point, Hibernate "
+"takes care of the SQL and executes an <literal>INSERT</literal> on the "
+"database."
+msgstr ""
+"우리는 한 개의 새로운 <literal>Event</literal> 객체를 생성시키고, 그것을 "
+"Hibernate에게 건네준다. Hibernate는 이제 SQL을 처리하고 데이터베이스 상에서 "
+"<literal>INSERT</literal>들을 실행시킨다. -우리가 이것을 실행하기 전에 코드"
+"를 처리하는- <literal>Session</literal>과 <literal>Transaction</literal>을 살"
+"펴보자."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> is designed to represent a "
+"single unit of work (a single atmoic piece of work to be performed). For now "
+"we will keep things simple and assume a one-to-one granularity between a "
+"Hibernate <interface>org.hibernate.Session</interface> and a database "
+"transaction. To shield our code from the actual underlying transaction "
+"system we use the Hibernate <interfacename>org.hibernate.Transaction</"
+"interfacename> API. In this particular case we are using JDBC-based "
+"transactional semantics, but it could also run with JTA."
+msgstr ""
+"<literal>Session</literal>은 한 개의 작업 단위이다. 지금부터 우리는 단숨함을 "
+"유지할 것이고 Hibernate <literal>Session</literal>과 데이터베이스 트랜잭션 사"
+"이의 일-대-일 과립형(granularity)을 가정할 것이다. 실제 기반 트랜잭션 시스템"
+"으로부터 우리의 소스를 은폐시키기 위해(이 경우 통상의 JDBC이지만, 그것은 또"
+"한 JTA에도 실행된다) 우리는 Hibernate <literal>Session</literal> 상에서 이용 "
+"가능한 <literal>Transaction</literal> API를 사용한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like once you get hold of "
+"your <interfacename>org.hibernate.SessionFactory</interfacename>. The "
+"<literal>getCurrentSession()</literal> method always returns the \"current\" "
+"unit of work. Remember that we switched the configuration option for this "
+"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
+"xml</filename>? Due to that setting, the context of a current unit of work "
+"is bound to the current Java thread that executes the application."
+msgstr ""
+"<literal>sessionFactory.getCurrentSession()</literal>은 무엇을 행하는가? 먼"
+"저 당신은 당신이 (<literal>HibernateUtil</literal> 덕분에 쉽게) "
+"<literal>SessionFactory</literal>을 당신이 소유하고 있다면, 원하는 만큼 어디"
+"서든 여러번 그것을 호출할 수 있다. <literal>getCurrentSession()</literal> 메"
+"소드는 항상 \"현재의\" 작업 단위를 반환한다. 우리가 <literal>hibernate.cfg."
+"xml</literal> 내에서 이 매커니즘에 대한 구성 옵션을 \"thread\"로 전환시켰음"
+"을 기억하는가? 그러므로 작업의 현재 단위는 우리의 어플리케이션을 실행시키는 "
+"현재 자바 쓰레드에 묶여 있다. 하지만 이것은 전체 그림이 아니며, 당신은 또한 "
+"scope(영역), 작업 단위가 시작될 때와 작업 단위가 종료될 때를 고려해야 한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers three methods of current session tracking. The \"thread\" "
+"based method is not intended for production use; it is merely useful for "
+"prototyping and tutorials such as this one. Current session tracking is "
+"discussed in more detail later on."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> begins when the first call to "
+"<literal>getCurrentSession()</literal> is made for the current thread. It is "
+"then bound by Hibernate to the current thread. When the transaction ends, "
+"either through commit or rollback, Hibernate automatically unbinds the "
+"<interface>org.hibernate.Session</interface> from the thread and closes it "
+"for you. If you call <literal>getCurrentSession()</literal> again, you get a "
+"new <interface>org.hibernate.Session</interface> and can start a new unit of "
+"work."
+msgstr ""
+"<literal>Session</literal>은 그것이 처음으로 필요로 되고 "
+"<literal>getCurrentSession()</literal>에 대한 첫 번째 호출이 이루어질 때 시작"
+"된다. 그때 그것은 Hibernate에 의해 현재의 쓰레드에 바인드 된다. 커밋되든 롤백"
+"되든 간에 트랜잭션이 종료되고, Hibernate가 자동적으로 그 쓰레드로부터 "
+"<literal>Session</literal>을 바인드 해제시키고 당신을 위해 세션을 닫는다. 만"
+"일 당신이 <literal>getCurrentSession()</literal>을 다시 호출한다면, 당신은 새"
+"로운 <literal>Session</literal>을 얻고 새로운 작업단위를 시작할 수 있다. 이 "
+"<emphasis>thread-bound</emphasis> 프로그래밍 모형은 Hibernate를 사용하는 가"
+"장 대중적인 방법이다. 왜냐하면 그것은 당신의 코드를 유연하게 계층화시키는 것"
+"을 허용해주기 때문이다(트랜잭션 경계 분할 코드는 데이트 접근 코드와 구별지워"
+"질 수 있는데, 우리는 이 튜토리얼의 뒷부분에서 이것을 다룰 것이다.)."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <interface>org."
+"hibernate.Session</interface> be used to execute one or several database "
+"operations? The above example uses one <interface>org.hibernate.Session</"
+"interface> for one operation. However this is pure coincidence; the example "
+"is just not complex enough to show any other approach. The scope of a "
+"Hibernate <interface>org.hibernate.Session</interface> is flexible but you "
+"should never design your application to use a new Hibernate <interface>org."
+"hibernate.Session</interface> for <emphasis>every</emphasis> database "
+"operation. Even though it is used in the following examples, consider "
+"<emphasis>session-per-operation</emphasis> an anti-pattern. A real web "
+"application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+"작업 영역의 단위와 관련하여, Hibernate <literal>Session</literal>은 하나 또"
+"는 여러 개의 데이터베이스 오퍼레이션들을 실행시키는데 사용될 수 있는가? 위의 "
+"예제는 하나의 오퍼레이션에 한 개의 <literal>Session</literal>을 사용하고 있"
+"다. 이것은 순진한 일치이며, 예제는 어떤 다른 접근법을 보여주기에는 충분히 복"
+"잡하지 않다. Hibernate <literal>Session</literal>의 scope(영역)은 유연하지만 "
+"당신은 결코 <emphasis>모든</emphasis> 데이터베이스 오퍼레이션 각각에 대해 새"
+"로운 Hibernate <literal>Session</literal>을 사용하도록 당신의 어플리케이션을 "
+"설계할 수 없다. 따라서 심지어 당신이 다음의 (매우 사소한) 예제들에서 여러 번 "
+"그것을 볼 수 있을지라도 <emphasis>session-per-operation</emphasis>을 하나의 "
+"안티-패턴으로 간주하라. 실제 (웹) 어플리케이션은 이 튜토리얼의 뒷부분에 보여"
+"진다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"See <xref linkend=\"transactions\" /> for more information about transaction "
+"handling and demarcation. The previous example also skipped any error "
+"handling and rollback."
+msgstr ""
+"트랜잭션 핸들링과 경계구분에 대한 추가 정보는 <xref linkend=\"transactions\"/"
+">을 살펴보라. 우리는 또한 앞의 예제에서 임의의 오류 처리와 롤백을 생략했다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To run this, we will make use of the Maven exec plugin to call our class "
+"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
+"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You should see Hibernate starting up and, depending on your configuration, "
+"lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+"컴파일, 구성에 따른 Hibernate 시작 후에, 당신은 많은 로그 출력을 보게 될 것이"
+"다. 끝에서 당신은 다음 라인을 발견할 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr ""
+"이제 우리는 마찬가지로 저장된 이벤트들을 열거하고자 원하며, 우리는 main 메소"
+"드에 한 개의 옵션을 추가한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr ""
+"우리는 또한 새로운 <literal>listEvents() method</literal> 메소드를 추가 시킨"
+"다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Here, we are using a Hibernate Query Language (HQL) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+"여기서 우리가 행할 것은 데이터베이스로부터 모든 존재하는 <literal>Event</"
+"literal> 객체들을 로드시키기 위해 HQL (Hibernate Query Language) 질의를 사용"
+"하는 것이다. Hibernate는 적절한 SQL을 생성시킬 것이고, 그것을 데이터베이스로 "
+"전송하고 데이터를 <literal>Event</literal> 객체들에 거주시킬 것이다. 당신은 "
+"물론 HQL로서 보다 복잡한 질의들을 생성시킬 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we can call our new functionality, again using the Maven exec plugin: "
+"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
+"\" -Dexec.args=\"list\"</command>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "파트 2 - 연관들을 매핑하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"So far we have mapped a single persistent entity class to a table in "
+"isolation. Let's expand on that a bit and add some class associations. We "
+"will add people to the application and store a list of events in which they "
+"participate."
+msgstr ""
+"우리는 한 개의 영속 엔티티 클래스를 한 개의 테이블로 매핑했다. 이것 위에서 빌"
+"드하고 몇몇 클래스 연관들을 추가시키자. 먼저 우리는 우리의 어플리케이션에 사"
+"람들을 추가하고 그들이 참여하는 이벤트들의 목록을 저장할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "Person 클래스 매핑하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "클래스의 첫 번째 장면은 간단하다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, create the new mapping file as <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr "마지막으로 새로운 매핑을 Hibernate의 구성에 추가하라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Create an association between these two entities. Persons can participate in "
+"events, and events have participants. The design questions you have to deal "
+"with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+"이제 우리는 이들 두 개의 엔티티들 사이에 한 개의 연관을 생성시킬 것이다. 명백"
+"하게, 개인들은 이벤트들에 참여할 수 있고, 이벤트들은 참여자들을 갖는다. 우리"
+"가 다루어야 하는 설계 질문들은 다음과 같다 : 방향성(directionality), 다중성"
+"(multiplicity), 그리고 콜렉션 특징."
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "단방향 Set-기반의 연관"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"By adding a collection of events to the <literal>Person</literal> class, you "
+"can easily navigate to the events for a particular person, without executing "
+"an explicit query - by calling <literal>Person#getEvents</literal>. Multi-"
+"valued associations are represented in Hibernate by one of the Java "
+"Collection Framework contracts; here we choose a <interfacename>java.util."
+"Set</interfacename> because the collection will not contain duplicate "
+"elements and the ordering is not relevant to our examples:"
+msgstr ""
+"우리는 <literal>Person</literal> 클래스에 이벤트들을 가진 한 개의 콜렉션을 추"
+"가할 것이다. 그 방법으로 우리는 명시적인 질의-<literal>aPerson.getEvents()</"
+"literal>를 호출함으로써-를 실행시키지 않고서 특정 개인에 대한 이벤트들을 쉽"
+"게 네비게이트할 수 있다. 우리는 하나의 Java 콜렉션, 하나의 <literal>Set</"
+"literal>를 사용한다. 왜냐하면 그 콜렉션은 중복 요소들을 포함하기 않을 것이고 "
+"그 순서가 우리와 관련되어 있지 않기 때문이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Before mapping this association, let's consider the other side. We could "
+"just keep this unidirectional or create another collection on the "
+"<literal>Event</literal>, if we wanted to be able to navigate it from both "
+"directions. This is not necessary, from a functional perspective. You can "
+"always execute an explicit query to retrieve the participants for a "
+"particular event. This is a design choice left to you, but what is clear "
+"from this discussion is the multiplicity of the association: \"many\" valued "
+"on both sides is called a <emphasis>many-to-many</emphasis> association. "
+"Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+"우리가 이 연관을 매핑하기 전에, 다른 측에 대해 생각하라. 명백하게 우리는 이것"
+"을 단지 단방향으로 유지시킬 수 있다. 또는 우리가 그것을 양방향으로 네비게이트"
+"하는 것-예를 들어 <literal>anEvent.getParticipants()</literal>-이 가능하도록 "
+"원할 경우에, <literal>Event</literal>측 상에 또 다른 콜렉션을 생성시킬 수 있"
+"다. 이것은 당신에게 남겨진 설계 선택이지만, 이 논의에서 명료한 점은 연관의 다"
+"중성이다: 양 측 상에서 \"다중\" 값을 갖는 경우, 우리는 이것을 <emphasis>many-"
+"to-many</emphasis> 연관이라고 명명한다. 그러므로 우리는 Hibernate의 many-to-"
+"many 매핑을 사용한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate supports a broad range of collection mappings, a <literal>set</"
+"literal> being most common. For a many-to-many association, or <emphasis>n:"
+"m</emphasis> entity relationship, an association table is required. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is decalred using the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person side, is defined with the <literal>key</literal> "
+"element, the column name for the event's side with the <literal>column</"
+"literal> attribute of the <literal>many-to-many</literal>. You also have to "
+"tell Hibernate the class of the objects in your collection (the class on the "
+"other side of the collection of references)."
+msgstr ""
+"Hibernate는 모든 종류의 콜렉션 매핑들, 가장 공통적인 <literal>&lt;set&gt;</"
+"literal>을 지원한다. many-to-many 연관 (또는 <emphasis>n:m</emphasis> 엔티티 "
+"관계)의 경우, 한 개의 연관 테이블이 필요하다. 이 테이블 내에 있는 각각의 행"
+"은 한 명의 개인과 한 개의 이벤트 사이의 링크를 표현한다. 테이블 이름은 "
+"<literal>set</literal> 요소의 <literal>table</literal> 속성으로 구성된다. 연"
+"관 내의 식별자 컬럼 이름은 개인 측에 대해 <literal>&lt;key&gt;</literal> 요소"
+"로 정의되고 이벤트 측에 대한 컬럼 이름은 <literal>&lt;many-to-many&gt;</"
+"literal>의 <literal>column</literal> 속성으로 정의된다. 당신은 또한 당신의 콜"
+"렉션 내에 있는 객체들의 클래스(정확하게 : 참조들을 가진 콜렉션의 다른 측 상"
+"에 있는 클래스)를 Hibernate에게 알려주어야 한다."
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "따라서 이 매핑을 위한 데이터베이스 스키마는 다음과 같다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "연관들에 작업하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now we will bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"<literal>EventManager</literal> 속에 있는 한 개의 새로운 메소드 내에 몇몇 사"
+"람들과 이벤트들을 함께 가져오자:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. There is "
+"no explicit call to <literal>update()</literal> or <literal>save()</"
+"literal>; Hibernate automatically detects that the collection has been "
+"modified and needs to be updated. This is called <emphasis>automatic dirty "
+"checking</emphasis>. You can also try it by modifying the name or the date "
+"property of any of your objects. As long as they are in "
+"<emphasis>persistent</emphasis> state, that is, bound to a particular "
+"Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate "
+"monitors any changes and executes SQL in a write-behind fashion. The process "
+"of synchronizing the memory state with the database, usually only at the end "
+"of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the "
+"unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+"<literal>Person</literal>과 <literal>Event</literal>를 로드시킨 후에, 정규 콜"
+"렉션 메소드들을 사용하여 콜렉션을 간단하게 변경하라. 당신이 알 수 있듯이, "
+"<literal>update()</literal> 또는 <literal>save()</literal>에 대한 명시적인 호"
+"출이 존재하지 않고, 변경되었고 저장할 필요가 있는 콜렉션을 Hibernate가 자동적"
+"으로 검출해낸다. 이것은 <emphasis>자동적인 dirty 체킹</emphasis>이라 불려지"
+"며, 당신은 또한 당신의 임의의 객체들에 대한 name 또는 date 프로퍼티를 변경함"
+"으로써 그것을 시도할 수 있다. 그것들이 <emphasis>영속(persistent)</emphasis> "
+"상태에 있는 동안, 즉 특정 Hibernate <literal>Session</literal>에 바인드되어 "
+"있는 동안(예를 들면. 그것들은 작업 단위 속에 방금 로드되었거나 저장되었다), "
+"Hibernate는 임의의 변경들을 모니터링하고 쓰기 이면의 형태로 SQL을 실행시킨"
+"다. 메모리 상태를 데이터베이스와 동기화 시키는 과정은 대개 오직 작업 단위의 "
+"끝에서이고, <emphasis>flushing</emphasis>이라 명명된다. 우리의 코드에서, 작"
+"업 단위는 <literal>CurrentSessionContext</literal> 클래스에 대한 "
+"<literal>thread</literal> 구성 옵션에 의해 정의된 대로 - 데이터베이스 트랜잭"
+"션의 커밋(또는 롤백)으로 끝이난다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can load person and event in different units of work. Or you can modify "
+"an object outside of a <interfacename>org.hibernate.Session</interfacename>, "
+"when it is not in persistent state (if it was persistent before, this state "
+"is called <emphasis>detached</emphasis>). You can even modify a collection "
+"when it is detached:"
+msgstr ""
+"물론 당신은 다른 작업 단위 속에 개인과 이벤트를 로드시킬 수 도 있다. 또는 당"
+"신은 하나의 객체그 영속 상태에 있지 않을 때 <literal>Session</literal>의 외부"
+"에서 객체를 변경시킬 수도 있다(만일 객체가 이전에 영속화 되었다면, 우리는 이 "
+"상태를 <emphasis>detached</emphasis>라고 부른다). (매우 사실적이지 않은) 코"
+"드 내에서 이것은 다음과 같을 수 있다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again by binding it to a new unit of work, so any modifications you made to "
+"it while detached can be saved to the database. This includes any "
+"modifications (additions/deletions) you made to a collection of that entity "
+"object."
+msgstr ""
+"<literal>update</literal>에 대한 호출은 한 개의 detached 객체를 다시 영속화 "
+"시키고, 당신은 그것이 새로운 작업 단위에 바인드된다고 말할 수 있고, 따라서 "
+"detached 동안에 당신이 그것에 대해 행한 임의의 변경들이 데이터베이스에 저장"
+"될 수 있다. 이것은 당신이 그 엔티티 객체의 콜렉션에 대해 행했던 임의의 변경들"
+"(추가/삭제)를 포함한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is not much use in our example, but it is an important concept you can "
+"incorporate into your own application. Complete this exercise by adding a "
+"new action to the main method of the <literal>EventManager</literal> and "
+"call it from the command line. If you need the identifiers of a person and "
+"an event - the <literal>save()</literal> method returns it (you might have "
+"to modify some of the previous methods to return that identifier):"
+msgstr ""
+"물론, 우리의 현재 상황에서 이것은 많이 사용되지 않지만, 그것은 당신이 당신 자"
+"신의 어플리케이션 내로 설계할 수 있는 중요한 개념이다. 지금 "
+"<literal>EventManager</literal>의 main 메소드에 한 개의 새로운 액션을 추가하"
+"고 명령 라인에서 그것을 호출하여 이 연습을 완료하라. 만일 당신이 한명의 개인"
+"과 한 개의 이벤트에 대한 식별자들을 필요로 할 경우 - <literal>save()</"
+"literal> 메소드가 그것을 반환시킨다(당신은 그 식별자를 반환시키는 앞의 메소드"
+"들 중 몇몇을 변경시켜야 할 것이다):"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This is an example of an association between two equally important classes : "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <classname>java.lang.String</classname>. We "
+"call these classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"do not have their own identity, nor are they shared between entities. Two "
+"persons do not reference the same <literal>firstname</literal> object, even "
+"if they have the same first name. Value types cannot only be found in the "
+"JDK , but you can also write dependent classes yourself such as an "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal> class. In "
+"fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+"이것은 두 개의 동등하게 중요한 클래스들, 두 개의 엔티티들 사이에서 한 개의 연"
+"관에 관한 예제였다. 앞서 언급했듯이, 전형적인 모형 내에는 다른 클래스들과 타"
+"이들이 존재하는데, 대개 \"덜 중요하다\". 당신은 이미 <literal>int</literal> "
+"또는 <literal>String</literal>과 같은 어떤 것을 이미 보았다. 우리는 이들 클래"
+"스들을 <emphasis>값 타입들(value types)</emphasis>이라 명명하고, 그들 인스턴"
+"스들은 특정 엔티티에 <emphasis>의존한다(depend)</emphasis>. 이들 타입들을 가"
+"진 인스턴스들은 그것들 자신의 식별성(identity)를 갖지 않거나, 그것들은 엔티티"
+"들 사이에서 공유되지도 않는다(두개의 person들은 심지어 그것들이 같은 첫 번째 "
+"이름을 갖는 경우에도 동일한 <literal>firstname</literal>을 참조하지 않는"
+"다 ). 물론 값 타입들은 JDK 내에서 발견될 뿐만 아니라(사실, Hibernate 어플리케"
+"이션에서 모든 JDK 클래스들은 값 타입들로 간주된다), 당신은 또한 당신 스스로 "
+"종속 클래스들, 예를 들면 <literal>Address</literal> 또는 "
+"<literal>MonetaryAmount</literal>을 작성할 수 있다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"당신은 또한 값 타입들을 설계할 수 있다. 이것은 다른 엔티티들에 대한 참조들을 "
+"가진 콜렉션과는 개념적으로 매우 다르지만, Java에서는 대개 동일한 것으로 보여"
+"진다."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "값들을 가진 콜렉션"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Let's add a collection of email addresses to the <literal>Person</literal> "
+"entity. This will be represented as a <interfacename>java.util.Set</"
+"interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "이 <literal>Set</literal>에 대한 매핑은 다음과 같다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the use of the "
+"<literal>element</literal> part which tells Hibernate that the collection "
+"does not contain references to another entity, but is rather a collection "
+"whose elements are values types, here specifically of type <literal>string</"
+"literal>. The lowercase name tells you it is a Hibernate mapping type/"
+"converter. Again the <literal>table</literal> attribute of the <literal>set</"
+"literal> element determines the table name for the collection. The "
+"<literal>key</literal> element defines the foreign-key column name in the "
+"collection table. The <literal>column</literal> attribute in the "
+"<literal>element</literal> element defines the column name where the email "
+"address values will actually be stored."
+msgstr ""
+"앞의 매핑과 비교한 차이점은 <literal>element</literal> 부분인데, 그것은 그 콜"
+"렉션이 또 다른 엔티티에 대한 참조들을 포함하지 않을 것이지만 "
+"<literal>String</literal>(소문자 이름은 그것이 Hibernate 매핑 타입/변환자임"
+"을 당신에게 말해준다) 타입의 요소들을 가진 한 개의 콜렉션을 포함할 것임을 "
+"Hibernate에게 알려준다. 일단 다시 <literal>set</literal> 요소의 "
+"<literal>table</literal> 속성은 그 콜렉션에 대한 테이블 이름을 결정한다. "
+"<literal>key</literal> 요소는 콜렉션 테이블 내에서 foreign-key 컬럼 이름을 정"
+"의한다. <literal>element</literal> 요소 내에 있는 <literal>column</literal> "
+"속성은 <literal>String</literal> 값들이 실제로 저장될 컬럼 이름을 정의한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "Here is the updated schema:"
+msgstr "업데이트된 스키마를 살펴보라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key that uses both columns. This also implies that there cannot be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"당신은 콜렉션 테이블의 프라이머리 키가 사실은 두 컬럼들을 사용하는 한 개의 합"
+"성 키(composite key)임을 알 수 있다. 이것은 또한 개인에 대해 email 주소가 중"
+"복될 수 없음을 의미하며, 그것은 정확하게 우리가 Java에서 set을 필요로 하는 의"
+"미론이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can now try to add elements to this collection, just like we did before "
+"by linking persons and events. It is the same code in Java:"
+msgstr ""
+"마치 개인들과 이벤트들을 링크시켜서 이전에 우리가 행했던 것처럼 이제 당신은 "
+"요소들을 시도하고 이 콜렉션에 추가할 수 있다. 그것은 Java에서 동일한 코드이"
+"다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This time we did not use a <emphasis>fetch</emphasis> query to initialize "
+"the collection. Monitor the SQL log and try to optimize this with an eager "
+"fetch."
+msgstr ""
+"지금 우리는 콜렉션을 초기화 시키는데 <emphasis>fetch</emphasis> 질의를 사용하"
+"지 않았다. 그러므로 콜렉션의 getter 메소드에 대한 호출은 콜렉션을 초기화 시키"
+"기 위해 추가적인 select를 트리거 시킬 것이어서, 우리는 그것에 요소를 추가시"
+"킬 수 있다. SQL 로그를 관찰하고 이것을 eager fetch로 최적화 시키려고 시도하"
+"라."
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "Bi-directional associations"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next you will map a bi-directional association. You will make the "
+"association between person and event work from both sides in Java. The "
+"database schema does not change, so you will still have many-to-many "
+"multiplicity."
+msgstr ""
+"다음으로 우리는 양방향 연관을 매핑시킬 예정이다-개인과 이벤트 사이에 연관을 "
+"만드는 것은 Java에서 양 측들에서 동작한다. 물론 데이터베이스 스키마는 변경되"
+"지 않고, 우리는 여전히 many-to-many 다중성을 갖는다. 관계형 데이터베이스는 네"
+"트웍 프로그래밍 언어 보다 훨씬 더 유연하여서, 그것은 네비게이션 방향과 같은 "
+"어떤 것을 필요로 하지 않는다 - 데이터는 어떤 가능한 바업ㅂ으로 보여질 수 있"
+"고 검색될 수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A relational database is more flexible than a network programming language, "
+"in that it does not need a navigation direction; data can be viewed and "
+"retrieved in any possible way."
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"class:"
+msgstr ""
+"먼저, 참여자들을 가진 한 개의 콜렉션을 <literal>Event</literal> Event 클래스"
+"에 추가시켜라:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr "이제 <literal>Event.hbm.xml</literal> 내에 연관의 이 쪽도 매핑하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"These are normal <literal>set</literal> mappings in both mapping documents. "
+"Notice that the column names in <literal>key</literal> and <literal>many-to-"
+"many</literal> swap in both mapping documents. The most important addition "
+"here is the <literal>inverse=\"true\"</literal> attribute in the "
+"<literal>set</literal> element of the <literal>Event</literal>'s collection "
+"mapping."
+msgstr ""
+"당신이 볼 수 있듯이, 이것들은 두 매핑 문서들 내에서 정규 <literal>set</"
+"literal> 매핑들이다. <literal>key</literal>와 <literal>many-to-many</literal>"
+"에서 컬럼 이름들은 두 매핑 문서들에서 바뀌어진다. 여기서 가장 중요한 부가물"
+"은 <literal>Event</literal>의 콜렉션 매핑에 관한 <literal>set</literal> 요소 "
+"내에 있는 <literal>inverse=\"true\"</literal> 속성이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side, the "
+"<literal>Person</literal> class, when it needs to find out information about "
+"the link between the two. This will be a lot easier to understand once you "
+"see how the bi-directional link between our two entities is created."
+msgstr ""
+"이것이 의미하는 바는 Hibernate가 둘 사이의 링크에 대한 정보를 알 필요가 있을 "
+"때 다른 측-<literal>Person</literal> 클래스-를 취할 것이라는 점이다. 일단 당"
+"신이 우리의 두 엔티티들 사이에 양방향 링크가 생성되는 방법을 안다면 이것은 이"
+"해하기가 훨씬 더 쉬울 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "양방향 링크들에 작업하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First, keep in mind that Hibernate does not affect normal Java semantics. "
+"How did we create a link between a <literal>Person</literal> and an "
+"<literal>Event</literal> in the unidirectional example? You add an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. If you want to make this link bi-"
+"directional, you have to do the same on the other side by adding a "
+"<literal>Person</literal> reference to the collection in an <literal>Event</"
+"literal>. This process of \"setting the link on both sides\" is absolutely "
+"necessary with bi-directional links."
+msgstr ""
+"첫 번째로 Hibernate가 정규 Java 의미론에 영향을 주지 않음을 염두에 두라. 우리"
+"는 단방향 예제에서 <literal>Person</literal>과 <literal>Event</literal> 사이"
+"에 어떻게 한 개의 링크를 생성시켰는가? 우리는 <literal>Event</literal> 타입"
+"의 인스턴스를 <literal>Person</literal> 타입의 이벤트 참조들을 가진 콜렉션에 "
+"추가시켰다. 따라서 명백하게 우리가 이 링크를 양방향으로 동작하도록 만들고자 "
+"원한다면, 우리는 다른 측 상에서 -하나의 <literal>Person</literal> 참조를 하나"
+"의 <literal>Event</literal> 내에 있는 콜렉션에 추가시킴으로써- 동일한 것을 행"
+"해야 한다. 이 \"양 측 상에 링크 설정하기\"는 절대적으로 필수적이고 당신은 그"
+"것을 행하는 것을 결코 잊지 말아야 한다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Many developers program defensively and create link management methods to "
+"correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+"많은 개발자들은 방비책을 프로그램하고 양 측들을 정확하게 설정하기 위한 하나"
+"의 링크 관리 메소드들을 생성시킨다. 예를 들면 <literal>Person</literal>에서 :"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The get and set methods for the collection are now protected. This allows "
+"classes in the same package and subclasses to still access the methods, but "
+"prevents everybody else from altering the collections directly. Repeat the "
+"steps for the collection on the other side."
+msgstr ""
+"콜렉션에 대한 get 및 set 메소드드은 이제 protected임을 인지하라 - 이것은 동일"
+"한 패키지 내에 있는 클래스들과 서브클래스들이 그 메소드들에 접근하는 것을 허"
+"용해주지만, 그 밖의 모든 것들이 그 콜렉션들을 (물론, 대개) 직접 만지는 것을 "
+"금지시킨다. 당신은 다른 측 상에 있는 콜렉션에 대해 동일한 것을 행할 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> mapping attribute? For you, and "
+"for Java, a bi-directional link is simply a matter of setting the references "
+"on both sides correctly. Hibernate, however, does not have enough "
+"information to correctly arrange SQL <literal>INSERT</literal> and "
+"<literal>UPDATE</literal> statements (to avoid constraint violations). "
+"Making one side of the association <literal>inverse</literal> tells "
+"Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. "
+"That is all that is necessary for Hibernate to resolve any issues that arise "
+"when transforming a directional navigation model to a SQL database schema. "
+"The rules are straightforward: all bi-directional associations need one side "
+"as <literal>inverse</literal>. In a one-to-many association it has to be the "
+"many-side, and in many-to-many association you can select either side."
+msgstr ""
+"<literal>inverse</literal> 매핑 속성은 무엇인가? 당신의 경우, 그리고 Java의 "
+"경우, 한 개의 양방향 링크는 단순히 양 측들에 대한 참조들을 정확하게 설정하는 "
+"문제이다. 하지만 Hibernate는 (컨스트레인트 위배를 피하기 위해서) SQL "
+"<literal>INSERT</literal> 문장과 <literal>UPDATE</literal> 문장을 정확하게 마"
+"련하기에 충분한 정보를 갖고 있지 않으며, 양방향 연관들을 올바르게 처리하기 위"
+"해 어떤 도움을 필요로 한다. 연관의 한 측을 <literal>inverse</literal>로 만드"
+"는 것은 기본적으로 그것을 무시하고 그것을 다른 측의 <emphasis>거울(mirror)</"
+"emphasis>로 간주하도록 Hibernate에게 알려준다. 그것은 Hibernate가 하나의 방향"
+"성 네비게이션 모형을 한 개의 SQL 스키마로 변환시킬 때 모든 쟁점들을 잘 해결하"
+"는데 필수적인 모든 것이다. 당신이 염두에 두어야 하는 규칙들은 간단하다 : 모"
+"든 양방향 연관들은 한 쪽이 <literal>inverse</literal>일 필요가 있다. one-to-"
+"many 연관에서 그것은 many-측이어야 하고, many-to-many 연관에서 당신은 어느 측"
+"이든 선택할 수 있으며 차이점은 없다."
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "파트 3 - EventManager 웹 어플리케이션"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. You can now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Hibernate 웹 어플리케이션은 대부분의 스탠드얼론 어플리케이션과 같이 "
+"<literal>Session</literal>과 <literal>Transaction</literal>을 사용한다. 하지"
+"만 몇몇 공통 패턴들이 유용하다. 우리는 이제 <literal>EventManagerServlet</"
+"literal>를 작성한다. 이 서블릿은 데이터베이스 내에 저장된 모든 이벤트들을 나"
+"열할 수 있고, 그것은 새로운 이벤트들을 입력하기 위한 HTML form을 제공한다."
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "기본 서블릿 작성하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"First we need create our basic processing servlet. Since our servlet only "
+"handles HTTP <literal>GET</literal> requests, we will only implement the "
+"<literal>doGet()</literal> method:"
+msgstr ""
+"서블릿은 HTTP <literal>GET</literal> 요청들 만을 처리하므로, 우리가 구현하는 "
+"메소드는 <literal>doGet()</literal>이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The pattern applied here is called <emphasis>session-per-request</emphasis>. "
+"When a request hits the servlet, a new Hibernate <literal>Session</literal> "
+"is opened through the first call to <literal>getCurrentSession()</literal> "
+"on the <literal>SessionFactory</literal>. A database transaction is then "
+"started. All data access occurs inside a transaction irrespective of whether "
+"the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+"우리가 여기서 적용하는 패턴은 <emphasis>session-per-request</emphasis>이다. "
+"하나의 요청이 서블릿에 도달할 때, 하나의 새로운 Hibernate <literal>Session</"
+"literal>이 <literal>SessionFactory</literal> 상의 <literal>getCurrentSession"
+"()</literal>에 대한 첫번째 호출을 통해 열린다. 그때 하나의 데이터베이스 트랜"
+"잭션이 시작되고, 모든 데이터 접근이 하나의 트랜잭션 내에서 발생하는 한, 데이"
+"터가 읽혀지거나 기록되는데 문제가 없다(우리는 어플리케이션들 내에서 auto-"
+"commit 모드를 사용하지 않는다)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"모든 데이터베이스 오퍼레이션 각각에 대해 새로운 Hibernate <literal>Session</"
+"literal>을 사용하지 <emphasis>말라</emphasis>. 전체 요청에 대해 영역지워진 "
+"한 개의 Hibernate <literal>Session</literal>을 사용하라. 그것이 자동적으로 현"
+"재의 자바 쓰레드에 바인드되도록 <literal>getCurrentSession()</literal>을 사용"
+"하라."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We will get to that part soon."
+msgstr ""
+"다음으로, 요청의 가능한 액션들이 처리되고 응답 HTML이 렌더링된다. 우리는 곧"
+"장 그부분으로 갈 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering are complete. "
+"If any problems occurred during processing or rendering, an exception will "
+"be thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> pattern. Instead of the transaction "
+"demarcation code in every servlet, you could also write a servlet filter. "
+"See the Hibernate website and Wiki for more information about this pattern "
+"called <emphasis>Open Session in View</emphasis>. You will need it as soon "
+"as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"마지막으로, 프로세싱과 렌더링이 완료될 때 작업 단위가 종료된다. 만일 어떤 문"
+"제가 프로세싱과 렌더링 동안에 발생될 경우, 하나의 예외상황이 던져질 것이고 데"
+"이터베이스 트랜잭션은 롤백될 것이다. 이것은 <literal>session-per-request</"
+"literal>을 완료시킨다. 모든 서블릿 내에 있는 트랜잭션 구획 코드 대신에 당신"
+"은 또한 서블릿 필터를 사용할 수 있다. <emphasis>Open Session in View</"
+"emphasis>로 명명되는 이 패턴에 대한 추가 정보는 Hibernate 웹 사이트와 위키를 "
+"보라. 당신은 서블릿 내에서가 아닌 JSP 내에 당신의 뷰를 렌더링하는 것을 고려"
+"할 때 그것을 필요로 할 것이다."
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "프로세싱과 렌더링"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Now you can implement the processing of the request and the rendering of the "
+"page."
+msgstr "요청의 처리와 페이지의 렌더링을 구현하자."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This coding style, with a mix of Java and HTML, would not scale in a more "
+"complex application&mdash;keep in mind that we are only illustrating basic "
+"Hibernate concepts in this tutorial. The code prints an HTML header and a "
+"footer. Inside this page, an HTML form for event entry and a list of all "
+"events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"Java와 HTML이 혼합된 이 코딩이 보다 복잡한 어플리케이션에서 기준이 될 수 없"
+"다 할지라도, 우리는 단지 이 튜토리얼 내에서 기본 Hibernate 개념들을 설명하고 "
+"있음을 염두에 두라. 코드는 하나의 HTML 헤더와 하나의 footer를 프린트한다. 이 "
+"페이지 내에 이벤트 엔트리를 위한 하나의 HTML form과 데이터베이스 내에 있는 모"
+"든 이벤트들의 목록이 프린트된다. 첫 번째 메소드는 시행적이고 오직 HTML을 출력"
+"한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"<literal>listEvents()</literal> 메소드는 하나의 질의를 실행하기 위해서 현재"
+"의 쓰레드에 결합된 Hibernate <literal>Session</literal>을 사용한다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"마지막으로, <literal>store</literal> 액션은 <literal>createAndStoreEvent()</"
+"literal> 메소드로 디스패치된다. 그것은 현재 쓰레드의 <literal>Session</"
+"literal>을 사용한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"The servlet is now complete. A request to the servlet will be processed in a "
+"single <literal>Session</literal> and <literal>Transaction</literal>. As "
+"earlier in the standalone application, Hibernate can automatically bind "
+"these objects to the current thread of execution. This gives you the freedom "
+"to layer your code and access the <literal>SessionFactory</literal> in any "
+"way you like. Usually you would use a more sophisticated design and move the "
+"data access code into data access objects (the DAO pattern). See the "
+"Hibernate Wiki for more examples."
+msgstr ""
+"즉 서블릿이 완성된다. 서블릿에 대한 요청은 하나의 단일 <literal>Session</"
+"literal>과 <literal>Transaction</literal> 내에서 처리될 것이다. 이전처럼 스탠"
+"드얼론 어플리케이션에서, Hibernate는 이들 객체들을 실행 중인 현재 쓰레드에 자"
+"동적으로 바인드시킬 수 있다. 이것은 당신의 코드를 계층화 시키고 당신이 좋아하"
+"는 임의의 방법으로 <literal>SessionFactory</literal>에 접근하는 자유를 당신에"
+"게 부여한다. 대개 당신은 보다 세련된 설계를 사용할 것이고 데이터 접근 코드를 "
+"데이터 접근 객체들 내로 이동시킬 것이다(DAO 패턴). 추가 예제들은 Hibernate 위"
+"키를 보라."
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "배치하기 그리고 테스트하기"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To deploy this application for testing we must create a Web ARchive (WAR). "
+"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
+"web.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"To build and deploy call <literal>mvn package</literal> in your project "
+"directory and copy the <filename>hibernate-tutorial.war</filename> file into "
+"your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+"빌드하고 배치하기 위해 당신의 프로젝트 디렉토리 내에서 <literal>ant war</"
+"literal>를 호출하고 <literal>hibernate-tutorial.war</literal> 파일을 당신의 "
+"Tomcat <literal>webapp</literal> 디렉토리로 복사하라. 만일 당신이 Tomcat을 설"
+"치하지 않았다면, 그것을 내려받아 설치 지침들을 따르라. 당신은 이 어플리케이션"
+"을 배치하기 위해 임의의 Tomcat 구성을 변경하지 않아야 한다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not have Tomcat installed, download it from <ulink url=\"http://"
+"tomcat.apache.org/\" /> and follow the installation instructions. Our "
+"application requires no changes to the standard Tomcat configuration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
+msgstr ""
+"일단 배치했고 Tomcat이 실행중이면, <literal>http://localhost:8080/hibernate-"
+"tutorial/eventmanager</literal>로 어플리케이션에 접근하라. 첫 번째 요청이 당"
+"신의 서블릿에 도달할 때 Hibernate가 초기화(<literal>HibernateUtil</literal> "
+"내에 있는 static initializer가 호출된다) 되는 것을 보기 위해 그리고 만일 어"
+"떤 예외상황들이 발생할 경우 상세한 출력을 얻기 위해서 Tomcat 로그를 지켜보도"
+"록 하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "요약"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application. More tutorials are available from "
+"the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+"이 튜토리얼은 간단한 스탠드얼론 Hibernate 어플리케이션과 하나의 작은 웹 어플"
+"리케이션을 작성하는 기초를 다루었다."
+
+#~ msgid "Introduction to Hibernate"
+#~ msgstr "Hibernate 개요"
+
+#~ msgid "Preface"
+#~ msgstr "머리말"
+
+#~ msgid ""
+#~ "This chapter is an introductory tutorial for new users of Hibernate. We "
+#~ "start with a simple command line application using an in-memory database "
+#~ "and develop it in easy to understand steps."
+#~ msgstr ""
+#~ "이 장은 Hibernate 초심자를 위한 개론적인 튜토리얼이다. 우리는 메모리-내 데"
+#~ "이터베이스를 사용하는 간단한 명령 라인 어플리케이션으로 시작하고 단계들을 "
+#~ "이해하도록 쉽게 그것을 개발한다."
+
+#~ msgid ""
+#~ "This tutorial is intended for new users of Hibernate but requires Java "
+#~ "and SQL knowledge. It is based on a tutorial by Michael Gloegl, the third-"
+#~ "party libraries we name are for JDK 1.4 and 5.0. You might need others "
+#~ "for JDK 1.3."
+#~ msgstr ""
+#~ "이 튜토리얼은 Hibernate 신규 사용자들을 의도하고 있지만 Java와 SQL 지식을 "
+#~ "필요로 한다. 그것은 Michael Gloegl이 작성한 튜토리얼에 기초하며, 우리가 명"
+#~ "명하는 제 3의 라이브러리들은 JDK 1.4와 5.0 버전용이다. 당신은 JDK1.3에 대"
+#~ "해 다른 라이브러리들을 필요로 할 수도 있다."
+
+#~ msgid ""
+#~ "The source code for the tutorial is included in the distribution in the "
+#~ "<literal>doc/reference/tutorial/</literal> directory."
+#~ msgstr ""
+#~ "튜토리얼용 소스는 <literal>doc/reference/tutorial/</literal> 디렉토리 내"
+#~ "에 있는 배포본 내에 포함되어 있다."
+
+#~ msgid ""
+#~ "First, we'll create a simple console-based Hibernate application. We use "
+#~ "an Java database (HSQL DB), so we do not have to install any database "
+#~ "server."
+#~ msgstr ""
+#~ "먼저, 우리는 한 개의 간단한 콘솔-기반 Hibernate 어플리케이션을 생성시킬 것"
+#~ "이다. 우리는 메모리-내 데이터베이스(HSQL DB)를 사용하므로, 우리는 어떤 데"
+#~ "이터베이스 서버를 설치하지 않아도 된다."
+
+#~ msgid ""
+#~ "The first thing we do, is set up our development directory and put all "
+#~ "the Java libraries we need into it. Download the Hibernate distribution "
+#~ "from the Hibernate website. Extract the package and place all required "
+#~ "libraries found in <literal>/lib</literal> into into the <literal>/lib</"
+#~ "literal> directory of your new development working directory. It should "
+#~ "look like this:"
+#~ msgstr ""
+#~ "우리가 행할 첫 번째 것은 우리의 개발 디렉토리를 설정하고, 우리가 필요로 하"
+#~ "는 모든 Java 라이브러리들을 그것 속에 집어 넣는 것이다. Hibernate 웹 사이"
+#~ "트로부터 Hibernate 배포본을 내려 받아라. 패키지를 추출해내고 <literal>/"
+#~ "lib</literal> 속에서 발견되는 모든 필요한 라이브러리들을 당신의 새로운 개"
+#~ "발 작업 디렉토리의 <literal>/lib</literal> 디렉토리 속에 위치지워라. 그것"
+#~ "은 다음과 같을 것이다:"
+
+#~ msgid ""
+#~ "This is the minimum set of required libraries (note that we also copied "
+#~ "hibernate3.jar, the main archive) for Hibernate <emphasis>at the time of "
+#~ "writing</emphasis>. The Hibernate release you are using might require "
+#~ "more or less libraries. See the <literal>README.txt</literal> file in the "
+#~ "<literal>lib/</literal> directory of the Hibernate distribution for more "
+#~ "information about required and optional third-party libraries. (Actually, "
+#~ "Log4j is not required but preferred by many developers.)"
+#~ msgstr ""
+#~ "이것은 <emphasis>글의 작성 시점에서</emphasis> Hibernate에 필수적인 최소한"
+#~ "의 세트이다(우리는 또한 메인 아카이브인 hibernate3.jar를 복사했음을 노트하"
+#~ "라). 당신이 사용 중인 Hibernate 배포본이 더 많거나 보다 적은 라이브러리들"
+#~ "을 필요로 할 수도 있다. 필수 라이브러리들과 선택적인 제3의 라이브러리들에 "
+#~ "대한 추가 정보는 Hibernate 배포본의 <literal>lib/</literal> 디렉토리 내에 "
+#~ "있는 <literal>README.txt</literal> 파일을 보라. (실제로, Log4j는 필수는 아"
+#~ "니지만 많은 개발자들에 의해 선호된다.)"
+
+#~ msgid ""
+#~ "Our first persistent class is a simple JavaBean class with some "
+#~ "properties:"
+#~ msgstr ""
+#~ "우리의 첫 번째 영속 클래스는 몇몇 프로퍼티들을 가진 간단한 자바빈즈 클래스"
+#~ "이다:"
+
+#~ msgid ""
+#~ "Place this Java source file in a directory called <literal>src</literal> "
+#~ "in the development folder, and in its correct package. The directory "
+#~ "should now look like this:"
+#~ msgstr ""
+#~ "이 Java 소스 파일을 개발 폴더 내의 <literal>src</literal>로 명명된 디렉토"
+#~ "리 속에 있는 위치지워라. 이제 그 디렉토리는 다음과 같을 것이다:"
+
+#~ msgid "In the next step, we tell Hibernate about this persistent class."
+#~ msgstr ""
+#~ "다음 단계에서, 우리는 Hiberante에게 이 영속 클래스에 대해 알려 준다."
+
+#~ msgid ""
+#~ "The <literal>id</literal> element is the declaration of the identifer "
+#~ "property, <literal>name=\"id\"</literal> declares the name of the Java "
+#~ "property - Hibernate will use the getter and setter methods to access the "
+#~ "property. The column attribute tells Hibernate which column of the "
+#~ "<literal>EVENTS</literal> table we use for this primary key. The nested "
+#~ "<literal>generator</literal> element specifies the identifier generation "
+#~ "strategy, in this case we used <literal>native</literal>, which picks the "
+#~ "best strategy depending on the configured database (dialect). Hibernate "
+#~ "supports database generated, globally unique, as well as application "
+#~ "assigned identifiers (or any strategy you have written an extension for)."
+#~ msgstr ""
+#~ "<literal>id</literal> 요소는 식별자 프로퍼티의 선언이고, <literal>name="
+#~ "\"id\"</literal>는 Java 프로퍼티의 이름을 선언한다 - Hibernate는 그 프로퍼"
+#~ "티에 접근하는데 getter 및 setter 메소드들을 사용할 것이다. column 속성은 "
+#~ "우리가 <literal>EVENTS</literal> 테이블의 어느 컬럼을 이 프라이머리 키로 "
+#~ "사용하는지를 Hibernate에게 알려준다. 내포된 <literal>generator</literal> "
+#~ "요소는 식별자 생성 방도를 지정하며, 이 경우에 우리는 <literal>increment</"
+#~ "literal>를 사용했고, 그것은 대개 테스팅(과 튜토리얼들)에 유용한 매우 간단"
+#~ "한 메모리-내 숫자 증가 방법이다. Hibernate는 또한 전역적으로 유일한 데이터"
+#~ "베이스에 의해 생성된 식별자 뿐만 아니라 어플리케이션에 의해 할당된 식별자"
+#~ "(또는 당신이 확장으로 작성한 어떤 방도)를 지원한다."
+
+#~ msgid ""
+#~ "This mapping file should be saved as <literal>Event.hbm.xml</literal>, "
+#~ "right in the directory next to the <literal>Event</literal> Java class "
+#~ "source file. The naming of mapping files can be arbitrary, however the "
+#~ "<literal>hbm.xml</literal> suffix is a convention in the Hibernate "
+#~ "developer community. The directory structure should now look like this:"
+#~ msgstr ""
+#~ "다음 매핑 파일은 <literal>Event</literal> Java 클래스 소스 파일과 같은 디"
+#~ "렉토리 속에 <literal>Event.hbm.xml</literal>로서 저장될 것이다. 매핑 파일"
+#~ "들에 대한 네이밍은 임의적일 수 있지만, 접미사 <literal>hbm.xml</literal>"
+#~ "은 Hibernate 개발자 공동체 내에서 컨벤션이 되었다. 디렉토리 구조는 이제 다"
+#~ "음과 같을 것이다:"
+
+#~ msgid "We continue with the main configuration of Hibernate."
+#~ msgstr "우리는 Hibernate의 메인 구성을 계속 행한다."
+
+#~ msgid ""
+#~ "We now have a persistent class and its mapping file in place. It is time "
+#~ "to configure Hibernate. Before we do this, we will need a database. HSQL "
+#~ "DB, a java-based SQL DBMS, can be downloaded from the HSQL DB website"
+#~ "(http://hsqldb.org/). Actually, you only need the <literal>hsqldb.jar</"
+#~ "literal> from this download. Place this file in the <literal>lib/</"
+#~ "literal> directory of the development folder."
+#~ msgstr ""
+#~ "우리는 이제 적절한 곳에 한 개의 영속 클래스와 그것의 매핑 파일을 갖고 있"
+#~ "다. Hibernate를 구성할 차례이다. 우리가 이것을 행하기 전에, 우리는 데이터"
+#~ "베이스를 필요로 할 것이다. 자바 기반의 메모리-내 SQL DBMS인 HSQL DB는 "
+#~ "HSQL DB 웹 사이트에서 내려받을 수 있다. 실제로, 당신은 이 다운로드에서 오"
+#~ "직 <literal>hsqldb.jar</literal> 만을 필요로 한다. 개발 폴더의 "
+#~ "<literal>lib/</literal> 디렉토리 속에 이 파일을 위치지워라."
+
+#~ msgid ""
+#~ "Hibernate is the layer in your application which connects to this "
+#~ "database, so it needs connection information. The connections are made "
+#~ "through a JDBC connection pool, which we also have to configure. The "
+#~ "Hibernate distribution contains several open source JDBC connection "
+#~ "pooling tools, but will use the Hibernate built-in connection pool for "
+#~ "this tutorial. Note that you have to copy the required library into your "
+#~ "classpath and use different connection pooling settings if you want to "
+#~ "use a production-quality third party JDBC pooling software."
+#~ msgstr ""
+#~ "Hibernate는 당신의 어플리케이션 내에서 이 데이터베이스에 연결하는 계층이"
+#~ "고, 따라서 그것은 커넥션 정보를 필요로 한다. 커넥션들은 마찬가지로 구성되"
+#~ "어야 하는 하나의 JDBC 커넥션 풀을 통해 행해진다. Hibernate 배포본은 몇몇 "
+#~ "오픈 소스 JDBC 커넥션 풀링 도구들을 포함하고 있지만, 이 튜토리얼에서는 "
+#~ "Hibernate에 의해 미리 빌드된 커넥션 풀링을 사용할 것이다. 당신이 필수 라이"
+#~ "브러리를 당신의 classpath 속에 복사해야 하고 만일 당신이 제품-특징의 제3"
+#~ "의 JDBC 풀링 소프트웨어를 사용하고자 원할 경우에는 다른 커넥션 풀링 설정들"
+#~ "을 사용해야 함을 노트하라."
+
+#~ msgid ""
+#~ "Copy this file into the source directory, so it will end up in the root "
+#~ "of the classpath. Hibernate automatically looks for a file called "
+#~ "<literal>hibernate.cfg.xml</literal> in the root of the classpath, on "
+#~ "startup."
+#~ msgstr ""
+#~ "이 파일을 소스 디렉토리 속으로 복사하고, 따라서 그것은 classpath의 루트에"
+#~ "서 끝날 것이다. Hibernate는 시작 시에 classpath의 루트에서 "
+#~ "<literal>hibernate.cfg.xml</literal>로 명명된 파일을 자동적으로 찾는다."
+
+#~ msgid ""
+#~ "We'll now build the tutorial with Ant. You will need to have Ant "
+#~ "installed - get it from the <ulink url=\"http://ant.apache.org/"
+#~ "bindownload.cgi\">Ant download page</ulink>. How to install Ant will not "
+#~ "be covered here. Please refer to the <ulink url=\"http://ant.apache.org/"
+#~ "manual/index.html\">Ant manual</ulink>. After you have installed Ant, we "
+#~ "can start to create the buildfile. It will be called <literal>build.xml</"
+#~ "literal> and placed directly in the development directory."
+#~ msgstr ""
+#~ "우리는 이제 Ant로 튜토리얼을 빌드할 것이다. 당신은 Ant를 설치할 필요가 있"
+#~ "을 것이다 - <ulink url=\"http://ant.apache.org/bindownload.cgi\">Ant 내려"
+#~ "받기 페이지</ulink>에서 Ant를 얻어라. Ant를 설치하는 방법은 여기서 다루지 "
+#~ "않을 것이다. <ulink url=\"http://ant.apache.org/manual/index.html\">Ant 매"
+#~ "뉴얼</ulink>을 참조하길 바란다. 당신이 Ant를 설치한 후에, 우리는 빌드파일 "
+#~ "생성을 시작할 수 있다. 그것은 <literal>build.xml</literal>로 명명되고 개"
+#~ "발 디렉토리 속에 직접 위치될 것이다."
+
+#~ msgid "A basic build file looks like this:"
+#~ msgstr "기본 빌드 파일은 다음과 같다:"
+
+#~ msgid ""
+#~ "This will tell Ant to add all files in the lib directory ending with "
+#~ "<literal>.jar</literal> to the classpath used for compilation. It will "
+#~ "also copy all non-Java source files to the target directory, e.g. "
+#~ "configuration and Hibernate mapping files. If you now run Ant, you should "
+#~ "get this output:"
+#~ msgstr ""
+#~ "이것은 <literal>.jar</literal>로 끝나는 lib 디렉토리 내에 있는 모든 파일들"
+#~ "을 컴파일에 사용되는 classpath에 추가하도록 Ant에게 알려줄 것이다. 그것은 "
+#~ "또한 모든 비-Java 소스 파일들을 대상 디렉토리로 복사할 것이다. 예를 들면, "
+#~ "구성 및 Hibernate 매핑 파일들. 만일 당신이 Ant를 이제 실행할 경우, 당신은 "
+#~ "다음 출력을 얻게 될 것이다:"
+
+#~ msgid ""
+#~ "Place <literal>HibernateUtil.java</literal> in the development source "
+#~ "directory, in a package next to <literal>events</literal>:"
+#~ msgstr ""
+#~ "개발 소스 디렉토리 속에 <literal>HibernateUtil.java</literal> 를 위치지우"
+#~ "고, 다음으로 <literal>Event.java</literal>를 위치지워라:"
+
+#~ msgid ""
+#~ "To run this first routine we have to add a callable target to the Ant "
+#~ "build file:"
+#~ msgstr ""
+#~ "이 첫 번째 루틴을 실행하기 위해서 우리는 호출 가능한 대상을 Ant 빌드 파일"
+#~ "에 추가해야 한다:"
+
+#~ msgid ""
+#~ "The value of the <literal>action</literal> argument is set on the command "
+#~ "line when calling the target:"
+#~ msgstr ""
+#~ "<literal>action</literal> 아규먼트의 값은 대상을 호출할 때 명령 라인 상에"
+#~ "서 설정된다:"
+
+#~ msgid ""
+#~ "This is the <literal>INSERT</literal> executed by Hibernate, the question "
+#~ "marks represent JDBC bind parameters. To see the values bound as "
+#~ "arguments, or to reduce the verbosity of the log, check your "
+#~ "<literal>log4j.properties</literal>."
+#~ msgstr ""
+#~ "이것은 Hibernate에 의해 실행된 <literal>INSERT</literal>이고, 물음표 기호"
+#~ "는 JDBC 바인드 파라미터들을 나타낸다. 아규먼트로서 바인드 된 값들을 보거"
+#~ "나 장황한 로그를 줄이려면 당신의 <literal>log4j.properties</literal>를 체"
+#~ "크하라."
+
+#~ msgid "Now, to execute and test all of this, follow these steps:"
+#~ msgstr "이제 이 모든 것을 실행하고 테스트하기 위해, 다음 단계들을 따르라:"
+
+#~ msgid ""
+#~ "Run <literal>ant run -Daction=store</literal> to store something into the "
+#~ "database and, of course, to generate the database schema before through "
+#~ "hbm2ddl."
+#~ msgstr ""
+#~ "데이터베이스 속으로 어떤 것을 저장하고 물론 앞서 hbm2ddl을 통해 데이터베이"
+#~ "스 스키마를 산출시키기 위해 <literal>ant run -Daction=store</literal>를 실"
+#~ "행하라."
+
+#~ msgid ""
+#~ "Now disable hbm2ddl by commenting out the property in your "
+#~ "<literal>hibernate.cfg.xml</literal> file. Usually you only leave it "
+#~ "turned on in continous unit testing, but another run of hbm2ddl would "
+#~ "<emphasis>drop</emphasis> everything you have stored - the "
+#~ "<literal>create</literal> configuration setting actually translates into "
+#~ "\"drop all tables from the schema, then re-create all tables, when the "
+#~ "SessionFactory is build\"."
+#~ msgstr ""
+#~ "이제 당신의 <literal>hibernate.cfg.xml</literal> 파일 속에서 그 프로퍼티"
+#~ "를 주석처리함으로써 hbm2ddl을 사용불가능하게 하라. 대개 당신은 지속되는 단"
+#~ "위 테스팅에서는 그것을 사용 가능하게 내버려두어도 되지만, 또 다른 hbm2ddl"
+#~ "의 실행은 당신이 저장했던 모든 것을 <emphasis>drop</emphasis>시킬 것이다 "
+#~ "- <literal>create</literal> 구성 설정은 실제로 \"스키마로부터 모든 테이블"
+#~ "들을 드롭시키고 나서, SessionFactory가 빌드될 때 모든 테이블들을 다시 생성"
+#~ "시키는 것\"으로 변환된다."
+
+#~ msgid ""
+#~ "If you now call Ant with <literal>-Daction=list</literal>, you should see "
+#~ "the events you have stored so far. You can of course also call the "
+#~ "<literal>store</literal> action a few times more."
+#~ msgstr ""
+#~ "만일 당신이 지금 <literal>-Daction=list</literal>로 Ant를 호출할 경우, 당"
+#~ "신은 당신이 지금까지 저장했던 이벤트들을 보게 될 것이다. 물론 당신은 또한 "
+#~ "여러 번 <literal>store</literal> 액션을 호출할 수 있다."
+
+#~ msgid ""
+#~ "Note: Most new Hibernate users fail at this point and we see questions "
+#~ "about <emphasis>Table not found</emphasis> error messages regularly. "
+#~ "However, if you follow the steps outlined above you will not have this "
+#~ "problem, as hbm2ddl creates the database schema on the first run, and "
+#~ "subsequent application restarts will use this schema. If you change the "
+#~ "mapping and/or database schema, you have to re-enable hbm2ddl once again."
+#~ msgstr ""
+#~ "노트 : 대부분의 Hibernate 사용자들은 이 지점에서 실패하고 우리는 정기적으"
+#~ "로 <emphasis>Table not found</emphasis> 오류 메시지들에 관한 질문을 받는"
+#~ "다. 하지만 만일 당신이 위에 조명된 단게들을 따를 경우 당신은 이 문제를 겪"
+#~ "지 않을 것이고, hbm2ddl이 처음 실행 시에 데이터베이스 스키마를 생성시키므"
+#~ "로, 차후의 어플리케이션 재시작은 이 스키마를 사용할 것이다. 만일 당신이 매"
+#~ "핑 그리고/또는 데이터베이스 스키마를 변경할 경우에, 당신은 다시 한번 더 "
+#~ "hbm2ddl을 이용 가능하도록 해야 한다."
+
+#~ msgid ""
+#~ "Create a new mapping file called <literal>Person.hbm.xml</literal> (don't "
+#~ "forget the DTD reference at the top):"
+#~ msgstr ""
+#~ "<literal>Person.hbm.xml</literal>로 명명되는 새로운 매핑 파일을 생성시켜"
+#~ "라 (맨위에 DTD 참조를 잊지말라):"
+
+#~ msgid ""
+#~ "We need a unidirectional, many-valued associations, implemented with a "
+#~ "<literal>Set</literal>. Let's write the code for this in the Java classes "
+#~ "and then map it:"
+#~ msgstr ""
+#~ "우리는 하나의 <literal>Set</literal>으로 구현된, 하나의 단방향, 다중값 연"
+#~ "관들을 필요로 한다. Java 클래스들 내에 이를 위한 코드를 작성하고 그런 다"
+#~ "음 그것을 매핑시키자:"
+
+#~ msgid ""
+#~ "We add a collection of value typed objects to the <literal>Person</"
+#~ "literal> entity. We want to store email addresses, so the type we use is "
+#~ "<literal>String</literal>, and the collection is again a <literal>Set</"
+#~ "literal>:"
+#~ msgstr ""
+#~ "우리는 값 타입의 객체들을 가진 한 개의 콜렉션을 <literal>Person</literal> "
+#~ "엔티티에 추가시킨다. 우리는 email 주소를 저장하고자 원하므로, 우리가 사용"
+#~ "하는 타입은 <literal>String</literal>이고, 그 콜렉션은 다시 한 개의 "
+#~ "<literal>Set</literal>이다:"
+
+#~ msgid "Let's turn this into a small web application."
+#~ msgstr "Let's turn this into a small web application."
+
+#~ msgid ""
+#~ "Create a new class in your source directory, in the <literal>events</"
+#~ "literal> package:"
+#~ msgstr ""
+#~ "다음 장에서 우리는 Hibernate를 Tomcat 및 WebWork와 통합시킨다. "
+#~ "<literal>EventManager</literal>는 우리의 성장하는 어플리케이션을 더이상 감"
+#~ "당하지 못한다. 당신의 소스 디렉토리에서 <literal>events</literal> 패키지 "
+#~ "내에 새로운 클래스를 생성시켜라:"
+
+#~ msgid ""
+#~ "To deploy this application you have to create a web archive, a WAR. Add "
+#~ "the following Ant target to your <literal>build.xml</literal>:"
+#~ msgstr ""
+#~ "이 어플리케이션을 배치하기 위해서 당신은 하나의 웹 아카이브, WAR를 생성시"
+#~ "켜야 한다. 다음 Ant target을 당신의 <literal>build.xml</literal> 내에 추가"
+#~ "하라:"
+
+#~ msgid ""
+#~ "This target creates a file called <literal>hibernate-tutorial.war</"
+#~ "literal> in your project directory. It packages all libraries and the "
+#~ "<literal>web.xml</literal> descriptor, which is expected in the base "
+#~ "directory of your project:"
+#~ msgstr ""
+#~ "이 target은 당신의 프로젝트 디렉토리 내에 <literal>hibernate-tutorial."
+#~ "war</literal>로 명명된 하나의 파일을 생성시킨다. 그것은 당신의 프로젝트의 "
+#~ "기본 디렉토리 내에 기대되는 모든 라이브러리들과 <literal>web.xml</"
+#~ "literal> 디스크립터를 패키징한다:"
+
+#~ msgid ""
+#~ "Before you compile and deploy the web application, note that an "
+#~ "additional library is required: <literal>jsdk.jar</literal>. This is the "
+#~ "Java servlet development kit, if you don't have this library already, get "
+#~ "it from the Sun website and copy it to your library directory. However, "
+#~ "it will be only used for compliation and excluded from the WAR package."
+#~ msgstr ""
+#~ "당신이 웹 어플리케이션을 컴파일하고 배치하기 전에, 하나의 부가적인 라이브"
+#~ "러리가 필요함을 노트하라: <literal>jsdk.jar</literal>. 당신이 이미 이 라이"
+#~ "브러리를 갖고 있지 않을 경우, 이것은 Java servlet development kit이며, "
+#~ "Sun 웹 사이트로부터 그것을 얻어서 그것을 당신의 라이브러리 디렉토리에 복사"
+#~ "하라. 하지만 그것은 오직 컴파일 시에만 사용될 것이고 WAR 패키지에서는 제외"
+#~ "된다."
+
+#~ msgid ""
+#~ "If you already feel confident with Hibernate, continue browsing through "
+#~ "the reference documentation table of contents for topics you find "
+#~ "interesting - most asked are transactional processing (<xref linkend="
+#~ "\"transactions\"/>), fetch performance (<xref linkend=\"performance\"/>), "
+#~ "or the usage of the API (<xref linkend=\"objectstate\"/>) and the query "
+#~ "features (<xref linkend=\"objectstate-querying\"/>)."
+#~ msgstr ""
+#~ "만일 당신이 이미 Hibernate에 자신이 있다고 느낀다면, 당신이 흥미를 찾는 주"
+#~ "제들에 대한 참조 문서 목차를 계속 브라우징하라 - 가장 많이 요청되는 것은 "
+#~ "트랜잭션 처리(<xref linkend=\"transactions\"/>), 페치 퍼포먼스(<xref "
+#~ "linkend=\"performance\"/>), 또는 API 사용법(<xref linkend=\"objectstate\"/"
+#~ ">), 그리고 질의 특징들(<xref linkend=\"objectstate-querying\"/>)이다."
+
+#~ msgid ""
+#~ "Don't forget to check the Hibernate website for more (specialized) "
+#~ "tutorials."
+#~ msgstr ""
+#~ "더 많은(특화된) 튜토리얼들에 대해서는 Hibernate 웹 사이트를 체크하는 것을 "
+#~ "잊지 말라."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "XML 매핑"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is "
+"currently under active development. </emphasis>"
+msgstr ""
+"이것은 Hibernate3.0에서 실험적인 특징이고 매우 활동적으로 개발 중에 있음을 노"
+"트하라."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "XML 데이터로 작업하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate allows you to work with persistent XML data in much the same way "
+"you work with persistent POJOs. A parsed XML tree can be thought of as "
+"another way of representing the relational data at the object level, instead "
+"of POJOs."
+msgstr ""
+"Hibernate는 당신이 영속 POJO들로 작업하는 것과 아주 동일한 방법으로 영속 XML "
+"데이터에 작업하도록 해준다. 파싱된 XML 트리는 단지 객체 레벨에서 관계형 데이"
+"터를 나타내는 또 다른 방법으로 간주될 수 있다. 하나의 파싱된 XML 트리는 POJO"
+"들 대신, 객체 레벨에서 관계형 데이터를 표현하는 단지 또 다른 방법으로 간주될 "
+"수 있다."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate는 XML 트리들을 처리하는 API로서 dom4j를 지원한다. 당신은 데이터베이"
+"스로부터 dom4j 트리들을 검색하고 당신이 그 트리를 데이터베이스와 자동적으로 "
+"동기화시키기 위해 어떤 변경을 행하도록 하는 질의들을 작성할 수 있다. 당신은 "
+"심지어 XML 문서를 취하고, dom4j를 사용하여 그것을 파싱하고, Hibernate의 다음 "
+"기본적인 오퍼레이션들 중 어떤 것으로서 그것을 데이터베이스에 저장시킬 수 있"
+"다: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</"
+"literal>(merging(병합)은 아직 지원되지 않는다)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"이 특징은 데이터 가져오기/내보내기,JMS 또는 SOAP 그리고 XSLT-기반의 레포팅을 "
+"통한 엔티티 데이터의 구체화를 포함하는 많은 어플리케이션들을 갖는다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A single mapping can be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it can be used to map just the XML."
+msgstr ""
+"하나의 매핑은 클래스들의 프로퍼티들과 XML 문서의 노드들을 데이터베이스로 동시"
+"에 매핑시키는데 사용될 수 있거나, 만일 매핑할 클래스가 존재하지 않을 경우, 그"
+"것은 단지 XML을 매핑시키는데 사용될 수도 있다."
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "XML과 클래스 매핑을 함께 지정하기"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "다음은 POJO와 XML을 동시에 매핑시키는 예제이다 :"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "XML 매핑만을 지정하기"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "다음은 POJO 클래스가 존재하지 않는 예제이다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs or java <literal>Map</literal>s. The property "
+"names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+"이 매핑은 dom4j 트리로서 또는 프로퍼티 name/value 쌍들(java <literal>Map</"
+"literal>들)의 그래프로서 데이터에 접근하는 것을 당신에게 허용해준다. 프로퍼"
+"티 이름들은 HQL 질의들 내에서 참조될 수도 있는 순수하게 논리적인 구조체들이"
+"다."
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "XML 매핑 메타데이터"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"A range of Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This lets you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"많은 Hibernate 매핑 요소들은 <literal>node</literal> 속성을 수용한다. 이것은 "
+"당신이 프로퍼티 또는 엔티티 데이터를 소유하는 XML 속성이나 요소의 이름을 지정"
+"하도록 한다. <literal>node</literal> 속성의 포맷은 다음 중 하나이어야 한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr "<literal>\"element-name\"</literal> - 명명된 XML 요소로 매핑시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr ""
+"<literal>\"@attribute-name\"</literal> - 명명된 XML 속성으로 매핑시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal> - 부모 요소로 매핑 시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal>: map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal> - 명명된 요소의 명명된 속"
+"성으로 매핑시킨다"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will not appear at all."
+msgstr ""
+"콜렉션들과 단일 값 콜렉션들의 경우, 추가적인 <literal>embed-xml</literal> 속"
+"성이 존재한다. 만일 <literal>embed-xml=\"true\"</literal> 일 경우, 연관된 엔"
+"티티(또는 value 타입을 가진 콜렉션)에 대한 디폴트 XML 트리는 그 연관을 소유하"
+"는 엔티티에 대한 XML 트리 속에 직접 삽입될 것이다. 그 밖의 경우 "
+"<literal>embed-xml=\"false\"</literal> 일 경우, 참조된 식별자 값 만이 단일 포"
+"인트 연관들에 대해 나타날 것이고 콜렉션들은 단순히 전혀 나타나지 않을 것이다."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Do not leave <literal>embed-xml=\"true\"</literal> for too many "
+"associations, since XML does not deal well with circularity."
+msgstr ""
+"당신은 너무 많은 연관들에 대해 <literal>embed-xml=\"true\"</literal>로 남겨두"
+"지 말도록 주의해야 한다. 왜냐하면 XML이 순환적으로 잘 처리하지 못하기 때문이"
+"다!"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"In this case, the collection of account ids is embedded, but not the actual "
+"account data. The following HQL query:"
+msgstr ""
+"이 경우에, 우리는 실제 account 데이터가 아닌, account id들을 가진 콜렉션을 삽"
+"입시키기로 결정했다. 다음 HQL 질의:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid "would return datasets such as this:"
+msgstr "는 다음과 같은 데이터셋들을 반환할 것이다:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
+"many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+"만일 당신이 <literal>&lt;one-to-many&gt;</literal> 매핑에 대해 "
+"<literal>embed-xml=\"true\"</literal>를 설정할 경우, 데이터는 다음과 같이 보"
+"일 수도 있다:"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "XML 데이터 처리하기"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"You can also re-read and update XML documents in the application. You can do "
+"this by obtaining a dom4j session:"
+msgstr ""
+"우리의 어플리케이션 내에서 XML 문서들을 다시 읽어들이고 업데이트 시키자. 우리"
+"는 dom4j 세션을 얻어서 이것을 행한다:"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"When implementing XML-based data import/export, it is useful to combine this "
+"feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+"XML 기반의 데이터 가져오기/내보내기를 구현하는데 이 특징과 Hibernate의 "
+"<literal>replicate()</literal> 오퍼레이션을 결합시키는 것이 매우 유용하다."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,214 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,34 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr ""
+
+#. Tag: primary
+#, no-c-format
+msgid "feedback"
+msgstr ""
+
+#. Tag: secondary
+#, no-c-format
+msgid "contact information for this manual"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,19 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-02-04T04:51:23\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/ko-KR/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,78 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr "Legal Notice"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, "
+"<state>NC</state><postcode>27606-2072</postcode><country>USA</country> "
+"<phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> "
+"<fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research "
+"Triangle Park</city>, <state>NC</state><postcode>27709</"
+"postcode><country>USA</country> </address>"
+msgstr ""
+"<street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</"
+"state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 "
+"919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 "
+"3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, "
+"<state>NC</state><postcode>27709</postcode><country>USA</country>"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc.  "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+msgstr ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+msgstr ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr "The GPG fingerprint of the security at redhat.com key is:"
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/Book_Info.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/Book_Info.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/Book_Info.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,29 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-31T00:33:04\n"
+"PO-Revision-Date: 2010-03-31T00:33:04\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,14 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-31T00:33:04\n"
+"PO-Revision-Date: 2010-03-31T00:33:04\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/Hibernate_Reference.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/Hibernate_Reference.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/Hibernate_Reference.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,29 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-02-11T05:38:14\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr ""
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/author_group.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/author_group.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/author_group.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,149 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-31T00:33:04\n"
+"PO-Revision-Date: 2010-03-31T00:33:04\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr ""
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr ""
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/architecture.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/architecture.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/architecture.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,274 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-31T00:33:04\n"
+"PO-Revision-Date: 2010-03-31T00:33:04\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We do not have the scope in this document to provide a more detailed view of all the runtime architectures available; Hibernate is flexible and supports several different approaches. We will, however, show the two extremes: \"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This next diagram illustrates how Hibernate utilizes database and configuration data to provide persistence services, and persistent objects, to the application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The \"minimal\" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The \"comprehensive\" architecture abstracts the application away from the underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A threadsafe, immutable cache of compiled mappings for a single database. A factory for <literal>Session</literal> and a client of <literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can hold an optional (second-level) cache of data that is reusable between transactions at a process, or cluster, level."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A single-threaded, short-lived object representing a conversation between the application and the persistent store. It wraps a JDBC connection and is a factory for <literal>Transaction</literal>. <literal>Session</literal> holds a mandatory first-level cache of persistent objects that are used when navigating the object graph or looking up objects by identifier."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Short-lived, single threaded objects containing persistent state and business function. These can be ordinary JavaBeans/POJOs. They are associated with exactly one <literal>Session</literal>. Once the <literal>Session</literal> is closed, they will be detached and free to use in any application layer (for example, directly as data transfer objects to and from presentation)."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Instances of persistent classes that are not currently associated with a <literal>Session</literal>. They may have been instantiated by the application and not yet persisted, or they may have been instantiated by a closed <literal>Session</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A single-threaded, short-lived object used by the application to specify atomic units of work. It abstracts the application from the underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> might span several <literal>Transaction</literal>s in some cases. However, transaction demarcation, either using the underlying API or <literal>Transaction</literal>, is never optional."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A factory for, and pool of, JDBC connections. It abstracts the application from underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. It is not exposed to application, but it can be extended and/or implemented by the developer."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A factory for <literal>Transaction</literal> instances. It is not exposed to the application, but it can be extended and/or implemented by the developer."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate offers a range of optional extension interfaces you can implement to customize the behavior of your persistence layer. See the API documentation for details."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Given a \"minimal\" architecture, the application bypasses the <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or <literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC directly."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of a persistent class can be in one of three different states. These states are defined in relation to a <emphasis>persistence context</emphasis>. The Hibernate <literal>Session</literal> object is the persistence context. The three different states are as follows:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The instance is not associated with any persistence context. It has no persistent identity or primary key value."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and can have a corresponding row in the database. For a particular persistence context, Hibernate <emphasis>guarantees</emphasis> that persistent identity is equivalent to Java identity in relation to the in-memory location of the object."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and can have a corresponding row in the database. For detached instances, Hibernate does not guarantee the relationship between persistent identity and Java identity."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "JMX is the J2EE standard for the management of Java components. Hibernate can be managed via a JMX standard service. AN MBean implementation is provided in the distribution: <literal>org.hibernate.jmx.HibernateService</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For an example of how to deploy Hibernate as a JMX service on the JBoss Application Server, please see the JBoss User Guide. JBoss AS also provides these benefits if you deploy using JMX:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</literal>'s life cycle can be automatically bound to the scope of a JTA transaction. This means that you no longer have to manually open and close the <literal>Session</literal>; this becomes the job of a JBoss EJB interceptor. You also do not have to worry about transaction demarcation in your code (if you would like to write a portable persistence layer use the optional Hibernate <literal>Transaction</literal> API for this). You call the <literal>HibernateContext</literal> to access a <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed using a JBoss service deployment descriptor in an EAR and/or SAR file, as it supports all the usual configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still need to name all your mapping files in the deployment descriptor. If you use the optional HAR deployment, JBoss will automatically detect all mapping files in your HAR file."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Another feature available as a JMX service is runtime Hibernate statistics. See <xref linkend=\"configuration-optional-statistics\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate can also be configured as a JCA connector. Please see the website for more information. Please note, however, that at this stage Hibernate JCA support is under development."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Most applications using Hibernate need some form of \"contextual\" session, where a given session is in effect throughout the scope of a given context. However, across applications the definition of what constitutes a context is typically different; different contexts define different scopes to the notion of current. Applications using Hibernate prior to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized third-party frameworks, such as Spring or Pico, which provided proxy/interception-based contextual sessions."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the <literal>JTA</literal> transaction defined both the scope and context of a current session. Given the maturity of the numerous stand-alone <literal>JTA TransactionManager</literal> implementations, most, if not all, applications should be using <literal>JTA</literal> transaction management, whether or not they are deployed into a <literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, as of version 3.1, the processing behind <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that end, a new extension interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, and a new configuration parameter, <literal>hibernate.current_session_context_class</literal>, have been added to allow pluggability of the scope and context of defining current sessions."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> interface for a detailed discussion of its contract. It defines a single method, <literal>currentSession()</literal>, by which the implementation is responsible for tracking the current contextual session. Out-of-the-box, Hibernate comes with three implementations of this interface:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.JTASessionContext</literal>: current sessions are tracked and scoped by a <literal>JTA</literal> transaction. The processing here is exactly the same as in the older JTA-only approach. See the Javadocs for details."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.ManagedSessionContext</literal>: current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <literal>Session</literal> instance with static methods on this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first two implementations provide a \"one session - one database transaction\" programming model. This is also known and used as <emphasis>session-per-request</emphasis>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programmatic transaction demarcation in plain JSE without JTA, you are advised to use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system from your code. If you use JTA, you can utilize the JTA interfaces to demarcate transactions. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you do not need any transaction or session demarcation operations in your code. Refer to <xref linkend=\"transactions\" /> for more information and code examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hibernate.current_session_context_class</literal> configuration parameter defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation should be used. For backwards compatibility, if this configuration parameter is not set but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. Typically, the value of this parameter would just name the implementation class to use. For the three out-of-the-box implementations, however, there are three corresponding short names: \"jta\", \"thread\", and \"managed\"."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/association_mapping.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/association_mapping.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/association_mapping.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,199 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-31T00:33:04\n"
+"PO-Revision-Date: 2010-03-31T00:33:04\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Association mappings are often the most difficult thing to implement correctly. In this section we examine some canonical cases one by one, starting with unidirectional mappings and then bidirectional cases. We will use <literal>Person</literal> and <literal>Address</literal> in all the examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Associations will be classified by multiplicity and whether or not they map to an intervening join table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Nullable foreign keys are not considered to be good practice in traditional data modelling, so our examples do not use nullable foreign keys. This is not a requirement of Hibernate, and the mappings will work if you drop the nullability constraints."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional many-to-one association</emphasis> is the most common kind of unidirectional association."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional one-to-one association on a foreign key</emphasis> is almost identical. The only difference is the column unique constraint."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional one-to-one association on a primary key</emphasis> usually uses a special id generator In this example, however, we have reversed the direction of the association:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional one-to-many association on a foreign key</emphasis> is an unusual case, and is not recommended."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional one-to-many association on a join table</emphasis> is the preferred option. Specifying <literal>unique=\"true\"</literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional many-to-one association on a join table</emphasis> is common when the association is optional. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>unidirectional one-to-one association on a join table</emphasis> is possible, but extremely unusual."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, here is an example of a <emphasis>unidirectional many-to-many association</emphasis>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional many-to-one association</emphasis> is the most common kind of association. The following example illustrates the standard parent/child relationship."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you use a <literal>List</literal>, or other indexed collection, set the <literal>key</literal> column of the foreign key to <literal>not null</literal>. Hibernate will manage the association from the collections side to maintain the index of each element, making the other side virtually inverse by setting <literal>update=\"false\"</literal> and <literal>insert=\"false\"</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the underlying foreign key column is <literal>NOT NULL</literal>, it is important that you define <literal>not-null=\"true\"</literal> on the <literal>&lt;key&gt;</literal> element of the collection mapping. Do not only declare <literal>not-null=\"true\"</literal> on a possible nested <literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> is common:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional one-to-one association on a primary key</emphasis> uses the special id generator:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of a <emphasis>bidirectional one-to-many association on a join table</emphasis>. The <literal>inverse=\"true\"</literal> can go on either end of the association, on the collection, or on the join."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional one-to-one association on a join table</emphasis> is possible, but extremely unusual."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a <emphasis>bidirectional many-to-many association</emphasis>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "More complex association joins are <emphasis>extremely</emphasis> rare. Hibernate handles more complex situations by using SQL fragments embedded in the mapping document. For example, if a table with historical account information data defines <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> and <literal>effectiveStartDate</literal>columns, it would be mapped as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can then map an association to the <emphasis>current</emphasis> instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In a more complex example, imagine that the association between <literal>Employee</literal> and <literal>Organization</literal> is maintained in an <literal>Employment</literal> table full of historical employment data. An association to the employee's <emphasis>most recent</emphasis> employer, the one with the most recent <literal>startDate</literal>, could be mapped in the following way:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This functionality allows a degree of creativity and flexibility, but it is more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/basic_mapping.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/basic_mapping.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/basic_mapping.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1959 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Object/relational mappings are usually defined in an XML document. The mapping document is designed to be readable and hand-editable. The mapping language is Java-centric, meaning that mappings are constructed around persistent class declarations and not table declarations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that even though many Hibernate users choose to write the XML by hand, a number of tools exist to generate the mapping document. These include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will now discuss the content of the mapping document. We will only describe, however, the document elements and attributes that are used by Hibernate at runtime. The mapping document also contains some extra optional attributes and elements that affect the database schemas exported by the schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All XML mappings should declare the doctype shown. The actual DTD can be found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate will always look for the DTD in its classpath first. If you experience lookups of the DTD using an Internet connection, check the DTD declaration against the contents of your classpath."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will first attempt to resolve DTDs in its classpath. It does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal> implementation with the SAXReader it uses to read in the xml files. This custom <literal>EntityResolver</literal> recognizes two different systemId namespaces:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "a <literal>hibernate namespace</literal> is recognized whenever the resolver encounters a systemId starting with <literal>http://hibernate.sourceforge.net/</literal>. The resolver attempts to resolve these entities via the classloader which loaded the Hibernate classes."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "a <literal>user namespace</literal> is recognized whenever the resolver encounters a systemId using a <literal>classpath://</literal> URL protocol. The resolver will attempt to resolve these entities via (1) the current thread context classloader and (2) the classloader which loaded the Hibernate classes."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal> package and contains a custom <link linkend=\"mapping-types-custom\">typedef</link>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate-mapping"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This element has several optional attributes. The <literal>schema</literal> and <literal>catalog</literal> attributes specify that tables referred to in this mapping belong to the named schema and/or catalog. If they are specified, tablenames will be qualified by the given schema and catalog names. If they are missing, tablenames will be unqualified. The <literal>default-cascade</literal> attribute specifies what cascade style should be assumed for properties and collections that do not specify a <literal>cascade</literal> attribute. By default, the <literal>auto-import</literal> attribute allows you to use unqualified class names in the query language."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-cascade</literal> (optional - defaults to <literal>none</literal>): a default cascade style."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate should use for accessing all properties. It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-lazy</literal> (optional - defaults to <literal>true</literal>): the default value for unspecified <literal>lazy</literal> attributes of class and collection mappings."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>auto-import</literal> (optional - defaults to <literal>true</literal>): specifies whether we can use unqualified class names of classes in this mapping in the query language."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>package</literal> (optional): specifies a package prefix to use for unqualified class names in the mapping document."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you have two persistent classes with the same unqualified name, you should set <literal>auto-import=\"false\"</literal>. An exception will result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hibernate-mapping</literal> element allows you to nest several persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, however, good practice (and expected by some tools) to map only a single persistent class, or a single class hierarchy, in one mapping file and name it after the persistent superclass. For example, <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, <literal>Animal.hbm.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Class"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can declare a persistent class using the <literal>class</literal> element. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the fully qualified Java class name of the persistent class or interface. If this attribute is missing, it is assumed that the mapping is for a non-POJO entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal> (optional - defaults to the unqualified class name): the name of its database table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): a value that distinguishes individual subclasses that is used for polymorphic behavior. Acceptable values include <literal>null</literal> and <literal>not null</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): specifies that instances of the class are (not) mutable."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): overrides the schema name specified by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): overrides the catalog name specified by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies an interface to use for lazy initializing proxies. You can specify the name of the class itself."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-update</literal> (optional - defaults to <literal>false</literal>): specifies that <literal>UPDATE</literal> SQL should be generated at runtime and can contain only those columns whose values have changed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-insert</literal> (optional - defaults to <literal>false</literal>): specifies that <literal>INSERT</literal> SQL should be generated at runtime and contain only the columns whose values are not null."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>select-before-update</literal> (optional - defaults to <literal>false</literal>): specifies that Hibernate should <emphasis>never</emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that an object is actually modified. Only when a transient object has been associated with a new session using <literal>update()</literal>, will Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is actually required."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>polymorphism</literal> (optional - defaults to <literal>implicit</literal>): determines whether implicit or explicit query polymorphism is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>where</literal> (optional): specifies an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving objects of this class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>persister</literal> (optional): specifies a custom <literal>ClassPersister</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): specifies a \"batch size\" for fetching instances of this class by identifier."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>version</literal>): determines the optimistic locking strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional): lazy fetching can be disabled by setting <literal>lazy=\"false\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional - defaults to the class name): Hibernate3 allows a class to be mapped multiple times, potentially to different tables. It also allows entity mappings that are represented by Maps or XML at the Java level. In these cases, you should provide an explicit arbitrary name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>check</literal> (optional): an SQL expression used to generate a multi-row <emphasis>check</emphasis> constraint for automatic schema generation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra column for fast updates once this option has been set to <literal>rowid</literal>. A ROWID is an implementation detail and represents the physical location of a stored tuple."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>subselect</literal> (optional): maps an immutable and read-only entity to a database subselect. This is useful if you want to have a view instead of a base table. See below for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>abstract</literal> (optional): is used to mark abstract superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is acceptable for the named persistent class to be an interface. You can declare implementing classes of that interface using the <literal>&lt;subclass&gt;</literal> element. You can persist any <emphasis>static</emphasis> inner class. Specify the class name using the standard form i.e. <literal>e.g.Foo$Bar</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated or deleted by the application. This allows Hibernate to make some minor performance optimizations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>proxy</literal> attribute enables lazy initialization of persistent instances of the class. Hibernate will initially return CGLIB proxies that implement the named interface. The persistent object will load when a method of the proxy is invoked. See \"Initializing collections and proxies\" below."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Implicit</emphasis> polymorphism means that instances of the class will be returned by a query that names any superclass or implemented interface or class, and that instances of any subclass of the class will be returned by a query that names the class itself. <emphasis>Explicit</emphasis> polymorphism means that class instances will be returned only by queries that explicitly name that class. Queries that name the class will return only instances of subclasses mapped inside this <literal>&lt;class&gt;</literal> declaration as a <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default <literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit polymorphism is useful when two different classes are mapped to the same table This allows a \"lightweight\" class that contains a subset of the table columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>persister</literal> attribute lets you customize the persistence strategy used for the class. You can, for example, specify your own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, or you can even provide a completely new implementation of the interface <literal>org.hibernate.persister.ClassPersister</literal> that implements, for example, persistence via stored procedure calls, serialization to flat files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> settings are not inherited by subclasses, so they can also be specified on the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</literal> elements. Although these settings can increase performance in some cases, they can actually decrease performance in others."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use of <literal>select-before-update</literal> will usually decrease performance. It is useful to prevent a database update trigger being called unnecessarily if you reattach a graph of detached instances to a <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you enable <literal>dynamic-update</literal>, you will have a choice of optimistic locking strategies:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dirty</literal>: check the changed columns, allowing some concurrent updates"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is <emphasis>strongly</emphasis> recommended that you use version/timestamp columns for optimistic locking with Hibernate. This strategy optimizes performance and correctly handles modifications made to detached instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is no difference between a view and a base table for a Hibernate mapping. This is transparent at the database level, although some DBMS do not support views properly, especially with updates. Sometimes you want to use a view, but you cannot create one in the database (i.e. with a legacy schema). In this case, you can map an immutable and read-only entity to a given SQL subselect expression:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Declare the tables to synchronize this entity with, ensuring that auto-flush happens correctly and that queries against the derived entity do not return stale data. The <literal>&lt;subselect&gt;</literal> is available both as an attribute and a nested mapping element."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "id"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Mapped classes <emphasis>must</emphasis> declare the primary key column of the database table. Most classes will also have a JavaBeans-style property holding the unique identifier of an instance. The <literal>&lt;id&gt;</literal> element defines the mapping from that property to the primary key column."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the name of the identifier property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the primary key column."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" value): an identifier property value that indicates an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate should use for accessing the property value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>name</literal> attribute is missing, it is assumed that the class has no identifier property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>unsaved-value</literal> attribute is almost never needed in Hibernate3."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is an alternative <literal>&lt;composite-id&gt;</literal> declaration that allows access to legacy data with composite keys. Its use is strongly discouraged for anything else."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>&lt;generator&gt;</literal> child element names a Java class used to generate unique identifiers for instances of the persistent class. If any parameters are required to configure or initialize the generator instance, they are passed using the <literal>&lt;param&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All generators implement the interface <literal>org.hibernate.id.IdentifierGenerator</literal>. This is a very simple interface. Some applications can choose to provide their own specialized implementations, however, Hibernate provides a range of built-in implementations. The shortcut names for the built-in generators are as follows:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>increment</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "generates identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal> that are unique only when no other process is inserting data into the same table. <emphasis>Do not use in a cluster.</emphasis>"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>identity</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a table and column (by default <literal>hibernate_unique_key</literal> and <literal>next_hi</literal> respectively) as a source of hi values. The hi/lo algorithm generates identifiers that are unique only for a particular database."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a named database sequence."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses a 128-bit UUID algorithm to generate identifiers of type string that are unique within a network (the IP address is used). The UUID is encoded as a string of 32 hexadecimal digits in length."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>guid</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>native</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "selects <literal>identity</literal>, <literal>sequence</literal> or <literal>hilo</literal> depending upon the capabilities of the underlying database."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "lets the application assign an identifier to the object before <literal>save()</literal> is called. This is the default strategy if no <literal>&lt;generator&gt;</literal> element is specified."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>select</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "retrieves a primary key, assigned by a database trigger, by selecting the row by some unique key and retrieving the primary key value."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "uses the identifier of another associated object. It is usually used in conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key association."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "a specialized sequence generation strategy that utilizes a database sequence for the actual value generation, but combines this with JDBC3 getGeneratedKeys to return the generated identifier value as part of the insert statement execution. This strategy is only supported on Oracle 10g drivers targeted for JDK 1.4. Comments on these insert statements are disabled due to a bug in the Oracle drivers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hilo</literal> and <literal>seqhilo</literal> generators provide two alternate implementations of the hi/lo algorithm. The first implementation requires a \"special\" database table to hold the next available \"hi\" value. Where supported, the second uses an Oracle-style sequence."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Unfortunately, you cannot use <literal>hilo</literal> when supplying your own <literal>Connection</literal> to Hibernate. When Hibernate uses an application server datasource to obtain connections enlisted with JTA, you must configure the <literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The UUID contains: IP address, startup time of the JVM that is accurate to a quarter second, system time and a counter value that is unique within the JVM. It is not possible to obtain a MAC address or memory address from Java code, so this is the best option without using JNI."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), you can use <literal>identity</literal> key generation. For databases that support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you can use <literal>sequence</literal> style key generation. Both of these strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For cross-platform development, the <literal>native</literal> strategy will, depending on the capabilities of the underlying database, choose from the <literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</literal> strategies."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want the application to assign identifiers, as opposed to having Hibernate generate them, you can use the <literal>assigned</literal> generator. This special generator uses the identifier value already assigned to the object's identifier property. The generator is used when the primary key is a natural key instead of a surrogate key. This is the default behavior if you do not specify a <literal>&lt;generator&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>assigned</literal> generator makes Hibernate use <literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go to the database to determine if an instance is transient or detached, unless there is a version or timestamp property, or you define <literal>Interceptor.isUnsaved()</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the above example, there is a unique valued property named <literal>socialSecurityNumber</literal>. It is defined by the class, as a natural key and a surrogate key named <literal>person_id</literal>, whose value is generated by a trigger."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Enhanced identifier generators"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different aspects of identifier generation. The first aspect is database portability; the second is optimization Optimization means that you do not have to query the database for every request for a new identifier value. These two new generators are intended to take the place of some of the named generators described above, starting in 3.3.x. However, they are included in the current releases and can be referenced by FQN."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> which is intended, firstly, as a replacement for the <literal>sequence</literal> generator and, secondly, as a better portability generator than <literal>native</literal>. This is because <literal>native</literal> generally chooses between <literal>identity</literal> and <literal>sequence</literal> which have largely different semantics that can cause subtle issues in applications eyeing portability. <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>, however, achieves portability in a different manner. It chooses between a table or a sequence in the database to store its incrementing values, depending on the capabilities of the dialect being used. The difference between this and <literal>native</literal> is that table-based and sequence-based storage have the same exact semantic. In fact, sequences are exactly what Hibernate tries to emulate with!
  its table-based generators. This generator has a number of configuration parameters:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>): the name of the sequence or table to be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): the initial value to be retrieved from the sequence/table. In sequence creation terms, this is analogous to the clause typically named \"STARTS WITH\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>increment_size</literal> (optional - defaults to <literal>1</literal>): the value by which subsequent calls to the sequence/table should differ. In sequence creation terms, this is analogous to the clause typically named \"INCREMENT BY\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>force_table_use</literal> (optional - defaults to <literal>false</literal>): should we force the use of a table as the backing structure even though the dialect might support sequence?"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>value_column</literal> (optional - defaults to <literal>next_val</literal>): only relevant for table structures, it is the name of the column on the table which is used to hold the value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimizer</literal> (optional - defaults to <literal>none</literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal>, which is intended, firstly, as a replacement for the <literal>table</literal> generator, even though it actually functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>, and secondly, as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> that utilizes the notion of pluggable optimizers. Essentially this generator defines a table capable of holding a number of different increment values simultaneously by using multiple distinctly keyed rows. This generator has a number of configuration parameters:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table_name</literal> (optional - defaults to <literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>value_column_name</literal> (optional - defaults to <literal>next_val</literal>): the name of the column on the table that is used to hold the value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_column_name</literal> (optional - defaults to <literal>sequence_name</literal>): the name of the column on the table that is used to hold the \"segment key\". This is the value which identifies which increment value to use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_value</literal> (optional - defaults to <literal>default</literal>): The \"segment key\" value for the segment from which we want to pull increment values for this generator."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_value_length</literal> (optional - defaults to <literal>255</literal>): Used for schema generation; the column size to create this segment key column."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>initial_value</literal> (optional - defaults to <literal>1</literal>): The initial value to be retrieved from the table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>increment_size</literal> (optional - defaults to <literal>1</literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimizer</literal> (optional - defaults to <literal></literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generator optimization"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For identifier generators that store values in the database, it is inefficient for them to hit the database on each and every call to generate a new identifier value. Instead, you can group a bunch of them in memory and only hit the database when you have exhausted your in-memory value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> support this operation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal> (generally this is the default if no optimizer was specified): this will not perform any optimizations and hit the database for each and every request."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The values from the database for this optimizer are expected to be sequential. The values retrieved from the database structure for this optimizer indicates the \"group number\". The <literal>increment_size</literal> is multiplied by that value in memory to define a group \"hi value\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this optimizer attempts to minimize the number of hits to the database. Here, however, we simply store the starting value for the \"next group\" into the database structure rather than a sequential value in combination with an in-memory grouping algorithm. Here, <literal>increment_size</literal> refers to the values coming from the database."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A table with a composite key can be mapped with multiple properties of the class as identifier properties. The <literal>&lt;composite-id&gt;</literal> element accepts <literal>&lt;key-property&gt;</literal> property mappings and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The persistent class <emphasis>must</emphasis> override <literal>equals()</literal> and <literal>hashCode()</literal> to implement composite identifier equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Unfortunately, this approach means that a persistent object is its own identifier. There is no convenient \"handle\" other than the object itself. You must instantiate an instance of the persistent class itself and populate its identifier properties before you can <literal>load()</literal> the persistent state associated with a composite key. We call this approach an <emphasis>embedded</emphasis> composite identifier, and discourage it for serious applications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A second approach is what we call a <emphasis>mapped</emphasis> composite identifier, where the identifier properties named inside the <literal>&lt;composite-id&gt;</literal> element are duplicated on both the persistent class and a separate identifier class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this example, both the composite identifier class, <literal>MedicareId</literal>, and the entity class itself have properties named <literal>medicareNumber</literal> and <literal>dependent</literal>. The identifier class must override <literal>equals()</literal> and <literal>hashCode()</literal> and implement <literal>Serializable</literal>. The main disadvantage of this approach is code duplication."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following attributes are used to specify a mapped composite identifier:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mapped</literal> (optional - defaults to <literal>false</literal>): indicates that a mapped composite identifier is used, and that the contained property mappings refer to both the entity class and the composite identifier class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - but required for a mapped composite identifier): the class used as a composite identifier."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will describe a third, even more convenient approach, where the composite identifier is implemented as a component class in <xref linkend=\"components-compositeid\" />. The attributes described below apply only to this alternative approach:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional - required for this approach): a property of component type that holds the composite identifier. Please see chapter 9 for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the component class used as a composite identifier. Please see the next section for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The third approach, an <emphasis>identifier component</emphasis>, is recommended for almost all applications."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Discriminator"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;discriminator&gt;</literal> element is required for polymorphic persistence using the table-per-class-hierarchy mapping strategy. It declares a discriminator column of the table. The discriminator column contains marker values that tell the persistence layer what subclass to instantiate for a particular row. A restricted set of types can be used: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to <literal>class</literal>): the name of the discriminator column."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional - defaults to <literal>string</literal>): a name that indicates the Hibernate type"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>force</literal> (optional - defaults to <literal>false</literal>): \"forces\" Hibernate to specify the allowed discriminator values, even when retrieving all instances of the root class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): set this to <literal>false</literal> if your discriminator column is also part of a mapped composite identifier. It tells Hibernate not to include the column in SQL <literal>INSERTs</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an arbitrary SQL expression that is executed when a type has to be evaluated. It allows content-based discrimination."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Actual values of the discriminator column are specified by the <literal>discriminator-value</literal> attribute of the <literal>&lt;class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>force</literal> attribute is only useful if the table contains rows with \"extra\" discriminator values that are not mapped to a persistent class. This will not usually be the case."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>formula</literal> attribute allows you to declare an arbitrary SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Version (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;version&gt;</literal> element is optional and indicates that the table contains versioned data. This is particularly useful if you plan to use <emphasis>long transactions</emphasis>. See below for more information:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the column holding the version number."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a property of the persistent class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional - defaults to <literal>integer</literal>): the type of the version number."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</literal>): a version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. <literal>Undefined</literal> specifies that the identifier property value should be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this version property value is generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): specifies whether the version column should be included in SQL insert statements. It can be set to <literal>false</literal> if the database column is defined with a default value of <literal>0</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Version numbers can be of Hibernate type <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> or <literal>calendar</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A version or timestamp property should never be null for a detached instance. Hibernate will detect any instance with a null version or timestamp as transient, irrespective of what other <literal>unsaved-value</literal> strategies are specified. <emphasis>Declaring a nullable version or timestamp property is an easy way to avoid problems with transitive reattachment in Hibernate. It is especially useful for people using assigned identifiers or composite keys</emphasis>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Timestamp (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>&lt;timestamp&gt;</literal> element indicates that the table contains timestamped data. This provides an alternative to versioning. Timestamps are a less safe implementation of optimistic locking. However, sometimes the application might use the timestamps in other ways."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of a column holding the timestamp."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a JavaBeans style property of Java type <literal>Date</literal> or <literal>Timestamp</literal> of the persistent class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>null</literal>): a version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. <literal>Undefined</literal> specifies that the identifier property value should be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>source</literal> (optional - defaults to <literal>vm</literal>): Where should Hibernate retrieve the timestamp value from? From the database, or from the current JVM? Database-based timestamps incur an overhead because Hibernate must hit the database in order to determine the \"next value\". It is safer to use in clustered environments. Not all <literal>Dialects</literal> are known to support the retrieval of the database's current timestamp. Others may also be unsafe for usage in locking due to lack of precision (Oracle 8, for example)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this timestamp property value is actually generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp\"&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Property"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;property&gt;</literal> element declares a persistent JavaBean style property of the class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property, with an initial lowercase letter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the mapped database table column. This can also be specified by nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>): specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" property whose value is initialized from some other property that maps to the same column(s), or by a trigger or other application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> property. Computed properties do not have a column mapping of their own."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): specifies that this property should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the columns. Also, allow this to be the target of a <literal>property-ref</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): enables the DDL generation of a nullability constraint for the columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, it determines if a version increment should occur when this property is dirty."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this property value is actually generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a Hibernate basic type: <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a Java class with a default basic type: <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The class name of a custom type: <literal>com.illflow.type.MyCustomType</literal> etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not specify a type, Hibernate will use reflection upon the named property and guess the correct Hibernate type. Hibernate will attempt to interpret the name of the return class of the property getter using, in order, rules 2, 3, and 4. In certain cases you will need the <literal>type</literal> attribute. For example, to distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a custom type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>access</literal> attribute allows you to control how Hibernate accesses the property at runtime. By default, Hibernate will call the property get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate will bypass the get/set pair and access the field directly using reflection. You can specify your own strategy for property access by naming a class that implements the interface <literal>org.hibernate.property.PropertyAccessor</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A powerful feature is derived properties. These properties are by definition read-only. The property value is computed at load time. You declare the computation as an SQL expression. This then translates to a <literal>SELECT</literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can reference the entity table by not declaring an alias on a particular column. This would be <literal>customerId</literal> in the given example. You can also use the nested <literal>&lt;formula&gt;</literal> mapping element if you do not want to use the attribute."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An ordinary association to another persistent class is declared using a <literal>many-to-one</literal> element. The relational model is a many-to-one association; a foreign key in one table is referencing the primary key column(s) of the target table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the foreign key column. This can also be specified by nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the name of the associated class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional): specifies which operations should be cascaded from the parent object to the associated object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>select</literal>): chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>): specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" association whose value is initialized from another property that maps to the same column(s), or by a trigger or other application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the foreign-key column. By allowing this to be the target of a <literal>property-ref</literal>, you can make the association multiplicity one-to-one."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): enables the DDL generation of a nullability constraint for the foreign key columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): by default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed. This requires build-time bytecode instrumentation. <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how foreign keys that reference missing rows will be handled. <literal>ignore</literal> will treat a missing row as a null association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional): the entity name of the associated class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Setting a value of the <literal>cascade</literal> attribute to any meaningful value other than <literal>none</literal> will propagate certain operations to the associated object. The meaningful values are divided into three categories. First, basic operations, which include: <literal>persist, merge, delete, save-update, evict, replicate, lock and refresh</literal>; second, special values: <literal>delete-orphan</literal>; and third,<literal>all</literal> comma-separated combinations of operation names: <literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> for a full explanation. Note that single valued, many-to-one and one-to-one, associations do not support orphan delete."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>property-ref</literal> attribute should only be used for mapping legacy data where a foreign key refers to a unique key of the associated table other than the primary key. This is a complicated and confusing relational model. For example, if the <literal>Product</literal> class had a unique serial number that is not the primary key. The <literal>unique</literal> attribute controls Hibernate's DDL generation with the SchemaExport tool."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is not encouraged, however."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the referenced unique key comprises multiple properties of the associated entity, you should map the referenced properties inside a named <literal>&lt;properties&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the referenced unique key is the property of a component, you can specify a property path:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A one-to-one association to another persistent class is declared using a <literal>one-to-one</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>constrained</literal> (optional): specifies that a foreign key constraint on the primary key of the mapped table and references the table of the associated class. This option affects the order in which <literal>save()</literal> and <literal>delete()</literal> are cascaded, and determines whether the association can be proxied. It is also used by the schema export tool."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to the primary key of this class. If not specified, the primary key of the associated class is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): almost all one-to-one associations map to the primary key of the owning entity. If this is not the case, you can specify another column, columns or expression to join on using an SQL formula. See <literal>org.hibernate.test.onetooneformula</literal> for an example."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): by default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation. <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched. <emphasis>Note that if <literal>constrained=\"false\"</literal>, proxying is impossible and Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Primary key associations do not need an extra table column. If two rows are related by the association, then the two table rows share the same primary key value. To relate two objects by a primary key association, ensure that they are assigned the same identifier value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For a primary key association, add the following mappings to <literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE tables are equal. You use a special Hibernate identifier generation strategy called <literal>foreign</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A newly saved instance of <literal>Person</literal> is assigned the same primary key value as the <literal>Employee</literal> instance referred with the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, a foreign key with a unique constraint, from <literal>Employee</literal> to <literal>Person</literal>, can be expressed as:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This association can be made bidirectional by adding the following to the <literal>Person</literal> mapping:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Natural-id"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Although we recommend the use of surrogate keys as primary keys, you should try to identify natural keys for all entities. A natural key is a property or combination of properties that is unique and non-null. It is also immutable. Map the properties of the natural key inside the <literal>&lt;natural-id&gt;</literal> element. Hibernate will generate the necessary unique key and nullability constraints and, as a result, your mapping will be more self-documenting."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the natural key properties of the entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This mapping is not intended for use with entities that have natural primary keys."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>false</literal>): by default, natural identifier properties are assumed to be immutable (constant)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Component and dynamic-component"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element maps properties of a child object to columns of the table of a parent class. Components can, in turn, declare their own properties, components or collections. See the \"Component\" examples below:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the name of the component (child) class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal>: do the mapped columns appear in SQL <literal>INSERTs</literal>?"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update</literal>: do the mapped columns appear in SQL <literal>UPDATEs</literal>?"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): specifies that this component should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this component either do or do not require acquisition of the optimistic lock. It determines if a version increment should occur when this property is dirty."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional - defaults to <literal>false</literal>): specifies that a unique constraint exists upon all mapped columns of the component."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The child <literal>&lt;property&gt;</literal> tags map properties of the child class to table columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;parent&gt;</literal> subelement that maps a property of the component class as a reference back to the containing entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;dynamic-component&gt;</literal> element allows a <literal>Map</literal> to be mapped as a component, where the property names refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;properties&gt;</literal> element allows the definition of a named, logical grouping of the properties of a class. The most important use of the construct is that it allows a combination of properties to be the target of a <literal>property-ref</literal>. It is also a convenient way to define a multi-column unique constraint. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the logical name of the grouping. It is <emphasis>not</emphasis> an actual property name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to these properties either do or do not require acquisition of the optimistic lock. It determines if a version increment should occur when these properties are dirty."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For example, if we have the following <literal>&lt;properties&gt;</literal> mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You might have some legacy data association that refers to this unique key of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The use of this outside the context of mapping legacy data is not recommended."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Polymorphic persistence requires the declaration of each subclass of the root persistent class. For the table-per-class-hierarchy mapping strategy, the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): a value that distinguishes individual subclasses."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies a class or interface used for lazy initializing proxies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>): setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Each subclass declares its own persistent properties and subclasses. <literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> properties are assumed to be inherited from the root class. Each subclass in a hierarchy must define a unique <literal>discriminator-value</literal>. If this is not specified, the fully qualified Java class name is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For information about inheritance mappings see <xref linkend=\"inheritance\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Joined-subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Each subclass can also be mapped to its own table. This is called the table-per-subclass mapping strategy. An inherited state is retrieved by joining with the table of the superclass. To do this you use the <literal>&lt;joined-subclass&gt;</literal> element. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies a class or interface to use for lazy initializing proxies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional, defaults to <literal>true</literal>): setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A discriminator column is not required for this mapping strategy. Each subclass must, however, declare a table column holding the object identifier using the <literal>&lt;key&gt;</literal> element. The mapping at the start of the chapter would then be re-written as:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Union-subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A third option is to map only the concrete classes of an inheritance hierarchy to tables. This is called the table-per-concrete-class strategy. Each table defines all persistent states of the class, including the inherited state. In Hibernate, it is not necessary to explicitly map such inheritance hierarchies. You can map each class with a separate <literal>&lt;class&gt;</literal> declaration. However, if you wish use polymorphic associations (e.g. an association to the superclass of your hierarchy), you need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "No discriminator column or key column is required for this mapping strategy."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Join"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Using the <literal>&lt;join&gt;</literal> element, it is possible to map properties of one class to several tables that have a one-to-one relationship. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): if set to <literal>join</literal>, the default, Hibernate will use an inner join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its superclasses. It will use an outer join for a <literal>&lt;join&gt;</literal> defined by a subclass. If set to <literal>select</literal> then Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> defined on a subclass. This will be issued only if a row represents an instance of the subclass. Inner joins will still be used to retrieve a <literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): if enabled, Hibernate will not insert or update the properties defined by this join."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optional</literal> (optional - defaults to <literal>false</literal>): if enabled, Hibernate will insert a row only if the properties defined by this join are non-null. It will always use an outer join to retrieve the properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For example, address information for a person can be mapped to a separate table while preserving value type semantics for all properties:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This feature is often only useful for legacy data models. We recommend fewer tables than classes and a fine-grained domain model. However, it is useful for switching between inheritance mapping strategies in a single hierarchy, as explained later."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;key&gt;</literal> element has featured a few times within this guide. It appears anywhere the parent mapping element defines a join to a new table that references the primary key of the original table. It also defines the foreign key in the joined table:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>on-delete</literal> (optional - defaults to <literal>noaction</literal>): specifies whether the foreign key constraint has database-level cascade delete enabled."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): specifies that the foreign key refers to columns that are not the primary key of the original table. It is provided for legacy data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): specifies that the foreign key columns are not nullable. This is implied whenever the foreign key is also part of the primary key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update</literal> (optional): specifies that the foreign key should never be updated. This is implied whenever the foreign key is also part of the primary key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): specifies that the foreign key should have a unique constraint. This is implied whenever the foreign key is also the primary key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For systems where delete performance is important, we recommend that all keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate uses a database-level <literal>ON CASCADE DELETE</literal> constraint, instead of many individual <literal>DELETE</literal> statements. Be aware that this feature bypasses Hibernate's usual optimistic locking strategy for versioned data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>not-null</literal> and <literal>update</literal> attributes are useful when mapping a unidirectional one-to-many association. If you map a unidirectional one-to-many association to a non-nullable foreign key, you <emphasis>must</emphasis> declare the key column using <literal>&lt;key not-null=\"true\"&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Column and formula elements"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping elements which accept a <literal>column</literal> attribute will alternatively accept a <literal>&lt;column&gt;</literal> subelement. Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the <literal>formula</literal> attribute. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Most of the attributes on <literal>column</literal> provide a means of tailoring the DDL during automatic schema generation. The <literal>read</literal> and <literal>write</literal> attributes allow you to specify custom SQL that Hibernate will use to access the column's value. For more on this, see the discussion of <link linkend=\"mapping-column-read-and-write\">column read and write expressions</link>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>column</literal> and <literal>formula</literal> elements can even be combined within the same property or association mapping to express, for example, exotic join conditions."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Import"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your application has two persistent classes with the same name, and you do not want to specify the fully qualified package name in Hibernate queries, classes can be \"imported\" explicitly, rather than relying upon <literal>auto-import=\"true\"</literal>. You can also import classes and interfaces that are not explicitly mapped:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>rename</literal> (optional - defaults to the unqualified class name): a name that can be used in the query language."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is one more type of property mapping. The <literal>&lt;any&gt;</literal> mapping element defines a polymorphic association to classes from multiple tables. This type of mapping requires more than one column. The first column contains the type of the associated entity. The remaining columns contain the identifier. It is impossible to specify a foreign key constraint for this kind of association. This is not the usual way of mapping polymorphic associations and you should use this only in special cases. For example, for audit logs, user session data, etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>meta-type</literal> attribute allows the application to specify a custom type that maps database column values to persistent classes that have identifier properties of the type specified by <literal>id-type</literal>. You must specify the mapping from values of the meta-type to class names."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>meta-type</literal> (optional - defaults to <literal>string</literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional- defaults to <literal>none</literal>): the cascade style."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this property either do or do not require acquisition of the optimistic lock. It defines whether a version increment should occur if this property is dirty."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate types"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In relation to the persistence service, Java language-level objects are classified into two groups:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An <emphasis>entity</emphasis> exists independently of any other objects holding references to the entity. Contrast this with the usual Java model, where an unreferenced object is garbage collected. Entities must be explicitly saved and deleted. Saves and deletions, however, can be <emphasis>cascaded</emphasis> from a parent entity to its children. This is different from the ODMG model of object persistence by reachability and corresponds more closely to how application objects are usually used in large systems. Entities support circular and shared references. They can also be versioned."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An entity's persistent state consists of references to other entities and instances of <emphasis>value</emphasis> types. Values are primitives: collections (not what is inside a collection), components and certain immutable objects. Unlike entities, values in particular collections and components, <emphasis>are</emphasis> persisted and deleted by reachability. Since value objects and primitives are persisted and deleted along with their containing entity, they cannot be independently versioned. Values have no independent identity, so they cannot be shared by two entities or collections."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Until now, we have been using the term \"persistent class\" to refer to entities. We will continue to do that. Not all user-defined classes with a persistent state, however, are entities. A <emphasis>component</emphasis> is a user-defined class with value semantics. A Java property of type <literal>java.lang.String</literal> also has value semantics. Given this definition, all types (classes) provided by the JDK have value type semantics in Java, while user-defined types can be mapped with entity or value type semantics. This decision is up to the application developer. An entity class in a domain model will normally have shared references to a single instance of that class, while composition or aggregation usually translates to a value type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The challenge is to map the Java type system, and the developers' definition of entities and value types, to the SQL/database type system. The bridge between both systems is provided by Hibernate. For entities, <literal>&lt;class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;component&gt;</literal>etc., that usually have a <literal>type</literal> attribute. The value of this attribute is the name of a Hibernate <emphasis>mapping type</emphasis>. Hibernate provides a range of mappings for standard JDK value types out of the box. You can write your own mapping types and implement your own custom conversion strategies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "With the exception of collections, all built-in Hibernate types support null semantics."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The built-in <emphasis>basic mapping types</emphasis> can be roughly categorized into the following:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>integer, long, short, float, double, character, byte, boolean, yes_no, true_false</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from Java primitives or wrapper classes to appropriate (vendor-specific) SQL column types. <literal>boolean, yes_no</literal> and <literal>true_false</literal> are all alternative encodings for a Java <literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>string</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Date</literal> and its subclasses to SQL types <literal>DATE</literal>, <literal>TIME</literal> and <literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Calendar</literal> to SQL types <literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java.math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle <literal>NUMBER</literal>)."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal> and <literal>java.util.Currency</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). Instances of <literal>Locale</literal> and <literal>Currency</literal> are mapped to their ISO codes. Instances of <literal>TimeZone</literal> are mapped to their <literal>ID</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>class</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> is mapped to its fully qualified name."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>binary</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>text</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</literal> type."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Maps serializable Java types to an appropriate SQL binary type. You can also indicate the Hibernate type <literal>serializable</literal> with the name of a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and <literal>java.sql.Blob</literal>. These types can be inconvenient for some applications, since the blob or clob object cannot be reused outside of a transaction. Driver support is patchy and inconsistent."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings for what are considered mutable Java types. This is where Hibernate makes certain optimizations appropriate only for immutable Java types, and the application treats the object as immutable. For example, you should not call <literal>Date.setTime()</literal> for an instance mapped as <literal>imm_timestamp</literal>. To change the value of the property, and have that change made persistent, the application must assign a new, nonidentical, object to the property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Unique identifiers of entities and collections can be of any basic type except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</literal>. Composite identifiers are also allowed. See below for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The basic value types have corresponding <literal>Type</literal> constants defined on <literal>org.hibernate.Hibernate</literal>. For example, <literal>Hibernate.STRING</literal> represents the <literal>string</literal> type."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is relatively easy for developers to create their own value types. For example, you might want to persist properties of type <literal>java.lang.BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does not provide a built-in type for this. Custom types are not limited to mapping a property, or collection element, to a single table column. So, for example, you might have a Java property <literal>getName()</literal>/<literal>setName()</literal> of type <literal>java.lang.String</literal> that is persisted to the columns <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To implement a custom type, implement either <literal>org.hibernate.UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and declare properties using the fully qualified classname of the type. View <literal>org.hibernate.test.DoubleStringType</literal> to see the kind of things that are possible."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the use of <literal>&lt;column&gt;</literal> tags to map a property to multiple columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, and <literal>UserVersionType</literal> interfaces provide support for more specialized uses."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even supply parameters to a <literal>UserType</literal> in the mapping file. To do this, your <literal>UserType</literal> must implement the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. To supply parameters to your custom type, you can use the <literal>&lt;type&gt;</literal> element in your mapping files."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>UserType</literal> can now retrieve the value for the parameter named <literal>default</literal> from the <literal>Properties</literal> object passed to it."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you regularly use a certain <literal>UserType</literal>, it is useful to define a shorter name for it. You can do this using the <literal>&lt;typedef&gt;</literal> element. Typedefs assign a name to a custom type, and can also contain a list of default parameter values if the type is parameterized."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is also possible to override the parameters supplied in a typedef on a case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even though Hibernate's rich range of built-in types and support for components means you will rarely need to use a custom type, it is considered good practice to use custom types for non-entity classes that occur frequently in your application. For example, a <literal>MonetaryAmount</literal> class is a good candidate for a <literal>CompositeUserType</literal>, even though it could be mapped as a component. One reason for this is abstraction. With a custom type, your mapping documents would be protected against changes to the way monetary values are represented."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to provide more than one mapping for a particular persistent class. In this case, you must specify an <emphasis>entity name</emphasis> to disambiguate between instances of the two mapped entities. By default, the entity name is the same as the class name. Hibernate lets you specify the entity name when working with persistent objects, when writing queries, or when mapping associations to the named entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Associations are now specified using <literal>entity-name</literal> instead of <literal>class</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can force Hibernate to quote an identifier in the generated SQL by enclosing the table or column name in backticks in the mapping document. Hibernate will use the correct quotation style for the SQL <literal>Dialect</literal>. This is usually double quotes, but the SQL Server uses brackets and MySQL uses backticks."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "XML does not suit all users so there are some alternative ways to define O/R mapping metadata in Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Many Hibernate users prefer to embed mapping information directly in sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover this approach in this reference guide since it is considered part of XDoclet. However, we include the following example of the <literal>Cat</literal> class with XDoclet mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "JDK 5.0 introduced XDoclet-style annotations at the language level that are type-safe and checked at compile time. This mechanism is more powerful than XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, for example, supports auto-completion and syntax highlighting of JDK 5.0 annotations. The new revision of the EJB specification (JSR-220) uses JDK 5.0 annotations as the primary metadata mechanism for entity beans. Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the persistence API). Support for mapping metadata is available via the <emphasis>Hibernate Annotations</emphasis> package as a separate download. Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Support for JDK 5.0 Annotations (and JSR-220) is currently under development. Please refer to the Hibernate Annotations module for more details."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Generated properties"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Generated properties are properties that have their values generated by the database. Typically, Hibernate applications needed to <literal>refresh</literal> objects that contain any properties for which the database was generating values. Marking properties as generated, however, lets the application delegate this responsibility to Hibernate. When Hibernate issues an SQL INSERT or UPDATE for an entity that has defined generated properties, it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Properties marked as generated must additionally be non-insertable and non-updateable. Only <link linkend=\"mapping-declaration-version\">versions</link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, and <link linkend=\"mapping-declaration-property\">simple properties</link>, can be marked as generated."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>never</literal> (the default): the given property value is not generated within the database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal>: the given property value is generated on insert, but is not regenerated on subsequent updates. Properties like created-date fall into this category. Even though <link linkend=\"mapping-declaration-version\">version</link> and <link linkend=\"mapping-declaration-timestamp\">timestamp</link> properties can be marked as generated, this option is not available."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>always</literal>: the property value is generated both on insert and on update."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows you to customize the SQL it uses to read and write the values of columns mapped to <link linkend=\"mapping-declaration-property\">simple properties</link>. For example, if your database provides a set of data encryption functions, you can invoke them for individual columns like this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate applies the custom expressions automatically whenever the property is referenced in a query. This functionality is similar to a derived-property <literal>formula</literal> with two differences:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The property is backed by one or more columns that are exported as part of automatic schema generation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>write</literal> expression, if specified, must contain exactly one '?' placeholder for the value."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Auxiliary database objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Auxiliary database objects allow for the CREATE and DROP of arbitrary database objects. In conjunction with Hibernate's schema evolution tools, they have the ability to fully define a user schema within the Hibernate mapping files. Although designed specifically for creating and dropping things like triggers or stored procedures, any SQL command that can be run via a <literal>java.sql.Statement.execute()</literal> method is valid (for example, ALTERs, INSERTS, etc.). There are essentially two modes for defining auxiliary database objects:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first mode is to explicitly list the CREATE and DROP commands in the mapping file:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The second mode is to supply a custom class that constructs the CREATE and DROP commands. This custom class must implement the <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally, these database objects can be optionally scoped so that they only apply when certain dialects are used."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/batch.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/batch.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/batch.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,189 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A naive approach to inserting 100,000 rows in the database using Hibernate might look like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This would fall over with an <literal>OutOfMemoryException</literal> somewhere around the 50,000th row. That is because Hibernate caches all the newly inserted <literal>Customer</literal> instances in the session-level cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you are undertaking batch processing you will need to enable the use of JDBC batching. This is absolutely essential if you want to achieve optimal performance. Set the JDBC batch size to a reasonable number (10-50, for example):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate disables insert batching at the JDBC level transparently if you use an <literal>identity</literal> identifier generator."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also do this kind of work in a process where interaction with the second-level cache is completely disabled:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not absolutely necessary, since we can explicitly set the <literal>CacheMode</literal> to disable interaction with the second-level cache."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When making new objects persistent <literal>flush()</literal> and then <literal>clear()</literal> the session regularly in order to control the size of the first-level cache."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For retrieving and updating data, the same ideas apply. In addition, you need to use <literal>scroll()</literal> to take advantage of server-side cursors for queries that return many rows of data."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, Hibernate provides a command-oriented API that can be used for streaming data to and from the database in the form of detached objects. A <literal>StatelessSession</literal> has no persistence context associated with it and does not provide many of the higher-level life cycle semantics. In particular, a stateless session does not implement a first-level cache nor interact with any second-level or query cache. It does not implement transactional write-behind or automatic dirty checking. Operations performed using a stateless session never cascade to associated instances. Collections are ignored by a stateless session. Operations performed via a stateless session bypass Hibernate's event model and interceptors. Due to the lack of a first-level cache, Stateless sessions are vulnerable to data aliasing effects. A stateless session is a lower-level abstraction that is much closer to the underlying JDBC."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this code example, the <literal>Customer</literal> instances returned by the query are immediately detached. They are never associated with any persistence context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>insert(), update()</literal> and <literal>delete()</literal> operations defined by the <literal>StatelessSession</literal> interface are considered to be direct database row-level operations. They result in the immediate execution of a SQL <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. They have different semantics to the <literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> operations defined by the <literal>Session</literal> interface."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As already discussed, automatic and transparent object/relational mapping is concerned with the management of the object state. The object state is available in memory. This means that manipulating data directly in the database (using the SQL <literal>Data Manipulation Language</literal> (DML) the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>) will not affect in-memory state. However, Hibernate provides methods for bulk SQL-style DML statement execution that is performed through the Hibernate Query Language (<link linkend=\"queryhql\">HQL</link>)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There can only be a single entity named in the from-clause. It can, however, be aliased. If the entity name is aliased, then any property references must be qualified using that alias. If the entity name is not aliased, then it is illegal for any property references to be qualified."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or explicit, can be specified in a bulk HQL query. Sub-queries can be used in the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As an example, to execute an HQL <literal>UPDATE</literal>, use the <literal>Query.executeUpdate()</literal> method. The method is named for those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> statements, by default, do not effect the <link linkend=\"mapping-declaration-version\">version</link> or the <link linkend=\"mapping-declaration-timestamp\">timestamp</link> property values for the affected entities. However, you can force Hibernate to reset the <literal>version</literal> or <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>. This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> keyword."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Custom version types, <literal>org.hibernate.usertype.UserVersionType</literal>, are not allowed in conjunction with a <literal>update versioned</literal> statement."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To execute an HQL <literal>DELETE</literal>, use the same <literal>Query.executeUpdate()</literal> method:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>int</literal> value returned by the <literal>Query.executeUpdate()</literal> method indicates the number of entities effected by the operation. This may or may not correlate to the number of rows effected in the database. An HQL 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 ""
+
+#. Tag: para
+#, no-c-format
+msgid "The pseudo-syntax for <literal>INSERT</literal> statements is: <literal>INSERT INTO EntityName properties_list select_statement</literal>. Some points to note:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The properties_list is analogous to the <literal>column specification</literal> in the SQL <literal>INSERT</literal> statement. For entities involved in mapped inheritance, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed and subclass properties do not make sense. In other words, <literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "select_statement can be any valid HQL select query, with the caveat that the return types must match the types expected by the insert. Currently, this is checked during query compilation rather than allowing the check to relegate to the database. This might, however, cause problems between Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> as opposed to <emphasis>equal</emphasis>. This might cause issues with mismatches between a property defined as a <literal>org.hibernate.type.DateType</literal> and a property defined as a <literal>org.hibernate.type.TimestampType</literal>, even though the database might not make a distinction or might be able to handle the conversion."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For the id property, the insert statement gives you two options. You can either explicitly specify the id property in the properties_list, in which case its value is taken from the corresponding select expression, or omit it from the properties_list, in which case a generated value is used. This latter option is only available when using id generators that operate in the database; attempting to use this option with any \"in memory\" type generators will cause an exception during parsing. For the purposes of this discussion, in-database generators are considered to be <literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) and any implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. The most notable exception here is <literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used because it does not expose a selectable way to get its values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For properties mapped as either <literal>version</literal> or <literal>timestamp</literal>, the insert statement gives you two options. You can either specify the property in the properties_list, in which case its value is taken from the corresponding select expressions, or omit it from the properties_list, in which case the <literal>seed value</literal> defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of an HQL <literal>INSERT</literal> statement execution:"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/best_practices.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/best_practices.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/best_practices.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,209 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Write fine-grained classes and map them using <literal>&lt;component&gt;</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use an <literal>Address</literal> class to encapsulate <literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>. This encourages code reuse and simplifies refactoring."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate makes identifier properties optional. There are a range of reasons why you should use them. We recommend that identifiers be 'synthetic', that is, generated with no business meaning."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Identify natural keys:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Identify natural keys for all entities, and map them using <literal>&lt;natural-id&gt;</literal>. Implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the properties that make up the natural key."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes sense, particularly in a team environment."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Load mappings as resources:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is recommended if your queries call non-ANSI-standard SQL functions. Externalizing the query strings to mapping files will make the application more portable."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As in JDBC, always replace non-constant values by \"?\". Do not use string manipulation to bind a non-constant value in a query. You should also consider using named parameters in queries."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows the application to manage JDBC connections, but his approach should be considered a last-resort. If you cannot use the built-in connection providers, consider providing your own implementation of <literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Consider using a custom type:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose you have a Java type from a library that needs to be persisted but does not provide the accessors needed to map it as a component. You should consider implementing <literal>org.hibernate.UserType</literal>. This approach frees the application code from implementing transformations to/from a Hibernate type."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In performance-critical areas of the system, some kinds of operations might benefit from direct JDBC. Do not assume, however, that JDBC is necessarily faster. Please wait until you <emphasis>know</emphasis> something is a bottleneck. If you need to use direct JDBC, you can open a Hibernate <literal>Session</literal>, wrap your JDBC operation as a <literal>org.hibernate.jdbc.Work</literal> object and using that JDBC connection. This way you can still use the same transaction strategy and underlying connection provider."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes the Session synchronizes its persistent state with the database. Performance will be affected if this process occurs too often. You can sometimes minimize unnecessary flushing by disabling automatic flushing, or even by changing the order of queries and other operations within a particular transaction."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When using a servlet/session bean architecture, you can pass persistent objects loaded in the session bean to and from the servlet/JSP layer. Use a new session to service each request. Use <literal>Session.merge()</literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the database."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Database Transactions have to be as short as possible for best scalability. However, it is often necessary to implement long running <emphasis>application transactions</emphasis>, a single unit-of-work from the point of view of a user. An application transaction might span several client request/response cycles. It is common to use detached objects to implement application transactions. An appropriate alternative in a two tiered architecture, is to maintain a single open persistence contact session for the whole life cycle of the application transaction. Then simply disconnect from the JDBC connection at the end of each request and reconnect at the beginning of the subsequent request. Never share a single session across more than one application transaction or you will be working with stale data."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is more of a necessary practice than a \"best\" practice. When an exception occurs, roll back the <literal>Transaction</literal> and close the <literal>Session</literal>. If you do not do this, Hibernate cannot guarantee that in-memory state accurately represents the persistent state. For example, do not use <literal>Session.load()</literal> to determine if an instance with the given identifier exists on the database; use <literal>Session.get()</literal> or a query instead."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use eager fetching sparingly. Use proxies and lazy collections for most associations to classes that are not likely to be completely held in the second-level cache. For associations to cached classes, where there is an a extremely high probability of a cache hit, explicitly disable eager fetching using <literal>lazy=\"false\"</literal>. When join fetching is appropriate to a particular use case, use a query with a <literal>left join fetch</literal>."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Use the <emphasis>open session in view</emphasis> pattern, or a disciplined <emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate frees the developer from writing tedious <emphasis>Data Transfer Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual purposes: first, they work around the problem that entity beans are not serializable; second, they implicitly define an assembly phase where all data to be used by the view is fetched and marshalled into the DTOs before returning control to the presentation tier. Hibernate eliminates the first purpose. Unless you are prepared to hold the persistence context (the session) open across the view rendering process, you will still need an assembly phase. Think of your business methods as having a strict contract with the presentation tier about what data is available in the detached objects. This is not a limitation of Hibernate. It is a fundamental requirement of safe transactional data access."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hide Hibernate data-access code behind an interface. Combine the <emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> patterns. You can even have some classes persisted by handcoded JDBC associated to Hibernate via a <literal>UserType</literal>. This advice is, however, intended for \"sufficiently large\" applications. It is not appropriate for an application with five tables."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Practical test cases for real many-to-many associations are rare. Most of the time you need additional information stored in the \"link table\". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, most associations are one-to-many and many-to-one. For this reason, you should proceed cautiously when using any other association style."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Unidirectional associations are more difficult to query. In a large application, almost all associations must be navigable in both directions in queries."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/bibliography.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/bibliography.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/bibliography.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr ""
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr ""
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/collection_mapping.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/collection_mapping.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/collection_mapping.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,624 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mapping"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate requires that persistent collection-valued fields be declared as an interface type. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The actual interface might be <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> or anything you like (\"anything you like\" means you will have to write an implementation of <literal>org.hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notice how the instance variable was initialized with an instance of <literal>HashSet</literal>. This is the best way to initialize collection valued properties of newly instantiated (non-persistent) instances. When you make the instance persistent, by calling <literal>persist()</literal> for example, Hibernate will actually replace the <literal>HashSet</literal> with an instance of Hibernate's own implementation of <literal>Set</literal>. Be aware of the following errors:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The persistent collections injected by Hibernate behave like <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, depending on the interface type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collections instances have the usual behavior of value types. They are automatically persisted when referenced by a persistent object and are automatically deleted when unreferenced. If a collection is passed from one persistent object to another, its elements might be moved from one table to another. Two entities cannot share a reference to the same collection instance. Due to the underlying relational model, collection-valued properties do not support null value semantics. Hibernate does not distinguish between a null collection reference and an empty collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use persistent collections the same way you use ordinary Java collections. However, please ensure you understand the semantics of bidirectional associations (these are discussed later)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are quite a range of mappings that can be generated for collections that cover many common relational models. We suggest you experiment with the schema generation tool so that you understand how various mapping declarations translate to database tables."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The Hibernate mapping element used for mapping a collection depends upon the type of interface. For example, a <literal>&lt;set&gt;</literal> element is used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> element is representative:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal> (optional - defaults to property name): the name of the collection table. It is not used for one-to-many associations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a table schema to override the schema declared on the root element"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>): disables lazy fetching and specifies that the association is always eagerly fetched. It can also be used to enable \"extra-lazy\" fetching where most operations do not initialize the collection. This is suitable for large collections."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): marks this collection as the \"inverse\" end of a bidirectional association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional - defaults to <literal>none</literal>): enables operations to cascade to child entities."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>sort</literal> (optional): specifies a sorted collection with <literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>order-by</literal> (optional, JDK1.4 only): specifies a table column or columns that define the iteration order of the <literal>Map</literal>, <literal>Set</literal> or bag, together with an optional <literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>where</literal> (optional): specifies an arbitrary SQL <literal>WHERE</literal> condition that is used when retrieving or removing the collection. This is useful if the collection needs to contain only a subset of the available data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional, defaults to <literal>select</literal>): chooses between outer-join fetching, fetching by sequential select, and fetching by sequential subselect."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses for accessing the collection property value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that changes to the state of the collection results in increments of the owning entity's version. For one-to-many associations you may want to disable this setting."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): a value of <literal>false</literal> specifies that the elements of the collection never change. This allows for minor performance optimization in some cases."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collection instances are distinguished in the database by the foreign key of the entity that owns the collection. This foreign key is referred to as the <emphasis>collection key column</emphasis>, or columns, of the collection table. The collection key column is mapped by the <literal>&lt;key&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There can be a nullability constraint on the foreign key column. For most collections, this is implied. For unidirectional one-to-many associations, the foreign key column is nullable by default, so you may need to specify <literal>not-null=\"true\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See the previous chapter for a full definition of the <literal>&lt;key&gt;</literal> element."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collections can contain almost any other Hibernate type, including: basic types, custom types, components and references to other entities. This is an important distinction. An object in a collection might be handled with \"value\" semantics (its life cycle fully depends on the collection owner), or it might be a reference to another entity with its own life cycle. In the latter case, only the \"link\" between the two objects is considered to be a state held by the collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The contained type is referred to as the <emphasis>collection element type</emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of entity references, with <literal>&lt;one-to-many&gt;</literal> or <literal>&lt;many-to-many&gt;</literal>. The first two map elements with value semantics, the next two are used to map entity associations."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All collection mappings, except those with set and bag semantics, need an <emphasis>index column</emphasis> in the collection table. An index column is a column that maps to an array index, or <literal>List</literal> index, or <literal>Map</literal> key. The index of a <literal>Map</literal> may be of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</literal>, or it can be a composite type mapped with <literal>&lt;composite-map-key&gt;</literal>. The index of an array or list is always of type <literal>integer</literal> and is mapped using the <literal>&lt;list-index&gt;</literal> element. The mapped column contains sequential integers that are numbered from zero by default."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column_name</literal> (required): the name of the column holding the collection index values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>base</literal> (optional - defaults to <literal>0</literal>): the value of the index column that corresponds to the first element of the list or array."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the column holding the collection index values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): a SQL formula used to evaluate the key of the map."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the foreign key column for the collection index values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): a SQ formula used to evaluate the foreign key of the map key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the entity class used as the map key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your table does not have an index column, and you still wish to use <literal>List</literal> as the property type, you can map the property as a Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order when it is retrieved from the database, but it can be optionally sorted or ordered."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Any collection of values or many-to-many associations requires a dedicated <emphasis>collection table</emphasis> with a foreign key column or columns, <emphasis>collection element column</emphasis> or columns, and possibly an index column or columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For a collection of values use the <literal>&lt;element&gt;</literal> tag. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the column holding the collection element values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL formula used to evaluate the element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>many-to-many association</emphasis> is specified using the <literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the element foreign key column."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL formula used to evaluate the element foreign key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): enables outer-join or sequential select fetching for this association. This is a special case; for full eager fetching in a single <literal>SELECT</literal> of an entity and its many-to-many relationships to other entities, you would enable <literal>join</literal> fetching,not only of the collection itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</literal> nested element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the foreign-key column. This makes the association multiplicity effectively one-to-many."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional): the entity name of the associated class, as an alternative to <literal>class</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A bag containing integers with an iteration order determined by the <literal>order-by</literal> attribute:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>one-to-many association</emphasis> links the tables of two classes via a foreign key with no intervening collection table. This mapping loses certain semantics of normal Java collections:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of the contained entity class cannot belong to more than one instance of the collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of the contained entity class cannot appear at more than one value of the collection index."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An association from <literal>Product</literal> to <literal>Part</literal> requires the existence of a foreign key column and possibly an index column to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</literal> tag indicates that this is a one-to-many association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how cached identifiers that reference missing rows will be handled. <literal>ignore</literal> will treat a missing row as a null association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element does not need to declare any columns. Nor is it necessary to specify the <literal>table</literal> name anywhere."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> association is declared <literal>NOT NULL</literal>, you must declare the <literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional association</emphasis> with the collection mapping marked <literal>inverse=\"true\"</literal>. See the discussion of bidirectional associations later in this chapter for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following example shows a map of <literal>Part</literal> entities by name, where <literal>partName</literal> is a persistent property of <literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports collections implementing <literal>java.util.SortedMap</literal> and <literal>java.util.SortedSet</literal>. You must specify a comparator in the mapping file:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Allowed values of the <literal>sort</literal> attribute are <literal>unsorted</literal>, <literal>natural</literal> and the name of a class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sorted collections actually behave like <literal>java.util.TreeSet</literal> or <literal>java.util.TreeMap</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want the database itself to order the collection elements, use the <literal>order-by</literal> attribute of <literal>set</literal>, <literal>bag</literal> or <literal>map</literal> mappings. This solution is only available under JDK 1.4 or higher and is implemented using <literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This performs the ordering in the SQL query and not in the memory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The value of the <literal>order-by</literal> attribute is an SQL ordering, not an HQL ordering."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Associations can even be sorted by arbitrary criteria at runtime using a collection <literal>filter()</literal>:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional association</emphasis> allows navigation from both \"ends\" of the association. Two kinds of bidirectional association are supported:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify a bidirectional many-to-many association by mapping two many-to-many associations to the same database table and declaring one end as <emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a bidirectional many-to-many association that illustrates how each category can have many items and each item can be in many categories:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Changes made only to the inverse end of the association are <emphasis>not</emphasis> persisted. This means that Hibernate has two representations in memory for every bidirectional association: one link from A to B and another link from B to A. This is easier to understand if you think about the Java object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The non-inverse side is used to save the in-memory representation to the database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can define a bidirectional one-to-many association by mapping a one-to-many association to the same table column(s) as a many-to-one association and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping one end of an association with <literal>inverse=\"true\"</literal> does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A bidirectional association where one end is represented as a <literal>&lt;list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special consideration. If there is a property of the child class that maps to the index column you can use <literal>inverse=\"true\"</literal> on the collection mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If there is no such property on the child class, the association cannot be considered truly bidirectional. That is, there is information available at one end of the association that is not available at the other end. In this case, you cannot map the collection <literal>inverse=\"true\"</literal>. Instead, you could use the following mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note that in this mapping, the collection-valued end of the association is responsible for updates to the foreign key."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are three possible approaches to mapping a ternary association. One approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A second approach is to remodel the association as an entity class. This is the most common approach."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A final alternative is to use composite elements, which will be discussed later."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The majority of the many-to-many associations and collections of values shown previously all map to tables with composite keys, even though it has been have suggested that entities should have synthetic identifiers (surrogate keys). A pure association table does not seem to benefit much from a surrogate key, although a collection of composite values <emphasis>might</emphasis>. It is for this reason that Hibernate provides a feature that allows you to map many-to-many associations and collections of values to a table with a surrogate key."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like an entity class. A different surrogate key is assigned to each collection row. Hibernate does not, however, provide any mechanism for discovering the surrogate key value of a particular row."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows efficiently and update or delete them individually, similar to a list, map or set."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the current implementation, the <literal>native</literal> identifier generation strategy is not supported for <literal>&lt;idbag&gt;</literal> collection identifiers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This section covers collection examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following class has a collection of <literal>Child</literal> instances:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If each child has, at most, one parent, the most natural mapping is a one-to-many association:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-many association:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, if this association must be unidirectional you can declare the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</literal> mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "On the other hand, if a child has multiple parents, a many-to-many association is appropriate:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For more examples and a complete explanation of a parent/child relationship mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/component_mapping.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/component_mapping.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/component_mapping.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,204 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The notion of a <emphasis>component</emphasis> is re-used in several different contexts and purposes throughout Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A component is a contained object that is persisted as a value type and not an entity reference. The term \"component\" refers to the object-oriented notion of composition and not to architecture-level components. For example, you can model a person like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now <literal>Name</literal> can be persisted as a component of <literal>Person</literal>. <literal>Name</literal> defines getter and setter methods for its persistent properties, but it does not need to declare any interfaces or identifier properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The person table would have the columns <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal> and <literal>last</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Like value types, components do not support shared references. In other words, two persons could have the same name, but the two person objects would contain two independent name objects that were only \"the same\" by value. The null value semantics of a component are <emphasis>ad hoc</emphasis>. When reloading the containing object, Hibernate will assume that if all component columns are null, then the entire component is null. This is suitable for most purposes."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The properties of a component can be of any Hibernate type (collections, many-to-one associations, other components, etc). Nested components should <emphasis>not</emphasis> be considered an exotic usage. Hibernate is intended to support a fine-grained object model."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;parent&gt;</literal> subelement that maps a property of the component class as a reference back to the containing entity."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collections of components are supported (e.g. an array of type <literal>Name</literal>). Declare your component collection by replacing the <literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-element&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you define a <literal>Set</literal> of composite elements, it is important to implement <literal>equals()</literal> and <literal>hashCode()</literal> correctly."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Composite elements can contain components but not collections. If your composite element contains components, use the <literal>&lt;nested-composite-element&gt;</literal> tag. This case is a collection of components which themselves have components. You may want to consider if a one-to-many association is more appropriate. Remodel the composite element as an entity, but be aware that even though the Java model is the same, the relational model and persistence semantics are still slightly different."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A composite element mapping does not support null-able properties if you are using a <literal>&lt;set&gt;</literal>. There is no separate primary key column in the composite element table. Hibernate uses each column's value to identify a record when deleting objects, which is not possible with null values. You have to either use only not-null properties in a composite-element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A special case of a composite element is a composite element with a nested <literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to map extra columns of a many-to-many association table to the composite element class. The following is a many-to-many association from <literal>Order</literal> to <literal>Item</literal>, where <literal>purchaseDate</literal>, <literal>price</literal> and <literal>quantity</literal> are properties of the association:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There cannot be a reference to the purchase on the other side for bidirectional association navigation. Components are value types and do not allow shared references. A single <literal>Purchase</literal> can be in the set of an <literal>Order</literal>, but it cannot be referenced by the <literal>Item</literal> at the same time."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Composite elements can appear in queries using the same syntax as associations to other entities."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a component class as the key of a <literal>Map</literal>. Ensure that you override <literal>hashCode()</literal> and <literal>equals()</literal> correctly on the component class."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can use a component as an identifier of an entity class. Your component class must satisfy certain requirements:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It must re-implement <literal>equals()</literal> and <literal>hashCode()</literal> consistently with the database's notion of composite key equality."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In Hibernate3, although the second requirement is not an absolutely hard requirement of Hibernate, it is recommended."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You cannot use an <literal>IdentifierGenerator</literal> to generate composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use the <literal>&lt;composite-id&gt;</literal> tag, with nested <literal>&lt;key-property&gt;</literal> elements, in place of the usual <literal>&lt;id&gt;</literal> declaration. For example, the <literal>OrderLine</literal> class has a primary key that depends upon the (composite) primary key of <literal>Order</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Any foreign keys referencing the <literal>OrderLine</literal> table are now composite. Declare this in your mappings for other classes. An association to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>column</literal> element is an alternative to the <literal>column</literal> attribute everywhere. Using the <literal>column</literal> element just gives more declaration options, which are mostly useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>many-to-many</literal> association to <literal>OrderLine</literal> also uses the composite foreign key:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The collection of <literal>OrderLine</literal>s in <literal>Order</literal> would use:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>OrderLine</literal> itself owns a collection, it also has a composite foreign key."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are identical to <literal>&lt;component&gt;</literal>. The advantage of this kind of mapping is the ability to determine the actual properties of the bean at deployment time just by editing the mapping document. Runtime manipulation of the mapping document is also possible, using a DOM parser. You can also access, and change, Hibernate's configuration-time metamodel via the <literal>Configuration</literal> object."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/configuration.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/configuration.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/configuration.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1664 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is designed to operate in many different environments and, as such, there is a broad range of configuration parameters. Fortunately, most have sensible default values and Hibernate is distributed with an example <literal>hibernate.properties</literal> file in <literal>etc/</literal> that displays the various options. Simply put the example file in your classpath and customize it to suit your needs."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of <classname>org.hibernate.cfg.Configuration</classname> represents an entire set of mappings of an application's Java types to an SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is used to build an immutable <interfacename>org.hibernate.SessionFactory</interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can obtain a <classname>org.hibernate.cfg.Configuration</classname> instance by instantiating it directly and specifying XML mapping documents. If the mapping files are in the classpath, use <literal>addResource()</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative way is to specify the mapped class and allow Hibernate to find the mapping document for you:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will then search for mapping files named <filename>/org/hibernate/auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm.xml</filename> in the classpath. This approach eliminates any hardcoded filenames."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <classname>org.hibernate.cfg.Configuration</classname> also allows you to specify configuration properties. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is not the only way to pass configuration properties to Hibernate. Some alternative options include:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Pass an instance of <classname>java.util.Properties</classname> to <literal>Configuration.setProperties()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Place a file named <filename>hibernate.properties</filename> in a root directory of the classpath."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Set <literal>System</literal> properties using <literal>java -Dproperty=value</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate.cfg.xml</literal> (this is discussed later)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to get started quickly<filename>hibernate.properties</filename> is the easiest approach."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <classname>org.hibernate.cfg.Configuration</classname> is intended as a startup-time object that will be discarded once a <literal>SessionFactory</literal> is created."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When all mappings have been parsed by the <classname>org.hibernate.cfg.Configuration</classname>, the application must obtain a factory for <interfacename>org.hibernate.Session</interfacename> instances. This factory is intended to be shared by all application threads:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does allow your application to instantiate more than one <interfacename>org.hibernate.SessionFactory</interfacename>. This is useful if you are using more than one database."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is advisable to have the <interfacename>org.hibernate.SessionFactory</interfacename> create and pool JDBC connections for you. If you take this approach, opening a <interfacename>org.hibernate.Session</interfacename> is as simple as:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Once you start a task that requires access to the database, a JDBC connection will be obtained from the pool."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Before you can do this, you first need to pass some JDBC connection properties to Hibernate. All Hibernate property names and semantics are defined on the class <classname>org.hibernate.cfg.Environment</classname>. The most important settings for JDBC connection configuration are outlined below."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will obtain and pool connections using <classname>java.sql.DriverManager</classname> if you set the following properties:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's own connection pooling algorithm is, however, quite rudimentary. It is intended to help you get started and is <emphasis>not intended for use in a production system</emphasis>, or even for performance testing. You should use a third party pool for best performance and stability. Just replace the <property>hibernate.connection.pool_size</property> property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might like to use c3p0."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "C3P0 is an open source JDBC connection pool distributed along with Hibernate in the <filename>lib</filename> directory. Hibernate will use its <classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for connection pooling if you set <property>hibernate.c3p0.*</property> properties. If you would like to use Proxool, refer to the packaged <filename>hibernate.properties</filename> and the Hibernate web site for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example <filename>hibernate.properties</filename> file for c3p0:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For use inside an application server, you should almost always configure Hibernate to obtain connections from an application server <interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You will need to set at least one of the following properties:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>class of the JNDI <literal>InitialContextFactory</literal></emphasis> (optional)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example <filename>hibernate.properties</filename> file for an application server provided JNDI datasource:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC connections obtained from a JNDI datasource will automatically participate in the container-managed transactions of the application server."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Arbitrary connection properties can be given by prepending \"<literal>hibernate.connection</literal>\" to the connection property name. For example, you can specify a <property>charSet</property> connection property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can define your own plugin strategy for obtaining JDBC connections by implementing the interface <interfacename>org.hibernate.connection.ConnectionProvider</interfacename>, and specifying your custom implementation via the <property>hibernate.connection.provider_class</property> property."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are a number of other properties that control the behavior of Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Some of these properties are \"system-level\" only.</emphasis> System-level properties can be set only via <literal>java -Dproperty=value</literal> or <filename>hibernate.properties</filename>. They <emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</classname> which allows Hibernate to generate SQL optimized for a particular relational database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of.Dialect</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases Hibernate will actually be able to choose the correct <classname>org.hibernate.dialect.Dialect</classname> implementation based on the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Write all SQL statements to console. This is an alternative to setting the log category <literal>org.hibernate.SQL</literal> to <literal>debug</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | <literal>false</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualify unqualified table names with the given schema/tablespace in generated SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The <interfacename>org.hibernate.SessionFactory</interfacename> will be automatically bound to this name in JNDI after it has been created."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a maximum \"depth\" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A <literal>0</literal> disables default outer join fetching."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values between <literal>0</literal> and <literal>3</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default mode for entity representation for all sessions opened from this <literal>SessionFactory</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Forces Hibernate to order SQL updates by the primary key value of the items being updated. This will result in fewer transaction deadlocks in highly concurrent systems."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, generated identifier properties will be reset to default values when objects are deleted."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "If turned on, Hibernate will generate comments inside the SQL, for easier debugging, defaults to <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value determines the JDBC fetch size (calls <literal>Statement.setFetchSize()</literal>)."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values between <literal>5</literal> and <literal>30</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Set this property to <literal>true</literal> if your JDBC driver returns correct row counts from <literal>executeBatch()</literal>. Iit is usually safe to turn this option on. Hibernate will then use batched DML for automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. Most applications will not need this configuration property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.BatcherFactory</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables use of JDBC2 scrollable resultsets by Hibernate. This property is only necessary when using user-supplied JDBC connections. Hibernate uses connection metadata otherwise."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Use streams when writing/reading <literal>binary</literal> or <literal>serializable</literal> types to/from JDBC. <emphasis>*system-level property*</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> to retrieve natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+, set to false if your driver has problems with the Hibernate identifier generators. By default, it tries to determine the driver capabilities using connection metadata."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <interfacename>org.hibernate.connection.ConnectionProvider</interfacename> which provides JDBC connections to Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets the JDBC transaction isolation level. Check <interfacename>java.sql.Connection</interfacename> for meaningful values, but note that most databases do not support all isolation levels and some define additional, non-standard isolations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Specifies when Hibernate should release JDBC connections. By default, a JDBC connection is held until the session is explicitly closed or disconnected. For an application server JTA datasource, use <literal>after_statement</literal> to aggressively release connections after every JDBC call. For a non-JTA connection, it often makes sense to release the connection at the end of each transaction, by using <literal>after_transaction</literal>. <literal>auto</literal> will choose <literal>after_statement</literal> for the JTA and CMT transaction strategies and <literal>after_transaction</literal> for the JDBC transaction strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This setting only affects <literal>Session</literal>s returned from <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s obtained through <literal>SessionFactory.getCurrentSession</literal>, the <literal>CurrentSessionContext</literal> implementation configured for use controls the connection release mode for those <literal>Session</literal>s. See <xref linkend=\"architecture-current-session\" />"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to <literal>DriverManager.getConnection()</literal>."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI <literal>InitialContextFactory</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.CacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Optimizes second-level cache operation to minimize writes, at the cost of more frequent reads. This setting is most useful for clustered caches and, in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Can be used to completely disable the second level cache, which is enabled by default for classes which specify a <literal>&lt;cache&gt;</literal> mapping."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>QueryCache</literal> interface, defaults to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Forces Hibernate to store data in the second-level cache in a more human-friendly format."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a <literal>TransactionFactory</literal> to use with Hibernate <literal>Transaction</literal> API (defaults to <literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.TransactionFactory</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a <literal>TransactionManagerLookup</literal>. It is required when JVM-level caching is enabled or when using hilo generator in a JTA environment."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, the session will be automatically flushed during the before completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, the session will be automatically closed during the after completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Supply a custom strategy for the scoping of the \"current\" <literal>Session</literal>. See <xref linkend=\"architecture-current-session\" /> for more information about the built-in strategies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Is used to map from tokens in Hibernate queries to SQL tokens (tokens might be function or literal names, for example)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Automatically validates or exports schema DDL to the database when the <literal>SessionFactory</literal> is created. With <literal>create-drop</literal>, the database schema will be dropped when the <literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the use of CGLIB instead of runtime reflection (System-level property). Reflection can sometimes be useful when troubleshooting. Hibernate always requires CGLIB even if you turn off the optimizer. You cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Always set the <literal>hibernate.dialect</literal> property to the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you specify a dialect, Hibernate will use sensible defaults for some of the other properties listed above. This means that you will not have to specify them manually."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your database supports ANSI, Oracle or Sybase style outer joins, <emphasis>outer join fetching</emphasis> will often increase performance by limiting the number of round trips to and from the database. This is, however, at the cost of possibly more work performed by the database itself. Outer join fetching allows a whole graph of objects connected by many-to-one, one-to-many, many-to-many and one-to-one associations to be retrieved in a single SQL <literal>SELECT</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Outer join fetching can be disabled <emphasis>globally</emphasis> by setting the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</literal>. A setting of <literal>1</literal> or higher enables outer join fetching for one-to-one and many-to-one associations that have been mapped with <literal>fetch=\"join\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Oracle limits the size of <literal>byte</literal> arrays that can be passed to and/or from its JDBC driver. If you wish to use large instances of <literal>binary</literal> or <literal>serializable</literal> type, you should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The properties prefixed by <literal>hibernate.cache</literal> allow you to use a process or cluster scoped second-level cache system with Hibernate. See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can define new Hibernate query tokens using <literal>hibernate.query.substitutions</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This would cause the tokens <literal>true</literal> and <literal>false</literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you enable <literal>hibernate.generate_statistics</literal>, Hibernate exposes a number of metrics that are useful when tuning a running system via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be configured to expose these statistics via JMX. Read the Javadoc of the interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J can direct your logging output to several logging frameworks (NOP, Simple, log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen binding. In order to setup logging you will need <filename>slf4j-api.jar</filename> in your classpath together with the jar file for your preferred binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</ulink> for more detail. To use Log4j you will also need to place a <filename>log4j.properties</filename> file in your classpath. An example properties file is distributed with Hibernate in the <literal>src/</literal> directory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you familiarize yourself with Hibernate's log messages. A lot of work has been put into making the Hibernate log as detailed as possible, without making it unreadable. It is an essential troubleshooting device. The most interesting log categories are the following:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log the state of all entities (max 20 entities) associated with the session at flush time"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Log everything. This is a lot of information but it is useful for troubleshooting"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When developing applications with Hibernate, you should almost always work with <literal>debug</literal> enabled for the category <literal>org.hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate.show_sql</literal> enabled."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can provide rules for automatically generating database identifiers from Java identifiers or for processing \"logical\" column and table names given in the mapping file into \"physical\" table and column names. This feature helps reduce the verbosity of the mapping document, eliminating repetitive noise (<literal>TBL_</literal> prefixes, for example). The default strategy used by Hibernate is quite minimal."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify a different strategy by calling <literal>Configuration.setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in strategy that might be a useful starting point for some applications."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach to configuration is to specify a full configuration in a file named <literal>hibernate.cfg.xml</literal>. This file can be used as a replacement for the <literal>hibernate.properties</literal> file or, if both are present, to override properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The XML configuration file is by default expected to be in the root of your <literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The advantage of this approach is the externalization of the mapping file names to configuration. The <literal>hibernate.cfg.xml</literal> is also more convenient once you have to tune the Hibernate cache. It is your choice to use either <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>. Both are equivalent, except for the above mentioned benefits of using the XML syntax."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC connections managed by the container and provided through JNDI. Usually, a JTA compatible <literal>TransactionManager</literal> and a <literal>ResourceManager</literal> take care of transaction management (CMT), especially distributed transaction handling across several datasources. You can also demarcate transaction boundaries programmatically (BMT), or you might want to use the optional Hibernate <literal>Transaction</literal> API for this to keep your code portable."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its <literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</literal> can be automatically bound to the scope of JTA transactions. Simply lookup the <literal>SessionFactory</literal> from JNDI and get the current <literal>Session</literal>. Let Hibernate manage flushing and closing the <literal>Session</literal> when your JTA transaction completes. Transaction demarcation is either declarative (CMT) or programmatic (BMT/UserTransaction)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>JMX deployment:</emphasis> if you have a JMX capable application server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed MBean. This saves you the one line startup code to build your <literal>SessionFactory</literal> from a <literal>Configuration</literal>. The container will startup your <literal>HibernateService</literal> and also take care of service dependencies (datasource has to be available before Hibernate starts, etc)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Depending on your environment, you might have to set the configuration option <literal>hibernate.connection.aggressive_release</literal> to true if your application server shows \"connection containment\" exceptions."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The Hibernate <literal>Session</literal> API is independent of any transaction demarcation system in your architecture. If you let Hibernate use JDBC directly through a connection pool, you can begin and end your transactions by calling the JDBC API. If you run in a J2EE application server, you might want to use bean-managed transactions and call the JTA API and <literal>UserTransaction</literal> when needed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To keep your code portable between these two (and other) environments we recommend the optional Hibernate <literal>Transaction</literal> API, which wraps and hides the underlying system. You have to specify a factory class for <literal>Transaction</literal> instances by setting the Hibernate configuration property <literal>hibernate.transaction.factory_class</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed transactions if an existing transaction is underway in this context (for example, EJB session bean method). Otherwise, a new transaction is started and bean-managed transactions are used."
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define your own transaction strategies (for a CORBA transaction service, for example)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Some features in Hibernate (i.e., the second level cache, Contextual Sessions with JTA, etc.) require access to the JTA <literal>TransactionManager</literal> in a managed environment. In an application server, since J2EE does not standardize a single mechanism, you have to specify how Hibernate should obtain a reference to the <literal>TransactionManager</literal>:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the lookup function of the factory and create new <literal>Session</literal>s. This is not, however, related to a JNDI bound <literal>Datasource</literal>; both simply use the same registry."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you wish to have the <literal>SessionFactory</literal> bound to a JNDI namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</literal>) using the property <literal>hibernate.session_factory_name</literal>. If this property is omitted, the <literal>SessionFactory</literal> will not be bound to JNDI. This is especially useful in environments with a read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal> to instantiate an initial context. If they are not specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will automatically place the <literal>SessionFactory</literal> in JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means you will have this call in some startup code, or utility class in your application, unless you use JMX deployment with the <literal>HibernateService</literal> (this is discussed later in greater detail)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other class, you can obtain the <literal>SessionFactory</literal> using a JNDI lookup."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you bind the <literal>SessionFactory</literal> to JNDI in a managed environment and use a <literal>static</literal> singleton otherwise. To shield your application code from these details, we also recommend to hide the actual lookup code for a <literal>SessionFactory</literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory()</literal>. Note that such a class is also a convenient way to startup Hibernate&mdash;see chapter 1."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The easiest way to handle <literal>Sessions</literal> and transactions is Hibernate's automatic \"current\" <literal>Session</literal> management. For a discussion of contextual sessions see <xref linkend=\"architecture-current-session\" />. Using the <literal>\"jta\"</literal> session context, if there is no Hibernate <literal>Session</literal> associated with the current JTA transaction, one will be started and associated with that JTA transaction the first time you call <literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</literal>s retrieved via <literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> context are set to automatically flush before the transaction completes, close after the transaction completes, and aggressively release JDBC connections after each statement. This allows the <literal>Session</literal>s to be managed by the life cycle of the JTA transaction to which it is associated, keeping user code clean of s!
 uch management concerns. Your code can either use JTA programmatically through <literal>UserTransaction</literal>, or (recommended for portable code) use the Hibernate <literal>Transaction</literal> API to set transaction boundaries. If you run in an EJB container, declarative transaction demarcation with CMT is preferred."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The line <literal>cfg.buildSessionFactory()</literal> still has to be executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You can do this either in a <literal>static</literal> initializer block, like the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as a <emphasis>managed service</emphasis>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</literal> for deployment on an application server with JMX capabilities, such as JBoss AS. The actual deployment and configuration is vendor-specific. Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This file is deployed in a directory called <literal>META-INF</literal> and packaged in a JAR file with the extension <literal>.sar</literal> (service archive). You also need to package Hibernate, its required third-party libraries, your compiled persistent classes, as well as your mapping files in the same archive. Your enterprise beans (usually session beans) can be kept in their own JAR file, but you can include this EJB JAR file in the main service archive to get a single (hot-)deployable unit. Consult the JBoss AS documentation for more information about JMX service and EJB deployment."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/events.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/events.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/events.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,129 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is useful for the application to react to certain events that occur inside Hibernate. This allows for the implementation of generic functionality and the extension of Hibernate functionality."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Interceptor</literal> interface provides callbacks from the session to the application, allowing the application to inspect and/or manipulate properties of a persistent object before it is saved, updated, deleted or loaded. One possible use for this is to track auditing information. For example, the following <literal>Interceptor</literal> automatically sets the <literal>createTimestamp</literal> when an <literal>Auditable</literal> is created and updates the <literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</literal> is updated."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can either implement <literal>Interceptor</literal> directly or extend <literal>EmptyInterceptor</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are two kinds of inteceptors: <literal>Session</literal>-scoped and <literal>SessionFactory</literal>-scoped."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>Session</literal>-scoped interceptor is specified when a session is opened using one of the overloaded SessionFactory.openSession() methods accepting an <literal>Interceptor</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>SessionFactory</literal>-scoped interceptor is registered with the <literal>Configuration</literal> object prior to building the <literal>SessionFactory</literal>. Unless a session is opened explicitly specifying the interceptor to use, the supplied interceptor will be applied to all sessions opened from that <literal>SessionFactory</literal>. <literal>SessionFactory</literal>-scoped interceptors must be thread safe. Ensure that you do not store session-specific states, since multiple sessions will use this interceptor potentially concurrently."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you have to react to particular events in your persistence layer, you can also use the Hibernate3 <emphasis>event</emphasis> architecture. The event system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All the methods of the <literal>Session</literal> interface correlate to an event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</literal>, etc. Consult the XML configuration-file DTD or the <literal>org.hibernate.event</literal> package for the full list of defined event types. When a request is made of one of these methods, the Hibernate <literal>Session</literal> generates an appropriate event and passes it to the configured event listeners for that type. Out-of-the-box, these listeners implement the same processing in which those methods always resulted. However, you are free to implement a customization of one of the listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by the registered implementation of the <literal>LoadEventListener</literal> interface), in which case their implementation would be responsible for processing any <literal>load()</literal> requests made of the <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The listeners should be considered singletons. This means they are shared between requests, and should not save any state as instance variables."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A custom listener implements the appropriate interface for the event it wants to process and/or extend one of the convenience base classes (or even the default event listeners used by Hibernate out-of-the-box as these are declared non-final for this purpose). Custom listeners can either be registered programmatically through the <literal>Configuration</literal> object, or specified in the Hibernate configuration XML. Declarative configuration through the properties file is not supported. Here is an example of a custom load event listener:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You also need a configuration entry telling Hibernate to use the listener in addition to the default listener:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Listeners registered declaratively cannot share instances. If the same class name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each reference will result in a separate instance of that class. If you need to share listener instances between listener types you must use the programmatic registration approach."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Why implement an interface and define the specific type during configuration? A listener implementation could implement multiple event listener interfaces. Having the type additionally defined during registration makes it easier to turn custom listeners on or off during configuration."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Usually, declarative security in Hibernate applications is managed in a session facade layer. Hibernate3 allows certain actions to be permissioned via JACC, and authorized via JAAS. This is an optional functionality that is built on top of the event architecture."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, you must configure the appropriate event listeners, to enable the use of JAAS authorization."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/event&gt;</literal> when there is exactly one listener for a particular event type."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Next, while still in <literal>hibernate.cfg.xml</literal>, bind the permissions to roles:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_mappings.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_mappings.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_mappings.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,119 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following model of the relationship between <literal>Employer</literal> and <literal>Employee</literal> uses an entity class (<literal>Employment</literal>) to represent the association. You can do this when there might be more than one period of employment for the same two parties. Components are used to model monetary values and employee names."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Consider the following model of the relationships between <literal>Work</literal>, <literal>Author</literal> and <literal>Person</literal>. In the example, the relationship between <literal>Work</literal> and <literal>Author</literal> is represented as a many-to-many association and the relationship between <literal>Author</literal> and <literal>Person</literal> is represented as one-to-one association. Another possibility would be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following mapping document correctly represents these relationships:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are four tables in this mapping: <literal>works</literal>, <literal>authors</literal> and <literal>persons</literal> hold work, author and person data respectively. <literal>author_work</literal> is an association table linking authors to works. Here is the table schema, as generated by <literal>SchemaExport</literal>:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this section we consider a model of the relationships between <literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</literal> and <literal>Product</literal>. There is a one-to-many association between <literal>Customer</literal> and <literal>Order</literal>, but how can you represent <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>? In the example, <literal>LineItem</literal> is mapped as an association class representing the many-to-many association between <literal>Order</literal> and <literal>Product</literal>. In Hibernate this is called a composite element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping document will look like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>customers</literal>, <literal>orders</literal>, <literal>line_items</literal> and <literal>products</literal> hold customer, order, order line item and product data respectively. <literal>line_items</literal> also acts as an association table linking orders with products."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "These examples are available from the Hibernate test suite. You will find many other useful example mappings there by searching in the <literal>test</literal> folder of the Hibernate distribution."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_parentchild.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_parentchild.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_parentchild.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,204 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "One of the first things that new users want to do with Hibernate is to model a parent/child type relationship. There are two different approaches to this. The most convenient approach, especially for new users, is to model both <literal>Parent</literal> and <literal>Child</literal> as entity classes with a <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>. The alternative approach is to declare the <literal>Child</literal> as a <literal>&lt;composite-element&gt;</literal>. The default semantics of a one-to-many association in Hibernate are much less close to the usual semantics of a parent/child relationship than those of a composite element mapping. We will explain how to use a <emphasis>bidirectional one-to-many association with cascades</emphasis> to model a parent/child relationship efficiently and elegantly."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate collections are considered to be a logical part of their owning entity and not of the contained entities. Be aware that this is a critical distinction that has the following consequences:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When you remove/add an object from/to a collection, the version number of the collection owner is incremented."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If an object that was removed from a collection is an instance of a value type (e.g. a composite element), that object will cease to be persistent and its state will be completely removed from the database. Likewise, adding a value type instance to the collection will cause its state to be immediately persistent."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Conversely, if an entity is removed from a collection (a one-to-many or many-to-many association), it will not be deleted by default. This behavior is completely consistent; a change to the internal state of another entity should not cause the associated entity to vanish. Likewise, adding an entity to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Adding an entity to a collection, by default, merely creates a link between the two entities. Removing the entity will remove the link. This is appropriate for all sorts of cases. However, it is not appropriate in the case of a parent/child relationship. In this case, the life of the child is bound to the life cycle of the parent."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If we were to execute the following code:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>UPDATE</literal> to create the link from <literal>p</literal> to <literal>c</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is not only inefficient, but also violates any <literal>NOT NULL</literal> constraint on the <literal>parent_id</literal> column. You can fix the nullability constraint violation by specifying <literal>not-null=\"true\"</literal> in the collection mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The underlying cause of this behavior is that the link (the foreign key <literal>parent_id</literal>) from <literal>p</literal> to <literal>c</literal> is not considered part of the state of the <literal>Child</literal> object and is therefore not created in the <literal>INSERT</literal>. The solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You also need to add the <literal>parent</literal> property to the <literal>Child</literal> class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now that the <literal>Child</literal> entity is managing the state of the link, we tell the collection not to update the link. We use the <literal>inverse</literal> attribute to do this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You could also create an <literal>addChild()</literal> method of <literal>Parent</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can address the frustrations of the explicit call to <literal>save()</literal> by using cascades."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This simplifies the code above to:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Similarly, we do not need to iterate over the children when saving or deleting a <literal>Parent</literal>. The following removes <literal>p</literal> and all its children from the database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, the following code:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "will not remove <literal>c</literal> from the database. In this case, it will only remove the link to <literal>p</literal> and cause a <literal>NOT NULL</literal> constraint violation. You need to explicitly <literal>delete()</literal> the <literal>Child</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In our case, a <literal>Child</literal> cannot exist without its parent. So if we remove a <literal>Child</literal> from the collection, we do want it to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even though the collection mapping specifies <literal>inverse=\"true\"</literal>, cascades are still processed by iterating the collection elements. If you need an object be saved, deleted or updated by cascade, you must add it to the collection. It is not enough to simply call <literal>setParent()</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</literal>, made some changes in a UI action and wanted to persist these changes in a new session by calling <literal>update()</literal>. The <literal>Parent</literal> will contain a collection of children and, since the cascading update is enabled, Hibernate needs to know which children are newly instantiated and which represent existing rows in the database. We will also assume that both <literal>Parent</literal> and <literal>Child</literal> have generated identifier properties of type <literal>Long</literal>. Hibernate will use the identifier and version/timestamp property value to determine which of the children are new. (See <xref linkend=\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer necessary to specify an <literal>unsaved-value</literal> explicitly.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This may be suitable for the case of a generated identifier, but what about assigned identifiers and composite identifiers? This is more difficult, since Hibernate cannot use the identifier property to distinguish between a newly instantiated object, with an identifier assigned by the user, and an object loaded in a previous session. In this case, Hibernate will either use the timestamp or version property, or will actually query the second-level cache or, worst case, the database, to see if the row exists."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The sections we have just covered can be a bit confusing. However, in practice, it all works out nicely. Most Hibernate applications use the parent/child pattern in many places."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We mentioned an alternative in the first paragraph. None of the above issues exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, which have exactly the semantics of a parent/child relationship. Unfortunately, there are two big limitations with composite element classes: composite elements cannot own collections and they should not be the child of any entity other than the unique parent."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_weblog.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_weblog.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/example_weblog.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The persistent classes here represent a weblog and an item posted in a weblog. They are to be modelled as a standard parent/child relationship, but we will use an ordered bag, instead of a set:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following class demonstrates some of the kinds of things we can do with these classes using Hibernate:"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/filters.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/filters.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/filters.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,94 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 provides an innovative new approach to handling data with \"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, named, parameterized filter that can be enabled or disabled for a particular Hibernate session."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 has the ability to pre-define filter criteria and attach those filters at both a class level and a collection level. A filter criteria allows you to define a restriction clause similar to the existing \"where\" attribute available on the class and various collection elements. These filter conditions, however, can be parameterized. The application can then decide at runtime whether certain filters should be enabled and what their parameter values should be. Filters can be used like database views, but they are parameterized inside the application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In order to use filters, they must first be defined and then attached to the appropriate mapping elements. To define a filter, use the <literal>&lt;filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/&gt;</literal> element:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to a collection:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The methods on <literal>Session</literal> are: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, and <literal>disableFilter(String filterName)</literal>. By default, filters are <emphasis>not</emphasis> enabled for a given session. Filters must be enabled through use of the <literal>Session.enableFilter()</literal> method, which returns an instance of the <literal>Filter</literal> interface. If you used the simple filter defined above, it would look like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Methods on the org.hibernate.Filter interface do allow the method-chaining common to much of Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following is a full example, using temporal data with an effective record date pattern:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In order to ensure that you are provided with currently effective records, enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even though a salary constraint was mentioned explicitly on the results in the above HQL, because of the enabled filter, the query will return only currently active employees who have a salary greater than one million dollars."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to use filters with outer joining, either through HQL or load fetching, be careful of the direction of the condition expression. It is safest to set this up for left outer joining. Place the parameter first followed by the column name(s) after the operator."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "After being defined, a filter might be attached to multiple entities and/or collections each with its own condition. This can be problematic when the conditions are the same each time. Using <literal>&lt;filter-def/&gt;</literal> allows you to definine a default condition, either as an attribute or CDATA:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This default condition will be used whenever the filter is attached to something without specifying a condition. This means you can give a specific condition as part of the attachment of the filter that overrides the default condition in that particular case."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/inheritance_mapping.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/inheritance_mapping.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/inheritance_mapping.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,334 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Inheritance mapping"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The three strategies"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "table per subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In addition, Hibernate supports a fourth, slightly different kind of polymorphism:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to use different mapping strategies for different branches of the same inheritance hierarchy. You can then make use of implicit polymorphism to achieve polymorphism across the whole hierarchy. However, Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, <literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</literal> element. It is possible to mix together the table per hierarchy and table per subclass strategies under the the same <literal>&lt;class&gt;</literal> element, by combining the <literal>&lt;subclass&gt;</literal> and <literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>, and <literal>joined-subclass</literal> mappings in separate mapping documents directly beneath <literal>hibernate-mapping</literal>. This allows you to extend a class hierarchy by adding a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping, naming a previously mapped superclass. Previously this feature made the ordering of the mapping documents important. Since Hibernate3, the ordering of mapping files is irrelevant when using the extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses before subclasses."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we have an interface <literal>Payment</literal> with the implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, and <literal>ChequePayment</literal>. The table per hierarchy mapping would display in the following way:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Exactly one table is required. There is a limitation of this mapping strategy: columns declared by the subclasses, such as <literal>CCTYPE</literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Four tables are required. The three subclass tables have primary key associations to the superclass table so the relational model is actually a one-to-one association."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's implementation of table per subclass does not require a discriminator column. Other object/relational mappers use a different implementation of table per subclass that requires a type discriminator column in the superclass table. The approach taken by Hibernate is much more difficult to implement, but arguably more correct from a relational point of view. If you want to use a discriminator column with the table per subclass strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and <literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate not to fetch the <literal>ChequePayment</literal> subclass data using an outer join when querying the superclass."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even mix the table per hierarchy and table per subclass strategies using the following approach:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For any of these mapping strategies, a polymorphic association to the root <literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are two ways we can map the table per concrete class strategy. First, you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Three tables are involved for the subclasses. Each table defines columns for all properties of the class, including inherited properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The limitation of this approach is that if a property is mapped on the superclass, the column name must be the same on all subclass tables. The identity generator strategy is not allowed in union subclass inheritance. The primary key seed has to be shared across all unioned subclasses of a hierarchy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your superclass is abstract, map it with <literal>abstract=\"true\"</literal>. If it is not abstract, an additional table (it defaults to <literal>PAYMENT</literal> in the example above), is needed to hold instances of the superclass."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that the <literal>Payment</literal> interface is not mentioned explicitly. Also notice that properties of <literal>Payment</literal> are mapped in each of the subclasses. If you want to avoid duplication, consider using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM \"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The disadvantage of this approach is that Hibernate does not generate SQL <literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For this mapping strategy, a polymorphic association to <literal>Payment</literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Since the subclasses are each mapped in their own <literal>&lt;class&gt;</literal> element, and since <literal>Payment</literal> is just an interface), each of the subclasses could easily be part of another inheritance hierarchy. You can still use polymorphic queries against the <literal>Payment</literal> interface."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, <literal>Payment</literal> is not mentioned explicitly. If we execute a query against the <literal>Payment</literal> interface, for example <literal>from Payment</literal>, Hibernate automatically returns instances of <literal>CreditCardPayment</literal> (and its subclasses, since they also implement <literal>Payment</literal>), <literal>CashPayment</literal> and <literal>ChequePayment</literal>, but not instances of <literal>NonelectronicTransaction</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are limitations to the \"implicit polymorphism\" approach to the table per concrete-class mapping strategy. There are somewhat less restrictive limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table shows the limitations of table per concrete-class mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Outer join fetching"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per class-hierarchy"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</literal> only)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()</literal>"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/performance.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/performance.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/performance.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1104 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve associated objects if the application needs to navigate the association. Fetch strategies can be declared in the O/R mapping metadata, or over-ridden by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated instance or collection in the same <literal>SELECT</literal>, using an <literal>OUTER JOIN</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is used to retrieve the associated entity or collection. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you access the association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> is used to retrieve the associated collections for all entities retrieved in a previous query or fetch. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you access the association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Batch fetching</emphasis>: an optimization strategy for select fetching. Hibernate retrieves a batch of entity instances or collections in a single <literal>SELECT</literal> by specifying a list of primary or foreign keys."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Immediate fetching</emphasis>: an association, collection or attribute is fetched immediately when the owner is loaded."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when the application invokes an operation upon that collection. This is the default for collections."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements of the collection are accessed from the database as needed. Hibernate tries not to fetch the whole collection into memory unless absolutely needed. It is suitable for large collections."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched when a method other than the identifier getter is invoked upon the associated object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is fetched when the instance variable is accessed. Compared to proxy fetching, this approach is less lazy; the association is fetched even when only the identifier is accessed. It is also more transparent, since no proxy is visible to the application. This approach requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued association is fetched when the instance variable is accessed. This approach requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We have two orthogonal notions here: <emphasis>when</emphasis> is the association fetched and <emphasis>how</emphasis> is it fetched. It is important that you do not confuse them. We use <literal>fetch</literal> to tune performance. We can use <literal>lazy</literal> to define a contract for what data is always available in any detached instance of a particular class."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "By default, Hibernate3 uses lazy select fetching for collections and lazy proxy fetching for single-valued associations. These defaults make sense for most associations in the majority of applications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate will use the batch fetch optimization for lazy fetching. This optimization can also be enabled at a more granular level."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Please be aware that access to a lazy association outside of the context of an open Hibernate session will result in an exception. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Since the permissions collection was not initialized when the <literal>Session</literal> was closed, the collection will not be able to load its state. <emphasis>Hibernate does not support lazy initialization for detached objects</emphasis>. This can be fixed by moving the code that reads from the collection to just before the transaction is committed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can use a non-lazy collection or association, by specifying <literal>lazy=\"false\"</literal> for the association mapping. However, it is intended that lazy initialization be used for almost all collections and associations. If you define too many non-lazy associations in your object model, Hibernate will fetch the entire database into memory in every transaction."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "On the other hand, you can use join fetching, which is non-lazy by nature, instead of select fetching in a particular transaction. We will now explain how to customize the fetching strategy. In Hibernate3, the mechanisms for choosing a fetch strategy are identical for single-valued associations and collections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Select fetching (the default) is extremely vulnerable to N+1 selects problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>fetch</literal> strategy defined in the mapping document affects:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Irrespective of the fetching strategy you use, the defined non-lazy graph is guaranteed to be loaded into memory. This might, however, result in several immediate selects being used to execute a particular HQL query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Usually, the mapping document is not used to customize fetching. Instead, we keep the default behavior, and override it for a particular transaction, using <literal>left join fetch</literal> in HQL. This tells Hibernate to fetch the association eagerly in the first select, using an outer join. In the <literal>Criteria</literal> query API, you would use <literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to change the fetching strategy used by <literal>get()</literal> or <literal>load()</literal>, you can use a <literal>Criteria</literal> query. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan\"."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A completely different approach to problems with N+1 selects is to use the second-level cache."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Lazy fetching for collections is implemented using Hibernate's own implementation of persistent collections. However, a different mechanism is needed for lazy behavior in single-ended associations. The target entity of the association must be proxied. Hibernate implements lazy initializing proxies for persistent objects using runtime bytecode enhancement which is accessed via the CGLIB library."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "At startup, Hibernate3 generates proxies by default for all persistent classes and uses them to enable lazy fetching of <literal>many-to-one</literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping file may declare an interface to use as the proxy interface for that class, with the <literal>proxy</literal> attribute. By default, Hibernate uses a subclass of the class. <emphasis>The proxied class must implement a default constructor with at least package visibility. This constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are potential problems to note when extending this approach to polymorphic classes.For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Firstly, instances of <literal>Cat</literal> will never be castable to <literal>DomesticCat</literal>, even if the underlying instance is an instance of <literal>DomesticCat</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, the situation is not quite as bad as it looks. Even though we now have two references to different proxy objects, the underlying instance will still be the same object:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or a class with any <literal>final</literal> methods."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, if your persistent object acquires any resources upon instantiation (e.g. in initializers or default constructor), then those resources will also be acquired by the proxy. The proxy class is an actual subclass of the persistent class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "These problems are all due to fundamental limitations in Java's single inheritance model. To avoid these problems your persistent classes must each implement an interface that declares its business methods. You should specify these interfaces in the mapping file where <literal>CatImpl</literal> implements the interface <literal>Cat</literal> and <literal>DomesticCatImpl</literal> implements the interface <literal>DomesticCat</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Then proxies for instances of <literal>Cat</literal> and <literal>DomesticCat</literal> can be returned by <literal>load()</literal> or <literal>iterate()</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Relationships are also lazily initialized. This means you must declare any properties to be of type <literal>Cat</literal>, not <literal>CatImpl</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>equals()</literal>: if the persistent class does not override <literal>equals()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>hashCode()</literal>: if the persistent class does not override <literal>hashCode()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will detect persistent classes that override <literal>equals()</literal> or <literal>hashCode()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default <literal>lazy=\"proxy\"</literal>, you can avoid problems associated with typecasting. However, buildtime bytecode instrumentation is required, and all operations will result in immediate proxy initialization."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>LazyInitializationException</literal> will be thrown by Hibernate if an uninitialized collection or proxy is accessed outside of the scope of the <literal>Session</literal>, i.e., when the entity owning the collection or having the reference to the proxy is in the detached state."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes a proxy or collection needs to be initialized before closing the <literal>Session</literal>. You can force initialization by calling <literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</literal>, for example. However, this can be confusing to readers of the code and it is not convenient for generic code."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The static methods <literal>Hibernate.initialize()</literal> and <literal>Hibernate.isInitialized()</literal>, provide the application with a convenient way of working with lazily initialized collections or proxies. <literal>Hibernate.initialize(cat)</literal> will force the initialization of a proxy, <literal>cat</literal>, as long as its <literal>Session</literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</literal> has a similar effect for the collection of kittens."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Another option is to keep the <literal>Session</literal> open until all required collections and proxies have been loaded. In some application architectures, particularly where the code that accesses data using Hibernate, and the code that uses it are in different application layers or different physical processes, it can be a problem to ensure that the <literal>Session</literal> is open when a collection is initialized. There are two basic ways to deal with this issue:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In a web-based application, a servlet filter can be used to close the <literal>Session</literal> only at the end of a user request, once the rendering of the view is complete (the <emphasis>Open Session in View</emphasis> pattern). Of course, this places heavy demands on the correctness of the exception handling of your application infrastructure. It is vitally important that the <literal>Session</literal> is closed and the transaction ended before returning to the user, even when an exception occurs during rendering of the view. See the Hibernate Wiki for examples of this \"Open Session in View\" pattern."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In an application with a separate business tier, the business logic must \"prepare\" all collections that the web tier needs before returning. This means that the business tier should load all the data and return all the data already initialized to the presentation/web tier that is required for a particular use case. Usually, the application calls <literal>Hibernate.initialize()</literal> for each collection that will be needed in the web tier (this call must occur before the session is closed) or retrieves the collection eagerly using a Hibernate query with a <literal>FETCH</literal> clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</literal>. This is usually easier if you adopt the <emphasis>Command</emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also attach a previously loaded object to a new <literal>Session</literal> with <literal>merge()</literal> or <literal>lock()</literal> before accessing uninitialized collections or other proxies. Hibernate does not, and certainly <emphasis>should</emphasis> not, do this automatically since it would introduce impromptu transaction semantics."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes you do not want to initialize a large collection, but still need some information about it, like its size, for example, or a subset of the data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can use a collection filter to get the size of a collection without initializing it:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>createFilter()</literal> method is also used to efficiently retrieve subsets of a collection without needing to initialize the whole collection:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Using batch fetching, Hibernate can load several uninitialized proxies if one proxy is accessed. Batch fetching is an optimization of the lazy select fetching strategy. There are two ways you can configure batch fetching: on the class level and the collection level."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Batch fetching for classes/entities is easier to understand. Consider the following example: at runtime you have 25 <literal>Cat</literal> instances loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has a reference to its <literal>owner</literal>, a <literal>Person</literal>. The <literal>Person</literal> class is mapped with a proxy, <literal>lazy=\"true\"</literal>. If you now iterate through all cats and call <literal>getOwner()</literal> on each, Hibernate will, by default, execute 25 <literal>SELECT</literal> statements to retrieve the proxied owners. You can tune this behavior by specifying a <literal>batch-size</literal> in the mapping of <literal>Person</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also enable batch fetching of collections. For example, if each <literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, and 10 persons are currently loaded in the <literal>Session</literal>, iterating through all persons will generate 10 <literal>SELECT</literal>s, one for every call to <literal>getCats()</literal>. If you enable batch fetching for the <literal>cats</literal> collection in the mapping of <literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 collections in four <literal>SELECT</literal>s. Again, the value of the attribute depends on the expected number of uninitialized collections in a particular <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Batch fetching of collections is particularly useful if you have a nested tree of items, i.e. the typical bill-of-materials pattern. However, a <emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> might be a better option for read-mostly trees."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If one lazy collection or single-valued proxy has to be fetched, Hibernate will load all of them, re-running the original query in a subselect. This works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Fetch profiles"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Another way to affect the fetching strategy for loading associated objects is through something called a fetch profile, which is a named configuration associated with the <interfacename>org.hibernate.SessionFactory</interfacename> but enabled, by name, on the <interfacename>org.hibernate.Session</interfacename>. Once enabled on a <interfacename>org.hibernate.Session</interfacename>, the fetch profile wull be in affect for that <interfacename>org.hibernate.Session</interfacename> until it is explicitly disabled."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "So what does that mean? Well lets explain that by way of an example. Say we have the following mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now normally when you get a reference to a particular customer, that customer's set of orders will be lazy meaning we will not yet have loaded those orders from the database. Normally this is a good thing. Now lets say that you have a certain use case where it is more efficient to load the customer and their orders together. One way certainly is to use \"dynamic fetching\" strategies via an HQL or criteria queries. But another option is to use a fetch profile to achieve that. Just add the following to your mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now the following code will actually load both the customer <emphasis>and their orders</emphasis>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Currently only join style fetch profiles are supported, but they plan is to support additional styles. See <ulink url=\"http://opensource.atlassian.com/projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 supports the lazy fetching of individual properties. This optimization technique is also known as <emphasis>fetch groups</emphasis>. Please note that this is mostly a marketing feature; optimizing row reads is much more important than optimization of column reads. However, only loading some properties of a class could be useful in extreme cases. For example, when legacy tables have hundreds of columns and the data model cannot be improved."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To enable lazy property loading, set the <literal>lazy</literal> attribute on your particular property mappings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Lazy property loading requires buildtime bytecode instrumentation. If your persistent classes are not enhanced, Hibernate will ignore lazy property settings and return to immediate fetching."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A different way of avoiding unnecessary column reads, at least for read-only transactions, is to use the projection features of HQL or Criteria queries. This avoids the need for buildtime bytecode processing and is certainly a preferred solution."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can force the usual eager fetching of properties using <literal>fetch all properties</literal> in HQL."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A Hibernate <literal>Session</literal> is a transaction-level cache of persistent data. It is possible to configure a cluster or JVM-level (<literal>SessionFactory</literal>-level) cache on a class-by-class and collection-by-collection basis. You can even plug in a clustered cache. Be aware that caches are not aware of changes made to the persistent store by another application. They can, however, be configured to regularly expire cached data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You have the option to tell Hibernate which caching implementation to use by specifying the name of a class that implements <literal>org.hibernate.cache.CacheProvider</literal> using the property <literal>hibernate.cache.provider_class</literal>. Hibernate is bundled with a number of built-in integrations with the open-source cache providers that are listed below. You can also implement your own and plug it in as outlined above. Note that versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 2"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;cache&gt;</literal> element of a class or collection mapping has the following form:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>usage</literal> (required) specifies the caching strategy: <literal>transactional</literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>region</literal> (optional: defaults to the class or collection role name): specifies the name of the second level cache region"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>include</literal> (optional: defaults to <literal>all</literal>) <literal>non-lazy</literal>: specifies that properties of the entity mapped with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level lazy fetching is enabled"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and <literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>usage</literal> attribute specifies a <emphasis>cache concurrency strategy</emphasis>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your application needs to read, but not modify, instances of a persistent class, a <literal>read-only</literal> cache can be used. This is the simplest and optimal performing strategy. It is even safe for use in a cluster."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the application needs to update data, a <literal>read-write</literal> cache might be appropriate. This cache strategy should never be used if serializable transaction isolation level is required. If the cache is used in a JTA environment, you must specify the property <literal>hibernate.transaction.manager_lookup_class</literal> and naming a strategy for obtaining the JTA <literal>TransactionManager</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called. If you want to use this strategy in a cluster, you should ensure that the underlying cache implementation supports locking. The built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the application only occasionally needs to update data (i.e. if it is extremely unlikely that two transactions would try to update the same item simultaneously), and strict transaction isolation is not required, a <literal>nonstrict-read-write</literal> cache might be appropriate. If the cache is used in a JTA environment, you must specify <literal>hibernate.transaction.manager_lookup_class</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>transactional</literal> cache strategy provides support for fully transactional cache providers such as JBoss TreeCache. Such a cache can only be used in a JTA environment and you must specify <literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table shows which providers are compatible with which concurrency strategies."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Whenever you pass an object to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an object using <literal>load()</literal>, <literal>get()</literal>, <literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()</literal>, that object is added to the internal cache of the <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When <literal>flush()</literal> is subsequently called, the state of that object will be synchronized with the database. If you do not want this synchronization to occur, or if you are processing a huge number of objects and need to manage memory efficiently, the <literal>evict()</literal> method can be used to remove the object and its collections from the first-level cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Session</literal> also provides a <literal>contains()</literal> method to determine if an instance belongs to the session cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To evict all objects from the session cache, call <literal>Session.clear()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For the second-level cache, there are methods defined on <literal>SessionFactory</literal> for evicting the cached state of an instance, entire class, collection instance or entire collection role."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>CacheMode</literal> controls how a particular session interacts with the second-level cache:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>CacheMode.NORMAL</literal>: will read items from and write items to the second-level cache"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>CacheMode.GET</literal>: will read items from the second-level cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>CacheMode.PUT</literal>: will write items to the second-level cache. Do not read from the second-level cache"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>CacheMode.REFRESH</literal>: will write items to the second-level cache. Do not read from the second-level cache. Bypass the effect of <literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the second-level cache for all items read from the database"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To browse the contents of a second-level or query cache region, use the <literal>Statistics</literal> API:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You will need to enable statistics and, optionally, force Hibernate to keep the cache entries in a more readable format:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Query result sets can also be cached. This is only useful for queries that are run frequently with the same parameters."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Caching of query results introduces some overhead in terms of your applications normal transactional processing. For example, if you cache results of a query against Person Hibernate will need to keep track of when those results should be invalidated because changes have been committed against Person. That, coupled with the fact that most applications simply gain no benefit from caching query results, leads Hibernate to disable caching of query results by default. To use query caching, you will first need to enable the query cache:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the cached query results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding timestamps of the most recent updates to queryable tables. These are used to validate the results as they are served from the query cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you configure your underlying cache implementation to use expiry or timeouts is is very important that the cache timeout of the underlying cache region for the UpdateTimestampsCache be set to a higher value than the timeouts of any of the query caches. In fact, we recommend that the the UpdateTimestampsCache region not be configured for expiry at all. Note, in particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As mentioned above, most queries do not benefit from caching or their results. So by default, individual queries are not cached even after enabling query caching. To enable results caching for a particular query, call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call allows the query to look for existing cache results or add its results to the cache when it is executed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The query cache does not cache the state of the actual entities in the cache; it caches only identifier values and results of value type. For this reaso, the query cache should always be used in conjunction with the second-level cache for those entities expected to be cached as part of a query result cache (just as with collection caching)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Query cache regions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you require fine-grained control over query cache expiration policies, you can specify a named cache region for a particular query by calling <literal>Query.setCacheRegion()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to force the query cache to refresh one of its regions (disregard any cached results it finds there) you can use <literal>org.hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction with the region you have defined for the given query, Hibernate will selectively force the results cached in that particular region to be refreshed. This is particularly useful in cases where underlying data may have been updated via a separate process and is a far more efficient alternative to bulk eviction of the region via <literal>org.hibernate.SessionFactory.evictQueries()</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In the previous sections we have covered collections and their applications. In this section we explore some more issues in relation to collections at runtime."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "one-to-many associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "many-to-many associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This classification distinguishes the various table and foreign key relationships but does not tell us quite everything we need to know about the relational model. To fully understand the relational structure and performance characteristics, we must also consider the structure of the primary key that is used by Hibernate to update or delete collection rows. This suggests the following classification:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All indexed collections (maps, lists, and arrays) have a primary key consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</literal> columns. In this case, collection updates are extremely efficient. The primary key can be efficiently indexed and a particular row can be efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and element columns. This can be less efficient for some types of collection element, particularly composite elements or large text or binary fields, as the database may not be able to index a complex primary key as efficiently. However, for one-to-many or many-to-many associations, particularly in the case of synthetic identifiers, it is likely to be just as efficient. If you want <literal>SchemaExport</literal> to actually create the primary key of a <literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-null=\"true\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they are efficient to update. In fact, they are the best case."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Bags are the worst case since they permit duplicate element values and, as they have no index column, no primary key can be defined. Hibernate has no way of distinguishing between duplicate rows. Hibernate resolves this problem by completely removing in a single <literal>DELETE</literal> and recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For a one-to-many association, the \"primary key\" may not be the physical primary key of the database table. Even in this case, the above classification is still useful. It reflects how Hibernate \"locates\" individual rows of the collection."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "From the discussion above, it should be clear that indexed collections and sets allow the most efficient operation in terms of adding, removing and updating elements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is, arguably, one more advantage that indexed collections have over sets for many-to-many associations or collections of values. Because of the structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</literal> a row when an element is \"changed\". Changes to a <literal>Set</literal> always work via <literal>INSERT</literal> and <literal>DELETE</literal> of individual rows. Once again, this consideration does not apply to one-to-many associations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "After observing that arrays cannot be lazy, you can conclude that lists, maps and idbags are the most performant (non-inverse) collection types, with sets not far behind. You can expect sets to be the most common kind of collection in Hibernate applications. This is because the \"set\" semantics are most natural in the relational model."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, in well-designed Hibernate domain models, most collections are in fact one-to-many associations with <literal>inverse=\"true\"</literal>. For these associations, the update is handled by the many-to-one end of the association, and so considerations of collection update performance simply do not apply."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is a particular case, however, in which bags, and also lists, are much more performant than sets. For a collection with <literal>inverse=\"true\"</literal>, the standard bidirectional one-to-many relationship idiom, for example, we can add elements to a bag or list without needing to initialize (fetch) the bag elements. This is because, unlike a <literal>set</literal>, <literal>Collection.add()</literal> or <literal>Collection.addAll()</literal> must always return true for a bag or <literal>List</literal>. This can make the following common code much faster:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Deleting collection elements one by one can sometimes be extremely inefficient. Hibernate knows not to do that in the case of an newly-empty collection (if you called <literal>list.clear()</literal>, for example). In this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose you added a single element to a collection of size twenty and then remove two elements. Hibernate will issue one <literal>INSERT</literal> statement and two <literal>DELETE</literal> statements, unless the collection is a bag. This is certainly desirable."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, suppose that we remove eighteen elements, leaving two and then add thee new elements. There are two possible ways to proceed"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "remove the whole collection in one SQL <literal>DELETE</literal> and insert all five current elements one by one"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate cannot know that the second option is probably quicker. It would probably be undesirable for Hibernate to be that intuitive as such behavior might confuse database triggers, etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Fortunately, you can force this behavior (i.e. the second strategy) at any time by discarding (i.e. dereferencing) the original collection and returning a newly instantiated collection with all the current elements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "One-shot-delete does not apply to collections mapped <literal>inverse=\"true\"</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Optimization is not much use without monitoring and access to performance numbers. Hibernate provides a full range of figures about its internal operations. Statistics in Hibernate are available per <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can access <literal>SessionFactory</literal> metrics in two ways. Your first option is to call <literal>sessionFactory.getStatistics()</literal> and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate can also use JMX to publish metrics if you enable the <literal>StatisticsService</literal> MBean. You can enable a single MBean for all your <literal>SessionFactory</literal> or one per factory. See the following code for minimalistic configuration examples:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can activate and deactivate the monitoring for a <literal>SessionFactory</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "at configuration time, set <literal>hibernate.generate_statistics</literal> to <literal>false</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Statistics can be reset programmatically using the <literal>clear()</literal> method. A summary can be sent to a logger (info level) using the <literal>logSummary()</literal> method."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate provides a number of metrics, from basic information to more specialized information that is only relevant in certain scenarios. All available counters are described in the <literal>Statistics</literal> interface API, in three categories:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Metrics related to the general <literal>Session</literal> usage, such as number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Metrics related to the entities, collections, queries, and caches as a whole (aka global metrics)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Detailed metrics related to a particular entity, collection, query or cache region."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For example, you can check the cache hit, miss, and put ratio of entities, collections and queries, and the average time a query needs. Be aware that the number of milliseconds is subject to approximation in Java. Hibernate is tied to the JVM precision and on some platforms this might only be accurate to 10 seconds."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Simple getters are used to access the global metrics (i.e. not tied to a particular entity, collection, cache region, etc.). You can access the metrics of a particular entity, collection or cache region through its name, and through its HQL or SQL representation for queries. Please refer to the <literal>Statistics</literal>, <literal>EntityStatistics</literal>, <literal>CollectionStatistics</literal>, <literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</literal> API Javadoc for more information. The following code is a simple example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can work on all entities, collections, queries and region caches, by retrieving the list of names of entities, collections, queries and region caches using the following methods: <literal>getQueries()</literal>, <literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/persistent_classes.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/persistent_classes.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/persistent_classes.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,284 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Persistent classes are classes in an application that implement the entities of the business problem (e.g. Customer and Order in an E-commerce application). Not all instances of a persistent class are considered to be in the persistent state. For example, an instance can instead be transient or detached."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate works best if these classes follow some simple rules, also known as the Plain Old Java Object (POJO) programming model. However, none of these rules are hard requirements. Indeed, Hibernate3 assumes very little about the nature of your persistent objects. You can express a domain model in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Most Java applications require a persistent class representing felines. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The four main rules of persistent classes are explored in more detail in the following sections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> has a no-argument constructor. All persistent classes must have a default constructor (which can be non-public) so that Hibernate can instantiate them using <literal>Constructor.newInstance()</literal>. It is recommended that you have a default constructor with at least <emphasis>package</emphasis> visibility for runtime proxy generation in Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> has a property called <literal>id</literal>. This property maps to the primary key column of a database table. The property might have been called anything, and its type might have been any primitive type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or <literal>java.util.Date</literal>. If your legacy database table has composite keys, you can use a user-defined class with properties of these types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier property is strictly optional. You can leave them off and let Hibernate keep track of object identifiers internally. We do not recommend this, however."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In fact, some functionality is available only to classes that declare an identifier property:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Transitive reattachment for detached objects (cascade update or cascade merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We recommend that you declare consistently-named identifier properties on persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon the persistent class being either non-final, or the implementation of an interface that declares all public methods."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can persist <literal>final</literal> classes that do not implement an interface with Hibernate. You will not, however, be able to use proxies for lazy association fetching which will ultimately limit your options for performance tuning."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should also avoid declaring <literal>public final</literal> methods on the non-final classes. If you want to use a class with a <literal>public final</literal> method, you must explicitly disable proxying by setting <literal>lazy=\"false\"</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> declares accessor methods for all its persistent fields. Many other ORM tools directly persist instance variables. It is better to provide an indirection between the relational schema and internal data structures of the class. By default, Hibernate persists JavaBeans style properties and recognizes method names of the form <literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If required, you can switch to direct field access for particular properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Properties need <emphasis>not</emphasis> be declared public - Hibernate can persist a property with a default, <literal>protected</literal> or <literal>private</literal> get / set pair."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A subclass must also observe the first and second rules. It inherits its identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You have to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods if you:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "intend to put instances of persistent classes in a <literal>Set</literal> (the recommended way to represent many-valued associations); <emphasis>and</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate guarantees equivalence of persistent identity (database row) and Java identity only inside a particular session scope. When you mix instances retrieved in different sessions, you must implement <literal>equals()</literal> and <literal>hashCode()</literal> if you wish to have meaningful semantics for <literal>Set</literal>s."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The most obvious way is to implement <literal>equals()</literal>/<literal>hashCode()</literal> by comparing the identifier value of both objects. If the value is the same, both must be the same database row, because they are equal. If both are added to a <literal>Set</literal>, you will only have one element in the <literal>Set</literal>). Unfortunately, you cannot use that approach with generated identifiers. Hibernate will only assign identifier values to objects that are persistent; a newly created instance will not have any identifier value. Furthermore, if an instance is unsaved and currently in a <literal>Set</literal>, saving it will assign an identifier value to the object. If <literal>equals()</literal> and <literal>hashCode()</literal> are based on the identifier value, the hash code would change, breaking the contract of the <literal>Set</literal>. See the Hibernate website for a full discussion of this problem. This is not a Hibernate issue, but normal Ja!
 va semantics of object identity and equality."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you implement <literal>equals()</literal> and <literal>hashCode()</literal> using <emphasis>Business key equality</emphasis>. Business key equality means that the <literal>equals()</literal> method compares only the properties that form the business key. It is a key that would identify our instance in the real world (a <emphasis>natural</emphasis> candidate key):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A business key does not have to be as solid as a database primary key candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable or unique properties are usually good candidates for a business key."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>The following features are currently considered experimental and may change in the near future.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Persistent entities do not necessarily have to be represented as POJO classes or as JavaBean objects at runtime. Hibernate also supports dynamic models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and the representation of entities as DOM4J trees. With this approach, you do not write persistent classes, only mapping files."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "By default, Hibernate works in normal POJO mode. You can set a default entity representation mode for a particular <literal>SessionFactory</literal> using the <literal>default_entity_mode</literal> configuration option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following examples demonstrate the representation using <literal>Map</literal>s. First, in the mapping file an <literal>entity-name</literal> has to be declared instead of, or in addition to, a class name:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even though associations are declared using target class names, the target type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "After setting the default entity mode to <literal>dynamic-map</literal> for the <literal>SessionFactory</literal>, you can, at runtime, work with <literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "One of the main advantages of dynamic mapping is quick turnaround time for prototyping, without the need for entity class implementation. However, you lose compile-time type checking and will likely deal with many exceptions at runtime. As a result of the Hibernate mapping, the database schema can easily be normalized and sound, allowing to add a proper domain model implementation on top later on."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Entity representation modes can also be set on a per <literal>Session</literal> basis:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that the call to <literal>getSession()</literal> using an <literal>EntityMode</literal> is on the <literal>Session</literal> API, not the <literal>SessionFactory</literal>. That way, the new <literal>Session</literal> shares the underlying JDBC connection, transaction, and other context information. This means you do not have to call <literal>flush()</literal> and <literal>close()</literal> on the secondary <literal>Session</literal>, and also leave the transaction and connection handling to the primary unit of work."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "More information about the XML representation capabilities can be found in <xref linkend=\"xml\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are responsible for managing a particular representation of a piece of data given that representation's <literal>org.hibernate.EntityMode</literal>. If a given piece of data is thought of as a data structure, then a tuplizer is the thing that knows how to create such a data structure and how to extract values from and inject values into such a data structure. For example, for the POJO entity mode, the corresponding tuplizer knows how create the POJO through its constructor. It also knows how to access the POJO properties using the defined property accessors."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are two high-level types of Tuplizers, represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for managing the above mentioned contracts in regards to entities, while <literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Users can also plug in their own tuplizers. Perhaps you require that a <literal>java.util.Map</literal> implementation other than <literal>java.util.HashMap</literal> be used while in the dynamic-map entity-mode. Or perhaps you need to define a different proxy generation strategy than the one used by default. Both would be achieved by defining a custom tuplizer implementation. Tuplizer definitions are attached to the entity or component mapping they are meant to manage. Going back to the example of our customer entity:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "EntityNameResolvers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <interfacename>org.hibernate.EntityNameResolver</interfacename> interface is a contract for resolving the entity name of a given entity instance. The interface defines a single method <methodname>resolveEntityName</methodname> which is passed the entity instance and is expected to return the appropriate entity name (null is allowed and would indicate that the resolver does not know how to resolve the entity name of the given entity instance). Generally speaking, an <interfacename>org.hibernate.EntityNameResolver</interfacename> is going to be most useful in the case of dynamic models. One example might be using proxied interfaces as your domain model. The hibernate test suite has an example of this exact style of usage under the <package>org.hibernate.test.dynamicentity.tuplizer2</package>. Here is some of the code from that package for illustration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In order to register an <interfacename>org.hibernate.EntityNameResolver</interfacename> users must either:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</link>, implementing the <methodname>getEntityNameResolvers</methodname> method."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</classname> (which is the implementation class for <interfacename>org.hibernate.SessionFactory</interfacename>) using the <methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/portability.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/portability.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/portability.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,136 @@
+# 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: 2010-03-25 06: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
+#: portability.xml:31
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr ""
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid "One of the selling points of Hibernate (and really Object/Relational Mapping as a whole) is the notion of database portability. This could mean an internal IT user migrating from one database vendor to another, or it could mean a framework or deployable application consuming Hibernate to simultaneously target multiple database products by their users. Regardless of the exact scenario, the basic idea is that you want Hibernate to help you run against any number of databases without changes to your code, and ideally without any changes to the mapping metadata."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid "The first line of portability for Hibernate is the dialect, which is a specialization of the <classname>org.hibernate.dialect.Dialect</classname> contract. A dialect encapsulates all the differences in how Hibernate must communicate with a particular database to accomplish some task like getting a sequence value or structuring a SELECT query. Hibernate bundles a wide range of dialects for many of the most popular databases. If you find that your particular database is not among them, it is not terribly difficult to write your own."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid "Originally, Hibernate would always require that users specify which dialect to use. In the case of users looking to simultaneously target multiple databases with their build that was problematic. Generally this required their users to configure the Hibernate dialect or defining their own method of setting that value."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid "Starting with version 3.2, Hibernate introduced the notion of automatically detecting the dialect to use based on the <interfacename>java.sql.DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql.Connection</interfacename> to that database. This was much better, expect that this resolution was limited to databases Hibernate know about ahead of time and was in no way configurable or overrideable."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:77
+#, no-c-format
+msgid "Starting with version 3.3, Hibernate has a fare more powerful way to automatically determine which dialect to should be used by relying on a series of delegates which implement the <interfacename>org.hibernate.dialect.resolver.DialectResolver</interfacename> which defines only a single method:<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect(DatabaseMetaData metaData) throws JDBCConnectionException]]></programlisting>. The basic contract here is that if the resolver 'understands' the given database metadata then it returns the corresponding Dialect; if not it returns null and the process continues to the next resolver. The signature also identifies <exceptionname>org.hibernate.exception.JDBCConnectionException</exceptionname> as possibly being thrown. A JDBCConnectionException here is interpreted to imply a \"non transient\" (aka non-recoverable) connection problem and is used to indicate an immediate stop to resolution attempts. All other exceptio!
 ns result in a warning and continuing on to the next resolver."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid "The cool part about these resolvers is that users can also register their own custom resolvers which will be processed ahead of the built-in Hibernate ones. This might be useful in a number of different situations: it allows easy integration for auto-detection of dialects beyond those shipped with HIbernate itself; it allows you to specify to use a custom dialect when a particular database is recognized; etc. To register one or more resolvers, simply specify them (seperated by commas, tabs or spaces) using the 'hibernate.dialect_resolvers' configuration setting (see the <constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate.cfg.Environment</classname>)."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:103
+#, no-c-format
+msgid "Identifier generation"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:105
+#, no-c-format
+msgid "When considering portability between databases, another important decision is selecting the identifier generation stratagy you want to use. Originally Hibernate provided the <emphasis>native</emphasis> generator for this purpose, which was intended to select between a <emphasis>sequence</emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> strategy depending on the capability of the underlying database. However, an insidious implication of this approach comes about when targtetting some databases which support <emphasis>identity</emphasis> generation and some which do not. <emphasis>identity</emphasis> generation relies on the SQL definition of an IDENTITY (or auto-increment) column to manage the identifier value; it is what is known as a post-insert generation strategy becauase the insert must actually happen before we can know the identifier value. Because Hibernate relies on this identifier value to uniquely reference entities within a persisten!
 ce context it must then issue the insert immediately when the users requests the entitiy be associated with the session (like via save() e.g.) regardless of current transactional semantics. <note> <para> Hibernate was changed slightly once the implication of this was better understood so that the insert is delayed in cases where that is feasible. </para> </note> The underlying issue is that the actual semanctics of the application itself changes in these cases."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid "Starting with version 3.2.3, Hibernate comes with a set of <ulink url=\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators targetting portability in a much different way. <note> <para> There are specifically 2 bundled <emphasis>enhanced</emphasis>generators: <itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> <classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </listitem> </itemizedlist> </para> </note> The idea behind these generators is to port the actual semantics of the identifer value generation to the different databases. For example, the <classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> mimics the behavior of a sequence on databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, no-c-format
+msgid "Database functions"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid "This is an area in Hibernate in need of improvement. In terms of portability concerns, this function handling currently works pretty well from HQL; however, it is quite lacking in all other aspects."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid "SQL functions can be referenced in many ways by users. However, not all databases support the same set of functions. Hibernate, provides a means of mapping a <emphasis>logical</emphasis> function name to a delegate which knows how to render that particular function, perhaps even using a totally different physical function call."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid "Technically this function registration is handled through the <classname>org.hibernate.dialect.function.SQLFunctionRegistry</classname> class which is intended to allow users to provide custom function definitions without having to provide a custom dialect. This specific behavior is not fully completed as of yet."
+msgstr ""
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid "It is sort of implemented such that users can programatically register functions with the <classname>org.hibernate.cfg.Configuration</classname> and those functions will be recognized for HQL."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr ""
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/preface.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/preface.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/preface.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,84 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an Object/Relational Mapping tool for Java environments. The term Object/Relational Mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities. It can also significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Read <xref linkend=\"architecture\" /> to understand the environments where Hibernate can be used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "View the <literal>eg/</literal> directory in the Hibernate distribution. It contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use this reference documentation as your primary source of information. Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need more help with application design, or if you prefer a step-by-step tutorial. Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Links to third party demos, examples, and tutorials are maintained on the Hibernate website."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue tracking system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_criteria.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_criteria.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_criteria.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,244 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The interface <literal>org.hibernate.Criteria</literal> represents a query against a particular persistent class. The <literal>Session</literal> is a factory for <literal>Criteria</literal> instances."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An individual query criterion is an instance of the interface <literal>org.hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate.criterion.Restrictions</literal> defines factory methods for obtaining certain built-in <literal>Criterion</literal> types."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are a range of built-in criterion types (<literal>Restrictions</literal> subclasses). One of the most useful allows you to specify SQL directly."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>{alias}</literal> placeholder with be replaced by the row alias of the queried entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also obtain a criterion from a <literal>Property</literal> instance. You can create a <literal>Property</literal> by calling <literal>Property.forName()</literal>:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can order the results using <literal>org.hibernate.criterion.Order</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "By navigating associations using <literal>createCriteria()</literal> you can specify constraints upon related entities:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The second <literal>createCriteria()</literal> returns a new instance of <literal>Criteria</literal> that refers to the elements of the <literal>kittens</literal> collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is also an alternate form that is useful in certain circumstances:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "(<literal>createAlias()</literal> does not create a new instance of <literal>Criteria</literal>.)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The kittens collections held by the <literal>Cat</literal> instances returned by the previous two queries are <emphasis>not</emphasis> pre-filtered by the criteria. If you want to retrieve just the kittens that match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This will return all of the <literal>Cat</literal>s with a mate whose name starts with \"good\" ordered by their mate's age, and all cats who do not have a mate. This is useful when there is a need to order or limit in the database prior to returning complex/large result sets, and removes many instances where multiple queries would have to be performed and the results unioned by java in memory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Without this feature, first all of the cats without a mate would need to be loaded in one query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A second query would need to retreive the cats with mates who's name started with \"good\" sorted by the mates age."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify association fetching semantics at runtime using <literal>setFetchMode()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This query will fetch both <literal>mate</literal> and <literal>kittens</literal> by outer join. See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The class <literal>org.hibernate.criterion.Example</literal> allows you to construct a query criterion from a given instance."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Version properties, identifiers and associations are ignored. By default, null valued properties are excluded."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The class <literal>org.hibernate.criterion.Projections</literal> is a factory for <literal>Projection</literal> instances. You can apply a projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There is no explicit \"group by\" necessary in a criteria query. Certain projection types are defined to be <emphasis>grouping projections</emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An alias can be assigned to a projection so that the projected value can be referred to in restrictions or orderings. Here are two different ways to do this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>alias()</literal> and <literal>as()</literal> methods simply wrap a projection instance in another, aliased, instance of <literal>Projection</literal>. As a shortcut, you can assign an alias when you add the projection to a projection list:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also use <literal>Property.forName()</literal> to express projections:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>DetachedCriteria</literal> class allows you to create a query outside the scope of a session and then execute it using an arbitrary <literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>DetachedCriteria</literal> can also be used to express a subquery. Criterion instances involving subqueries can be obtained via <literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For most queries, including criteria queries, the query cache is not efficient because query cache invalidation occurs too frequently. However, there is a special kind of query where you can optimize the cache invalidation algorithm: lookups by a constant natural key. In some applications, this kind of query occurs frequently. The criteria API provides special provision for this use case."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, map the natural key of your entity using <literal>&lt;natural-id&gt;</literal> and enable use of the second-level cache."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This functionality is not intended for use with entities with <emphasis>mutable</emphasis> natural keys."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Once you have enabled the Hibernate query cache, the <literal>Restrictions.naturalId()</literal> allows you to make use of the more efficient cache algorithm."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_hql.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_hql.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_hql.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,794 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate uses a powerful query language (HQL) that is similar in appearance to SQL. Compared with SQL, however, HQL is fully object-oriented and understands notions like inheritance, polymorphism and association."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "With the exception of names of Java classes and properties, queries are case-insensitive. 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
+#, no-c-format
+msgid "This manual uses lowercase HQL keywords. Some users find queries with uppercase keywords more readable, but this convention is unsuitable for queries embedded in Java code."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This returns all instances of the class <literal>eg.Cat</literal>. You do not usually need to qualify the class name, since <literal>auto-import</literal> is the default. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In order to refer to the <literal>Cat</literal> in other parts of the query, you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This query assigns the alias <literal>cat</literal> to <literal>Cat</literal> instances, so you can use that alias later in the query. The <literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Multiple classes can appear, resulting in a cartesian product or \"cross\" join."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is good practice to name query aliases using an initial lowercase as this is consistent with Java naming standards for local variables (e.g. <literal>domesticCat</literal>)."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also assign aliases to associated entities or to elements of a collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>inner join</literal>, <literal>left outer join</literal> and <literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You may supply extra join conditions using the HQL <literal>with</literal> keyword."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "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 outer join and lazy declarations of the mapping file for associations and collections. See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, 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). The associated objects are also not returned directly in the query results. Instead, they may be accessed via the parent object. The only reason you might need an alias is if you are recursively join fetching a further collection:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>fetch</literal> construct cannot be used in queries called using <literal>iterate()</literal> (though <literal>scroll()</literal> can be used). <literal>Fetch</literal> should be used together with <literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, as these operations are based on the result rows which usually contain duplicates for eager collection fetching, hence, the number of rows is not what you would expect. <literal>Fetch</literal> should also not be used together with impromptu <literal>with</literal> condition. It is possible to create a cartesian product by join fetching more than one collection in a query, so take care in this case. Join fetching multiple collection roles can produce unexpected results for bag mappings, so user discretion is advised when formulating queries in this case. Finally, note that <literal>full join fetch</literal> and <literal>right join fetch</literal> are not meaningful."
+msgstr ""
+
+#. Tag: para
+#, 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 in the first query immediately using <literal>fetch all properties</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL supports two forms of association joining: <literal>implicit</literal> and <literal>explicit</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The queries shown in the previous section all use the <literal>explicit</literal> form, that is, where the join keyword is explicitly used in the from clause. This is the recommended form."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>implicit</literal> form does not use the join keyword. Instead, the associations are \"dereferenced\" using dot-notation. <literal>implicit</literal> joins can appear in any of the HQL clauses. <literal>implicit</literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Referring to identifier property"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The special property (lowercase) <literal>id</literal> may be used to reference the identifier property of an entity <emphasis>provided that the entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the entity defines a named identifier property, you can use that property name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "References to composite identifier properties follow the same naming rules. If the entity has a non-identifier property named id, the composite identifier property can only be referenced by its defined named. Otherwise, the special <literal>id</literal> property can be used to reference the identifier property."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that, starting in version 3.2.2, this has changed significantly. In previous versions, <literal>id</literal> <emphasis>always</emphasis> referred to the identifier property regardless of its actual name. A ramification of that decision was that non-identifier properties named <literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>select</literal> clause picks which objects and properties to return in the query result set. Consider the following:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The query will select <literal>mate</literal>s of other <literal>Cat</literal>s. You can express this query more compactly as:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can return properties of any value type including properties of component type:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can return multiple objects and/or properties as an array of type <literal>Object[]</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Or - assuming that the class <literal>Family</literal> has an appropriate constructor - as an actual typesafe Java object:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is most useful when used together with <literal>select new map</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries can even return the results of aggregate functions on properties:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can use arithmetic operators, concatenation, and recognized SQL functions in the select clause:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>distinct</literal> and <literal>all</literal> keywords can be used and have the same semantics as in SQL."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "returns instances not only of <literal>Cat</literal>, but also of subclasses like <literal>DomesticCat</literal>. Hibernate queries can name <emphasis>any</emphasis> Java class or interface in the <literal>from</literal> clause. 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: para
+#, no-c-format
+msgid "The interface <literal>Named</literal> might be implemented by various persistent classes:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "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 cannot call these queries using <literal>Query.scroll()</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>where</literal> clause allows you to refine the list of instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>=</literal> operator can be used to compare not only properties, but also instances:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The special property (lowercase) <literal>id</literal> can be used to reference the unique identifier of an object. See <xref linkend=\"queryhql-identifier-property\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of composite identifiers can also be used. Consider the following example where <literal>Person</literal> has composite identifiers consisting of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"queryhql-identifier-property\" /> for more information regarding referencing identifier properties)"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "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."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also use components or composite user types, or properties of said component types. See <xref linkend=\"queryhql-components\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An \"any\" type has the special properties <literal>id</literal> and <literal>class</literal> that allows you to express a join in the following way (where <literal>AuditLog.item</literal> is a property mapped with <literal>&lt;any&gt;</literal>):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <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
+#, no-c-format
+msgid "Expressions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Expressions used in the <literal>where</literal> clause include the following:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr ""
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid "\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "string concatenation <literal>...||...</literal> or <literal>concat(...,...)</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>current_date()</literal>, <literal>current_time()</literal>, and <literal>current_timestamp()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, and <literal>year(...)</literal>"
+msgstr ""
+
+#. Tag: para
+#, 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(), mod()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>str()</literal> for converting numeric or temporal values to a readable string"
+msgstr ""
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid "the HQL <literal>index()</literal> function, that applies to aliases of a joined indexed collection"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL functions that take collection-valued path expressions: <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>, along with the special <literal>elements()</literal> and <literal>indices</literal> functions that can be quantified using <literal>some, all, exists, any, in</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Any database-supported SQL scalar function like <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters <literal>:name</literal>, <literal>:start_date</literal>, and <literal>:x1</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Java <literal>public static final</literal> constants <literal>eg.Color.TABBY</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Similarly, <literal>is null</literal> and <literal>is not null</literal> can be used to test for null values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Booleans can be easily used in expressions by declaring HQL query substitutions in Hibernate configuration:"
+msgstr ""
+
+#. Tag: para
+#, 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: para
+#, no-c-format
+msgid "You can test the size of a collection with the special property <literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For indexed collections, you can refer to the minimum and maximum indices using <literal>minindex</literal> and <literal>maxindex</literal> functions. Similarly, you can refer to the minimum and maximum elements of a collection of basic type using the <literal>minelement</literal> and <literal>maxelement</literal> functions. For example:"
+msgstr ""
+
+#. Tag: para
+#, 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):"
+msgstr ""
+
+#. Tag: para
+#, 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> - can only be used in the where clause in Hibernate3."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Elements of indexed collections (arrays, lists, and maps) can be referred to by index in a where clause only:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The expression inside <literal>[]</literal> can even be an arithmetic expression:"
+msgstr ""
+
+#. Tag: para
+#, 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: para
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Consider how much longer and less readable the following query would be in SQL:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The list returned by a query can be ordered by any property of a returned class or components:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>asc</literal> or <literal>desc</literal> indicate ascending or descending order respectively."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A query that returns aggregate values can be grouped by any property of a returned class or components:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "SQL functions and aggregate functions are allowed in the <literal>having</literal> and <literal>order by</literal> clauses if they are supported by the underlying database (i.e., not in MySQL)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Neither the <literal>group by</literal> clause nor the <literal>order by</literal> clause can contain arithmetic expressions. Hibernate also does not currently expand a grouped entity, so you cannot write <literal>group by cat</literal> if all properties of <literal>cat</literal> are non-aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For databases that support subselects, Hibernate 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: para
+#, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note that subqueries can also utilize <literal>row value constructor</literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr ""
+
+#. Tag: para
+#, 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 main strengths. The following example queries are similar to queries that have been used on recent projects. Please note that most queries you will write will be much simpler than the following examples."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following query returns the order id, number of items, the given minimum total value and the total value of the order for all unpaid orders for a particular customer. The results are ordered 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: para
+#, 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: para
+#, 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: para
+#, no-c-format
+msgid "If the <literal>statusChanges</literal> collection was mapped as a list, instead of a set, the query would have been much simpler to write."
+msgstr ""
+
+#. Tag: para
+#, 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: para
+#, no-c-format
+msgid "For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL now supports <literal>update</literal>, <literal>delete</literal> and <literal>insert ... select ...</literal> statements. See <xref linkend=\"batch-direct\" /> for more information."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+
+#. Tag: para
+#, 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: para
+#, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As this solution cannot return a <literal>User</literal> with zero messages because of the inner join, the following form is also useful:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collections are pageable by using the <literal>Query</literal> interface with a filter:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Components can be used similarly to the simple value types that are used in HQL queries. They can appear in the <literal>select</literal> clause as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "where the Person's name property is a component. Components can also be used in the <literal>where</literal> clause:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Another common use of components is in <link linkend=\"queryhql-tuple\">row value constructors</link>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL supports the use of ANSI SQL <literal>row value constructor</literal> syntax, sometimes referred to AS <literal>tuple</literal> syntax, even though the underlying database may not support that notion. Here, we are generally referring to multi-valued comparisons, typically associated with components. Consider an entity Person which defines a name component:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "That is valid syntax although it is a little verbose. You can make this more concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It can also be useful to specify this in the <literal>select</literal> clause:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Using <literal>row value constructor</literal> syntax can also be beneficial when using subqueries that need to compare against multiple values:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "One thing to consider when deciding if you want to use this syntax, is that the query will be dependent upon the ordering of the component sub-properties in the metadata."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_sql.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_sql.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/query_sql.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,594 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can 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 <literal>CONNECT</literal> keyword in Oracle. It also provides a clean migration path from a direct SQL/JDBC based application to Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 allows you to specify handwritten SQL, including stored procedures, for all create, update, delete, and load operations."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Execution of native SQL queries is controlled via the <literal>SQLQuery</literal> interface, which is obtained by calling <literal>Session.createSQLQuery()</literal>. The following sections describe how to use this API for querying."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "These will return a List of Object arrays (Object[]) with scalar values for each column in the CATS table. Hibernate will use ResultSetMetadata to deduce the actual order and types of the returned scalar values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To avoid the overhead of using <literal>ResultSetMetadata</literal>, or simply to be more explicit in what is returned, one can use <literal>addScalar()</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This will return Object arrays, but now it will not use <literal>ResultSetMetadata</literal> but will instead explicitly get the ID, NAME and BIRTHDATE column as respectively a Long, String and a Short from the underlying resultset. This also means that only these three columns will be returned, even though the query is using <literal>*</literal> and could return more than the three listed columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to leave out the type information for all or some of the scalars."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is essentially the same query as before, but now <literal>ResultSetMetaData</literal> is used to determine the type of NAME and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "How the java.sql.Types returned from ResultSetMetaData is mapped to Hibernate types is controlled by the Dialect. If a specific type is not mapped, or does not result in the expected type, it is possible to customize it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above queries were all about returning scalar values, basically returning the \"raw\" values from the resultset. The following shows how to get entity objects from a native sql query via <literal>addEntity()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Assuming that Cat is mapped as a class with the columns ID, NAME and BIRTHDATE the above queries will both return a List where each element is a Cat entity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the entity is mapped with a <literal>many-to-one</literal> to another entity it is required to also return this when performing the native query, otherwise a database specific \"column not found\" error will occur. The additional columns will automatically be returned when using the * notation, but we prefer to be explicit as in the following example for a <literal>many-to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to eagerly join in the <literal>Dog</literal> to avoid the possible extra roundtrip for initializing the proxy. This is done via the <literal>addJoin()</literal> method, which allows you to join in an association or collection."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this example, the returned <literal>Cat</literal>'s will have their <literal>dog</literal> property fully initialized without any extra roundtrip to the database. Notice that you added an alias name (\"cat\") to be able to specify the target property path of the join. It is possible to do the same eager joining for collections, e.g. if the <literal>Cat</literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "At this stage you are reaching the limits of what is possible with native queries, without starting to enhance the sql queries to make them usable in Hibernate. Problems can arise when returning multiple entities of the same type or when the default alias/column names are not enough."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Until now, the result set column names are assumed to be the same as the column names specified in the mapping document. This can be problematic for SQL queries that join multiple tables, since the same column names can appear in more than one table."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Column alias injection is needed in the following query (which most likely will fail):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The query was intended to return two Cat instances per row: a cat and its mother. The query will, however, fail because there is a conflict of names; the instances are mapped to the same column names. Also, on some databases the returned column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. which are not equal to the columns specified in the mappings (\"ID\" and \"NAME\")."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string, with placeholders for Hibernate to inject column aliases"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The {cat.*} and {mother.*} notation used above is a shorthand for \"all properties\". Alternatively, you can list the columns explicitly, but even in this case Hibernate injects the SQL column aliases for each property. The placeholder for a column alias is just the property name qualified by the table alias. In the following example, you retrieve Cats and their mothers from a different table (cat_log) to the one declared in the mapping metadata. You can even use the property aliases in the where clause."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases the above alias injection is needed. For queries relating to more complex mappings, like composite properties, inheritance discriminators, collections etc., you can use specific aliases that allow Hibernate to inject the proper aliases."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table shows the different ways you can use the alias injection. Please note that the alias names in the result are simply examples; each alias will have a unique and probably different name when used."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "property of the element in the collection"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the the collection"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to apply a ResultTransformer to native SQL queries, allowing it to return non-managed entities."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding properties or fields."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries which query for entities that are mapped as part of an inheritance must include all properties for the baseclass and all its subclasses."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Named SQL queries can be defined in the mapping document and called in exactly the same way as a named HQL query. In this case, you do <emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;return-join&gt;</literal> element is use to join associations and the <literal>&lt;load-collection&gt;</literal> element is used to define queries which initialize collections,"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A named SQL query may return a scalar value. You must declare the column alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> element:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can externalize the resultset mapping information in a <literal>&lt;resultset&gt;</literal> element which will allow you to either reuse them across several named queries or through the <literal>setResultSetMapping()</literal> API."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can, alternatively, use the resultset mapping information in your hbm files directly in java code."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can explicitly tell Hibernate what column aliases to use with <literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>&lt;return-property&gt;</literal> also works with multiple columns. This solves a limitation with the <literal>{}</literal>-syntax which cannot allow fine grained control of multi-column properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this example <literal>&lt;return-property&gt;</literal> was used in combination with the <literal>{}</literal>-syntax for injection. This allows users to choose how they want to refer column and properties."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your mapping has a discriminator you must use <literal>&lt;return-discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 provides support for queries via stored procedures and functions. Most of the following documentation is equivalent for both. The stored procedure/function must return a resultset as the first out-parameter to be able to work with Hibernate. An example of such a stored function in Oracle 9 and higher is as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedures currently only return scalars and entities. <literal>&lt;return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are not supported."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You cannot use stored procedures with Hibernate unless you follow some procedure/function rules. If they do not follow those rules they are not usable with Hibernate. If you still want to use these procedures you have to execute them via <literal>session.connection()</literal>. The rules are different for each database, since database vendors have different stored procedure semantics/syntax."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedure queries cannot be paged with <literal>setFirstResult()/setMaxResults()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The recommended call form is standard SQL92: <literal>{ ? = call functionName(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A function must return a result set. The first parameter of a procedure must be an <literal>OUT</literal> that returns a result set. This is done by using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle you need to define a <literal>REF CURSOR</literal> type. See Oracle literature for further information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The procedure must return a result set. Note that since these servers can return multiple result sets and update counts, Hibernate will iterate the results and take the first result that is a result set as its return value. Everything else will be discarded."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it will probably be more efficient, but this is not a requirement."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 can use custom SQL for create, update, and delete operations. The SQL can be overridden at the statement level or inidividual column level. This section describes statement overrides. For columns, see <xref linkend=\"mapping-column-read-and-write\" />."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The class and collection persisters in Hibernate already contain a set of configuration time generated strings (insertsql, deletesql, updatesql etc.). The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override these strings:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL is directly executed in your database, so you can use any dialect you like. This will reduce the portability of your mapping if you use database specific SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedures are supported if the <literal>callable</literal> attribute is set:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The order of the positional parameters is vital, as they must be in the same sequence as Hibernate expects them."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can view the expected order by enabling debug logging for the <literal>org.hibernate.persister.entity</literal> level. With this level enabled, Hibernate will print out the static SQL that is used to create, update, delete etc. entities. To view the expected sequence, do not include your custom SQL in the mapping files, as this will override the Hibernate generated static SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The stored procedures are in most cases required to return the number of rows inserted, updated and deleted, as Hibernate has some runtime checks for the success of the statement. Hibernate always registers the first statement parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also declare your own SQL (or HQL) queries for entity loading. As with inserts, updates, and deletes, this can be done at the individual column level as described in <xref linkend=\"mapping-column-read-and-write\" /> or at the statement level. Here is an example of a statement level override:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is just a named query declaration, as discussed earlier. You can reference this named query in a class mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define an entity loader that loads a collection by join fetching:"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/readonly.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/readonly.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/readonly.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,951 @@
+# 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: 2010-03-25 06: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
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid "Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ from what you may have encountered elsewhere. Incorrect usage may cause unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid "Hibernate does not dirty-check the entity's simple properties or single-ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid "Hibernate will not update simple properties or updatable single-ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid "Hibernate will not update the version of the read-only entity if only simple properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid "In some ways, Hibernate treats read-only entities the same as entities that are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid "Hibernate cascades operations to associations as defined in the entity mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid "Hibernate updates the version if the entity has a collection with changes that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid "Even if an entity is not read-only, its collection association can be affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid "For details about the affect of read-only entities on different property and association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid "It saves execution time by not dirty-checking simple properties or single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid "Only persistent entities can be made read-only. Transient and detached entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid "Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid "you can map an entity class as <emphasis>immutable</emphasis>; when an entity of an immutable class is made persistent, Hibernate automatically makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid "you can change a default so that entities loaded into the session by Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid "you can make an HQL query or criteria read-only so that entities loaded when the query or criteria executes, scrolls, or iterates, are automatically made read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid "you can make a persistent entity that is already in the in the session read-only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid "When an entity instance of an immutable class is made persistent, Hibernate automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid "An entity of an immutable class can created and deleted the same as an entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid "Hibernate treats a persistent entity of an immutable class the same way as a read-only persistent entity of a mutable class. The only exception is that Hibernate will not allow an entity of an immutable class to be changed so it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid "To change the default behavior so Hibernate loads entity instances of mutable classes into the session and automatically makes them read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid "To change the default back so entities loaded by Hibernate are not made read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid "If Session.isDefaultReadOnly() returns true, entities loaded by the following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid "executing, scrolling, or iterating HQL queries and criteria; to override this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid "persistent entities that are refreshed via Session.refresh(); a refreshed persistent entity will only be read-only if it was read-only before refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid "persistent entities added by the application via Session.persist(), Session.save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid "If Session.isDefaultReadOnly() returns false (the default) when an HQL query or criteria executes, then entities and proxies of mutable classes loaded by the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid "You can override this behavior so that entities and proxies loaded by an HQL query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid "<literal>Query.setReadOnly( true )</literal> must be called before <literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, <literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid "<literal>Criteria.setReadOnly( true )</literal> must be called before <literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid "Entities and proxies that exist in the session before being returned by an HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid "Uninitialized persistent collections returned by the query are not affected. Later, when the collection is initialized, entities loaded into the session will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid "Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria.setReadOnly( true )</literal> works well when a single HQL query or criteria loads all the entities and intializes all the proxies and collections that the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid "When it is not possible to load and initialize all necessary entities in a single query or criteria, you can temporarily change the session default to load entities as read-only before the query is executed. Then you can explicitly initialize proxies and collections before restoring the session default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+      "Session session = factory.openSession();\n"
+      "Transaction tx = session.beginTransaction();\n"
+      " \n"
+      "setDefaultReadOnly( true );\n"
+      "Contract contract = \n"
+      "   ( Contract ) session.createQuery(\n"
+      "           \"from Contract where customerName = 'Sherman'\" )\n"
+      "           .uniqueResult();\n"
+      "Hibernate.initialize( contract.getPlan() );\n"
+      "Hibernate.initialize( contract.getVariations() );\n"
+      "Hibernate.initialize( contract.getNotes() );\n"
+      "setDefaultReadOnly( false );\n"
+      "...\n"
+      "tx.commit();\n"
+      "session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid "If Session.isDefaultReadOnly() returns true, then you can use Query.setReadOnly( false ) and Criteria.setReadOnly( false ) to override this session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid "Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid "To change a read-only entity or proxy of a mutable class so it is no longer read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid "When a read-only entity or proxy is changed so it is no longer read-only, Hibernate assumes that the current state of the read-only entity is consistent with its database representation. If this is not true, then any non-flushed changes made before or while the entity was read-only, will be ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid "To throw away non-flushed changes and make the persistent entity consistent with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid "To flush changes made before or while the entity was read-only and make the database representation consistent with the current state of the persistent entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+      "// evict the read-only entity so it is detached\n"
+      "session.evict( entity );\n"
+      "\n"
+      "// make the detached entity (with the non-flushed changes) persistent\n"
+      "session.update( entity );\n"
+      "\n"
+      "// now entity is no longer read-only and its changes can be flushed\n"
+      "s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid "The following table summarizes how different property types are affected by making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid "* Behavior is different when the entity having the property/association is read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid "When a persistent object is read-only, Hibernate does not dirty-check simple properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid "Hibernate will not synchronize simple property state changes to the database. If you have automatic versioning, Hibernate will not increment the version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+      "Session session = factory.openSession();\n"
+      "Transaction tx = session.beginTransaction();\n"
+      "\n"
+      "// get a contract and make it read-only\n"
+      "Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "session.setReadOnly( contract, true );\n"
+      "\n"
+      "// contract.getCustomerName() is \"Sherman\"\n"
+      "contract.setCustomerName( \"Yogi\" );\n"
+      "tx.commit();\n"
+      "\n"
+      "tx = session.beginTransaction();\n"
+      "\n"
+      "contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "// contract.getCustomerName() is still \"Sherman\"\n"
+      "...\n"
+      "tx.commit();\n"
+      "session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid "Hibernate treats unidirectional one-to-one and many-to-one associations in the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid "We use the term <emphasis>unidirectional single-ended association</emphasis> when referring to functionality that is common to unidirectional one-to-one and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid "Hibernate does not dirty-check unidirectional single-ended associations when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid "If you change a read-only entity's reference to a unidirectional single-ended association to null, or to refer to a different entity, that change will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid "If an entity is of an immutable class, then its references to unidirectional single-ended associations must be assigned when that entity is first created. Because the entity is automatically made read-only, these references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid "If automatic versioning is used, Hibernate will not increment the version due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid "In the following examples, Contract has a unidirectional many-to-one association with Plan. Contract cascades save and update operations to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid "The following shows that changing a read-only entity's many-to-one association reference to null has no effect on the entity's database representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+      "// get a contract with an existing plan;\n"
+      "// make the contract read-only and set its plan to null \n"
+      "tx = session.beginTransaction();\n"
+      "Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "session.setReadOnly( contract, true );\n"
+      "contract.setPlan( null );\n"
+      "tx.commit();\n"
+      "\n"
+      "// get the same contract\n"
+      "tx = session.beginTransaction();\n"
+      "contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "\n"
+      "// contract.getPlan() still refers to the original plan;\n"
+      "\n"
+      "tx.commit();\n"
+      "session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid "The following shows that, even though an update to a read-only entity's many-to-one association has no affect on the entity's database representation, flush still cascades the save-update operation to the locally changed association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+      "// get a contract with an existing plan;\n"
+      "// make the contract read-only and change to a new plan\n"
+      "tx = session.beginTransaction();\n"
+      "Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "session.setReadOnly( contract, true );\n"
+      "Plan newPlan = new Plan( \"new plan\"\n"
+      "contract.setPlan( newPlan);\n"
+      "tx.commit();\n"
+      "\n"
+      "// get the same contract\n"
+      "tx = session.beginTransaction();\n"
+      "contract = ( Contract ) session.get( Contract.class, contractId );\n"
+      "newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+      "\n"
+      "// contract.getPlan() still refers to the original plan;\n"
+      "// newPlan is non-null because it was persisted when \n"
+      "// the previous transaction was committed; \n"
+      "\n"
+      "tx.commit();\n"
+      "session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid "Hibernate treats unidirectional one-to-many and many-to-many associations owned by a read-only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid "Hibernate dirty-checks unidirectional one-to-many and many-to-many associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid "The collection can contain entities that are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid "Entities can be added and removed from the collection; changes are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid "If automatic versioning is used, Hibernate will update the version due to changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid "updates that change the association reference to null or to refer to a different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid "If automatic versioning is used, Hibernate will not increment the version due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid "If an entity is of an immutable class, and it owns a bidirectional one-to-one association, then its reference must be assigned when that entity is first created. Because the entity is automatically made read-only, these references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid "When the owner is not read-only, Hibernate treats an association with a read-only entity the same as when the association is with an entity that is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid "A read-only entity has no impact on a bidirectional one-to-many/many-to-one association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid "the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid "the read-only entity is on the one-to-many side using a non-inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid "the one-to-many side uses a non-inverse collection that contains the read-only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid "a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid "a read-only entity can only be removed from the collection by an orphan delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid "Hibernate treats bidirectional many-to-many associations owned by a read-only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid "The collection on either side of the association can contain entities that are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid "Entities are added and removed from both sides of the collection; changes are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid "If automatic versioning is used, Hibernate will update the version due to changes in both sides of the collection if they dirty the entity owning the respective collections."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/session_api.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/session_api.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/session_api.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,759 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-02-11T05:38:15\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is a full object/relational mapping solution that not only shields the developer from the details of the underlying database management system, but also offers <emphasis>state management</emphasis> of objects. This is, contrary to the management of SQL <literal>statements</literal> in common JDBC/SQL persistence layers, a natural object-oriented view of persistence in Java applications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In other words, Hibernate application developers should always think about the <emphasis>state</emphasis> of their objects, and not necessarily about the execution of SQL statements. This part is taken care of by Hibernate and is only relevant for the application developer when tuning the performance of the system."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Transient</emphasis> - an object is transient if it has just been instantiated using the <literal>new</literal> operator, and it is not associated with a Hibernate <literal>Session</literal>. It has no persistent representation in the database and no identifier value has been assigned. Transient instances will be destroyed by the garbage collector if the application does not hold a reference anymore. Use the Hibernate <literal>Session</literal> to make an object persistent (and let Hibernate take care of the SQL statements that need to be executed for this transition)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Persistent</emphasis> - a persistent instance has a representation in the database and an identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a <literal>Session</literal>. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. Developers do not execute manual <literal>UPDATE</literal> statements, or <literal>DELETE</literal> statements when an object should be made transient."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Detached</emphasis> - a detached instance is an object that has been persistent, but its <literal>Session</literal> has been closed. The reference to the object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be reattached to a new <literal>Session</literal> at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them <emphasis>application transactions</emphasis>, i.e., a unit of work from the point of view of the user."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will now discuss the states and state transitions (and the Hibernate methods that trigger a transition) in more detail."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Newly instantiated instances of a a persistent class are considered <emphasis>transient</emphasis> by Hibernate. We can make a transient instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>Cat</literal> has a generated identifier, the identifier is generated and assigned to the <literal>cat</literal> when <literal>save()</literal> is called. If <literal>Cat</literal> has an <literal>assigned</literal> identifier, or a composite key, the identifier should be assigned to the <literal>cat</literal> instance before calling <literal>save()</literal>. You can also use <literal>persist()</literal> instead of <literal>save()</literal>, with the semantics defined in the EJB3 early draft."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>persist()</literal> makes a transient instance persistent. However, it does not guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. <literal>persist()</literal> also guarantees that it will not execute an <literal>INSERT</literal> statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>save()</literal> does guarantee to return an identifier. If an INSERT has to be executed to get the identifier ( e.g. \"identity\" generator, not \"sequence\"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is problematic in a long-running conversation with an extended Session/persistence context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can assign the identifier using an overloaded version of <literal>save()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the object you make persistent has associated objects (e.g. the <literal>kittens</literal> collection in the previous example), these objects can be made persistent in any order you like unless you have a <literal>NOT NULL</literal> constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a <literal>NOT NULL</literal> constraint if you <literal>save()</literal> the objects in the wrong order."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Usually you do not bother with this detail, as you will normally use Hibernate's <emphasis>transitive persistence</emphasis> feature to save the associated objects automatically. Then, even <literal>NOT NULL</literal> constraint violations do not occur - Hibernate will take care of everything. Transitive persistence is discussed later in this chapter."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>load()</literal> methods of <literal>Session</literal> provide a way of retrieving a persistent instance if you know its identifier. <literal>load()</literal> takes a class object and loads the state into a newly instantiated instance of that class in a persistent state."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Be aware that <literal>load()</literal> will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, <literal>load()</literal> just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This is useful if you wish to create an association to an object without actually loading it from the database. It also allows multiple instances to be loaded as a batch if <literal>batch-size</literal> is defined for the class mapping."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you are not certain that a matching row exists, you should use the <literal>get()</literal> method which hits the database immediately and returns null if there is no matching row."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</literal>, using a <literal>LockMode</literal>. See the API documentation for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Any associated instances or contained collections will <emphasis>not</emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to specify <literal>lock</literal> or <literal>all</literal> as a cascade style for the association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to re-load an object and all its collections at any time, using the <literal>refresh()</literal> method. This is useful when database triggers are used to initialize some of the properties of the object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "How much does Hibernate load from the database and how many SQL <literal>SELECT</literal>s will it use? This depends on the <emphasis>fetching strategy</emphasis>. This is explained in <xref linkend=\"performance-fetching\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not know the identifiers of the objects you are looking for, you need a query. Hibernate supports an easy-to-use but powerful object oriented query language (HQL). For programmatic query creation, Hibernate supports a sophisticated Criteria and Example query feature (QBC and QBE). You can also express your query in the native SQL of your database, with optional support from Hibernate for result set conversion into objects."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL and native SQL queries are represented with an instance of <literal>org.hibernate.Query</literal>. This interface offers methods for parameter binding, result set handling, and for the execution of the actual query. You always obtain a <literal>Query</literal> using the current <literal>Session</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A query is usually executed by invoking <literal>list()</literal>. The result of the query will be loaded completely into a collection in memory. Entity instances retrieved by a query are in a persistent state. The <literal>uniqueResult()</literal> method offers a shortcut if you know your query will only return a single object. Queries that make use of eager fetching of collections usually return duplicates of the root objects, but with their collections initialized. You can filter these duplicates through a <literal>Set</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Occasionally, you might be able to achieve better performance by executing the query using the <literal>iterate()</literal> method. This will usually be the case if you expect that the actual entity instances returned by the query will already be in the session or second-level cache. If they are not already cached, <literal>iterate()</literal> will be slower than <literal>list()</literal> and might require many database hits for a simple query, usually <emphasis>1</emphasis> for the initial select which only returns identifiers, and <emphasis>n</emphasis> additional selects to initialize the actual instances."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate queries sometimes return tuples of objects. Each tuple is returned as an array:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can specify a property of a class in the <literal>select</literal> clause. They can even call SQL aggregate functions. Properties or aggregates are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Methods on <literal>Query</literal> are provided for binding values to named parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters are identifiers of the form <literal>:name</literal> in the query string. The advantages of named parameters are as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters are insensitive to the order they occur in the query string"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you need to specify bounds upon your result set, that is, the maximum number of rows you want to retrieve and/or the first row you want to retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate knows how to translate this limit query into the native SQL of your DBMS."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the <literal>Query</literal> interface can be used to obtain a <literal>ScrollableResults</literal> object that allows flexible navigation of the query results."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note that an open database connection and cursor is required for this functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal> if you need offline pagination functionality."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define named queries in the mapping document. Remember to use a <literal>CDATA</literal> section if your query contains characters that could be interpreted as markup."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The actual program code is independent of the query language that is used. You can also define native SQL queries in metadata, or migrate existing queries to Hibernate by placing them in mapping files."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Also note that a query declaration inside a <literal>&lt;hibernate-mapping&gt;</literal> element requires a global unique name for the query, while a query declaration inside a <literal>&lt;class&gt;</literal> element is made unique automatically by prepending the fully qualified name of the class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A collection <emphasis>filter</emphasis> is a special type of query that can be applied to a persistent collection or array. The query string can refer to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The returned collection is considered a bag that is a copy of the given collection. The original collection is not modified. This is contrary to the implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Observe that filters do not require a <literal>from</literal> clause, although they can have one if required. Filters are not limited to returning the collection elements themselves."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Even an empty filter query is useful, e.g. to load a subset of elements in a large collection:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "HQL is extremely powerful, but some developers prefer to build queries dynamically using an object-oriented API, rather than building query strings. Hibernate provides an intuitive <literal>Criteria</literal> query API for these cases:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Criteria</literal> and the associated <literal>Example</literal> API are discussed in more detail in <xref linkend=\"querycriteria\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can express a query in SQL, using <literal>createSQLQuery()</literal> and let Hibernate manage the mapping from result sets to objects. You can at any time call <literal>session.connection()</literal> and use the JDBC <literal>Connection</literal> directly. If you choose to use the Hibernate API, you must enclose SQL aliases in braces:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "SQL queries can contain named and positional parameters, just like Hibernate queries. More information about native SQL queries in Hibernate can be found in <xref linkend=\"querysql\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Transactional persistent instances</emphasis> (i.e. objects loaded, saved, created or queried by the <literal>Session</literal>) can be manipulated by the application, and any changes to persistent state will be persisted when the <literal>Session</literal> is <emphasis>flushed</emphasis>. This is discussed later in this chapter. There is no need to call a particular method (like <literal>update()</literal>, which has a different purpose) to make your modifications persistent. The most straightforward way to update the state of an object is to <literal>load()</literal> it and then manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes this programming model is inefficient, as it requires in the same session both an SQL <literal>SELECT</literal> to load an object and an SQL <literal>UPDATE</literal> to persist its updated state. Hibernate offers an alternate approach by using detached instances."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not offer its own API for direct execution of <literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate is a <emphasis>state management</emphasis> service, you do not have to think in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for executing SQL statements, you can get a JDBC <literal>Connection</literal> at any time by calling <literal>session.connection()</literal>. Furthermore, the notion of mass operations conflicts with object/relational mapping for online transaction processing-oriented applications. Future versions of Hibernate can, however, provide special mass operation functions. See <xref linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Many applications need to retrieve an object in one transaction, send it to the UI layer for manipulation, then save the changes in a new transaction. 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
+#, no-c-format
+msgid "Hibernate supports this model by providing for reattachment of detached instances using the <literal>Session.update()</literal> or <literal>Session.merge()</literal> methods:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>Cat</literal> with identifier <literal>catId</literal> had already been loaded by <literal>secondSession</literal> when the application tried to reattach it, an exception would have been thrown."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Use <literal>update()</literal> if you are certain that the session does not contain an already persistent instance with the same identifier. Use <literal>merge()</literal> if you want to merge your modifications at any time without consideration of the state of the session. In other words, <literal>update()</literal> is usually the first method you would call in a fresh session, ensuring that the reattachment of your detached instances is the first operation that is executed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The application should individually <literal>update()</literal> detached instances that are reachable from the given detached instance <emphasis>only</emphasis> if it wants their state to be updated. This can be automated using <emphasis>transitive persistence</emphasis>. See <xref linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>lock()</literal> method also allows an application to reassociate an object with a new session. However, the detached instance has to be unmodified."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note that <literal>lock()</literal> can be used with various <literal>LockMode</literal>s. See the API documentation and the chapter on transaction handling for more information. Reattachment is not the only usecase for <literal>lock()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Other models for long units of work are discussed in <xref linkend=\"transactions-optimistic\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate users have requested a general purpose method that either saves a transient instance by generating a new identifier or updates/reattaches the detached instances associated with its current identifier. The <literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The usage and semantics of <literal>saveOrUpdate()</literal> seems to be confusing for new users. Firstly, so long as you are not trying to use instances from one session in another new session, you should not need to use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or <literal>merge()</literal>. Some whole applications will never use either of these methods."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are used in the following scenario:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the application persists these modifications by calling <literal>update()</literal> in a second session"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if another object associated with the session has the same identifier, throw an exception"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if the object's identifier has the value assigned to a newly instantiated object, <literal>save()</literal> it"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is versioned by a <literal>&lt;version&gt;</literal> or <literal>&lt;timestamp&gt;</literal>, and the version property value is the same value assigned to a newly instantiated object, <literal>save()</literal> it"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if there is a persistent instance with the same identifier currently associated with the session, copy the state of the given object onto the persistent instance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "if there is no persistent instance currently associated with the session, try to load it from the database, or create a new persistent instance"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "the given instance does not become associated with the session, it remains detached"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.delete()</literal> will remove an object's state from the database. Your application, however, can still hold a reference to a deleted object. It is best to think of <literal>delete()</literal> as making a persistent instance, transient."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can delete objects in any order, without risk of foreign key constraint violations. It is still possible to violate a <literal>NOT NULL</literal> constraint on a foreign key column by deleting objects in the wrong order, e.g. if you delete the parent, but forget to delete the children."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is sometimes useful to be able to take a graph of persistent instances and make them persistent in a different datastore, without regenerating identifier values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>ReplicationMode</literal> determines how <literal>replicate()</literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is an existing database row with the same identifier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing database row with the same identifier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there is an existing database row with the same identifier"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its version number is earlier than the version number of the object, or ignore the object otherwise"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Usecases for this feature include reconciling data entered into different database instances, upgrading system configuration information during product upgrades, rolling back changes made during non-ACID transactions and more."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes the <literal>Session</literal> will execute the SQL statements needed to synchronize the JDBC connection's state with the state of objects held in memory. This process, called <emphasis>flush</emphasis>, occurs by default at the following points:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all entity insertions in the same order the corresponding objects were saved using <literal>Session.save()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "all entity deletions in the same order the corresponding objects were deleted using <literal>Session.delete()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An exception is that objects using <literal>native</literal> ID generation are inserted when they are saved."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Except when you explicitly <literal>flush()</literal>, there are absolutely no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> executes the JDBC calls, only the <emphasis>order</emphasis> in which they are executed. However, Hibernate does guarantee that the <literal>Query.list(..)</literal> will never return stale or incorrect data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to change the default behavior so that flush occurs less frequently. The <literal>FlushMode</literal> class defines three different modes: only flush at commit time when the Hibernate <literal>Transaction</literal> API is used, flush automatically using the explained routine, or never flush unless <literal>flush()</literal> is called explicitly. The last mode is useful for long running units of work, where a <literal>Session</literal> is kept open and disconnected for a long time (see <xref linkend=\"transactions-optimistic-longsession\" />)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "During flush, an exception might occur (e.g. if a DML operation violates a constraint). Since handling exceptions involves some understanding of Hibernate's transactional behavior, we discuss it in <xref linkend=\"transactions\" />."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr ""
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid "If the children in a parent/child relationship would be value typed (e.g. a collection of addresses or strings), their life cycle would depend on the parent and no further action would be required for convenient \"cascading\" of state changes. When the parent is saved, the value-typed child objects are saved and when the parent is deleted, the children will be deleted, etc. This works for operations such as the removal of a child from the collection. Since value-typed objects cannot have shared references, Hibernate will detect this and delete the child from the database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now consider the same scenario with parent and child objects being entities, not value-types (e.g. categories and items, or parent and child cats). Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by reachability</emphasis> by default."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For each basic operation of the Hibernate session - including <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> - there is a corresponding cascade style. Respectively, the cascade styles are named <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>. If you want an operation to be cascaded along an association, you must indicate that in the mapping document. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use <literal>cascade=\"all\"</literal> to specify that <emphasis>all</emphasis> operations should be cascaded along the association. The default <literal>cascade=\"none\"</literal> specifies that no operations are to be cascaded."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A special cascade style, <literal>delete-orphan</literal>, applies only to one-to-many associations, and indicates that the <literal>delete()</literal> operation should be applied to any child object that is removed from the association."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It does not usually make sense to enable cascade on a <literal>&lt;many-to-one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and <literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the child object's lifespan is bounded by the lifespan of the parent object, make it a <emphasis>life cycle object</emphasis> by specifying <literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, 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 <literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping an association (either a single valued association, or a collection) with <literal>cascade=\"all\"</literal> marks the association as a <emphasis>parent/child</emphasis> style relationship where save/update/delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Furthermore, a mere reference to a child from a persistent parent will result in save/update of the child. This metaphor is incomplete, however. A child which becomes unreferenced by its parent is <emphasis>not</emphasis> automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</literal> association mapped with <literal>cascade=\"delete-orphan\"</literal>. The precise semantics of cascading operations for a parent/child relationship are as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>persist()</literal>, all children are passed to <literal>persist()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>merge()</literal>, all children are passed to <literal>merge()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal>, all children are passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a transient or detached child becomes referenced by a persistent parent, it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is deleted, all children are passed to <literal>delete()</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a child is dereferenced by a persistent parent, <emphasis>nothing special happens</emphasis> - the application should explicitly delete the child if necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which case the \"orphaned\" child is deleted."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, note that cascading of operations can be applied to an object graph at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All operations, if enabled, are cascaded to associated entities reachable when the operation is executed. However, <literal>save-update</literal> and <literal>delete-orphan</literal> are transitive for all associated entities reachable during flush of the <literal>Session</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate requires a rich meta-level model of all entity and value types. This model can be useful to the application itself. For example, the application might use Hibernate's metadata to implement a \"smart\" deep-copy algorithm that understands which objects should be copied (eg. mutable value types) and which objects that should not (e.g. immutable value types and, possibly, associated entities)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate exposes metadata via the <literal>ClassMetadata</literal> and <literal>CollectionMetadata</literal> interfaces and the <literal>Type</literal> hierarchy. Instances of the metadata interfaces can be obtained from the <literal>SessionFactory</literal>."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/toolset_guide.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/toolset_guide.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/toolset_guide.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,629 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Roundtrip engineering with Hibernate is possible using a set of Eclipse plugins, commandline tools, and Ant tasks."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hibernate Tools</emphasis> currently include plugins for the Eclipse IDE as well as Ant tasks for reverse engineering of existing databases:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping files that supports auto-completion and syntax highlighting. It also supports semantic auto-completion for class names and property/field names, making it more versatile than a normal XML editor."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Console:</emphasis> the console is a new view in Eclipse. In addition to a tree overview of your console configurations, you are also provided with an interactive view of your persistent classes and their relationships. The console allows you to execute HQL queries against your database and browse the result directly in Eclipse."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Development Wizards:</emphasis> several wizards are provided with the Hibernate Eclipse tools. You can use a wizard to quickly generate Hibernate configuration (cfg.xml) files, or to reverse engineer an existing database schema into POJO source files and Hibernate mapping files. The reverse engineering wizard supports customizable templates."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Please refer to the <emphasis>Hibernate Tools</emphasis> package documentation for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, the Hibernate main package comes bundled with an integrated tool : <emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even be used from \"inside\" Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "DDL can be generated from your mapping files by a Hibernate utility. The generated schema includes referential integrity constraints, primary and foreign keys, for entity and collection tables. Tables and sequences are also created for mapped identifier generators."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via the <literal>hibernate.dialect</literal> property when using this tool, as DDL is highly vendor-specific."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, you must customize your mapping files to improve the generated schema. The next section covers schema customization."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Many Hibernate mapping elements define optional attributes named <literal>length</literal>, <literal>precision</literal> and <literal>scale</literal>. You can set the length, precision and scale of a column with this attribute."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Some tags also accept a <literal>not-null</literal> attribute for generating a <literal>NOT NULL</literal> constraint on table columns, and a <literal>unique</literal> attribute for generating <literal>UNIQUE</literal> constraint on table columns."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>unique-key</literal> attribute can be used to group columns in a single, unique key constraint. Currently, the specified value of the <literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to name the constraint in the generated DDL. It is only used to group the columns in the mapping file."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An <literal>index</literal> attribute specifies the name of an index that will be created using the mapped column or columns. Multiple columns can be grouped into the same index by simply specifying the same index name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>foreign-key</literal> attribute can be used to override the name of any generated foreign key constraint."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Many mapping elements also accept a child <literal>&lt;column&gt;</literal> element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>default</literal> attribute allows you to specify a default value for a column.You should assign the same value to the mapped property before saving a new instance of the mapped class."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>sql-type</literal> attribute allows the user to override the default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>check</literal> attribute allows you to specify a check constraint."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>length</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>precision</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>scale</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of the foreign key constraint generated for an association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "overrides the default column type (attribute of <literal>&lt;column&gt;</literal> element only)"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>default</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>check</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;comment&gt;</literal> element allows you to specify comments for the generated schema."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This results in a <literal>comment on table</literal> or <literal>comment on column</literal> statement in the generated DDL where supported."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaExport</literal> tool writes a DDL script to standard out and/or executes the DDL statements."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table displays the <literal>SchemaExport</literal> command line options"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "do not output the script to stdout"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--create</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--text</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export to the database"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--format</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Database properties can be specified:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaUpdate</literal> tool will update an existing schema with \"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export the script to the database"
+msgstr ""
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaValidator</literal> tool will validate that the existing database schema \"matches\" your mapping documents. The <literal>SchemaValidator</literal> depends heavily upon the JDBC metadata API and, as such, will not work with all JDBC drivers. This tool is extremely useful for testing."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The following table displays the <literal>SchemaValidator</literal> command line options:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/transactions.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/transactions.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/transactions.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,659 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Transactions and Concurrency"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The most important point about Hibernate and concurrency control is that it is easy to understand. Hibernate directly uses JDBC connections and JTA resources without adding any additional locking behavior. It is recommended that you spend some time with the JDBC, ANSI, and transaction isolation specification of your database management system."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not lock objects in memory. Your application can expect the behavior as defined by the isolation level of your database transactions. Through <literal>Session</literal>, which is also a transaction-scoped cache, Hibernate provides repeatable reads for lookup by identifier and entity queries and not reporting queries that return scalar values."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In addition to versioning for automatic optimistic concurrency control, Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> syntax, a (minor) API for pessimistic locking of rows. Optimistic concurrency control and this API are discussed later in this chapter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The discussion of concurrency control in Hibernate begins with the granularity of <literal>Configuration</literal>, <literal>SessionFactory</literal>, and <literal>Session</literal>, as well as database transactions and long conversations."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe object, intended to be shared by all application threads. It is created once, usually on application startup, from a <literal>Configuration</literal> instance."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>Session</literal> is an inexpensive, non-threadsafe object that should be used once and then discarded for: a single request, a conversation or a single unit of work. A <literal>Session</literal> will not obtain a JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, unless it is needed. It will not consume any resources until used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In order to reduce lock contention in the database, a database transaction has to be as short as possible. Long database transactions will prevent your application from scaling to a highly concurrent load. It is not recommended that you hold a database transaction open during user think time until the unit of work is complete."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "What is the scope of a unit of work? Can a single Hibernate <literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, let's define a unit of work. A unit of work is a design pattern described by Martin Fowler as <quote> [maintaining] a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems. </quote><citation>PoEAA</citation> In other words, its a series of operations we wish to carry out against the database together. Basically, it is a transaction, though fulfilling a unit of work will often span multiple physical database transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really we are talking about a more abstract notion of a transaction. The term \"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use the <emphasis>session-per-operation</emphasis> antipattern: do not open and close a <literal>Session</literal> for every simple database call in a single thread. 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. This also means that auto-commit after every single SQL statement is useless in an application as this mode is intended for ad-hoc SQL console work. Hibernate disables, or expects the application server to disable, auto-commit mode immediately. Database transactions are never optional. All communication with a database has to occur inside a transaction. Auto-commit behavior for reading data should be avoided, as many small transactions are unlikely to perform better than one clearly defined unit of work. The latter is also more maintainable and extensible."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The most common pattern in a multi-user client/server application is <emphasis>session-per-request</emphasis>. In this model, a request from the client is sent to the server, where the Hibernate persistence layer runs. A new Hibernate <literal>Session</literal> is opened, and all database operations are executed in this unit of work. On completion of the work, and once the response for the client has been prepared, the session is flushed and closed. Use a single database transaction to serve the clients request, starting and committing it when you open and close the <literal>Session</literal>. The relationship between the two is one-to-one and this model is a perfect fit for many applications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The challenge lies in the implementation. Hibernate provides built-in management of the \"current session\" to simplify this pattern. Start a transaction when a server request has to be processed, and end the transaction before the response is sent to the client. Common solutions are <literal>ServletFilter</literal>, AOP interceptor with a pointcut on the service methods, or a proxy/interception container. An EJB container is a standardized way to implement cross-cutting aspects such as transaction demarcation on EJB session beans, declaratively with CMT. If you use programmatic transaction demarcation, for ease of use and code portability use the Hibernate <literal>Transaction</literal> API shown later in this chapter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Your application code can access a \"current session\" to process the request by calling <literal>sessionFactory.getCurrentSession()</literal>. You will always get a <literal>Session</literal> scoped to the current database transaction. This has to be configured for either resource-local or JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can extend the scope of a <literal>Session</literal> and database transaction until the \"view has been rendered\". This is especially useful in servlet applications that utilize a separate rendering phase after the request has been processed. Extending the database transaction until view rendering, is achieved by implementing your own interceptor. However, this will be difficult if you rely on EJBs with container-managed transactions. A transaction will be completed when an EJB method returns, before rendering of any view can start. See the Hibernate website and forum for tips and examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The session-per-request pattern is not the only way of designing units of work. Many business processes require a whole series of interactions with the user that are interleaved with database accesses. In web and enterprise applications, it is not acceptable for a database transaction to span a user interaction. Consider the following example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first screen of a dialog opens. The data seen by the user has been loaded in a particular <literal>Session</literal> and database transaction. The user is free to modify the objects."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The user clicks \"Save\" after 5 minutes and expects their modifications to be made persistent. The user also expects that they were the only person editing this information and that no conflicting modification has occurred."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "From the point of view of the user, we call this unit of work a long-running <emphasis>conversation</emphasis> or <emphasis>application transaction</emphasis>. There are many ways to implement this in your application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow the application to scale with the number of concurrent users."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You have to use several database transactions to implement the conversation. In this case, maintaining isolation of business processes becomes the partial responsibility of the application tier. A single conversation 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 (for example, in a wizard-style dialog spanning several request/response cycles). This is easier to implement than it might sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic optimistic concurrency control for you. It can automatically detect if a concurrent modification occurred during user think time. Check for this at the end of the conversation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Detached Objects</emphasis>: if you decide to use the <emphasis>session-per-request</emphasis> pattern, all loaded instances will be in the detached state during user think time. Hibernate allows you to reattach the objects and persist the modifications. The pattern is called <emphasis>session-per-request-with-detached-objects</emphasis>. Automatic versioning is used to isolate concurrent modifications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Extended (or Long) Session</emphasis>: the Hibernate <literal>Session</literal> can be disconnected from the underlying JDBC connection after the database transaction has been committed and reconnected when a new client request occurs. This pattern is known as <emphasis>session-per-conversation</emphasis> and makes even reattachment unnecessary. Automatic versioning is used to isolate concurrent modifications and the <literal>Session</literal> will not be allowed to be flushed automatically, but explicitly."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Both <emphasis>session-per-request-with-detached-objects</emphasis> and <emphasis>session-per-conversation</emphasis> have advantages and disadvantages. These disadvantages are discussed later in this chapter in the context of optimistic concurrency control."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An application can concurrently access the same persistent state in two different <literal>Session</literal>s. However, an instance of a persistent class is never shared between two <literal>Session</literal> instances. It is for this reason that there are two different notions of identity:"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr ""
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For objects attached to a <emphasis>particular</emphasis> <literal>Session</literal> (i.e., in the scope of a <literal>Session</literal>), the two notions are equivalent and JVM identity for database identity is guaranteed by Hibernate. While the application might concurrently access the \"same\" (persistent identity) business object in two different sessions, the two instances will actually be \"different\" (JVM identity). Conflicts are resolved using an optimistic approach and automatic versioning at flush/commit time."
+msgstr ""
+
+#. Tag: para
+#, 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 means that it does not need expensive locking or other means of synchronization. The application does not need to synchronize on any business object, as long as it maintains a single thread per <literal>Session</literal>. Within a <literal>Session</literal> the application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, an application that uses <literal>==</literal> outside of a <literal>Session</literal> might produce 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). JVM identity, however, is by definition not guaranteed for instances in a detached state. The developer has to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods in persistent classes and implement their own notion of object equality. There is one caveat: never use the database identifier to implement equality. Use a business key that is a combination of unique, usually immutable, attributes. The database identifier will change if a transient object is made persistent. If the transient instance (usually together with detached instances) is held in a <literal>Set</literal>, changing the hashcode bre!
 aks the contract of the <literal>Set</literal>. Attributes for business keys do not 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. Please note that this is not a Hibernate issue, but simply how Java object identity and equality has to be implemented."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> or <emphasis>session-per-application</emphasis> (there are, however, rare exceptions to this rule). Some of the following issues might also arise within the recommended patterns, so ensure that you understand the implications before making a design decision:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>Session</literal> is not thread-safe. Things that work concurrently, like HTTP requests, session beans, or Swing workers, will cause race conditions if a <literal>Session</literal> instance is shared. If you keep your Hibernate <literal>Session</literal> in your <literal>HttpSession</literal> (this is discussed later in the chapter), you should consider synchronizing access to your Http session. Otherwise, a user that clicks reload fast enough can use the same <literal>Session</literal> in two concurrently running threads."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An exception thrown by Hibernate means you have to rollback your database transaction and close the <literal>Session</literal> immediately (this is discussed in more detail later in the chapter). If your <literal>Session</literal> is bound to the application, you have to stop the application. Rolling back the database transaction does not put your business objects back into the state they were at the start of the transaction. This means that the database state and the business objects will be out of sync. Usually this is not a problem, because exceptions are not recoverable and you will have to start over after rollback anyway."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Session</literal> caches every object that is in a persistent state (watched and checked for dirty state by Hibernate). If you keep it open for a long time or simply load too much data, it will grow endlessly until you get an OutOfMemoryException. One solution is to call <literal>clear()</literal> and <literal>evict()</literal> to manage the <literal>Session</literal> cache, but you should consider a Stored Procedure if you need mass data operations. Some solutions are shown in <xref linkend=\"batch\" />. Keeping a <literal>Session</literal> open for the duration of a user session also means a higher probability of stale data."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Database, 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. Certainly, a single database transaction is going to perform better than many small transactions, even for reading data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A Hibernate application can run in non-managed (i.e., standalone, simple Web- or Swing applications) and managed J2EE environments. In a non-managed environment, Hibernate is usually responsible for its own database connection pool. The application developer has to manually set transaction boundaries (begin, commit, or rollback database transactions) themselves. A managed environment usually provides container-managed transactions (CMT), with the transaction assembly defined declaratively (in deployment descriptors of EJB session beans, for example). Programmatic transaction demarcation is then no longer necessary."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "However, it is often desirable to keep your persistence layer portable between non-managed resource-local environments, and systems that can rely on JTA but use BMT instead of CMT. In both cases use programmatic transaction demarcation. Hibernate offers a wrapper API called <literal>Transaction</literal> that translates into the native transaction system of your deployment environment. This API is actually optional, but we strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We discussed Flushing the session earlier, so we will now have a closer look at transaction demarcation and exception handling in both managed and non-managed environments."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If a Hibernate persistence layer runs in a non-managed environment, database connections are usually handled by simple (i.e., non-DataSource) connection pools from which Hibernate obtains connections as needed. The session/transaction handling idiom looks like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You do not have to <literal>flush()</literal> the <literal>Session</literal> explicitly: the call to <literal>commit()</literal> automatically triggers the synchronization depending on the <link linkend=\"objectstate-flushing\">FlushMode</link> for the session. A call to <literal>close()</literal> marks the end of a session. The main implication of <literal>close()</literal> is that the JDBC connection will be relinquished by the session. This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "As outlined earlier, a much more flexible solution is Hibernate's built-in \"current session\" context management:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You will not see these code snippets in a regular application; fatal (system) exceptions should always be caught at the \"top\". In other words, the code that executes Hibernate 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. The current context management by Hibernate can significantly simplify this design by accessing a <literal>SessionFactory</literal>. Exception handling is discussed later in this chapter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</literal>, which is the default, and for the second example select <literal>\"thread\"</literal> as your <literal>hibernate.current_session_context_class</literal>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If your persistence layer runs in an application server (for example, behind EJB session beans), every datasource connection obtained by Hibernate will automatically be part of the global JTA transaction. You can also install a standalone JTA implementation and use it without EJB. Hibernate offers two strategies for JTA integration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you use bean-managed transactions (BMT), Hibernate will tell the application server to start and end a BMT transaction if you use the <literal>Transaction</literal> API. The transaction management code is identical to the non-managed environment."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to use a transaction-bound <literal>Session</literal>, that is, the <literal>getCurrentSession()</literal> functionality for easy context propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "With CMT, transaction demarcation is completed in session bean deployment descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In a CMT/EJB, even rollback happens automatically. An unhandled <literal>RuntimeException</literal> thrown by a session bean method tells the container to set the global transaction to rollback. <emphasis>You do not need to use the Hibernate <literal>Transaction</literal> API at all with BMT or CMT, and you get automatic propagation of the \"current\" Session bound to the transaction.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When configuring Hibernate's transaction factory, choose <literal>org.hibernate.transaction.JTATransactionFactory</literal> if you use JTA directly (BMT), and <literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT session bean. Remember to also set <literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that your <literal>hibernate.current_session_context_class</literal> is either unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>getCurrentSession()</literal> operation has one downside in a JTA environment. There is one caveat to the use of <literal>after_statement</literal> connection release mode, which is then used by default. 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. Most applications can easily avoid using <literal>scroll()</literal> or <literal>iterate()</literal> from the JTA or CMT code.)"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>Session</literal> throws an exception, including any <literal>SQLException</literal>, immediately rollback the database transaction, call <literal>Session.close()</literal> and discard the <literal>Session</literal> instance. Certain methods of <literal>Session</literal> will <emphasis>not</emphasis> leave the session in a consistent state. No exception thrown by Hibernate can be treated as recoverable. Ensure that the <literal>Session</literal> will be closed by calling <literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+
+#. Tag: para
+#, 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. It was not in older versions of Hibernate. In our opinion, we should not force the application developer to catch an unrecoverable exception at a low layer. In most systems, unchecked and fatal exceptions are handled in one of the first frames of the method call stack (i.e., in higher layers) and either an error message is presented to the application user or some other appropriate action is taken. Note that Hibernate might also throw other unchecked exceptions that are not a <literal>HibernateException</literal>. These are not recoverable and appropriate action should be taken."
+msgstr ""
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid "<literal>JDBCConnectionException</literal>: indicates an error with the underlying JDBC communication."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>SQLGrammarException</literal>: indicates a grammar or syntax problem with the issued SQL."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ConstraintViolationException</literal>: indicates some form of integrity constraint violation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockAcquisitionException</literal>: indicates an error acquiring a lock level necessary to perform the requested operation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>GenericJDBCException</literal>: a generic exception which did not fall into any of the other categories."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "An important feature provided by a managed environment like EJB, that is never provided for non-managed code, is transaction timeout. Transaction timeouts ensure that no misbehaving transaction can indefinitely tie up resources while returning no response to the user. Outside a managed (JTA) environment, Hibernate cannot fully provide this functionality. However, Hibernate can at least control data access operations, ensuring that database level deadlocks and queries with huge result sets are limited by a defined timeout. In a managed environment, Hibernate can delegate transaction timeout to JTA. This functionality is abstracted by the Hibernate <literal>Transaction</literal> object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>setTimeout()</literal> cannot be called in a CMT bean, where transaction timeouts must be defined declaratively."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr ""
+
+#. Tag: para
+#, 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 three possible approaches to writing application code that uses optimistic concurrency. The use cases we discuss are in the context of long conversations, but version checking also has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In an implementation without much help from Hibernate, each interaction with the database occurs in a new <literal>Session</literal> and the developer is responsible for reloading all persistent instances from the database before manipulating them. The application is forced to carry out its own version checking to ensure conversation transaction isolation. This approach is the least efficient in terms of database access. It is the approach most similar to entity EJBs."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>version</literal> property is mapped using <literal>&lt;version&gt;</literal>, and Hibernate will automatically increment it during flush if the entity is dirty."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you are operating in a low-data-concurrency environment, and do not require version checking, you can use this approach and skip the version check. In this case, <emphasis>last commit wins</emphasis> is the default strategy for long conversations. Be aware 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
+#, no-c-format
+msgid "Manual version checking is only feasible in 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 an extended <literal>Session</literal> or detached instances as the design paradigm."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A single <literal>Session</literal> instance and its persistent instances that are used for the whole conversation are known as <emphasis>session-per-conversation</emphasis>. Hibernate checks instance versions at flush time, throwing an exception if concurrent modification is detected. It is up to the developer to catch and handle this exception. Common options are the opportunity for the user to merge changes or to restart the business conversation with non-stale data."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Session</literal> is disconnected from any underlying JDBC connection when waiting for user interaction. This approach is the most efficient in terms of database access. The application does not version check or reattach detached instances, nor does it have to reload instances in every database transaction."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>foo</literal> object knows which <literal>Session</literal> it was loaded in. Beginning a new database transaction on an old session obtains a new connection and resumes the session. Committing a database transaction disconnects a session from the JDBC connection and returns the connection to the pool. After reconnection, to force a version check on data you are not updating, you can call <literal>Session.lock()</literal> with <literal>LockMode.READ</literal> on any objects that might have been updated by another transaction. You do not need to lock any data that you <emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode.MANUAL</literal> on an extended <literal>Session</literal>, so that only the last database transaction cycle is allowed to actually persist all modifications made in this conversation. Only this last database transaction will include the <literal>flush()</literal> operation, and then <literal>close()</literal> the se!
 ssion to end the conversation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This pattern is problematic if the <literal>Session</literal> is too big to be stored during user think time (for example, an <literal>HttpSession</literal> should be kept as small as possible). As the <literal>Session</literal> is also the first-level cache and contains all loaded objects, we can probably use this strategy only for a few request/response cycles. Use a <literal>Session</literal> only for a single conversation as it will soon have stale data."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Earlier versions of Hibernate required explicit disconnection and reconnection of a <literal>Session</literal>. These methods are deprecated, as beginning and ending a transaction has the same effect."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Keep the disconnected <literal>Session</literal> close to the persistence layer. Use an EJB stateful session bean to hold the <literal>Session</literal> in a three-tier environment. Do not transfer it to the web layer, or even serialize it to a separate tier, to store it in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The extended session pattern, or <emphasis>session-per-conversation</emphasis>, is more difficult to implement with automatic current session context management. You need to supply your own implementation of the <literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki for examples."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Each interaction with the persistent store occurs in a new <literal>Session</literal>. 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 <literal>Session</literal> and then reattaches them using <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Again, Hibernate will check instance versions during flush, throwing an exception if conflicting updates occurred."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also call <literal>lock()</literal> instead of <literal>update()</literal>, and use <literal>LockMode.READ</literal> (performing a version check and bypassing all caches) if you are sure that the object has not been modified."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can disable Hibernate's automatic version increment for particular properties and collections by setting the <literal>optimistic-lock</literal> mapping attribute to <literal>false</literal>. Hibernate will then no longer increment versions if the property is dirty."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Legacy database schemas are often static and cannot be modified. Or, other applications might access the same database and will not know how to handle version numbers or even timestamps. In both cases, versioning cannot rely on a particular column in a table. To force a version check with a comparison of the state of all fields in a row but without a version or timestamp property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the <literal>&lt;class&gt;</literal> mapping. This conceptually only works if Hibernate can compare the old and the new state (i.e., if you use a single long <literal>Session</literal> and not session-per-request-with-detached-objects)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Concurrent modification can be permitted in instances where the changes that have been made do not overlap. If you set <literal>optimistic-lock=\"dirty\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate will only compare dirty fields during flush."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In both cases, with dedicated version/timestamp columns or with a full/dirty field comparison, Hibernate uses a single <literal>UPDATE</literal> statement, with an appropriate <literal>WHERE</literal> clause, per entity to execute the version check and update the information. If you use transitive persistence to cascade reattachment to associated entities, Hibernate may execute unnecessary updates. This is usually not a problem, but <emphasis>on update</emphasis> triggers in the database might be executed even when no changes have been made to detached instances. You can customize this behavior by setting <literal>select-before-update=\"true\"</literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate to <literal>SELECT</literal> the instance to ensure that changes did occur before updating the row."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Pessimistic locking"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is not intended that users spend much time worrying about locking strategies. It is usually enough to specify an isolation level for the JDBC connections and then simply let the database do all the work. However, advanced users may wish to obtain exclusive pessimistic locks or re-obtain locks at the start of a new transaction."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will always use the locking mechanism of the database; it never lock objects in memory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>LockMode</literal> class defines the different lock levels that can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate updates or inserts a row."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user request using <literal>SELECT ... FOR UPDATE</literal> on databases which support that syntax."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under Oracle."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.READ</literal> is acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. It can be re-acquired by explicit user request."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.NONE</literal> represents the absence of a lock. All objects switch to this lock mode at the end of a <literal>Transaction</literal>. Objects associated with the session via a call to <literal>update()</literal> or <literal>saveOrUpdate()</literal> also start out in this lock mode."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The \"explicit user request\" is expressed in one of the following ways:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>Session.load()</literal> is called with <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was not yet loaded by the session, the object is loaded using <literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is called for an object that is already loaded with a less restrictive lock than the one requested, Hibernate calls <literal>lock()</literal> for that object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.lock()</literal> performs a version number check if the specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR UPDATE</literal> is used."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If the requested lock mode is not supported by the database, Hibernate uses an appropriate alternate mode instead of throwing an exception. This ensures that applications are portable."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Connection release modes"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "One of the legacies of Hibernate 2.x JDBC connection management meant that a <literal>Session</literal> would obtain a connection when it was first required and then maintain that connection until the session was closed. Hibernate 3.x introduced the notion of connection release modes that would instruct a session how to handle its JDBC connections. The following discussion is pertinent only to connections provided through a configured <literal>ConnectionProvider</literal>. User-supplied connections are outside the breadth of this discussion. The different release modes are identified by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ON_CLOSE</literal>: is the legacy behavior described above. The Hibernate session obtains a connection when it first needs to perform some JDBC access and maintains that connection until the session is closed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>AFTER_TRANSACTION</literal>: releases connections after a <literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): releases connections after every statement execution. This aggressive releasing is skipped if that statement leaves open resources associated with the given session. Currently the only situation where this occurs is through the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The configuration parameter <literal>hibernate.connection.release_mode</literal> is used to specify which release mode to use. The possible values are as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>auto</literal> (the default): this choice delegates to the release mode returned by the <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this default behavior as failures due to the value of this setting tend to indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>after_transaction</literal>: uses ConnectionReleaseMode.AFTER_TRANSACTION. This setting should not be used in JTA environments. Also note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is considered to be in auto-commit mode, connections will be released as if the release mode were AFTER_STATEMENT."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>after_statement</literal>: uses ConnectionReleaseMode.AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</literal> is consulted to see if it supports this setting (<literal>supportsAggressiveRelease()</literal>). If not, the release mode is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only safe in environments where we can either re-acquire the same underlying JDBC connection each time you make a call into <literal>ConnectionProvider.getConnection()</literal> or in auto-commit environments where it does not matter if we re-establish the same connection."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/tutorial.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/tutorial.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/tutorial.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,699 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Intended for new users, this chapter provides an step-by-step introduction to Hibernate, starting with a simple application using an in-memory database. The tutorial is based on an earlier tutorial developed by Michael Gloegl. All code is contained in the <filename>tutorials/web</filename> directory of the project source."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This tutorial expects the user have knowledge of both Java and SQL. If you have a limited knowledge of JAVA or SQL, it is advised that you start with a good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The distribution contains another example application under the <filename>tutorial/eg</filename> project source directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For this example, we will set up a small database application that can store events we want to attend and information about the host(s) of these events."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Although you can use whatever database you feel comfortable using, we will use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java database) to avoid describing installation/setup of any particular database servers."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first thing we need to do is to set up the development environment. We will be using the \"standard layout\" advocated by alot of build tools such as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has a good resource describing this <ulink url=\"http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html\">layout</ulink>. As this tutorial is to be a web application, we will be creating and making use of <filename>src/main/java</filename>, <filename>src/main/resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will be using Maven in this tutorial, taking advantage of its transitive dependency management capabilities as well as the ability of many IDEs to automatically set up a project for us based on the maven descriptor."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is not a requirement to use Maven. If you wish to use something else to build this tutoial (such as Ant), the layout will remain the same. The only change is that you will need to manually account for all the needed dependencies. If you use something like <ulink url=\"http://ant.apache.org/ivy/\">Ivy</ulink> providing transitive dependency management you would still use the dependencies mentioned below. Otherwise, you'd need to grab <emphasis>all</emphasis> dependencies, both explicit and transitive, and add them to the project's classpath. If working from the Hibernate distribution bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts in the <filename>lib/required</filename> directory and all files from either the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/javassist</filename> directory; additionally you will need both the servlet-api jar and one of the slf4j logging backends."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Next, we create a class that represents the event we want to store in the database; it is a simple JavaBean class with some properties:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This class uses standard JavaBean naming conventions for property getter and setter methods, as well as private visibility for the fields. Although this is the recommended design, it is not required. Hibernate can also access fields directly, the benefit of accessor methods is robustness for refactoring."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>id</literal> property holds a unique identifier value for a particular event. All persistent entity classes (there are less important dependent classes as well) will need such an identifier property if we want to use the full feature set of Hibernate. In fact, most applications, especially web applications, need to distinguish objects by identifier, so you should consider this a feature rather than a limitation. However, we usually do not manipulate the identity of an object, hence the setter method should be private. Only Hibernate will assign identifiers when an object is saved. Hibernate can access public, private, and protected accessor methods, as well as public, private and protected fields directly. The choice is up to you and you can match it to fit your application design."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The no-argument constructor is a requirement for all persistent classes; Hibernate has to create objects for you, using Java Reflection. The constructor can be private, however package or public visibility is required for runtime proxy generation and efficient data retrieval without bytecode instrumentation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate needs to know how to load and store objects of the persistent class. This is where the Hibernate mapping file comes into play. The mapping file tells Hibernate what table in the database it has to access, and what columns in that table it should use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate DTD is sophisticated. You can use it for auto-completion of XML mapping elements and attributes in your editor or IDE. Opening up the DTD file in your text editor is the easiest way to get an overview of all elements and attributes, and to view the defaults, as well as some comments. Hibernate will not load the DTD file from the web, but first look it up from the classpath of the application. The DTD file is included in <filename>hibernate-core.jar</filename> (it is also included in the <filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will omit the DTD declaration in future examples to shorten the code. It is, of course, not optional."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Between the two <literal>hibernate-mapping</literal> tags, include a <literal>class</literal> element. All persistent entity classes (again, there might be dependent classes later on, which are not first-class entities) need a mapping to a table in the SQL database:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "So far we have told Hibernate how to persist and load object of class <literal>Event</literal> to the table <literal>EVENTS</literal>. Each instance is now represented by a row in that table. Now we can continue by mapping the unique identifier property to the tables primary key. As we do not want to care about handling this identifier, we configure Hibernate's identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>id</literal> element is the declaration of the identifier property. The <literal>name=\"id\"</literal> mapping attribute declares the name of the JavaBean property and tells Hibernate to use the <literal>getId()</literal> and <literal>setId()</literal> methods to access the property. The column attribute tells Hibernate which column of the <literal>EVENTS</literal> table holds the primary key value."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The nested <literal>generator</literal> element specifies the identifier generation strategy (aka how are identifier values generated?). In this case we choose <literal>native</literal>, which offers a level of portability depending on the configured database dialect. Hibernate supports database generated, globally unique, as well as application assigned, identifiers. Identifier value generation is also one of Hibernate's many extension points and you can plugin in your own strategy."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>native</literal> is no longer consider the best strategy in terms of portability. for further discussion, see <xref linkend=\"portability-idgen\" />"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Lastly, we need to tell Hibernate about the remaining entity class properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Similar to the <literal>id</literal> element, the <literal>name</literal> attribute of the <literal>property</literal> element tells Hibernate which getter and setter methods to use. In this case, Hibernate will search for <literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Why does the <literal>date</literal> property mapping include the <literal>column</literal> attribute, but the <literal>title</literal> does not? Without the <literal>column</literal> attribute, Hibernate by default uses the property name as the column name. This works for <literal>title</literal>, however, <literal>date</literal> is a reserved keyword in most databases so you will need to map it to a different name."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>title</literal> mapping also lacks a <literal>type</literal> attribute. The types declared and used in the mapping files are not Java data types; they are not SQL database types either. These types are called <emphasis>Hibernate mapping types</emphasis>, converters which can translate from Java to SQL data types and vice versa. Again, Hibernate will try to determine the correct conversion and mapping type itself if the <literal>type</literal> attribute is not present in the mapping. In some cases this automatic detection using Reflection on the Java class might not have the default you expect or need. This is the case with the <literal>date</literal> property. Hibernate cannot know if the property, which is of <literal>java.util.Date</literal>, should map to a SQL <literal>date</literal>, <literal>timestamp</literal>, or <literal>time</literal> column. Full date and time information is preserved by mapping the property with a <literal>timestamp</literal>!
  converter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate makes this mapping type determination using reflection when the mapping files are processed. This can take time and resources, so if startup performance is important you should consider explicitly defining the type to use."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this mapping file as <filename>src/main/resources/org/hibernate/tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "At this point, you should have the persistent class and its mapping file in place. It is now time to configure Hibernate. First let's set up HSQLDB to run in \"server mode\""
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will utilize the Maven exec plugin to launch the HSQLDB server by running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see it start up and bind to a TCP/IP socket; this is where our application will connect later. If you want to start with a fresh database during this tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</filename> directory, and start HSQLDB again."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will be connecting to the database on behalf of your application, so it needs to know how to obtain connections. For this tutorial we will be using a standalone connection pool (as opposed to a <interfacename>javax.sql.DataSource</interfacename>). Hibernate comes with support for two third-party open source JDBC connection pools: <ulink url=\"https://sourceforge.net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge.net/\">proxool</ulink>. However, we will be using the Hibernate built-in connection pool for this tutorial."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The built-in Hibernate connection pool is in no way intended for production use. It lacks several features found on any decent connection pool."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For Hibernate's configuration, we can use a simple <literal>hibernate.properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</literal> file, or even complete programmatic setup. Most users prefer the XML configuration file:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory is a global factory responsible for a particular database. If you have several databases, for easier startup you should use several <literal>&lt;session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first four <literal>property</literal> elements contain the necessary configuration for the JDBC connection. The dialect <literal>property</literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases, Hibernate is able to properly determine which dialect to use. See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's automatic session management for persistence contexts is particularly useful in this context. The <literal>hbm2ddl.auto</literal> option turns on automatic generation of database schemas directly into the database. This can also be turned off by removing the configuration option, or redirected to a file with the help of the <literal>SchemaExport</literal> Ant task. Finally, add the mapping file(s) for persistent classes to the configuration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>hibernate.cfg.xml</filename> into the <filename>src/main/resources</filename> directory."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Building with Maven"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will now build the tutorial with Maven. You will need to have Maven installed; it is available from the <ulink url=\"http://maven.apache.org/download.html\">Maven download page</ulink>. Maven will read the <filename>/pom.xml</filename> file we created earlier and know how to perform some basic project tasks. First, lets run the <literal>compile</literal> goal to make sure we can compile everything so far:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "It is time to load and store some <literal>Event</literal> objects, but first you have to complete the setup with some infrastructure code. You have to startup Hibernate by building a global <interfacename>org.hibernate.SessionFactory</interfacename> object and storing it somewhere for easy access in application code. A <interfacename>org.hibernate.SessionFactory</interfacename> is used to obtain <interfacename>org.hibernate.Session</interfacename> instances. A <interfacename>org.hibernate.Session</interfacename> represents a single-threaded unit of work. The <interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe global object that is instantiated once."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We will create a <literal>HibernateUtil</literal> helper class that takes care of startup and makes accessing the <interfacename>org.hibernate.SessionFactory</interfacename> more convenient."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this code as <filename>src/main/java/org/hibernate/tutorial/util/HibernateUtil.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This class not only produces the global <interfacename>org.hibernate.SessionFactory</interfacename> reference in its static initializer; it also hides the fact that it uses a static singleton. We might just as well have looked up the <interfacename>org.hibernate.SessionFactory</interfacename> reference from JNDI in an application server or any other location for that matter."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you give the <interfacename>org.hibernate.SessionFactory</interfacename> a name in your configuration, Hibernate will try to bind it to JNDI under that name after it has been built. Another, better option is to use a JMX deployment and let the JMX-capable container instantiate and bind a <literal>HibernateService</literal> to JNDI. Such advanced options are discussed later."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You now need to configure a logging system. Hibernate uses commons logging and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy <literal>log4j.properties</literal> from the Hibernate distribution in the <literal>etc/</literal> directory to your <literal>src</literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you prefer to have more verbose output than that provided in the example configuration, you can change the settings. By default, only the Hibernate startup message is shown on stdout."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The tutorial infrastructure is complete and you are now ready to do some real work with Hibernate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "We are now ready to start doing some real worjk with Hibernate. Let's start by writing an <literal>EventManager</literal> class with a <literal>main()</literal> method:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</literal> object and handed it over to Hibernate. At that point, Hibernate takes care of the SQL and executes an <literal>INSERT</literal> on the database."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <interface>org.hibernate.Session</interface> is designed to represent a single unit of work (a single atmoic piece of work to be performed). For now we will keep things simple and assume a one-to-one granularity between a Hibernate <interface>org.hibernate.Session</interface> and a database transaction. To shield our code from the actual underlying transaction system we use the Hibernate <interfacename>org.hibernate.Transaction</interfacename> API. In this particular case we are using JDBC-based transactional semantics, but it could also run with JTA."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "What does <literal>sessionFactory.getCurrentSession()</literal> do? First, you can call it as many times and anywhere you like once you get hold of your <interfacename>org.hibernate.SessionFactory</interfacename>. The <literal>getCurrentSession()</literal> method always returns the \"current\" unit of work. Remember that we switched the configuration option for this mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg.xml</filename>? Due to that setting, the context of a current unit of work is bound to the current Java thread that executes the application."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate offers three methods of current session tracking. The \"thread\" based method is not intended for production use; it is merely useful for prototyping and tutorials such as this one. Current session tracking is discussed in more detail later on."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A <interface>org.hibernate.Session</interface> begins when the first call to <literal>getCurrentSession()</literal> is made for the current thread. It is then bound by Hibernate to the current thread. When the transaction ends, either through commit or rollback, Hibernate automatically unbinds the <interface>org.hibernate.Session</interface> from the thread and closes it for you. If you call <literal>getCurrentSession()</literal> again, you get a new <interface>org.hibernate.Session</interface> and can start a new unit of work."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Related to the unit of work scope, should the Hibernate <interface>org.hibernate.Session</interface> be used to execute one or several database operations? The above example uses one <interface>org.hibernate.Session</interface> for one operation. However this is pure coincidence; the example is just not complex enough to show any other approach. The scope of a Hibernate <interface>org.hibernate.Session</interface> is flexible but you should never design your application to use a new Hibernate <interface>org.hibernate.Session</interface> for <emphasis>every</emphasis> database operation. Even though it is used in the following examples, consider <emphasis>session-per-operation</emphasis> an anti-pattern. A real web application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"transactions\" /> for more information about transaction handling and demarcation. The previous example also skipped any error handling and rollback."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To run this, we will make use of the Maven exec plugin to call our class with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should see Hibernate starting up and, depending on your configuration, lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here, we are using a Hibernate Query Language (HQL) query to load all existing <literal>Event</literal> objects from the database. Hibernate will generate the appropriate SQL, send it to the database and populate <literal>Event</literal> objects with the data. You can create more complex queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now we can call our new functionality, again using the Maven exec plugin: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"list\"</command>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "So far we have mapped a single persistent entity class to a table in isolation. Let's expand on that a bit and add some class associations. We will add people to the application and store a list of events in which they participate."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this to a file named <filename>src/main/java/org/hibernate/tutorial/domain/Person.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Next, create the new mapping file as <filename>src/main/resources/org/hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Create an association between these two entities. Persons can participate in events, and events have participants. The design questions you have to deal with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "By adding a collection of events to the <literal>Person</literal> class, you can easily navigate to the events for a particular person, without executing an explicit query - by calling <literal>Person#getEvents</literal>. Multi-valued associations are represented in Hibernate by one of the Java Collection Framework contracts; here we choose a <interfacename>java.util.Set</interfacename> because the collection will not contain duplicate elements and the ordering is not relevant to our examples:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Before mapping this association, let's consider the other side. We could just keep this unidirectional or create another collection on the <literal>Event</literal>, if we wanted to be able to navigate it from both directions. This is not necessary, from a functional perspective. You can always execute an explicit query to retrieve the participants for a particular event. This is a design choice left to you, but what is clear from this discussion is the multiplicity of the association: \"many\" valued on both sides is called a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports a broad range of collection mappings, a <literal>set</literal> being most common. For a many-to-many association, or <emphasis>n:m</emphasis> entity relationship, an association table is required. Each row in this table represents a link between a person and an event. The table name is decalred using the <literal>table</literal> attribute of the <literal>set</literal> element. The identifier column name in the association, for the person side, is defined with the <literal>key</literal> element, the column name for the event's side with the <literal>column</literal> attribute of the <literal>many-to-many</literal>. You also have to tell Hibernate the class of the objects in your collection (the class on the other side of the collection of references)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now we will bring some people and events together in a new method in <literal>EventManager</literal>:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "After loading a <literal>Person</literal> and an <literal>Event</literal>, simply modify the collection using the normal collection methods. There is no explicit call to <literal>update()</literal> or <literal>save()</literal>; Hibernate automatically detects that the collection has been modified and needs to be updated. This is called <emphasis>automatic dirty checking</emphasis>. You can also try it by modifying the name or the date property of any of your objects. As long as they are in <emphasis>persistent</emphasis> state, that is, bound to a particular Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate monitors any changes and executes SQL in a write-behind fashion. The process of synchronizing the memory state with the database, usually only at the end of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can load person and event in different units of work. Or you can modify an object outside of a <interfacename>org.hibernate.Session</interfacename>, when it is not in persistent state (if it was persistent before, this state is called <emphasis>detached</emphasis>). You can even modify a collection when it is detached:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The call to <literal>update</literal> makes a detached object persistent again by binding it to a new unit of work, so any modifications you made to it while detached can be saved to the database. This includes any modifications (additions/deletions) you made to a collection of that entity object."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is not much use in our example, but it is an important concept you can incorporate into your own application. Complete this exercise by adding a new action to the main method of the <literal>EventManager</literal> and call it from the command line. If you need the identifiers of a person and an event - the <literal>save()</literal> method returns it (you might have to modify some of the previous methods to return that identifier):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of an association between two equally important classes : two entities. As mentioned earlier, there are other classes and types in a typical model, usually \"less important\". Some you have already seen, like an <literal>int</literal> or a <classname>java.lang.String</classname>. We call these classes <emphasis>value types</emphasis>, and their instances <emphasis>depend</emphasis> on a particular entity. Instances of these types do not have their own identity, nor are they shared between entities. Two persons do not reference the same <literal>firstname</literal> object, even if they have the same first name. Value types cannot only be found in the JDK , but you can also write dependent classes yourself such as an <literal>Address</literal> or <literal>MonetaryAmount</literal> class. In fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also design a collection of value types. This is conceptually different from a collection of references to other entities, but looks almost the same in Java."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Let's add a collection of email addresses to the <literal>Person</literal> entity. This will be represented as a <interfacename>java.util.Set</interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The difference compared with the earlier mapping is the use of the <literal>element</literal> part which tells Hibernate that the collection does not contain references to another entity, but is rather a collection whose elements are values types, here specifically of type <literal>string</literal>. The lowercase name tells you it is a Hibernate mapping type/converter. Again the <literal>table</literal> attribute of the <literal>set</literal> element determines the table name for the collection. The <literal>key</literal> element defines the foreign-key column name in the collection table. The <literal>column</literal> attribute in the <literal>element</literal> element defines the column name where the email address values will actually be stored."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the updated schema:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can see that the primary key of the collection table is in fact a composite key that uses both columns. This also implies that there cannot be duplicate email addresses per person, which is exactly the semantics we need for a set in Java."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can now try to add elements to this collection, just like we did before by linking persons and events. It is the same code in Java:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This time we did not use a <emphasis>fetch</emphasis> query to initialize the collection. Monitor the SQL log and try to optimize this with an eager fetch."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Next you will map a bi-directional association. You will make the association between person and event work from both sides in Java. The database schema does not change, so you will still have many-to-many multiplicity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A relational database is more flexible than a network programming language, in that it does not need a navigation direction; data can be viewed and retrieved in any possible way."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, add a collection of participants to the <literal>Event</literal> class:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "These are normal <literal>set</literal> mappings in both mapping documents. Notice that the column names in <literal>key</literal> and <literal>many-to-many</literal> swap in both mapping documents. The most important addition here is the <literal>inverse=\"true\"</literal> attribute in the <literal>set</literal> element of the <literal>Event</literal>'s collection mapping."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "What this means is that Hibernate should take the other side, the <literal>Person</literal> class, when it needs to find out information about the link between the two. This will be a lot easier to understand once you see how the bi-directional link between our two entities is created."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First, keep in mind that Hibernate does not affect normal Java semantics. How did we create a link between a <literal>Person</literal> and an <literal>Event</literal> in the unidirectional example? You add an instance of <literal>Event</literal> to the collection of event references, of an instance of <literal>Person</literal>. If you want to make this link bi-directional, you have to do the same on the other side by adding a <literal>Person</literal> reference to the collection in an <literal>Event</literal>. This process of \"setting the link on both sides\" is absolutely necessary with bi-directional links."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Many developers program defensively and create link management methods to correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The get and set methods for the collection are now protected. This allows classes in the same package and subclasses to still access the methods, but prevents everybody else from altering the collections directly. Repeat the steps for the collection on the other side."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "What about the <literal>inverse</literal> mapping attribute? For you, and for Java, a bi-directional link is simply a matter of setting the references on both sides correctly. Hibernate, however, does not have enough information to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</literal> statements (to avoid constraint violations). Making one side of the association <literal>inverse</literal> tells Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. That is all that is necessary for Hibernate to resolve any issues that arise when transforming a directional navigation model to a SQL database schema. The rules are straightforward: all bi-directional associations need one side as <literal>inverse</literal>. In a one-to-many association it has to be the many-side, and in many-to-many association you can select either side."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A Hibernate web application uses <literal>Session</literal> and <literal>Transaction</literal> almost like a standalone application. However, some common patterns are useful. You can now write an <literal>EventManagerServlet</literal>. This servlet can list all events stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "First we need create our basic processing servlet. Since our servlet only handles HTTP <literal>GET</literal> requests, we will only implement the <literal>doGet()</literal> method:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/EventManagerServlet.java</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The pattern applied here is called <emphasis>session-per-request</emphasis>. When a request hits the servlet, a new Hibernate <literal>Session</literal> is opened through the first call to <literal>getCurrentSession()</literal> on the <literal>SessionFactory</literal>. A database transaction is then started. All data access occurs inside a transaction irrespective of whether the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> for every database operation. Use one Hibernate <literal>Session</literal> that is scoped to the whole request. Use <literal>getCurrentSession()</literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Next, the possible actions of the request are processed and the response HTML is rendered. We will get to that part soon."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, the unit of work ends when processing and rendering are complete. If any problems occurred during processing or rendering, an exception will be thrown and the database transaction rolled back. This completes the <literal>session-per-request</literal> pattern. Instead of the transaction demarcation code in every servlet, you could also write a servlet filter. See the Hibernate website and Wiki for more information about this pattern called <emphasis>Open Session in View</emphasis>. You will need it as soon as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Now you can implement the processing of the request and the rendering of the page."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This coding style, with a mix of Java and HTML, would not scale in a more complex application&mdash;keep in mind that we are only illustrating basic Hibernate concepts in this tutorial. The code prints an HTML header and a footer. Inside this page, an HTML form for event entry and a list of all events in the database are printed. The first method is trivial and only outputs HTML:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>listEvents()</literal> method uses the Hibernate <literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, the <literal>store</literal> action is dispatched to the <literal>createAndStoreEvent()</literal> method, which also uses the <literal>Session</literal> of the current thread:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The servlet is now complete. A request to the servlet will be processed in a single <literal>Session</literal> and <literal>Transaction</literal>. As earlier in the standalone application, Hibernate can automatically bind these objects to the current thread of execution. This gives you the freedom to layer your code and access the <literal>SessionFactory</literal> in any way you like. Usually you would use a more sophisticated design and move the data access code into data access objects (the DAO pattern). See the Hibernate Wiki for more examples."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To deploy this application for testing we must create a Web ARchive (WAR). First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/web.xml</filename>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To build and deploy call <literal>mvn package</literal> in your project directory and copy the <filename>hibernate-tutorial.war</filename> file into your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not have Tomcat installed, download it from <ulink url=\"http://tomcat.apache.org/\" /> and follow the installation instructions. Our application requires no changes to the standard Tomcat configuration."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Once deployed and Tomcat is running, access the application at <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. Make sure you watch the Tomcat log to see Hibernate initialize when the first request hits your servlet (the static initializer in <literal>HibernateUtil</literal> is called) and to get the detailed output if any exceptions occurs."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This tutorial covered the basics of writing a simple standalone Hibernate application and a small web application. More tutorials are available from the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/xml.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/xml.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/content/xml.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,144 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is currently under active development. </emphasis>"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows you to work with persistent XML data in much the same way you work with persistent POJOs. A parsed XML tree can be thought of as another way of representing the relational data at the object level, instead of POJOs."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports dom4j as API for manipulating XML trees. You can write queries that retrieve dom4j trees from the database and have any modification you make to the tree automatically synchronized to the database. You can even take an XML document, parse it using dom4j, and write it to the database with any of Hibernate's basic operations: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not yet supported)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This feature has many applications including data import/export, externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A single mapping can be used to simultaneously map properties of a class and nodes of an XML document to the database, or, if there is no class to map, it can be used to map just the XML."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This mapping allows you to access the data as a dom4j tree, or as a graph of property name/value pairs or java <literal>Map</literal>s. The property names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "A range of Hibernate mapping elements accept the <literal>node</literal> attribute. This lets you specify the name of an XML attribute or element that holds the property or entity data. The format of the <literal>node</literal> attribute must be one of the following:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name/@attribute-name\"</literal>: map to the named attribute of the named element"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "For collections and single valued associations, there is an additional <literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</literal>, the default, the XML tree for the associated entity (or collection of value type) will be embedded directly in the XML tree for the entity that owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, then only the referenced identifier value will appear in the XML for single point associations and collections will not appear at all."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Do not leave <literal>embed-xml=\"true\"</literal> for too many associations, since XML does not deal well with circularity."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In this case, the collection of account ids is embedded, but not the actual account data. The following HQL query:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "would return datasets such as this:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You can also re-read and update XML documents in the application. You can do this by obtaining a dom4j session:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "When implementing XML-based data import/export, it is useful to combine this feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Conventions.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Conventions.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Conventions.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,214 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr ""
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Feedback.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Feedback.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Feedback.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,34 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr ""
+
+#. Tag: primary
+#, no-c-format
+msgid "feedback"
+msgstr ""
+
+#. Tag: secondary
+#, no-c-format
+msgid "contact information for this manual"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Legal_Notice.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Legal_Notice.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/fallback_content/Legal_Notice.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,19 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pot/legal_notice.pot
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pot/legal_notice.pot	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pot/legal_notice.pot	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,49 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-02-11T05:38:16\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-publican; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, <state>NC</state><postcode>27709</postcode><country>USA</country> </address>"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red Hat, Inc. in the United States and other countries."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "All other trademarks referenced herein are the property of their respective owners."
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr ""
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr ""
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,31 @@
+# translation of Book_Info.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-19 15:37+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Persistência Relacional para Java Idiomático"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Documentação de Referência Hibernate"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr "&version;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#~ msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+#~ msgstr "HIBERNATE - Relational Persistence for Idiomatic Java"
+
+#~ msgid "Hibernate Reference Documentation"
+#~ msgstr "Documentação da Referência do Hibernate"
+
+#~ msgid "&copyrightHolder;"
+#~ msgstr "&copyrightHolder;"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,31 @@
+# translation of Hibernate_Reference.po to
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Hibernate_Reference\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-03-19 15:38+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Persistência Relacional para Java Idiomático"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Documentação de Referência Hibernate"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr "&versionNumber;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,152 @@
+# translation of author_group.po to
+# Language pt-BR translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: author_group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-19 15:45+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr "Max"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr "Emmanuel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr "Steve"
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr "James"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr "Cheyenne"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr "Vincent"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr "Sebastien"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr "Michael"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr "Baptiste"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr "Anthony"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr "Alvaro"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr "Anderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr "Daniel Vieira"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr "Francisco"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr "Gamarra"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr "Luiz Carlos"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr "Marcel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr "Paulo"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr "Pablo L."
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr "Renato"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr "Rogério"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr "Wanderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr "Cao"
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr "RedSaga"
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr "Time de Tradução"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,711 @@
+# translation of architecture.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: architecture\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-17 10:18+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "Arquitetura "
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "Visão Geral"
+
+#. Tag: para
+#, no-c-format
+msgid "The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr ""
+"O diagrama abaixo fornece uma visão de altíssimo nível da arquitetura do "
+"Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We do not have the scope in this document to provide a more detailed view of "
+"all the runtime architectures available; Hibernate is flexible and supports "
+"several different approaches. We will, however, show the two extremes: "
+"\"minimal\" architecture and \"comprehensive\" architecture."
+msgstr ""
+"Nós não temos o escopo neste documento para mostrar uma visão mais detalhada "
+"da arquitetura em execução. O Hibernate é muito flexível e suporta várias "
+"abordagens. Mostraremos os dois extremos. No entanto, nós apresentaremos os "
+"dois extremos: arquitetura \"mínima\" e arquitetura \"compreensiva\". "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This next diagram illustrates how Hibernate utilizes database and "
+"configuration data to provide persistence services, and persistent objects, "
+"to the application."
+msgstr ""
+"Este diagrama mostra o Hibernate usando o banco de dados e a configuração de "
+"dados para prover persistência de serviços e persistência de objetos para o "
+"aplicativo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"minimal\" architecture has the application provide its own JDBC "
+"connections and manage its own transactions. This approach uses a minimal "
+"subset of Hibernate's APIs:"
+msgstr ""
+"Na arquitetura \"mínima\", o aplicativo fornece suas próprias conexões JDBC "
+"e gerencia suas transações. Esta abordagem usa o mínimo de subconjuntos das "
+"APIs do Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The \"comprehensive\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr ""
+"A arquitetura \"compreensiva\" abstrai a aplicação do JDBC/JTA e APIs "
+"adjacentes e deixa o Hibernate tomar conta dos detalhes."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr "Algumas definições dos objetos descritos nos diagramas: "
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A threadsafe, immutable cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can "
+"hold an optional (second-level) cache of data that is reusable between "
+"transactions at a process, or cluster, level."
+msgstr ""
+"O threadsafe, cachê imutável composto de mapeamentos compilados para um "
+"único banco de dados. Uma fábrica para <literal>Session</literal> e um "
+"cliente de <literal>ConnectionProvider</literal>, <literal>SessionFactory</"
+"literal> pode conter um cachê opcional de dados (segundo nível) "
+"reutilizáveis entre transações, no nível de processo ou cluster."
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. It wraps a JDBC connection and is "
+"a factory for <literal>Transaction</literal>. <literal>Session</literal> "
+"holds a mandatory first-level cache of persistent objects that are used when "
+"navigating the object graph or looking up objects by identifier."
+msgstr ""
+"Objeto single-threaded, de vida curta, representa uma conversação entre o "
+"aplicativo e o armazenamento persistente. Cria uma camada sobre uma conexão "
+"JDBC. É uma fabrica de <literal>Transaction</literal>. A <literal>Session</"
+"literal> possui um cachê obrigatório (primeiro nível) de objetos "
+"persistentes, usado para navegação nos gráficos de objetos e pesquisa de "
+"objetos pelo identificador."
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "Objetos persistentes e coleções"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These can be ordinary JavaBeans/POJOs. They are "
+"associated with exactly one <literal>Session</literal>. Once the "
+"<literal>Session</literal> is closed, they will be detached and free to use "
+"in any application layer (for example, directly as data transfer objects to "
+"and from presentation)."
+msgstr ""
+"Objetos, de vida curta, single threaded contendo estado persistente e função "
+"de negócios. Esses podem ser JavaBeans/POJOs, onde a única coisa especial "
+"sobre eles é que são associados a (exatamente uma) <literal>Session</"
+"literal>. Quando a <literal>Session</literal> é fechada, eles são separados "
+"e liberados para serem usados dentro de qualquer camada da aplicação (Ex. "
+"diretamente como objetos de transferência de dados de e para a camada de "
+"apresentação)."
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "Objetos e coleções desanexados e transientes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not yet persisted, or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"Instâncias de classes persistentes que ainda não estão associadas a uma "
+"<literal>Session</literal>. Eles podem ter sido instanciados pela aplicação "
+"e não persistidos (ainda) ou eles foram instanciados por uma "
+"<literal>Session</literal> encerrada."
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. It abstracts the application from the "
+"underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> "
+"might span several <literal>Transaction</literal>s in some cases. However, "
+"transaction demarcation, either using the underlying API or "
+"<literal>Transaction</literal>, is never optional."
+msgstr ""
+"(Opcional) Objeto de vida curta, single threaded, usado pela aplicação para "
+"especificar unidades atômicas de trabalho. Abstrai o aplicativo das "
+"transações JDBC, JTA ou CORBA adjacentes. Uma <literal>Session</literal> "
+"pode, em alguns casos, iniciar várias <literal>Transaction</literal>s. "
+"Entretanto, a demarcação da transação, mesmo utilizando API ou "
+"<literal>Transaction</literal> subjacentes, nunca é opcional."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"Connection Provider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for, and pool of, JDBC connections. It abstracts the "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. It is not exposed to application, but it "
+"can be extended and/or implemented by the developer."
+msgstr ""
+"(Opcional) Uma fábrica de, e pool de, conexões JDBC. Abstrai a aplicação dos "
+"<literal>Datasource</literal> ou <literal>DriverManager</literal> "
+"adjacentes. Não exposto para a aplicação, mas pode ser implementado ou "
+"estendido pelo programador. "
+
+#. Tag: term
+#, no-c-format
+msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr "Transaction Factory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. It is not "
+"exposed to the application, but it can be extended and/or implemented by the "
+"developer."
+msgstr ""
+"(Opcional) Uma fábrica para instâncias de <literal>Transaction</literal>. "
+"Não exposta a aplicação, mas pode ser estendida/implementada pelo "
+"programador."
+
+#. Tag: term
+#, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "<emphasis>Interfaces de Extensão</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers a range of optional extension interfaces you can implement "
+"to customize the behavior of your persistence layer. See the API "
+"documentation for details."
+msgstr ""
+"O Hibernate oferece várias opções de interfaces estendidas que você pode "
+"implementar para customizar sua camada persistente. Veja a documentação da "
+"API para maiores detalhes. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Given a \"minimal\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC "
+"directly."
+msgstr ""
+"Dada uma arquitetura \"mínima\", o aplicativo passa pelas APIs "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> e/ou "
+"<literal>ConnectionProvider</literal> para se comunicar diretamente com a "
+"transação JTA ou JDBC."
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "Estados de instância"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of a persistent class can be in one of three different states. "
+"These states are defined in relation to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context. The three different states are as follows:"
+msgstr ""
+"Uma instância de classes persistentes pode estar em um dos três diferentes "
+"estados, que são definidos respeitando um <emphasis>contexto persistente</"
+"emphasis>. O objeto <literal>Session</literal> do Hibernate é o contexto "
+"persistente. Os três diferentes estados são os seguintes:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "transiente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is not associated with any persistence context. It has no "
+"persistent identity or primary key value."
+msgstr ""
+"A instância não é associada a nenhum contexto persistente. Não possui uma "
+"identidade persistente ou valor de chave primária."
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "persistente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and can have a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity in relation to the in-memory location of the object."
+msgstr ""
+"A instância está atualmente associada a um contexto persistente. Possui uma "
+"identidade persistente (valor de chave primária) e, talvez, correspondente a "
+"uma fila no banco de dados. Para um contexto persistente em particular, o "
+"Hibernate <emphasis>garante</emphasis> que a identidade persistente é "
+"equivalente à identidade Java (na localização em memória do objeto)."
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "desanexado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and can have a corresponding row in the database. "
+"For detached instances, Hibernate does not guarantee the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"A instância foi associada com um contexto persistente, porém este contexto "
+"foi fechado, ou a instância foi serializada por outro processo. Possui uma "
+"identidade persistente, e, talvez, corresponda a uma fila no banco de dados. "
+"Para instâncias desanexadas, o Hibernate não garante o relacionamento entre "
+"identidade persistente e identidade Java."
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "Integração JMX"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for the management of Java components. Hibernate "
+"can be managed via a JMX standard service. AN MBean implementation is "
+"provided in the distribution: <literal>org.hibernate.jmx.HibernateService</"
+"literal>."
+msgstr ""
+"JMX é o padrão do J2EE para manipulação de componentes Java. O Hibernate "
+"pode ser manipulado por um serviço JMX padrão. Nós fornecemos uma "
+"implementação do MBean na distribuição: <literal>org.hibernate.jmx."
+"HibernateService</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For an example of how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. JBoss AS also provides "
+"these benefits if you deploy using JMX:"
+msgstr ""
+"Para um exemplo de como implementar o Hibernate como um serviço JMX em um "
+"Servidor de Aplicativo JBoss, por favor, consulte o Guia do Usuário do "
+"JBoss. No JBoss As, você poderá ver os benefícios de se fazer a "
+"implementação usando JMX:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means that you no longer have to manually open and close "
+"the <literal>Session</literal>; this becomes the job of a JBoss EJB "
+"interceptor. You also do not have to worry about transaction demarcation in "
+"your code (if you would like to write a portable persistence layer use the "
+"optional Hibernate <literal>Transaction</literal> API for this). You call "
+"the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>Session Management:</emphasis> O ciclo de vida de uma "
+"<literal>Session</literal> do Hibernate pode ser automaticamente conectada a "
+"um escopo de transação JTA. Isso significa que você não precisará mais abrir "
+"e fechar manualmente uma <literal>Session</literal>, isso se torna uma "
+"tarefa para um interceptor EJB do JBoss. Você também não precisará mais se "
+"preocupar com demarcação de transação em seu código (caso você prefira "
+"escrever uma camada persistente portável, use a API opcional do Hibernate "
+"<literal>Transaction</literal>). Você deve chamar <literal>HibernateContext</"
+"literal> para acessar uma <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed "
+"using a JBoss service deployment descriptor in an EAR and/or SAR file, as it "
+"supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still need to name all your "
+"mapping files in the deployment descriptor. If you use the optional HAR "
+"deployment, JBoss will automatically detect all mapping files in your HAR "
+"file."
+msgstr ""
+"<emphasis>HAR deployment:</emphasis>: Normalmente você implementa o serviço "
+"JMX do Hibernate usando um serviço descritor de implementação do JBoss em um "
+"EAR e/ou arquivo SAR, que suporta todas as configurações comuns de uma "
+"<literal>SessionFactory</literal> do Hibernate. Entretanto, você ainda "
+"precisa nomear todos os seus arquivos de mapeamento no descritor de "
+"implementação. Se você decidir usar a implementaçao opcional HAR, o JBoss "
+"irá automaticamente detectar todos os seus arquivos de mapeamento no seu "
+"arquivo HAR."
+
+#. Tag: para
+#, no-c-format
+msgid "Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"Consulte o manual do usuário do JBoss AS, para obter maiores informações "
+"sobre essas opções."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another feature available as a JMX service is runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\" /> for more "
+"information."
+msgstr ""
+"Outra opção disponível como um serviço JMX são as estatísticas de execução "
+"do Hibernate. Veja a <xref linkend=\"configuration-optional-statistics\" />"
+"para maiores informações."
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "Suporte JCA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also be configured as a JCA connector. Please see the website "
+"for more information. Please note, however, that at this stage Hibernate JCA "
+"support is under development."
+msgstr ""
+"O Hibernate pode também ser configurado como um conector JCA. Por favor, "
+"visite o website para maiores detalhes. Observe também, que o suporte do JCA "
+"do Hibernate ainda é considerado experimental."
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr "Sessões Contextuais"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" session, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks, such as Spring or Pico, which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"A maioria das aplicações que usa o Hibernate necessita de algum tipo de "
+"sessão \"contextual\", onde uma sessão dada é na verdade um escopo de um "
+"contexto. Entretanto, através de aplicações, a definição sobre um contexto é "
+"geralmente diferente; e contextos diferentes definem escopos diferentes. "
+"Aplicações usando versões anteriores ao Hibernate 3.0 tendem a utilizar "
+"tanto sessões contextuais baseadas em <literal>ThreadLocal</literal>, "
+"classes utilitárias como <literal>HibernateUtil</literal>, ou utilizar "
+"frameworks de terceiros (como Spring ou Pico) que provê sessões contextuais "
+"baseadas em proxy."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. Given "
+"the maturity of the numerous stand-alone <literal>JTA TransactionManager</"
+"literal> implementations, most, if not all, applications should be using "
+"<literal>JTA</literal> transaction management, whether or not they are "
+"deployed into a <literal>J2EE</literal> container. Based on that, the "
+"<literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr ""
+"A partir da versão 3.0.1, o Hibernate adicionou o método "
+"<literal>SessionFactory.getCurrentSession()</literal>. Inicialmente, este "
+"considerou o uso de transações <literal>JTA</literal>, onde a transação "
+"<literal>JTA</literal> definia tanto o escopo quanto o contexto de uma "
+"sessão atual. Dada a maturidade de diversas implementações autônomas "
+"disponíveis do <literal>JTA TransactionManager</literal>, a maioria (se não "
+"todos) dos aplicativos deveria utilizar o gerenciador de transações "
+"<literal>JTA</literal> sendo ou não instalados dentro de um recipiente "
+"<literal>J2EE</literal>. Baseado neste recurso, você deve sempre utilizar "
+"sessões contextuais baseadas em <literal>JTA</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, "
+"and a new configuration parameter, <literal>hibernate."
+"current_session_context_class</literal>, have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"Entretanto, a partir da versão 3.1, o processo por trás do método "
+"<literal>SessionFactory.getCurrentSession()</literal> é agora plugável. Com "
+"isso, uma nova interface (<literal>org.hibernate.context."
+"CurrentSessionContext</literal>) e um novo parâmetro de configuração "
+"(<literal>hibernate.current_session_context_class</literal>) foram "
+"adicionados para possibilitar a compatibilidade do contexto e do escopo na "
+"definição de sessões correntes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface:"
+msgstr ""
+"Consulte no Javadocs sobre a interface <literal>org.hibernate.context."
+"CurrentSessionContext</literal> para uma discussão detalhada. Ela define um "
+"método único, <literal>currentSession()</literal>, pelo qual a implementação "
+"é responsável por rastrear a sessão contextual atual. Fora da caixa, o "
+"Hibernate surge com três implementações dessa interface:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: current sessions "
+"are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal>: As sessões "
+"correntes são rastreadas e recebem um escopo por uma transação <literal>JTA</"
+"literal>. O processamento aqui é exatamente igual à abordagem anterior do "
+"JTA somente. Consulte em Javadocs para maiores detalhes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current "
+"sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - As "
+"sessões correntes são rastreadas por uma thread de execução. Novamente, "
+"consulte em Javadocs para maiores detalhes. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>: current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal>. As sessões "
+"atuais são rastreadas por uma thread de execução. Entretanto, você é "
+"responsável por vincular e desvincular uma instância <literal>Session</"
+"literal> com métodos estáticos nesta classe, que nunca abre, libera ou fecha "
+"uma <literal>Session</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model. This is also known and used as "
+"<emphasis>session-per-request</emphasis>. The beginning and end of a "
+"Hibernate session is defined by the duration of a database transaction. If "
+"you use programmatic transaction demarcation in plain JSE without JTA, you "
+"are advised to use the Hibernate <literal>Transaction</literal> API to hide "
+"the underlying transaction system from your code. If you use JTA, you can "
+"utilize the JTA interfaces to demarcate transactions. If you execute in an "
+"EJB container that supports CMT, transaction boundaries are defined "
+"declaratively and you do not need any transaction or session demarcation "
+"operations in your code. Refer to <xref linkend=\"transactions\" /> for more "
+"information and code examples."
+msgstr ""
+"As duas primeiras implementações usam o modelo de programação \"uma sessão - "
+"uma transação do banco de dados\", também conhecida e usada como "
+"<emphasis>sessão por requisição</emphasis>. O começo e o fim de uma sessão "
+"Hibernate é definida pela duração da transação do banco de dados. Se você "
+"usar a demarcação programática de transação em JSE puro sem JTA, recomenda-"
+"se que utilize a API Hibernate <literal>Transaction</literal> para esconder "
+"o sistema de transação adjacente do seu código. Se você utiliza o JTA, use "
+"as interfaces JTA para demarcar as transações. Se você executar em um "
+"recipiente EJB que suporta CMT, os limites das transações são definidas "
+"declarativamente e você não precisará de qualquer transação ou operação de "
+"demarcação de sessão no seu código. Consulte o <xref linkend=\"transactions\" /> para mais informações e exemplos de código."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. For backwards "
+"compatibility, if this configuration parameter is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use. For the three out-of-the-box implementations, "
+"however, there are three corresponding short names: \"jta\", \"thread\", and "
+"\"managed\"."
+msgstr ""
+"O parâmetro de configuração <literal>hibernate."
+"current_session_context_class</literal> define qual implementação "
+"<literal>org.hibernate.context.CurrentSessionContext</literal> deve ser "
+"usada. Note que para compatibilidade anterior, se este parâmetro de "
+"configuração não for determinado mas um <literal>org.hibernate.transaction."
+"TransactionManagerLookup</literal> for configurado, Hibernate usará o "
+"<literal>org.hibernate.context.JTASessionContext</literal>. Tipicamente, o "
+"valor deste parâmetro nomearia apenas a classe de implementação para usar; "
+"para as três implementações fora da caixa, entretanto, há dois pequenos "
+"nomes correspondentes, \"jta\", \"thread\", e \"managed\"."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1239 @@
+# translation of association_mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: association_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-11-16 14:59+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "Mapeamento de associações "
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"Os mapeamentos de associações são, geralmente, os mais difíceis de se "
+"acertar. Nesta seção nós examinaremos pelos casos canônicos um por um, "
+"começando com mapeamentos unidirecionais e considerando os casos "
+"bidirecionais. Usaremos <literal>Person</literal> e <literal>Address</"
+"literal> em todos os exemplos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"Classificaremos as associações pela sua multiplicidade e se elas mapeiam ou "
+"não uma intervenção na tabela associativa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"O uso de chaves externas anuláveis não é considerado uma boa prática na "
+"modelagem de dados tradicional, assim todos os nossos exemplos usam chaves "
+"externas anuláveis. Esta não é uma exigência do Hibernate, e todos os "
+"mapeamentos funcionarão se você remover as restrições de anulabilidade."
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "Associações Unidirecionais"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "Muitos-para-um"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"Uma <emphasis>associação unidirecional muitos-para-um</emphasis> é o tipo "
+"mais comum de associação unidirecional."
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "Um-para-um"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"Uma <emphasis>associação unidirecional um-para-um em uma chave externa </"
+"emphasis> é quase idêntica. A única diferença é a restrição única na coluna."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"Uma <emphasis>associação unidirecional um-para-um na chave primária</"
+"emphasis> geralmente usa um gerador de id especial. Note que nós invertemos "
+"a direção da associação nesse exemplo."
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many"
+msgstr "Um-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"Uma <emphasis>associação unidirecional um-para-muitos em uma chave externa</"
+"emphasis> é um caso muito incomum, e realmente não é recomendada."
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr ""
+"Acreditamos ser melhor usar uma tabela associativa para este tipo de "
+"associação. "
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "Associações Unidirecionais com tabelas associativas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"Uma <emphasis>associação um-para-muitos unidirecional usando uma tabela "
+"associativa</emphasis> é o mais comum. Note que se especificarmos "
+"<literal>unique=\"true\"</literal>, estaremos modificando a multiplicidade "
+"de muitos-para-muitos para um-para-muitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"Uma <emphasis>associação unidirecional muitos-para-um em uma tabela "
+"associativa</emphasis> é bastante comum quando a associação for opcional. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Uma <emphasis>associação unidirecional um-para-um em uma tabela associativa</"
+"emphasis> é extremamente incomum, mas possível. "
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many"
+msgstr "Muitos-para-muitos "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr ""
+"Finalmente, nós temos a <emphasis>associação unidirecional muitos-para- "
+"muitos</emphasis>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Associações Bidirecionais"
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "Um-para-muitos/muitos-para-um"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"Uma <emphasis>associação bidirecional muitos-para-um</emphasis> é o tipo "
+"mais comum de associação. A seguinte amostra ilustra o relacionamento padrão "
+"pai/filho. )"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"Se você usar uma <literal>List</literal> ou outra coleção indexada, você "
+"precisará especificar a coluna <literal>key</literal>  da chave externa como "
+"<literal>not null</literal>. O Hibernate administrará a associação do lado "
+"da coleção para que seja mantido o índice de cada elemento da coleção "
+"(fazendo com que o outro lado seja virtualmente inverso ajustando "
+"<literal>update=\"false\"</literal> e <literal>insert=\"false\"</literal>):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Caso uma coluna chave externa adjacente for <literal>NOT NULL</literal>, é "
+"importante que você defina <literal>not-null=\"true\"</literal> no elemento "
+"<literal>&lt;key&gt;</literal> no mapeamento na coleção se a coluna de chave "
+"externa para <literal>NOT NULL</literal>. Não declare como <literal>not-null="
+"\"true\"</literal> apenas um elemento aninhado <literal>&lt;column&gt;</"
+"literal>, mas sim o elemento <literal>&lt;key&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr ""
+"Uma <emphasis>associação bidirecional um para um em uma chave externa </"
+"emphasis> é bastante comum:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"Uma <emphasis>associação bidirecional um para um em uma chave primária</"
+"emphasis> usa um gerador de id especial:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "Associações Bidirecionais com tabelas associativas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"Segue abaixo uma amostra da <emphasis>associação bidirecional um para muitos "
+"em uma tabela de união</emphasis>. Veja que <literal>inverse=\"true\"</"
+"literal> pode ser colocado em qualquer ponta da associação, na coleção, ou "
+"na união."
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "Um para um"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"Uma <emphasis>associação bidirecional um-para-um em uma tabela de união</"
+"emphasis> é algo bastante incomum, mas possível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"Finalmente, nós temos uma <emphasis>associação bidirecional de muitos para "
+"muitos</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "Mapeamento de associações mais complexas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"Uniões de associações mais complexas são <emphasis>extremamente</emphasis> "
+"raras. O Hibernate possibilita o tratamento de mapeamentos mais complexos, "
+"usando fragmentos de SQL embutidos no documento de mapeamento. Por exemplo, "
+"se uma tabela com informações de dados históricos de uma conta define as "
+"colunas <literal>accountNumber</literal>, <literal>effectiveEndDate</"
+"literal> e <literal>effectiveStartDate</literal>, mapeadas assim como segue:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"Então nós podemos mapear uma associação para a instância <emphasis>atual</"
+"emphasis>, aquela com <literal>effectiveEndDate</literal> nulo, usando:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"Em um exemplo mais complexo, imagine que a associação entre "
+"<literal>Employee</literal> e <literal>Organization</literal> é mantida em "
+"uma tabela <literal>Employment</literal> cheia de dados históricos do "
+"trabalho. Então a associação do funcionário <emphasis>mais recentemente</"
+"emphasis> e empregado, aquele com a mais recente <literal>startDate</"
+"literal>, deve ser mapeado desta maneira: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"Esta funcionalidade permite um grau de criatividade e flexibilidade, mas "
+"geralmente é mais prático tratar estes tipos de casos, usando uma pesquisa "
+"HQL ou uma pesquisa por critério."
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,4384 @@
+# translation of basic_mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: basic_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-18 10:20+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "Mapeamento O/R Básico"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "Declaração de mapeamento"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations and not table declarations."
+msgstr ""
+"O mapeamento de objeto/relacional é geralmente definido em um documento XML. "
+"O documento de mapeamento é criado para ser de leitura e editável "
+"manualmente. A linguagem do mapeamento é Java-centric, ou seja, os "
+"mapeamentos são construídos em torno de declarações de classe persistente e "
+"não de declarações de tabelas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that even though many Hibernate users choose to write the XML by "
+"hand, a number of tools exist to generate the mapping document. These "
+"include XDoclet, Middlegen and AndroMDA."
+msgstr ""
+"Note que, embora muitos usuários do Hibernate escolham gravar o XML "
+"manualmente, existem diversas ferramentas para gerar o documento de "
+"mapeamento, incluindo o XDoclet Middlegen e AndroMDA."
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example mapping:"
+msgstr "Vamos iniciar com um exemplo de mapeamento:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe, however, the document elements and attributes that are used by "
+"Hibernate at runtime. The mapping document also contains some extra optional "
+"attributes and elements that affect the database schemas exported by the "
+"schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr ""
+"Discutiremos agora o conteúdo deste documento de mapeamento. Iremos apenas "
+"descrever os elementos do documento e funções que são utilizadas pelo "
+"Hibernate em tempo de execução. O documento de mapeamento também contém "
+"algumas funções adicionais e opcionais além de elementos que afetam os "
+"esquemas de banco de dados exportados pela ferramenta de exportação de "
+"esquemas. (Por exemplo, o atributo <literal>not-null</literal>). "
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD can be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate "
+"will always look for the DTD in its classpath first. If you experience "
+"lookups of the DTD using an Internet connection, check the DTD declaration "
+"against the contents of your classpath."
+msgstr ""
+"Todos os mapeamentos de XML devem declarar o doctype exibido. O DTD atual "
+"pode ser encontrado na URL abaixo, no diretório <literal>hibernate-x.x.x/src/"
+"org/ hibernate </literal> ou no <literal>hibernate3.jar</literal>. O "
+"Hibernate sempre irá procurar pelo DTD inicialmente no seu classpath. Se "
+"você tentar localizar o DTD usando uma conexão de internet, compare a "
+"declaração do seu DTD com o conteúdo do seu classpath."
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "Solucionador de Entidade"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will first attempt to resolve DTDs in its classpath. It does this "
+"is by registering a custom <literal>org.xml.sax.EntityResolver</literal> "
+"implementation with the SAXReader it uses to read in the xml files. This "
+"custom <literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces:"
+msgstr ""
+"O Hibernate irá primeiro tentar solucionar os DTDs em seus classpath. Isto é "
+"feito, registrando uma implementação <literal>org.xml.sax.EntityResolver</"
+"literal> personalizada com o SAXReader que ele utiliza para ler os arquivos "
+"xml. Este <literal>EntityResolver</literal> personalizado, reconhece dois "
+"nomes de espaço de sistemas Id diferentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounters a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>. The resolver attempts to resolve these entities via the "
+"classloader which loaded the Hibernate classes."
+msgstr ""
+"Um <literal>hibernate namespace</literal> é reconhecido quando um "
+"solucionador encontra um systema Id iniciando com <literal>http://hibernate."
+"sourceforge.net/</literal>. O solucionador tenta solucionar estas entidades "
+"através do carregador de classe que carregou as classes do Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounters a systemId using a <literal>classpath://</literal> URL protocol. "
+"The resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"Um <literal>user namespace</literal> é reconhecido quando um solucionador "
+"encontra um sistema Id, utilizando um protocolo URL de <literal>classpath://"
+"</literal>. O solucionador tentará solucionar estas entidades através do "
+"carregador de classe do contexto de thread atual (1) e o carregador de "
+"classe (2) que carregou as classes do Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "Um exemplo de utilização do espaço de nome do usuário:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"Onde <literal>types.xml</literal> é um recurso no pacote <literal>your."
+"domain</literal> e contém um <link linkend=\"mapping-types-"
+"custom\">typedef</link>  "
+"personalizado."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate-mapping"
+msgstr "Mapeamento do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If they are "
+"specified, tablenames will be qualified by the given schema and catalog "
+"names. If they are missing, tablenames will be unqualified. The "
+"<literal>default-cascade</literal> attribute specifies what cascade style "
+"should be assumed for properties and collections that do not specify a "
+"<literal>cascade</literal> attribute. By default, the <literal>auto-import</"
+"literal> attribute allows you to use unqualified class names in the query "
+"language."
+msgstr ""
+"Este elemento possui diversos atributos opcionais. Os atributos "
+"<literal>schema</literal> e <literal>catalog</literal> especificam que "
+"tabelas referenciadas neste mapeamento pertencem ao esquema e/ou ao catálogo "
+"nomeado. Se especificados, os nomes das tabelas serão qualificados no "
+"esquema ou catálogo dado. Se não, os nomes das tabelas não serão "
+"qualificados. O atributo <literal>default-cascade</literal> especifica qual "
+"estilo de cascata será considerado pelas propriedades e coleções que não "
+"especificarem uma função <literal>cascade</literal>. A função <literal>auto-"
+"import</literal> nos deixa utilizar nomes de classes não qualificados na "
+"linguagem de consulta, por padrão."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr "<literal>schema</literal> (opcional): O nome do esquema do banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr "<literal>catalog</literal> (opcional): O nome do catálogo do banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): a default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (opcional – o padrão é <literal>none</"
+"literal>): Um estilo cascata padrão."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing all properties. "
+"It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (opcional – o padrão é <literal>property</"
+"literal>): A estratégia que o Hibernate deve utilizar para acessar todas as "
+"propridades. Pode ser uma implementação personalizada de "
+"<literal>PropertyAccessor</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): the default value for unspecified <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (opcional - o padrão é <literal>true</"
+"literal>): O valor padrão para atributos <literal>lazy</literal> não "
+"especificados da classe e dos mapeamentos de coleções."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): specifies whether we can use unqualified class names of classes "
+"in this mapping in the query language."
+msgstr ""
+"<literal>auto-import</literal> (opcional - o padrão é <literal>true</"
+"literal>): Especifica se podemos usar nomes de classes não qualificados, das "
+"classes deste mapeamento, na linguagem de consulta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>package</literal> (optional): specifies a package prefix to use for "
+"unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (opcional): Especifica um prefixo do pacote a ser "
+"considerado para nomes de classes não qualificadas no documento de "
+"mapeamento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have two persistent classes with the same unqualified name, you "
+"should set <literal>auto-import=\"false\"</literal>. An exception will "
+"result if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"Se você tem duas classes persistentes com o mesmo nome (não qualificadas), "
+"você deve ajustar <literal>auto-import=\"false\"</literal>. Caso você tentar "
+"ajustar duas classes para o mesmo nome \"importado\", isto resultará numa "
+"exceção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hibernate-mapping</literal> element allows you to nest several "
+"persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, "
+"however, good practice (and expected by some tools) to map only a single "
+"persistent class, or a single class hierarchy, in one mapping file and name "
+"it after the persistent superclass. For example, <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"Observe que o elemento <literal>hibernate-mapping</literal> permite que você "
+"aninhe diversos mapeamentos de <literal>&lt;class&gt;</literal> "
+"persistentes, como mostrado abaixo. Entretanto, é uma boa prática (e "
+"esperado por algumas ferramentas) o mapeamento de apenas uma classe "
+"persistente simples (ou uma hierarquia de classes simples) em um arquivo de "
+"mapeamento e nomeá-la após a superclasse persistente, por exemplo: "
+"<literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, ou se "
+"estiver usando herança, <literal>Animal.hbm.xml</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Class"
+msgstr "Classe"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can declare a persistent class using the <literal>class</literal> "
+"element. For example:"
+msgstr ""
+"Você pode declarar uma classe persistente utilizando o elemento "
+"<literal>class</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): the fully qualified Java class name of "
+"the persistent class or interface. If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (opcional): O nome da classe Java inteiramente "
+"qualificado da classe persistente (ou interface). Se a função é ausente, "
+"assume-se que o mapeamento é para entidades não-POJO. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): the name of its database table."
+msgstr ""
+"<literal>table</literal> (opcional – padrão para nomes de classes não "
+"qualificadas): O nome da sua tabela do banco de dados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses that is used for "
+"polymorphic behavior. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional – padrão para o nome da "
+"classe): Um valor que distingue subclasses individuais, usadas para o "
+"comportamento polimórfico. Valores aceitos incluem <literal>null</literal> e "
+"<literal>not null</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (opcional - valor padrão <literal>true</"
+"literal>): Especifica quais instâncias da classe são (ou não) mutáveis."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): overrides the schema name specified by "
+"the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>schema</literal> (opcional): Sobrepõe o nome do esquema "
+"especificado pelo elemento raíz <literal>&lt;hibernate-mapping&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): overrides the catalog name specified "
+"by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr ""
+"<literal>catalog</literal> (opcional): Sobrepõe o nome do catálogo "
+"especificado pelo elemento raíz <literal>&lt;hibernate-mapping&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies an interface to use for lazy "
+"initializing proxies. You can specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica uma interface para ser "
+"utilizada pelos proxies de inicialização lazy. Você pode especificar o nome "
+"da própria classe. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and can contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (opcional, valor padrão <literal>false</"
+"literal>): Especifica que o SQL de <literal>UPDATE</literal> deve ser gerado "
+"em tempo de execução e conter apenas aquelas colunas cujos valores foram "
+"alterados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional - defaults to <literal>false</"
+"literal>): specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (opcional, valor padrão <literal>falso</"
+"literal>): Especifica que o SQL de <literal>INSERT</literal> deve ser gerado "
+"em tempo de execução e conter apenas aquelas colunas cujos valores não estão "
+"nulos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional - defaults to "
+"<literal>false</literal>): specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. Only when a transient object has been "
+"associated with a new session using <literal>update()</literal>, will "
+"Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an "
+"<literal>UPDATE</literal> is actually required."
+msgstr ""
+"<literal>select-before-update</literal> (opcional, valor padrão "
+"<literal>false</literal>): Especifica que o Hibernate <emphasis>nunca</"
+"emphasis> deve executar um SQL de <literal>UPDATE</literal> a não ser que "
+"seja certo que um objeto está atualmente modificado. Em certos casos (na "
+"verdade, apenas quando um objeto transiente foi associado a uma nova sessão "
+"utilizando <literal>update()</literal>), isto significa que o Hibernate irá "
+"executar uma instrução SQL de <literal>SELECT</literal> adicional para "
+"determinar se um <literal>UPDATE</literal> é necessário nesse momento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional - defaults to <literal>implicit</"
+"literal>): determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (opcional, padrão para <literal>implicit</"
+"literal>): Determina se deve ser utilizado a consulta polimórfica implícita "
+"ou explicitamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition to be used when retrieving objects of "
+"this class."
+msgstr ""
+"<literal>where</literal> (opicional): Especifica um comando SQL "
+"<literal>WHERE</literal> arbitrário para ser usado quando da recuperação de "
+"objetos desta classe."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (opcional): Especifica uma "
+"<literal>ClassPersister</literal> customizada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for fetching instances of this class by "
+"identifier."
+msgstr ""
+"<literal>batch-size</literal> (opcional, valor padrão <literal>1</literal>) "
+"Especifica um \"tamanho de lote\" para a recuperação de instâncias desta "
+"classe pela identificação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>version</"
+"literal>): determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional, valor padrão <literal>version</"
+"literal>): Determina a estratégia de bloqueio."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): lazy fetching can be disabled by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (opcional): A recuperação lazy pode ser "
+"completamente desabilitada, ajustando <literal>lazy=\"false\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional - defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times, potentially to "
+"different tables. It also allows entity mappings that are represented by "
+"Maps or XML at the Java level. In these cases, you should provide an "
+"explicit arbitrary name for the entity. See <xref linkend=\"persistent-"
+"classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr ""
+"<literal>entity-name</literal> (opcional - padrão para o nome da classe): O "
+"Hibernate3 permite uma classe ser mapeada múltiplas vezes, potencialmente "
+"para diferentes tabelas. Além disso, isto permite mapeamentos de entidades "
+"que são representadas por Maps ou XML no nível Java. Nestes casos, você deve "
+"especificar um nome arbitrário explicitamente para a entidade. Veja <xref "
+"linkend=\"persistent-classes-dynamicmodels\"/> e <xref linkend=\"xml\"/> "
+"para maiores informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>check</literal> (optional): an SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (opcional): Uma expressão SQL utilizada para gerar "
+"uma restrição de <emphasis>verificação</emphasis> de múltiplas linhas para a "
+"geração automática do esquema. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. "
+"On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra "
+"column for fast updates once this option has been set to <literal>rowid</"
+"literal>. A ROWID is an implementation detail and represents the physical "
+"location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (opcional): O Hibernate poder usar as então "
+"chamadas ROWIDs em bancos de dados que a suportam. Por exemplo, no Oracle, o "
+"Hibernate pode utilizar a coluna extra rowid para atualizações mais rápidas "
+"se você configurar esta opção para <literal>rowid</literal>. Um ROWID é uma "
+"implementação que representa de maneira detalhada a localização física de "
+"uma determinada tuple armazenada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): maps an immutable and read-only "
+"entity to a database subselect. This is useful if you want to have a view "
+"instead of a base table. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (opcional): Mapeia uma entidade imutável e "
+"somente de leitura para um subconjunto do banco de dados. Útil se você "
+"quiser ter uma visão, ao invés de uma tabela. Veja abaixo para mais "
+"informações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): is used to mark abstract "
+"superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (opcional): Utilizada para marcar superclasses "
+"abstratas em hierarquias <literal>&lt;union-subclass&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is acceptable for the named persistent class to be an interface. You can "
+"declare implementing classes of that interface using the <literal>&lt;"
+"subclass&gt;</literal> element. You can persist any <emphasis>static</"
+"emphasis> inner class. Specify the class name using the standard form i.e. "
+"<literal>e.g.Foo$Bar</literal>."
+msgstr ""
+"É perfeitamente aceitável uma classe persitente nomeada ser uma interface. "
+"Você deverá então declarar as classes implementadas desta interface "
+"utilizando o elemento <literal>&lt;subclass&gt;</literal>. Você pode "
+"persistir qualquer classe interna <emphasis>estática</emphasis>. Você deverá "
+"especificar o nome da classe usando a forma padrão, por exemplo: <literal>eg."
+"Foo&#36;Bar</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"Classes imutáveis, <literal>mutable=\"false\"</literal>, não podem ser "
+"modificadas ou excluídas pela aplicação. Isso permite que o Hibernate "
+"aperfeiçoe o desempenho. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies that implement the named interface. The persistent object will load "
+"when a method of the proxy is invoked. See \"Initializing collections and "
+"proxies\" below."
+msgstr ""
+"A função opcional <literal>proxy</literal> habilita a inicialização lazy das "
+"instâncias persistentes da classe. O Hibernate irá retornar CGLIB proxies "
+"como implementado na interface nomeada. O objeto persistente atual será "
+"carregado quando um método do proxy for invocado. Veja \"Inicialização de "
+"Coleções e Proxies\" abaixo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or class, and that instances of any subclass of the class will be "
+"returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class. Queries that name the class will "
+"return only instances of subclasses mapped inside this <literal>&lt;class&gt;"
+"</literal> declaration as a <literal>&lt;subclass&gt;</literal> or "
+"<literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default "
+"<literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table This allows a \"lightweight\" class that contains a subset of the "
+"table columns."
+msgstr ""
+"Polimorfismo <emphasis>implícito</emphasis> significa que instâncias de uma "
+"classe serão retornadas por uma consulta que dá nome a qualquer superclasse "
+"ou interface e classe implementada, além das instâncias de qualquer "
+"subclasse da classe serão retornadas por uma consulta que nomeia a classe "
+"por si. Polimorfismo <emphasis>explícito</emphasis> significa que instâncias "
+"da classe serão retornadas apenas por consultas que explicitamente nomeiam a "
+"classe e que as consultas que nomeiam as classes irão retornar apenas "
+"instâncias de subclasses mapeadas dentro da declaração <literal>&lt;class&gt;"
+"</literal> como uma <literal>&lt;subclass&gt;</literal> ou <literal>&lt;"
+"joined-subclass&gt;</literal>. Para a maioria dos casos, o valor padrão "
+"<literal>polymorphism=\"implicit\"</literal>, é apropriado. Polimorfismo "
+"explicito é útil quando duas classes distintas estão mapeadas para a mesma "
+"tabela. Isso aceita uma classe \"peso leve\" que contém um subconjunto de "
+"colunas da tabela. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You can, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, "
+"or you can even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements, "
+"for example, persistence via stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr ""
+"O atributo <literal>persister</literal> deixa você customizar a estratégia "
+"de persistência utilizada para a classe. Você pode, por exemplo, especificar "
+"sua própria subclasse do <literal>org.hibernate.persister.EntityPersister</"
+"literal> ou você pode criar uma implementação completamente nova da "
+"interface <literal>org.hibernate.persister.ClassPersister</literal> que "
+"implementa a persistência através de, por exemplo, chamadas a procedimentos "
+"armazenados, serialização de arquivos planos ou LDAP. Veja <literal>org."
+"hibernate.test.CustomPersister</literal> para um exemplo simples de "
+"\"persistência\" para uma <literal>Hashtable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> "
+"settings are not inherited by subclasses, so they can also be specified on "
+"the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</"
+"literal> elements. Although these settings can increase performance in some "
+"cases, they can actually decrease performance in others."
+msgstr ""
+"Observe que as configurações <literal>dynamic-update</literal> e "
+"<literal>dynamic-insert</literal> não são herdadas pelas subclasses e assim "
+"podem também ser especificadas em elementos <literal>&lt;subclass&gt;</"
+"literal> ou <literal>&lt;joined-subclass&gt;</literal>. Estas configurações "
+"podem incrementar o desempenho em alguns casos, mas podem realmente diminuir "
+"o desempenho em outras. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is useful to prevent a database update trigger being called "
+"unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"O uso de <literal>select-before-update</literal> geralmente irá diminuir o "
+"desempenho. Ela é muito útil para prevenir que um trigger de atualização no "
+"banco de dados seja ativado desnecessariamente, se você reconectar um nó de "
+"uma instância desconectada em uma <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"Se você ativar <literal>dynamic-update</literal>, você terá de escolher a "
+"estratégia de bloqueio otimista:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr "<literal>version</literal>: verifica as colunas de versão/timestamp"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all</literal>: verifica todas as colunas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dirty</literal>: check the changed columns, allowing some "
+"concurrent updates"
+msgstr ""
+"<literal>dirty</literal>: verifica as colunas modificadas, permitindo "
+"algumas atualizações concorrentes"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none</literal>: não utiliza o bloqueio otimista"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is <emphasis>strongly</emphasis> recommended that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This strategy "
+"optimizes performance and correctly handles modifications made to detached "
+"instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr ""
+"Nós <emphasis>realmente</emphasis> recomendamos que você utilize as colunas "
+"de versão/timestamp para o bloqueio otimista com o Hibernate. Esta é a "
+"melhor estratégia em relação ao desempenho e é a única estratégia que trata "
+"corretamente as modificações efetuadas em instâncias desconectadas (por "
+"exemplo, quando <literal>Session.merge()</literal> é utilizado)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping. This is transparent at the database level, although some DBMS do "
+"not support views properly, especially with updates. Sometimes you want to "
+"use a view, but you cannot create one in the database (i.e. with a legacy "
+"schema). In this case, you can map an immutable and read-only entity to a "
+"given SQL subselect expression:"
+msgstr ""
+"Não há diferença entre uma visão e uma tabela para o mapeamento do "
+"Hibernate, e como esperado isto é transparente no nível do banco de dados, "
+"mesmo que alguns bancos de dados não suportam visões apropriadamente, "
+"especialmente com atualizações. Algumas vezes, você quer utilizar uma visão, "
+"mas não pode criá-la no banco de dados (por exemplo, com um esquema legado). "
+"Neste caso, você pode mapear uma entidade imutável e de somente leitura, "
+"para uma dada expressão de subseleção SQL: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly and that queries against the derived entity do not return "
+"stale data. The <literal>&lt;subselect&gt;</literal> is available both as an "
+"attribute and a nested mapping element."
+msgstr ""
+"Declare as tabelas para sincronizar com esta entidade, garantindo que a auto-"
+"liberação ocorra corretamente, e que as consultas para esta entidade "
+"derivada não retornem dados desatualizados. O <literal>&lt;subselect&gt;</"
+"literal> está disponível tanto como um atributo como um elemento mapeado "
+"aninhado."
+
+#. Tag: title
+#, no-c-format
+msgid "id"
+msgstr "id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal>&lt;id&gt;</"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"Classes mapeadas <emphasis>devem</emphasis> declarar a coluna de chave "
+"primária da tabela do banco de dados. Muitas classes irão também ter uma "
+"propriedade ao estilo Java-Beans declarando o identificador único de uma "
+"instância. O elemento <literal>&lt;id&gt;</literal> define o mapeamento "
+"desta propriedade para a chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the name of the identifier property."
+msgstr "<literal>name</literal> (opcional): O nome da propriedade do identificador."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr "<literal>type</literal> (opcional): um nome que indica o tipo de Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (opcional – padrão para o nome da propridade): O "
+"nome coluna chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): an identifier property value that indicates an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - padrão para um valor \"sensível"
+"\"): O valor da propriedade de identificação que indica que a instância foi "
+"novamente instanciada (unsaved), diferenciando de instâncias desconectadas "
+"que foram salvas ou carregadas em uma sessão anterior. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"<literal>access</literal> (opcional - padrão para <literal>property</"
+"literal>): A estratégia que o Hiberante deve utilizar para acessar o valor "
+"da propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"Se a função <literal>name</literal> não for declarada, considera-se que a "
+"classe não tem a propriedade de identificação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"A função <literal>unsaved-value</literal> não é mais necessária no Hibernate "
+"3."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is an alternative <literal>&lt;composite-id&gt;</literal> declaration "
+"that allows access to legacy data with composite keys. Its use is strongly "
+"discouraged for anything else."
+msgstr ""
+"Há uma declaração alternativa <literal>&lt;composite-id&gt;</literal> que "
+"permite o acesso à dados legados com chaves compostas. Nós realmente "
+"desencorajamos o uso deste para qualquer outra função."
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "Gerador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;generator&gt;</literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal>&lt;param&gt;</"
+"literal> element."
+msgstr ""
+"O elemento filho opcional <literal>&lt;generator&gt;</literal> nomeia uma "
+"classe Java usada para gerar identificadores únicos para instâncias de uma "
+"classe persistente. Se algum parâmetro é requerido para configurar ou "
+"inicializar a instância geradora, eles são passados utilizando o elemento "
+"<literal>&lt;param&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface. Some "
+"applications can choose to provide their own specialized implementations, "
+"however, Hibernate provides a range of built-in implementations. The "
+"shortcut names for the built-in generators are as follows:"
+msgstr ""
+"Todos os geradores implementam a interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. Esta é uma interface bem simples. Algumas "
+"aplicações podem prover suas próprias implementações especializadas, "
+"entretanto, o Hibernate disponibiliza um conjunto de implementações "
+"internamente. Há nomes de atalhos para estes geradores internos, conforme "
+"segue abaixo: "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>increment</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"gera identificadores dos tipos <literal>long</literal>, <literal>short</"
+"literal> ou <literal>int</literal> que são únicos apenas quando nenhum outro "
+"processo está inserindo dados na mesma tabela. <emphasis>Não utilize em "
+"ambientes de cluster.</emphasis>"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"suporta colunas de identidade em DB2, MySQL, Servidor MS SQL, Sybase e "
+"HypersonicSQL. O identificador retornado é do tipo <literal>long</literal>, "
+"<literal>short</literal> ou <literal>int</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>sequence</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"utiliza uma seqüência em DB2, PostgreSQL, Oracle, SAP DB, McKoi ou um "
+"gerador no Interbase. O identificador de retorno é do tipo <literal> long</"
+"literal>, <literal>short</literal> ou <literal>int</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>hilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"utiliza um algoritmo hi/lo para gerar de forma eficiente identificadores do "
+"tipo <literal>long</literal>, <literal>short</literal> ou <literal>int</"
+"literal>, a partir de uma tabela e coluna fornecida (por padrão "
+"<literal>hibernate_unique_key</literal> e <literal>next_hi</literal>) como "
+"fonte para os valores hi. O algoritmo hi/lo gera identificadores que são "
+"únicos apenas para um banco de dados específico."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>seqhilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"utiliza um algoritmo hi/lo para gerar de forma eficiente identificadores do "
+"tipo <literal>long</literal>, <literal>short</literal> ou <literal>int</"
+"literal>, a partir de uma seqüência de banco de dados fornecida."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>uuid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string that "
+"are unique within a network (the IP address is used). The UUID is encoded as "
+"a string of 32 hexadecimal digits in length."
+msgstr ""
+"utiliza um algorítimo UUID de 128-bits para gerar identificadores do tipo "
+"string, únicos em uma rede (o endereço IP é utilizado). O UUID é codificado "
+"como um string de dígitos hexadecimais de tamanho 32."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>guid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr "utiliza um string GUID gerado pelo banco de dados no Servidor MS SQL e MySQL."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>native</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"selects <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"seleciona entre <literal>identity</literal>, <literal>sequence</literal>ou "
+"<literal>hilo</literal> dependendo das capacidades do banco de dados "
+"utilizado."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>assigned</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"lets the application assign an identifier to the object before <literal>save"
+"()</literal> is called. This is the default strategy if no <literal>&lt;"
+"generator&gt;</literal> element is specified."
+msgstr ""
+"deixa a aplicação definir um identificador para o objeto antes que o "
+"<literal>save()</literal> seja chamado. Esta é a estratégia padrão caso "
+"nenhum elemento <literal>&lt;generator&gt;</literal> seja especificado. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>select</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"retrieves a primary key, assigned by a database trigger, by selecting the "
+"row by some unique key and retrieving the primary key value."
+msgstr ""
+"retorna a chave primária recuperada por um trigger do banco de dados, "
+"selecionando uma linha pela chave única e recuperando o valor da chave "
+"primária."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>foreign</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"uses the identifier of another associated object. It is usually used in "
+"conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key "
+"association."
+msgstr ""
+"utiliza o identificador de um outro objeto associado. Normalmente utilizado "
+"em conjunto com uma associação de chave primária do tipo <literal>&lt;one-to-"
+"one&gt;</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"a specialized sequence generation strategy that utilizes a database sequence "
+"for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to return the generated identifier value as part of the "
+"insert statement execution. This strategy is only supported on Oracle 10g "
+"drivers targeted for JDK 1.4. Comments on these insert statements are "
+"disabled due to a bug in the Oracle drivers."
+msgstr ""
+"uma estratégia de geração de seqüência especializada que use uma seqüência "
+"de banco de dados para a geração de valor atual, mas combina isto com JDBC3 "
+"getGeneratedKeys para de fato retornar o valor do identificador gerado como "
+"parte da execução de instrução de inserção. Esta estratégia é somente "
+"conhecida para suportar drivers da Oracle 10g, focados em JDK 1.4. Note que "
+"os comentários sobre estas instruções de inserção estão desabilitados devido "
+"a um bug nos drivers da Oracle. "
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "Algoritmo Hi/lo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm. The first "
+"implementation requires a \"special\" database table to hold the next "
+"available \"hi\" value. Where supported, the second uses an Oracle-style "
+"sequence."
+msgstr ""
+"Os geradores <literal>hilo</literal> e <literal>seqhilo</literal> fornecem "
+"duas implementações alternativas do algoritmo hi/lo, uma solução "
+"preferencial para a geração de identificadores. A primeira implementação "
+"requer uma tabela \"especial\" do banco de dados para manter o próximo valor "
+"\"hi\" disponível. A segunda utiliza uma seqüência do estilo Oracle (quando "
+"suportado)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, you cannot use <literal>hilo</literal> when supplying your "
+"own <literal>Connection</literal> to Hibernate. When Hibernate uses an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must configure the <literal>hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+"Infelizmente, você não pode utilizar <literal>hilo</literal> quando estiver "
+"fornecendo sua própria <literal>Connection</literal> para o Hibernate. "
+"Quando o Hibernate estiver usando uma fonte de dados do servidor de "
+"aplicações para obter conexões suportadas com JTA, você precisará configurar "
+"adequadamente o <literal>hibernate.transaction.manager_lookup_class</"
+"literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "Algoritmo UUID"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM that is accurate to a "
+"quarter second, system time and a counter value that is unique within the "
+"JVM. It is not possible to obtain a MAC address or memory address from Java "
+"code, so this is the best option without using JNI."
+msgstr ""
+"O UUID contém: o endereço IP, hora de início da JVM que é com precisão de um "
+"quarto de segundo, a hora do sistema e um valor contador que é único dentro "
+"da JVM. Não é possível obter o endereço MAC ou um endereço de memória do "
+"código Java, portanto este é o melhor que pode ser feito sem utilizar JNI."
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "Colunas de identidade e seqüências"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you can use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"can use <literal>sequence</literal> style key generation. Both of these "
+"strategies require two SQL queries to insert a new object. For example:"
+msgstr ""
+"Para bancos de dados que suportam colunas de identidade (DB2, MySQL, Sybase, "
+"MS SQL), você pode utilizar uma geração de chave <literal>identity</"
+"literal>. Para bancos de dados que suportam sequencias (DB2, Oracle, "
+"PostgreSQL, Interbase, McKoi, SAP DB) você pode utilizar a geração de chaves "
+"no estilo <literal>sequence</literal>. As duas estratégias requerem duas "
+"consultas SQL para inserir um novo objeto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will, "
+"depending on the capabilities of the underlying database, choose from the "
+"<literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</"
+"literal> strategies."
+msgstr ""
+"Para desenvolvimento multi-plataforma, a estratégia <literal>native</"
+"literal> irá escolher entre as estratégias <literal>identity</literal>, "
+"<literal>sequence</literal> e <literal>hilo</literal>, dependendo das "
+"capacidades do banco de dados utilizado."
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "Identificadores atribuídos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the application to assign identifiers, as opposed to having "
+"Hibernate generate them, you can use the <literal>assigned</literal> "
+"generator. This special generator uses the identifier value already assigned "
+"to the object's identifier property. The generator is used when the primary "
+"key is a natural key instead of a surrogate key. This is the default "
+"behavior if you do not specify a <literal>&lt;generator&gt;</literal> "
+"element."
+msgstr ""
+"Se você quiser que a aplicação especifique os identificadores, em vez do "
+"Hibernate gerá-los, você deve utilizar o gerador <literal>assigned</"
+"literal>. Este gerador especial irá utilizar o valor do identificador "
+"especificado para a propriedade de identificação do objeto. Este gerador é "
+"usado quando a chave primária é a chave natural em vez de uma chave "
+"substituta. Este é o comportamento padrão se você não especificar um "
+"elemento <literal>&lt;generator&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go "
+"to the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"A escolha do gerador <literal>assigned</literal> faz com que o Hibernate "
+"utilize <literal>unsaved-value=\"undefined\"</literal>. Isto força o "
+"Hibernate ir até o banco de dados para determinar se uma instância está "
+"transiente ou desacoplada, a não ser que haja uma versão ou uma propriedade "
+"de timestamp, ou que você definia <literal>Interceptor.isUnsaved()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "Chaves primárias geradas por triggers"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr "O Hibernate não gera DDL com triggers, apenas para sistemas legados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal>. It is defined by the class, as a "
+"natural key and a surrogate key named <literal>person_id</literal>, whose "
+"value is generated by a trigger."
+msgstr ""
+"No exemplo acima, há uma única propriedade com valor nomeada "
+"<literal>socialSecurityNumber</literal> definida pela classe, uma chave "
+"natural, e uma chave substituta nomeada <literal>person_id</literal> cujo "
+"valor é gerado por um trigger."
+
+#. Tag: title
+#, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "Aprimoração dos geradores de identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization Optimization means that "
+"you do not have to query the database for every request for a new identifier "
+"value. These two new generators are intended to take the place of some of "
+"the named generators described above, starting in 3.3.x. However, they are "
+"included in the current releases and can be referenced by FQN."
+msgstr ""
+"Iniciando com a liberação 3.2.3, existem dois novos geradores que "
+"representam uma reavaliação de dois diferentes aspectos da geração "
+"identificadora. O primeiro aspecto é a portabilidade do banco de dados, o "
+"segundo é a otimização. A otimização significa que você não precisa "
+"questionar o banco de dados a cada solicitação para um novo valor de "
+"identificador. Estes dois geradores possuem por intenção substituir alguns "
+"dos geradores nomeados acima, começando em 3.3.x. No entanto, eles estão "
+"incluídos nas liberações atuais e podem ser referenciados pelo FQN."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended, firstly, as a "
+"replacement for the <literal>sequence</literal> generator and, secondly, as "
+"a better portability generator than <literal>native</literal>. This is "
+"because <literal>native</literal> generally chooses between "
+"<literal>identity</literal> and <literal>sequence</literal> which have "
+"largely different semantics that can cause subtle issues in applications "
+"eyeing portability. <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal>, however, achieves portability in a "
+"different manner. It chooses between a table or a sequence in the database "
+"to store its incrementing values, depending on the capabilities of the "
+"dialect being used. The difference between this and <literal>native</"
+"literal> is that table-based and sequence-based storage have the same exact "
+"semantic. In fact, sequences are exactly what Hibernate tries to emulate "
+"with its table-based generators. This generator has a number of "
+"configuration parameters:"
+msgstr ""
+"A primeira destas novas gerações é a <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> que primeiramente é uma substituição para o "
+"gerador <literal>sequence</literal> e, segundo, um melhor gerador de "
+"portabilidade que o <literal>native</literal>. Isto é devido ao "
+"<literal>native</literal> normalmente escolher entre <literal>identity</"
+"literal> e <literal>sequence</literal>, que são semânticas extremamente "
+"diferentes das quais podem causar problemas súbitos em portabilidade de "
+"observação de aplicativos. No entanto, o <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> atinge a portabilidade numa maneira "
+"diferente. Ele escolhe entre uma tabela ou uma seqüência no banco de dados "
+"para armazenar seus valores de incrementação, dependendo nas capacidades do "
+"dialeto sendo usado. A diferença entre isto e o <literal>native</literal> é "
+"que o armazenamento baseado na tabela e seqüência possuem exatamente a mesma "
+"semântica. Na realidade, as seqüências são exatamente o que o Hibernate "
+"tenta imitar com os próprios geradores baseados na tabela. Este gerador "
+"possui um número de parâmetros de configuração: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): the name of the sequence or table to "
+"be used."
+msgstr ""
+"<literal>sequence_name</literal> (opcional - valor padrão "
+"<literal>hibernate_sequence</literal>) o nome da seqüência ou tabela a ser "
+"usada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): the initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typically named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>initial_value</literal> (opcional - padrão para <literal>1</"
+"literal>) O valor inicial a ser restaurado a partir da seqüência/tabela. Em "
+"termos da criação de seqüência, isto é análogo à cláusula tipicamente "
+"nomeada \"STARTS WITH\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): the value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause "
+"typically named \"INCREMENT BY\"."
+msgstr ""
+"<literal>increment_size</literal> (opcional - padrão para <literal>1</"
+"literal>): o valor pelo qual as chamadas para a seqüência/tabela devem "
+"diferenciar-se. Nos termos da criação da seqüência, isto é análogo à "
+"cláusula tipicamente nomeada \"INCREMENT BY\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional - defaults to <literal>false</"
+"literal>): should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force_table_use</literal> (opcional - padrão para <literal>false</"
+"literal>): devemos forçar o uso de uma tabela como uma estrutura de reforço, "
+"mesmo que o dialeto possa suportar a seqüência?"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional - defaults to <literal>next_val</"
+"literal>): only relevant for table structures, it is the name of the column "
+"on the table which is used to hold the value."
+msgstr ""
+"<literal>value_column</literal> (opcional - padrão para <literal>next_val</"
+"literal>): apenas relevante para estruturas de tabela, este é o nome da "
+"coluna onde na tabela que é usado para manter o valor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal>none</"
+"literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" /"
+">"
+msgstr ""
+"<literal>optimizer</literal> (opcional – padrão para <literal>none</"
+"literal>): Veja <xref linkend=\"mapping-declaration-id-enhanced-optimizers"
+"\" />"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, which is intended, firstly, as a replacement for "
+"the <literal>table</literal> generator, even though it actually functions "
+"much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</"
+"literal>, and secondly, as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> that utilizes the notion of "
+"pluggable optimizers. Essentially this generator defines a table capable of "
+"holding a number of different increment values simultaneously by using "
+"multiple distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+"O segundo destes novos geradores é o <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal>, que primeiramente é uma substituição para o "
+"gerador <literal>table</literal>, mesmo que isto funcione muito mais como um "
+"<literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>, e "
+"segundo, como uma reimplementação do <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> que utiliza a noção dos otimizadores "
+"pugláveis. Basicamente, este gerador define uma tabela capacitada de manter "
+"um número de valores de incremento simultâneo pelo uso múltiplo de filas de "
+"chaves distintas. Este gerador possui um número de parâmetros de "
+"configuração."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional - defaults to "
+"<literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr ""
+"<literal>table_name</literal> (opcional - padrão para "
+"<literal>hibernate_sequences</literal>): O nome da tabela a ser usado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional - defaults to "
+"<literal>next_val</literal>): the name of the column on the table that is "
+"used to hold the value."
+msgstr ""
+"<literal>value_column_name</literal> (opcional - padrão para "
+"<literal>next_val</literal>): o nome da coluna na tabela que é usado para "
+"manter o valor."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional - defaults to "
+"<literal>sequence_name</literal>): the name of the column on the table that "
+"is used to hold the \"segment key\". This is the value which identifies "
+"which increment value to use."
+msgstr ""
+"<literal>segment_column_name</literal> (opcional - padrão para "
+"<literal>sequence_name</literal>) O nome da coluna da tabela que é usado "
+"para manter a \"chave de segmento\". Este é o valor que identifica qual "
+"valor de incremento a ser usado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional - defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>base</literal> (opcional - padrão para <literal>default</literal>) "
+"O valor da \"chave de segmento\" para o segmento pelo qual nós queremos "
+"obter os valores de incremento para este gerador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional - defaults to "
+"<literal>255</literal>): Used for schema generation; the column size to "
+"create this segment key column."
+msgstr ""
+"<literal>segment_value_length</literal> (opcional - padrão para "
+"<literal>255</literal>): Usado para a geração do esquema. O tamanho da "
+"coluna para criar esta coluna de chave de segmento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional - defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>initial_value</literal> (opcional - valor padrão para <literal>1</"
+"literal>): O valor inicial a ser restaurado a partir da tabela."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional - defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>increment_size</literal> (opcional - padrão para <literal>1</"
+"literal>): O valor pelo qual as chamadas subseqüentes para a tabela devem "
+"diferir-se."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional - defaults to <literal></literal>): "
+"See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr ""
+"<literal>optimizer</literal> (opcional – padrão para <literal></literal>): "
+"Consulte <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generator optimization"
+msgstr "Otimização do Gerador de Identificação"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For identifier generators that store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you can group a bunch of them in memory and "
+"only hit the database when you have exhausted your in-memory value group. "
+"This is the role of the pluggable optimizers. Currently only the two "
+"enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> "
+"support this operation."
+msgstr ""
+"Para os geradores de identificação que armazenam valores no banco de dados, "
+"é ineficiente para os mesmos atingirem o banco de dados em cada e toda "
+"chamada para gerar um valor de identificação novo. Ao invés disto, você pode "
+"agrupá-los na memória e apenas alcançar o banco de dados quando exceder o "
+"grupo de valor em memória. Esta é a função dos otimizadores pugláveis. "
+"Atualmente, apenas dois geradores aprimorados suportam esta operação. (<xref "
+"linkend=\"mapping-declaration-id-enhanced\"/>)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): this will not perform any optimizations and hit the database for "
+"each and every request."
+msgstr ""
+"<literal>none</literal> (geralmente este é o padrão, caso nenhum otimizador "
+"for especificado): isto não executará quaisquer otimizações e alcançará o "
+"banco de dados para cada e toda solicitação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\". The "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+"<literal>hilo</literal>: aplica-se ao algoritmo em volta dos valores "
+"restaurados do banco de dados. Espera-se que os valores a partir do banco de "
+"dados para este otimizador sejam seqüenciais. Os valores restaurados a "
+"partir da estrutura do banco de dados para este otimizador indica um "
+"\"número de grupo\". O <literal>increment_size</literal> é multiplicado pelo "
+"valor em memória para definir um grupo \"hi value\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this "
+"optimizer attempts to minimize the number of hits to the database. Here, "
+"however, we simply store the starting value for the \"next group\" into the "
+"database structure rather than a sequential value in combination with an in-"
+"memory grouping algorithm. Here, <literal>increment_size</literal> refers to "
+"the values coming from the database."
+msgstr ""
+"<literal>pooled</literal>: assim como o caso do <literal>hilo</literal>, "
+"este otimizador tenta minimizar o número de tentativas no banco de dados. No "
+"entanto, nós simplesmente implementamos o valor de inicialização para o "
+"\"próximo grupo\" na estrutura do banco de dados ao invés do valor "
+"seqüencial na combinação com um algoritmo de agrupamento em memória. Neste "
+"caso, o <literal>increment_size</literal> refere-se aos valores de entrada a "
+"partir do banco de dados."
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "Composição-id"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A table with a composite key can be mapped with multiple properties of the "
+"class as identifier properties. The <literal>&lt;composite-id&gt;</literal> "
+"element accepts <literal>&lt;key-property&gt;</literal> property mappings "
+"and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr ""
+"Uma tabela com uma chave composta, pode ser mapeada com múltiplas "
+"propriedades da classe como propriedades de identificação. O elemento "
+"<literal>&lt;composite-id&gt;</literal> aceita o mapeamento da propriedade "
+"<literal>&lt;key-property&gt;</literal> e mapeamentos <literal>&lt;key-many-"
+"to-one&gt;</literal>como elementos filhos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implement <literal>Serializable</literal>."
+msgstr ""
+"A classe persistente <emphasis>precisa</emphasis> substituir <literal>equals"
+"()</literal> e <literal>hashCode()</literal> para implementar "
+"identificadores compostos igualmente. E precisa também implementar "
+"<literal>Serializable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unfortunately, this approach means that a persistent object is its own "
+"identifier. There is no convenient \"handle\" other than the object itself. "
+"You must instantiate an instance of the persistent class itself and populate "
+"its identifier properties before you can <literal>load()</literal> the "
+"persistent state associated with a composite key. We call this approach an "
+"<emphasis>embedded</emphasis> composite identifier, and discourage it for "
+"serious applications."
+msgstr ""
+"Infelizmente, esta solução para um identificador composto significa que um "
+"objeto persistente é seu próprio identificador. Não há outro \"handle\" "
+"conveniente a não ser o próprio objeto. Você mesmo precisa instanciar uma "
+"instância de outra classe persistente e preencher suas propriedades de "
+"identificação antes que você possa dar um <literal>load()</literal> para o "
+"estado persistente associado com uma chave composta. Nós chamamos esta "
+"solução de identificador composto <emphasis>incorporado</emphasis> e não "
+"aconselhamos para aplicações sérias."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal>&lt;"
+"composite-id&gt;</literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"Uma segunda solução seria chamar de identificador composto <emphasis>mapped</"
+"emphasis> quando a propriedades de identificação nomeadas dentro do elemento "
+"<literal>&lt;composite-id&gt;</literal> estão duplicadas tanto na classe "
+"persistente como em uma classe de identificação separada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement <literal>Serializable</literal>. "
+"The main disadvantage of this approach is code duplication."
+msgstr ""
+"No exemplo, ambas as classes de identificadores compostas, "
+"<literal>MedicareId</literal>, e a própria classe entidade possuem "
+"propriedades nomeadas <literal>medicareNumber</literal> e "
+"<literal>dependent</literal>. A classe identificadora precisa sobrepor "
+"<literal>equals()</literal> e <literal>hashCode()</literal> e implementar "
+"<literal>Serializable</literal>. A desvantagem desta solução é óbvia: "
+"duplicação de código."
+
+#. Tag: para
+#, no-c-format
+msgid "The following attributes are used to specify a mapped composite identifier:"
+msgstr ""
+"As seguintes funções são utilizadas para especificar o mapeamento de um "
+"identificador composto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional - defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (opcional, <literal>false</literal> por padrão): "
+"Indica que um identificar composto mapeado é usado, e que as propriedades de "
+"mapeamento contidas refere-se tanto à classe entidade quanto à classe de "
+"identificação composta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - but required for a mapped composite "
+"identifier): the class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (opcional, mas requerida para um identificador "
+"composto mapeado): A classe usada como um identificador composto. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach, where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\" />. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"Descreveremos uma abordagem terciária e até mais conveniente, onde o "
+"identificador da composição é implementado como uma classe componente na "
+"<xref linkend=\"components-compositeid\"/>. Os atributos descritos abaixo "
+"aplicam-se apenas para esta abordagem: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional - required for this approach): a property "
+"of component type that holds the composite identifier. Please see chapter 9 "
+"for more information."
+msgstr ""
+"<literal>name</literal> (opcional, requerida para esta abordagem): Uma "
+"propriedade do tipo componente que armazena o identificador composto. Para "
+"maiores informações, por favor consulte o capítulo 9."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the property value."
+msgstr ""
+"<literal>access</literal> (opcional - padrão  para <literal>property</"
+"literal>): A estratégia que o Hiberante deve utilizar para acessar o valor "
+"da propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the component class used as a composite "
+"identifier. Please see the next section for more information."
+msgstr ""
+"<literal>class</literal> (opcional - valor padrão para o tipo de propriedade "
+"determinando por reflexão): A classe componente utilizada como um "
+"identificador composto. Por favor consulte a próxima seção para maiores "
+"informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The third approach, an <emphasis>identifier component</emphasis>, is "
+"recommended for almost all applications."
+msgstr ""
+"Esta terceira abordagem, um <emphasis>componente identificador</emphasis>, é "
+"a que nós recomendamos para a maioria das aplicações. "
+
+#. Tag: title
+#, no-c-format
+msgid "Discriminator"
+msgstr "Discriminador "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;discriminator&gt;</literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping "
+"strategy. It declares a discriminator column of the table. The discriminator "
+"column contains marker values that tell the persistence layer what subclass "
+"to instantiate for a particular row. A restricted set of types can be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"O elemento <literal>&lt;discriminator&gt;</literal> é necessário para "
+"persistência polimórfica utilizando a estratégia de mapeamento de tabela-por-"
+"classe-hierárquica e declara uma coluna discriminadora da tabela. A coluna "
+"discriminadora contém valores de marcação que informam à camada de "
+"persistência qual subclasse instanciar para uma linha em específico. Um "
+"restrito conjunto de tipos que podem ser utilizados: <literal>string</"
+"literal>, <literal>character</literal>, <literal>integer</literal>, "
+"<literal>byte</literal>, <literal>short</literal>, <literal>boolean</"
+"literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>): "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal> (opcional - padrão para <literal>class</literal>): "
+"O nome da coluna discriminadora."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>): "
+"a name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (opcional - padrão para <literal>string</literal>): "
+"O nome que indica o tipo Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>): "
+"\"forces\" Hibernate to specify the allowed discriminator values, even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (opcional - valor padrão <literal>false</literal>): "
+"\"Força\" o Hibernate a especificar valores discriminadores permitidos mesmo "
+"quando recuperando todas as instâncias da classe raíz. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. It tells Hibernate not to include the "
+"column in SQL <literal>INSERTs</literal>."
+msgstr ""
+"<literal>insert</literal> (opcional - valor padrão para <literal>true</"
+"literal>) Ajuste para <literal>false</literal> se sua coluna discriminadora "
+"também fizer parte do identificador composto mapeado. (Isto informa ao "
+"Hibernate para não incluir a coluna em comandos SQL <literal>INSERT</"
+"literal>s)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. It allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (opcional): Uma expressão SQL arbitrária que é "
+"executada quando um tipo tem que ser avaliado. Permite discriminação baseada "
+"em conteúdo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal>&lt;"
+"class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr ""
+"Valores atuais de uma coluna discriminada são especificados pela função "
+"<literal>discriminator-value</literal> da <literal>&lt;class&gt;</literal> e "
+"elementos da <literal>&lt;subclass&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is only useful if the table contains "
+"rows with \"extra\" discriminator values that are not mapped to a persistent "
+"class. This will not usually be the case."
+msgstr ""
+"O atributo <literal>force</literal> é útil (apenas) em tabelas contendo "
+"linhas com valores discriminadores \"extras\" que não estão mapeados para "
+"uma classe persistente. Este não é geralmente o caso."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>formula</literal> attribute allows you to declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr ""
+"Usando o atributo <literal>formula</literal> você pode declarar uma "
+"expressão SQL arbitrária que será utilizada para avaliar o tipo de uma "
+"linha. Por exemplo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Version (optional)"
+msgstr "Versão (opcional) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;version&gt;</literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis>. See below for more "
+"information:"
+msgstr ""
+"O elemento <literal>&lt;version&gt;</literal> é opcional e indica que a "
+"tabela possui dados versionados. Isto é particularmente útil se você planeja "
+"utilizar <emphasis>transações longas</emphasis>. Veja abaixo maiores "
+"informações: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (opcional - tem como padrão o nome da propriedade "
+"name): O nome da coluna mantendo o número da versão."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a property of the persistent class."
+msgstr "<literal>name</literal>: O nome da propriedade da classe persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"the type of the version number."
+msgstr ""
+"<literal>type</literal> (opcional - padrão para <literal>integer</literal>): "
+"O tipo do número da versão."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses to access the property value."
+msgstr ""
+"<literal>access</literal> (opcional - padrão para <literal>property</"
+"literal>): A estratégia que o Hiberante deve utilizar para acessar o valor "
+"da propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional – valor padrão para "
+"<literal>undefined </literal>): Um valor para a propriedade versão que "
+"indica que uma instância foi instanciada recentemente (unsaved), "
+"distinguindo de instâncias desconectadas que foram salvas ou carregadas em "
+"sessões anteriores. (<literal>undefined</literal> especifica que o valor da "
+"propriedade de identificação deve ser utilizado). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this version property value is generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - valor padrão <literal>never</"
+"literal>): Especifica que este valor de propriedade da versão é na verdade "
+"gerado pelo banco de dados. Veja o <link linkend=\"mapping-generated"
+"\">generated properties</link> "
+"para maiores informações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"specifies whether the version column should be included in SQL insert "
+"statements. It can be set to <literal>false</literal> if the database column "
+"is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (opcional - padrão para <literal>true</literal>): "
+"Especifica se a coluna de versão deve ser incluída na instrução de inserção "
+"do SQL. Pode ser configurado como <literal>false</literal> se a coluna do "
+"banco de dados estiver definida com um valor padrão de <literal>0</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version numbers can be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"Números de versão podem ser dos tipos Hibernate <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> ou <literal>calendar</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance. Hibernate will detect any instance with a null version or "
+"timestamp as transient, irrespective of what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid problems with transitive "
+"reattachment in Hibernate. It is especially useful for people using assigned "
+"identifiers or composite keys</emphasis>."
+msgstr ""
+"A versão ou timestamp de uma propriedade nunca deve ser nula para uma "
+"instância desconectada, assim o Hibernate irá identificar qualquer instância "
+"com uma versão nula ou timestamp como transiente, não importando qual outra "
+"estratégia <literal>unsaved-value</literal> tenha sido especificada. "
+"<emphasis>A declaração de uma versão nula ou a propriedade timestamp é um "
+"caminho fácil para tratar problemas com reconexões transitivas no Hibernate, "
+"especialmente úteis para pessoas utilizando identificadores atribuídos ou "
+"chaves compostas</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Timestamp (optional)"
+msgstr "Timestamp (opcional) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>&lt;timestamp&gt;</literal> element indicates that the "
+"table contains timestamped data. This provides an alternative to versioning. "
+"Timestamps are a less safe implementation of optimistic locking. However, "
+"sometimes the application might use the timestamps in other ways."
+msgstr ""
+"O elemento opcional <literal>&lt;timestamp&gt;</literal> indica que uma "
+"tabela contém dados em timestamp. Isso tem por objetivo dar uma alternativa "
+"para versionamento. Timestamps são por natureza uma implementação menos "
+"segura do bloqueio otimista. Entretanto, algumas vezes a aplicação pode usar "
+"timestamps em outros caminhos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (opcional - padrão para o nome da propriedade): O "
+"nome da coluna que mantém o timestamp."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: O nome da propriedade no estilo JavaBeans do tipo "
+"<literal>Date</literal> ou <literal>Timestamp</literal> da classe "
+"persistente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): a version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. <literal>Undefined</literal> "
+"specifies that the identifier property value should be used."
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - padrão para <literal>null</"
+"literal>): Um valor de propriedade da versão que indica que uma instância "
+"foi recentemente instanciada (unsaved), distinguindo-a de instâncias "
+"desconectadas que foram salvas ou carregadas em sessões prévias. "
+"<literal>Undefined</literal> especifica que um valor de propriedade de "
+"identificação deve ser utilizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"Where should Hibernate retrieve the timestamp value from? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\". It "
+"is safer to use in clustered environments. Not all <literal>Dialects</"
+"literal> are known to support the retrieval of the database's current "
+"timestamp. Others may also be unsafe for usage in locking due to lack of "
+"precision (Oracle 8, for example)."
+msgstr ""
+"<literal>source</literal> (opcional - padrão para <literal>vm</literal>): De "
+"onde o Hibernate deve recuperar o valor timestamp? Do banco de dados ou da "
+"JVM atual? Timestamps baseados em banco de dados levam a um overhead porque "
+"o Hibernate precisa acessar o banco de dados para determinar o \"próximo "
+"valor\", mas é mais seguro para uso em ambientes de cluster. Observe também, "
+"que nem todos os <literal>Dialects</literal> suportam a recuperação do "
+"carimbo de data e hora atual do banco de dados, enquanto outros podem não "
+"ser seguros para utilização em bloqueios, pela falta de precisão (Oracle 8, "
+"por exemplo)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - padrão para <literal>never</"
+"literal>): Especifica que o valor da propriedade timestamp é gerado pelo "
+"banco de dados. Veja a discussão do <link linkend=\"mapping-"
+"generated\">generated properties</link> "
+"para maiores informações. "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version "
+"type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db"
+"\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp"
+"\"&gt;</literal>"
+msgstr ""
+"Observe que o <literal>&lt;timestamp&gt;</literal> é equivalente a "
+"<literal>&lt;version type=\"timestamp\"&gt;</literal>. E <literal>&lt;"
+"timestamp source=\"db\"&gt;</literal> é equivalente a <literal>&lt;version "
+"type=\"dbtimestamp\"&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Property"
+msgstr "Propriedade "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;property&gt;</literal> element declares a persistent "
+"JavaBean style property of the class."
+msgstr ""
+"O elemento <literal>&lt;property&gt;</literal> declara uma propriedade de "
+"estilo JavaBean de uma classe."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr ""
+"<literal>name</literal>: o nome da propriedade, iniciando com letra "
+"minúscula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This can also be specified by "
+"nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr ""
+"<literal>column</literal> (opcional - padrão para o nome da propriedade): O "
+"nome da coluna mapeada do banco de dados. Isto pode também ser especificado "
+"pelo(s) elemento(s) <literal>&lt;column&gt;</literal> aninhados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - padrão para <literal>true</"
+"literal>): especifica que as colunas mapeadas devem ser incluídas nas "
+"instruções SQL de <literal>UPDATE</literal> e/ou <literal>INSERT</literal>. "
+"Ajustar ambas para <literal>false</literal> permite uma propridade \"derivada"
+"\" pura, cujo valor é inicializado de outra propriedade, que mapeie a mesma "
+"coluna(s) ou por uma disparo ou outra aplicação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (opcional): uma instrução SQL que definie o valor "
+"para uma propriedade <emphasis>calculada</emphasis>. Propriedades calculadas "
+"não possuem uma coluna de mapeamento para elas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this property should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (opcional - padrão para <literal>false</literal>): "
+"Especifica que esta propriedade deve ser atingida de forma lenta quando a "
+"instância da variável é acessada pela primeira vez. Isto requer "
+"instrumentação bytecode em tempo de criação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (opcional): Habilita a geração de DDL de uma única "
+"restrição para as colunas. Da mesma forma, permita que isto seja o alvo de "
+"uma <literal>property-ref</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Habilita a geração de DDL de uma "
+"restrição de nulidade para as colunas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, it determines if a "
+"version increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - padrão para <literal>true</"
+"literal>): Especifica se mudanças para esta propriedade requerem ou não "
+"bloqueio otimista. Em outras palavras, determina se um incremento de versão "
+"deve ocorrer quando esta propriedade está suja."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link> for more information."
+msgstr ""
+"<literal>generated</literal> (opcional - padrão para <literal>never</"
+"literal>): Especifica que o valor da propriedade é na verdade gerado pelo "
+"banco de dados. Veja a discussão do <link linkend=\"mapping-generated"
+"\">generated properties</link> "
+"para maiores informações. "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>typename</emphasis> pode ser:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Hibernate basic type: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr ""
+"O nome de um tipo básico de Hibernate: <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal>, etc. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The name of a Java class with a default basic type: <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal> etc."
+msgstr ""
+"O nome da classe Java com um tipo básico padrão: <literal>int, float, char, "
+"java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal>, etc."
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "O nome da classe Java serializável"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class name of a custom type: <literal>com.illflow.type.MyCustomType</"
+"literal> etc."
+msgstr ""
+"O nome da classe de um tipo customizado: <literal>com.illflow.type."
+"MyCustomType</literal>, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property and guess the correct Hibernate type. Hibernate will attempt to "
+"interpret the name of the return class of the property getter using, in "
+"order, rules 2, 3, and 4. In certain cases you will need the <literal>type</"
+"literal> attribute. For example, to distinguish between <literal>Hibernate."
+"DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a "
+"custom type."
+msgstr ""
+"Se você não especificar um tipo, o Hibernate irá utilizar reflexão sobre a "
+"propriedade nomeada para ter uma idéia do tipo de Hibernate correto. O "
+"Hibernate tentará interpretar o nome da classe retornada, usando as regras "
+"2, 3 e 4 nesta ordem. Em certos casos, você ainda precisará do atributo "
+"<literal>type</literal>. Por exemplo, para distinguir entre "
+"<literal>Hibernate.DATE</literal> e <literal>Hibernate.TIMESTAMP</literal>, "
+"ou para especificar um tipo customizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>access</literal> attribute allows you to control how Hibernate "
+"accesses the property at runtime. By default, Hibernate will call the "
+"property get/set pair. If you specify <literal>access=\"field\"</literal>, "
+"Hibernate will bypass the get/set pair and access the field directly using "
+"reflection. You can specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"A função <literal>access</literal> permite que você controle como o "
+"Hibernate irá acessar a propriedade em tempo de execução. Por padrão, o "
+"Hibernate irá chamar os métodos get/set da propriedades. Se você especificar "
+"<literal>access=\"field\"</literal>, o Hibernate irá bipassar os metodos get/"
+"set, acessando o campo diretamente, usando reflexão. Você pode especificar "
+"sua própria estratégia para acesso da propriedade criando uma classe que "
+"implemente a interface <literal>org.hibernate.property.PropertyAccessor</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A powerful feature is derived properties. These properties are by definition "
+"read-only. The property value is computed at load time. You declare the "
+"computation as an SQL expression. This then translates to a <literal>SELECT</"
+"literal> clause subquery in the SQL query that loads an instance:"
+msgstr ""
+"Um recurso especialmente poderoso é o de propriedades derivadas. Estas "
+"propriedades são por definição somente leitura, e o valor da propriedade é "
+"calculado em tempo de execução. Você declara este cálculo como uma expressão "
+"SQL, que traduz para cláusula <literal>SELECT</literal> de uma subconsulta "
+"da consulta SQL que carrega a instância: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can reference the entity table by not declaring an alias on a particular "
+"column. This would be <literal>customerId</literal> in the given example. "
+"You can also use the nested <literal>&lt;formula&gt;</literal> mapping "
+"element if you do not want to use the attribute."
+msgstr ""
+"Observe que você pode referenciar as entidades da própria tabela, através da "
+"não declaração de um alias para uma coluna particular. Isto seria o "
+"<literal>customerId</literal> no exemplo dado. Observe também que você pode "
+"usar o mapeamento de elemento aninhado <literal>&lt;formula&gt;</literal>, "
+"se você não gostar de usar o atributo. "
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "Muitos-para-um "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association; a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"Uma associação ordinária para outra classe persistente é declarada usando o "
+"elemento <literal>many-to-one</literal>. O modelo relacional é uma "
+"associação muitos para um: uma chave exterior de uma tabela referenciando as "
+"colunas da chave primária da tabela destino."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>: O nome da propriedade. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column. "
+"This can also be specified by nested <literal>&lt;column&gt;</literal> "
+"element(s)."
+msgstr ""
+"<literal>column</literal> (opcional): O nome da coluna da chave exterior. "
+"Isto pode também ser especificado através de elementos aninhados "
+"<literal>&lt;column&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the associated class."
+msgstr ""
+"<literal>class</literal> (opcional – padrão para o tipo de propriedade "
+"determinado pela reflexão): O nome da classe associada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (opcional): Especifica qual operação deve ser  "
+"cascateada do objeto pai para o objeto associado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"<literal>fetch</literal> (opcional - padrão para <literal>select</literal>): "
+"Escolhe entre recuperação da união exterior ou recuperação seqüencial de "
+"seleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from another property that maps to "
+"the same column(s), or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - valor padrão <literal>true</"
+"literal>): especifica que as colunas mapeadas devem ser incluídas em "
+"instruções SQL de <literal>UPDATE</literal> e/ou <literal>INSERT</literal>. "
+"Com o ajuste de ambas para <literal>false</literal> você permite uma "
+"associação \"derivada\" pura cujos valores são inicializados de algumas "
+"outras propriedades que mapeiam a(s) mesma(s) coluna(s) ou por um trigger ou "
+"outra aplicação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (opcional) O nome de uma propriedade da "
+"classe associada que esteja unida à esta chave exterior. Se não for "
+"especificada, a chave primária da classe associada será utilizada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. By allowing this to be the target of "
+"a <literal>property-ref</literal>, you can make the association multiplicity "
+"one-to-one."
+msgstr ""
+"<literal>unique</literal> (opcional): Habilita a geração DDL de uma "
+"restrição única para a coluna da chave exterior. Além disso, permite ser o "
+"alvo de uma <literal>property-ref</literal>. Isso torna a multiplicidade  da "
+"associação efetivamente um para um. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): enables the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Habilita a geração DDL de uma  "
+"restrição de nulidade para as colunas de chaves exteriores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. This requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal>(opcional – padrão para <literal>proxy</literal>): "
+"Por padrão, associações de ponto único são envoltas em um proxie. "
+"<literal>lazy=\"no-proxy\"</literal> especifica que a propriedade deve ser "
+"trazida de forma tardia quando a instância da variável é acessada pela "
+"primeira vez. Isto requer instrumentação bytecode em tempo de criação. O "
+"<literal>lazy=\"false\"</literal> especifica que a associação será sempre "
+"procurada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - padrão para <literal>exception</"
+"literal>): Especifica como as chaves exteriores que informam que linhas que "
+"estejam faltando serão manuseadas. O <literal>ignore</literal> tratará a "
+"linha faltante como uma associação nula."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class."
+msgstr ""
+"<literal>entity-name</literal> (opcional): O nome da entidade da classe "
+"associada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (optional): Uma instrução SQL que define um valor "
+"para uma chave exterior <emphasis>computed</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are divided into "
+"three categories. First, basic operations, which include: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>; "
+"second, special values: <literal>delete-orphan</literal>; and third,"
+"<literal>all</literal> comma-separated combinations of operation names: "
+"<literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,"
+"delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> "
+"for a full explanation. Note that single valued, many-to-one and one-to-one, "
+"associations do not support orphan delete."
+msgstr ""
+"Ao ajustar o valor do atributo <literal>cascade</literal> para qualquer "
+"valor diferente de <literal>none</literal> irá propagar certas operações ao "
+"objeto associado. Os valores significativos são divididos em três "
+"categorias. A primeira, operações básicas, que inclui: <literal>persist, "
+"merge, delete, save-update, evict, replicate, lock and refresh</literal>. A "
+"segunda, valores especiais: <literal>delete-orphan</literal> e a terceira "
+"combinações de vírgula separada <literal>all</literal> dos nomes da "
+"operação: <literal>cascade=\"persist,merge,evict\"</literal> ou "
+"<literal>cascade=\"all,delete-orphan\"</literal>. Veja <xref linkend="
+"\"objectstate-transitive\"/> para uma completa explicação. Perceba que as "
+"associações de valores únicos, muitos-para-um e um-para-um, não suportam "
+"delete órfão: "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr ""
+"Segue abaixo uma amostra de uma típica declaração <literal>many-to-one</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is a complicated and "
+"confusing relational model. For example, if the <literal>Product</literal> "
+"class had a unique serial number that is not the primary key. The "
+"<literal>unique</literal> attribute controls Hibernate's DDL generation with "
+"the SchemaExport tool."
+msgstr ""
+"O atributo <literal>property-ref</literal> deve apenas ser usado para mapear "
+"dados legados onde uma chave exterior se refere à uma chave exclusiva da "
+"tabela associada que não seja a chave primária. Este é um modelo relacional "
+"desagradável. Por exemplo, suponha que a classe <literal>Product</literal> "
+"tenha um número seqüencial exclusivo, que não seja a chave primária. O "
+"atributo <literal>unique</literal> controla a geração de DDL do Hibernate "
+"com a ferramenta SchemaExport."
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr "Então o mapeamento para <literal>OrderItem</literal> poderia usar:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not encouraged, however."
+msgstr "No entanto, isto não é recomendável."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal>&lt;"
+"properties&gt;</literal> element."
+msgstr ""
+"Se a chave exclusiva referenciada engloba múltiplas propriedades da entidade "
+"associada, você deve mapear as propriedades referenciadas dentro de um "
+"elemento chamado <literal>&lt;properties&gt;</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you can specify "
+"a property path:"
+msgstr ""
+"Se a chave exclusiva referenciada é a propriedade de um componente, você "
+"pode especificar um caminho para a propriedade:"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "Um-para-um "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"Uma associação um-pra-um para outra classe persistente é declarada usando um "
+"elemento <literal>one-to-one </literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional): specifies that a foreign key "
+"constraint on the primary key of the mapped table and references the table "
+"of the associated class. This option affects the order in which <literal>save"
+"()</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association can be proxied. It is also used by the schema export "
+"tool."
+msgstr ""
+"<literal>constrained</literal> (opcional): Especifica que uma restrição de "
+"chave exterior na chave primária da tabela mapeada referencia a tabela da "
+"classe associada. Esta opção afeta a ordem em que <literal>save()</literal> "
+"e <literal>delete()</literal> são cascateadas, e determina se a associação "
+"pode sofrer o proxie. Isto também é usado pela ferramenta schema export. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>(opcional): O nome da propriedade da classe "
+"associada que é ligada à chave primária desta classe. Se não for "
+"especificada, a chave primária da classe associada é utilizada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): almost all one-to-one associations "
+"map to the primary key of the owning entity. If this is not the case, you "
+"can specify another column, columns or expression to join on using an SQL "
+"formula. See <literal>org.hibernate.test.onetooneformula</literal> for an "
+"example."
+msgstr ""
+"<literal>formula</literal> (opcional): Quase todas associações um-pra-um "
+"mapeiam para a chave primária da entidade dona. Caso este não seja o caso, "
+"você pode especificar uma outra coluna, colunas ou expressões para unir "
+"utilizando uma fórmula SQL. Veja <literal>org.hibernate.test."
+"onetooneformula</literal> para exemplo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"by default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed. It requires build-time bytecode "
+"instrumentation. <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eagerly fetch the association</emphasis>."
+msgstr ""
+"<literal>lazy</literal> (opcional – valor padrão <literal>proxy</literal>): "
+"Por padrão, as associações de ponto único estão em proxy. <literal>lazy=\"no-"
+"proxy\"</literal> especifica que a propriedade deve ser recuperada de forma "
+"preguiçosa quando a variável da instância for acessada pela primeira vez. "
+"Isto requer instrumentação de bytecode de tempo de construção. <literal>lazy="
+"\"false\"</literal> especifica que a associação terá sempre uma busca "
+"antecipada (eager fetched). <emphasis> Note que se <literal>constrained="
+"\"false\"</literal>, será impossível efetuar o proxing e o Hibernate irá "
+"realizar uma busca antecipada na associação</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "Existem duas variedades de associações um-pra-um: "
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "Associações de chave primária"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "Associações de chave exterior exclusiva"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Primary key associations do not need an extra table column. If two rows are "
+"related by the association, then the two table rows share the same primary "
+"key value. To relate two objects by a primary key association, ensure that "
+"they are assigned the same identifier value."
+msgstr ""
+"Associações de chave primária não necessitam de uma coluna extra de tabela. "
+"Se duas linhas forem relacionadas pela associação, então as duas linhas da "
+"tabela dividem o mesmo valor da chave primária. Assim, se você quiser que "
+"dois objetos sejam relacionados por uma associação de chave primária, você "
+"deve ter certeza que foram atribuídos com o mesmo valor identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr ""
+"Para uma associação de chave primária, adicione os seguintes mapeamentos em "
+"<literal>Employee</literal> e <literal>Person</literal>, respectivamente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE "
+"tables are equal. You use a special Hibernate identifier generation strategy "
+"called <literal>foreign</literal>:"
+msgstr ""
+"Agora devemos assegurar que as chaves primárias de linhas relacionadas nas "
+"tabelas PERSON e EMPLOYEE são iguais. Nós usamos uma estratégia especial de "
+"geração de identificador do Hibernate chamada <literal>foreign</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is assigned the same "
+"primary key value as the <literal>Employee</literal> instance referred with "
+"the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr ""
+"Uma nova instância de <literal>Person</literal> é atribuída com o mesmo "
+"valor da chave primária da instância de <literal>Employee</literal> "
+"referenciada com a propriedade <literal>employee</literal> daquela "
+"<literal>Person</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, can be expressed "
+"as:"
+msgstr ""
+"Alternativamente, uma chave exterior com uma restrição única, de "
+"<literal>Employee</literal> para <literal>Person</literal>, pode ser "
+"expressada como:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This association can be made bidirectional by adding the following to the "
+"<literal>Person</literal> mapping:"
+msgstr ""
+"Esta associação pode ser feita de forma bi-direcional adicionando o seguinte "
+"no mapeamento de <literal>Person</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Natural-id"
+msgstr "Id Natural"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although we recommend the use of surrogate keys as primary keys, you should "
+"try to identify natural keys for all entities. A natural key is a property "
+"or combination of properties that is unique and non-null. It is also "
+"immutable. Map the properties of the natural key inside the <literal>&lt;"
+"natural-id&gt;</literal> element. Hibernate will generate the necessary "
+"unique key and nullability constraints and, as a result, your mapping will "
+"be more self-documenting."
+msgstr ""
+"Embora recomendemos o uso das chaves substitutas como chaves primárias, você "
+"deve ainda identificar chaves naturais para todas as entidades. Uma chave "
+"natural é uma propriedade ou combinação de propriedades que é exclusiva e "
+"não nula. Mapeie as propriedades da chave natural dentro do elemento "
+"<literal>&lt;natural-id&gt;</literal>. O Hibernate irá gerar a chave "
+"exclusiva necessária e as restrições de anulabilidade, e seu mapeamento será "
+"apropriadamente auto documentado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"Nós recomendamos com ênfase que você implemente <literal>equals()</literal> "
+"e <literal>hashCode()</literal> para comparar as propriedades da chave "
+"natural da entidade. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping is not intended for use with entities that have natural primary "
+"keys."
+msgstr ""
+"Este mapeamento não pretende ser utilizado com entidades com chaves naturais "
+"primárias."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>false</"
+"literal>): by default, natural identifier properties are assumed to be "
+"immutable (constant)."
+msgstr ""
+"<literal>mutable</literal> (opcional, padrão <literal>false</literal>): Por "
+"padrão, propriedades naturais identificadoras são consideradas imutáveis "
+"(constante)."
+
+#. Tag: title
+#, no-c-format
+msgid "Component and dynamic-component"
+msgstr "Componente e componente dinâmico"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components can, in turn, "
+"declare their own properties, components or collections. See the \"Component"
+"\" examples below:"
+msgstr ""
+"O elemento <literal>&lt;component&gt;</literal> mapeia propriedades de um "
+"objeto filho para colunas da tabela de uma classe pai. Os componentes podem, "
+"um após o outro, declarar suas próprias propriedades, componentes ou "
+"coleções. Veja \"Components\" abaixo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): the name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (opcional – padrão para o tipo de propriedade "
+"determinada por reflection): O nome da classe (filha) do componente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: do the mapped columns appear in SQL "
+"<literal>INSERTs</literal>?"
+msgstr ""
+"<literal>insert</literal>: As colunas mapeadas aparecem nos SQL de "
+"<literal>INSERTs</literal>? "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal>: do the mapped columns appear in SQL "
+"<literal>UPDATEs</literal>?"
+msgstr ""
+"<literal>update</literal>: As colunas mapeadas aparecem nos SQL de "
+"<literal>UPDATEs</literal>? "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that this component should be fetched lazily when the instance "
+"variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr ""
+"<literal>lazy</literal> (opcional - padrão para <literal>false</literal>): "
+"Especifica que este componente deve ter uma busca lazy quando a função for "
+"acessada pela primeira vez. Isto requer instrumentação bytecode de tempo de "
+"construção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this component either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional – padrão para <literal>true</"
+"literal>): Especifica que atualizações para este componente requerem ou não "
+"aquisição de um bloqueio otimista. Em outras palavras, determina se uma "
+"versão de incremento deve ocorrer quando esta propriedade estiver suja."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (opcional – valor padrão <literal>false</"
+"literal>): Especifica que existe uma unique restrição em todas as colunas "
+"mapeadas do componente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The child <literal>&lt;property&gt;</literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"A tag filha <literal>&lt;property&gt;</literal> acrescenta a propriedade de "
+"mapeamento da classe filha para colunas de uma tabela."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"O elemento <literal>&lt;component&gt;</literal> permite um sub-elemento "
+"<literal>&lt;parent&gt;</literal> mapeie uma propriedade da classe do "
+"componente como uma referencia de volta para a entidade que o contém."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;dynamic-component&gt;</literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for "
+"more information."
+msgstr ""
+"O elemento <literal>&lt;dynamic-component&gt;</literal> permite que um "
+"<literal>Map</literal> possa ser mapeado como um componente onde os nomes "
+"das propriedades referem-se para as chaves no mapa. Consulte <xref linkend="
+"\"components-dynamic\"/> para maiores informações."
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Propriedades"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;properties&gt;</literal> element allows the definition of a "
+"named, logical grouping of the properties of a class. The most important use "
+"of the construct is that it allows a combination of properties to be the "
+"target of a <literal>property-ref</literal>. It is also a convenient way to "
+"define a multi-column unique constraint. For example:"
+msgstr ""
+"O elemento <literal>&lt;properties&gt;</literal> permite a definição de um "
+"grupo com nome, lógico de propriedades de uma classe. A função mais "
+"importante do construtor é que ele permite que a combinação de propriedades "
+"seja o objetivo de uma <literal>property-ref</literal>. É também um modo "
+"conveninente para definir uma restrição única de múltiplas colunas. Por "
+"exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the logical name of the grouping. It is "
+"<emphasis>not</emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: O nome lógico do agrupamento. Isto <emphasis>não</"
+"emphasis> é o nome atual de propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to these properties either do or do not "
+"require acquisition of the optimistic lock. It determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional – padrão para <literal>true</"
+"literal>): Especifica que atualizações para estes componentes requerem ou "
+"não aquisição de um bloqueio otimista. Em outras palavras, determina se uma "
+"versão de incremento deve ocorrer quando estas propriedades estiverem sujas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal>&lt;properties&gt;</literal> "
+"mapping:"
+msgstr ""
+"Por exemplo, se temos o seguinte mapeamento de <literal>&lt;properties&gt;</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You might have some legacy data association that refers to this unique key "
+"of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"Então podemos ter uma associação de dados legados que referem a esta chave "
+"exclusiva da tabela <literal>Person</literal>, ao invés de se referirem a "
+"chave primária:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The use of this outside the context of mapping legacy data is not "
+"recommended."
+msgstr ""
+"Nós não recomendamos o uso deste tipo de coisa fora do contexto de "
+"mapeamento de dados legados."
+
+#. Tag: title
+#, no-c-format
+msgid "Subclass"
+msgstr "Subclass"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Polymorphic persistence requires the declaration of each subclass of the "
+"root persistent class. For the table-per-class-hierarchy mapping strategy, "
+"the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr ""
+"Finalmente, a persistência polimórfica requer a declaração de cada subclasse "
+"da classe raíz de persistência. Para a estratégia de mapeamento tabela-por-"
+"hierarquia-de-classe, deve-se utilizar a declaração <literal>&lt;subclass&gt;"
+"</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr ""
+"<literal>name</literal>: O nome de classe completamente qualificada da "
+"subclasse. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): a value that distinguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional – padrão para o nome da "
+"classe): Um valor que distingue subclasses individuais."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface used for "
+"lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica a classe ou interface que "
+"usará os proxies de inicialização lazy."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (opcional, padrão para <literal>true</literal>): "
+"Configurar <literal>lazy=\"false\"</literal> desabilitará o uso de "
+"inicialização lazy."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass declares its own persistent properties and subclasses. "
+"<literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a hierarchy must define a unique <literal>discriminator-value</literal>. If "
+"this is not specified, the fully qualified Java class name is used."
+msgstr ""
+"Cada subclasse deve declarar suas próprias propriedades persistentes e "
+"subclasses. As propriedades <literal>&lt;version&gt;</literal> e "
+"<literal>&lt;id&gt;</literal> são configuradas para serem herdadas da classe "
+"raíz. Cada subclasse numa hierarquia deve definir um único "
+"<literal>discriminator-value</literal>. Se nenhum for especificado, será "
+"usado o nome da classe Java completamente qualificado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For information about inheritance mappings see <xref linkend=\"inheritance"
+"\" />."
+msgstr ""
+"Para informações sobre mapeamento de heranças. Consulte o <xref linkend="
+"\"inheritance\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Joined-subclass"
+msgstr "Subclasses Unidas "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each subclass can also be mapped to its own table. This is called the table-"
+"per-subclass mapping strategy. An inherited state is retrieved by joining "
+"with the table of the superclass. To do this you use the <literal>&lt;joined-"
+"subclass&gt;</literal> element. For example:"
+msgstr ""
+"Alternativamente, cada subclasse pode ser mapeada para sua própria tabela. "
+"Isto é chamado estratégia de mapeamento de tabela-por-subclasse. O estado "
+"herdado é devolvido por associação com a tabela da superclasse. Nós usamos o "
+"elemento <literal>&lt;joined-subclass&gt;</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal>: O nome da tabela da subclasse. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica a classe ou interface que "
+"usará os proxies de inicialização lazy. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (opcional, padrão para <literal>true</literal>): "
+"Configurar <literal>lazy=\"false\"</literal> desabilitará o uso de "
+"inicialização lazy."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A discriminator column is not required for this mapping strategy. Each "
+"subclass must, however, declare a table column holding the object identifier "
+"using the <literal>&lt;key&gt;</literal> element. The mapping at the start "
+"of the chapter would then be re-written as:"
+msgstr ""
+"A coluna discriminadora não é requerida para esta estratégia de mapeamento. "
+"Cada subclasse deve declarar uma coluna de tabela com o identificador do "
+"objeto usando o elemento <literal>&lt;key&gt;</literal>. O mapeamento no "
+"início do capítulo poderia ser re-escrito assim: "
+
+#. Tag: title
+#, no-c-format
+msgid "Union-subclass"
+msgstr "Subclasse de União"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables. This is called the table-per-concrete-class strategy. "
+"Each table defines all persistent states of the class, including the "
+"inherited state. In Hibernate, it is not necessary to explicitly map such "
+"inheritance hierarchies. You can map each class with a separate <literal>&lt;"
+"class&gt;</literal> declaration. However, if you wish use polymorphic "
+"associations (e.g. an association to the superclass of your hierarchy), you "
+"need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For "
+"example:"
+msgstr ""
+"Uma terceira opção é mapear apenas as classes concretas de uma hierarquia de "
+"heranças para tabelas. Isto é chamado estratégia table-per-concrete-class. "
+"Cada tabela define todos os estados persistentes da classe, incluindo "
+"estados herdados. No Hibernate, não é absolutamente necessário mapear "
+"explicitamente como hierarquia de heranças. Você pode simplesmente mapear "
+"cada classe com uma declaração <literal>&lt;class&gt;</literal> separada. "
+"Porém, se você deseja usar associações polimórficas (por exemplo: uma "
+"associação para a superclasse de sua hierarquia), você precisa usar o "
+"mapeamento <literal>&lt;union-subclass&gt;</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "No discriminator column or key column is required for this mapping strategy."
+msgstr "A coluna discriminatória não é requerida para esta estratégia de mapeamento."
+
+#. Tag: title
+#, no-c-format
+msgid "Join"
+msgstr "União "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using the <literal>&lt;join&gt;</literal> element, it is possible to map "
+"properties of one class to several tables that have a one-to-one "
+"relationship. For example:"
+msgstr ""
+"Usando o elemento <literal>&lt;join&gt;</literal>&gt;, é possível mapear "
+"propriedades de uma classe para várias tabelas que possuem uma relação um "
+"por um. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal>: O nome da tabela associada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"if set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its "
+"superclasses. It will use an outer join for a <literal>&lt;join&gt;</"
+"literal> defined by a subclass. If set to <literal>select</literal> then "
+"Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> "
+"defined on a subclass. This will be issued only if a row represents an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal>(opcional – valor padrão <literal>join</literal>): "
+"Se ajustado para <literal>join</literal>, o padrão, o Hibernate irá usar uma "
+"união interna para restaurar um <literal>join</literal> definido por uma "
+"classe ou suas subclasses e uma união externa para um <literal>join</"
+"literal> definido por uma subclasse. Se ajustado para <literal>select</"
+"literal>, então o Hibernate irá usar uma seleção seqüencial para um "
+"<literal>&lt;join&gt;</literal> definida numa subclasse, que será emitido "
+"apenas se uma linha representar uma instância da subclasse. Uniões internas "
+"ainda serão utilizadas para restaurar um <literal>&lt;join&gt;</literal> "
+"definido pela classe e suas superclasses. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will not insert or update the properties "
+"defined by this join."
+msgstr ""
+"<literal>inverse</literal> (opcional – padrão para <literal>false</"
+"literal>): Se habilitado, o Hibernate não tentará inserir ou atualizar as "
+"propriedades definidas por esta união."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): if enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null. It will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (opcional – padrão para <literal>false</"
+"literal>): Se habilitado, o Hibernate irá inserir uma linha apenas se as "
+"propriedades, definidas por esta junção, não forem nulas. Isto irá sempre "
+"usar uma união externa para recuperar as propriedades."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, address information for a person can be mapped to a separate "
+"table while preserving value type semantics for all properties:"
+msgstr ""
+"Por exemplo, a informação de endereço para uma pessoa pode ser mapeada para "
+"uma tabela separada, enquanto preservando o valor da semântica de tipos para "
+"todas as propriedades:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models. We recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"Esta característica é útil apenas para modelos de dados legados. Nós "
+"recomendamos menos tabelas do que classes e um modelo de domínio fine-"
+"grained. Porém, é útil para ficar trocando entre estratégias de mapeamento "
+"de herança numa hierarquia simples, como explicaremos mais a frente."
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr "Key"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;key&gt;</literal> element has featured a few times within "
+"this guide. It appears anywhere the parent mapping element defines a join to "
+"a new table that references the primary key of the original table. It also "
+"defines the foreign key in the joined table:"
+msgstr ""
+"Vimos que o elemento <literal>&lt;key&gt;</literal> (chave) surgiu algumas "
+"vezes até agora. Ele aparece em qualquer lugar que o elemento pai define uma "
+"junção para a nova tabela, e define a chave exterior para a tabela "
+"associada. Ele também referencia a chave primária da tabela original:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional - defaults to <literal>noaction</"
+"literal>): specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (opcional, padrão para <literal>noaction</"
+"literal>): Especifica se a restrição da chave exterior no banco de dados "
+"está habilitada para o deletar cascade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): specifies that the foreign key "
+"refers to columns that are not the primary key of the original table. It is "
+"provided for legacy data."
+msgstr ""
+"<literal>property-ref</literal> (opcional): Especifica que a chave exterior "
+"se refere a colunas que não são chave primária da tabela original. Útil para "
+"os dados legados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): specifies that the foreign key "
+"columns are not nullable. This is implied whenever the foreign key is also "
+"part of the primary key."
+msgstr ""
+"<literal>not-null</literal> (opcional): Especifica que a coluna da chave "
+"exterior não aceita valores nulos. Isto é implícito em qualquer momento que "
+"a chave exterior também fizer parte da chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>update</literal> (optional): specifies that the foreign key should "
+"never be updated. This is implied whenever the foreign key is also part of "
+"the primary key."
+msgstr ""
+"<literal>update</literal> (opcional): Especifica que a chave exterior nunca "
+"deve ser atualizada. Isto está implícito em qualquer momento que a chave "
+"exterior também fizer parte da chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): specifies that the foreign key should "
+"have a unique constraint. This is implied whenever the foreign key is also "
+"the primary key."
+msgstr ""
+"<literal>unique</literal> (opcional): Especifica que a chave exterior deve "
+"ter uma restrição única. Isto é, implícito em qualquer momento que a chave "
+"exterior também fizer parte da chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For systems where delete performance is important, we recommend that all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate "
+"uses a database-level <literal>ON CASCADE DELETE</literal> constraint, "
+"instead of many individual <literal>DELETE</literal> statements. Be aware "
+"that this feature bypasses Hibernate's usual optimistic locking strategy for "
+"versioned data."
+msgstr ""
+"Nós recomendamos que para sistemas que o desempenho deletar seja importante, "
+"todas as chaves devem ser definidas <literal>on-delete=\"cascade\"</"
+"literal>. O Hibernate irá usar uma restrição a nível de banco de dados "
+"<literal>ON CASCADE DELETE</literal>, ao invés de muitas instruções "
+"<literal>DELETE</literal>. Esteja ciente que esta característica é um atalho "
+"da estratégia usual de bloqueio otimista do Hibernate para dados versionados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one-to-many association. If you map a "
+"unidirectional one-to-many association to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal>&lt;key not-"
+"null=\"true\"&gt;</literal>."
+msgstr ""
+"As funções <literal>not-null</literal> e <literal>update</literal> são úteis "
+"quando estamos mapeando uma associação unidirecional um para muitos. Se você "
+"mapear uma associação unidirecional um para muitos para uma chave exterior "
+"não-nula, você <emphasis>deve</emphasis> declarar a coluna chave usando "
+"<literal>&lt;key not-null=\"true\"&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Column and formula elements"
+msgstr "Elementos coluna e fórmula "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping elements which accept a <literal>column</literal> attribute will "
+"alternatively accept a <literal>&lt;column&gt;</literal> subelement. "
+"Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the "
+"<literal>formula</literal> attribute. For example:"
+msgstr ""
+"Qualquer elemento de mapeamento que aceita uma função <literal>column</"
+"literal> irá aceitar alternativamente um sub-elemento <literal>&lt;column&gt;"
+"</literal>. Da mesma forma, <literal>&lt;formula&gt;</literal> é uma "
+"alternativa para a função <literal>formula</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most of the attributes on <literal>column</literal> provide a means of "
+"tailoring the DDL during automatic schema generation. The <literal>read</"
+"literal> and <literal>write</literal> attributes allow you to specify custom "
+"SQL that Hibernate will use to access the column's value. For more on this, "
+"see the discussion of <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link>."
+msgstr ""
+"A maioria das funções no <literal>column</literal> fornecem um significado de junção do DDL durante a geração automática do esquema. As funções <literal>read</"
+"literal> e <literal>write</literal> permitem que você especifique o SQL personalizado, do qual o Hibernate usará para acessar o valor da coluna. Consulte a discussão da <link linkend=\"mapping-column-read-and-write\">column "
+"read and write expressions</link> para maiores informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>column</literal> and <literal>formula</literal> elements can "
+"even be combined within the same property or association mapping to express, "
+"for example, exotic join conditions."
+msgstr ""
+"Os elementos <literal>column</literal> e <literal>formula</literal> podem até "
+"ser combinados dentro da mesma propriedade ou associação mapeando para "
+"expressar, por exemplo, condições de associações exóticas."
+
+#. Tag: title
+#, no-c-format
+msgid "Import"
+msgstr "Importar "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application has two persistent classes with the same name, and you "
+"do not want to specify the fully qualified package name in Hibernate "
+"queries, classes can be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You can also import classes and "
+"interfaces that are not explicitly mapped:"
+msgstr ""
+"Vamos supor que a sua aplicação tenha duas classes persistentes com o mesmo "
+"nome, e você não quer especificar o nome qualificado do pacote nas consultas "
+"do Hibernate. As Classes deverão ser \"importadas\" explicitamente, de "
+"preferência contando com <literal>auto-import=\"true\"</literal>. Você pode "
+"até importar classes e interfaces que não estão explicitamente mapeadas:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr ""
+"<literal>class</literal>: O nome qualificado do pacote de qualquer classe "
+"Java."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): a name that can be used in the query language."
+msgstr ""
+"<literal>rename</literal> (opcional – padrão para o nome da classe não "
+"qualificada): Um nome que pode ser usado numa linguagem de consulta."
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr "Any"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is one more type of property mapping. The <literal>&lt;any&gt;</"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping requires more than one column. The "
+"first column contains the type of the associated entity. The remaining "
+"columns contain the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association. This is not the usual way of "
+"mapping polymorphic associations and you should use this only in special "
+"cases. For example, for audit logs, user session data, etc."
+msgstr ""
+"Existe mais um tipo de propriedade de mapeamento. O elemento de mapeamento "
+"<literal>&lt;any&gt;</literal> define uma associação polimórfica para "
+"classes de múltiplas tabelas. Este tipo de mapeamento sempre requer mais de "
+"uma coluna. A primeira coluna possui o tipo da entidade associada. A outra "
+"coluna restante possui o identificador. É impossível especificar uma "
+"restrição de chave exterior para este tipo de associação, portanto isto "
+"certamente não é visto como um caminho usual para associações (polimórficas) "
+"de mapeamento. Você deve usar este mapeamento apenas em casos muito "
+"especiais. Por exemplo: audit logs, dados de sessão do usuário, etc. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute allows the application to specify "
+"a custom type that maps database column values to persistent classes that "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"A função <literal>meta-type</literal> permite que a aplicação especifique um "
+"tipo adaptado que mapeia valores de colunas de banco de dados para classes "
+"persistentes que possuem propriedades identificadoras do tipo especificado "
+"através do <literal>id-type</literal>. Você deve especificar o mapeamento de "
+"valores do meta-type para nome de classes. "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>: o nome da propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>: o tipo identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal> (opcional – padrão para <literal>string</"
+"literal>): Qualquer tipo que é permitido para um mapeamento discriminador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (opcional – valor padrão <literal>none</"
+"literal>): o estilo cascata."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that updates to this property either do or do not "
+"require acquisition of the optimistic lock. It defines whether a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - valor padrão<literal>true</"
+"literal>): Especifica que as atualizações para esta propriedade requerem ou "
+"não aquisição da bloqueio otimista. Em outras palavras, define se uma versão "
+"de incremento deve ocorrer se esta propriedade for suja."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate types"
+msgstr "Tipos do Hibernate "
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "Entidades e valores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In relation to the persistence service, Java language-level objects are "
+"classified into two groups:"
+msgstr ""
+"Os objetos de nível de linguagem Java são classificados em dois grupos, em "
+"relação ao serviço de persistência:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model, "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted. Saves and deletions, however, can be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children. This is "
+"different from the ODMG model of object persistence by reachability and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They can "
+"also be versioned."
+msgstr ""
+"Uma <emphasis>entidade</emphasis> existe independentemente de qualquer outro "
+"objeto guardando referências para a entidade. Em contraste com o modelo "
+"usual de Java que um objeto não referenciado é coletado pelo coletor de "
+"lixo. Entidades devem ser explicitamente salvas ou deletadas (exceto em "
+"operações de salvamento ou deleção que possam ser executada em "
+"<emphasis>cascata</emphasis> de uma entidade pai para seus filhos). Isto é "
+"diferente do modelo ODMG de persistência do objeto por acessibilidade e se "
+"refere mais à forma como os objetos de aplicações são geralmente usados em "
+"grandes sistemas. Entidades suportam referências circulares e comuns. Eles "
+"podem ser versionados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives: "
+"collections (not what is inside a collection), components and certain "
+"immutable objects. Unlike entities, values in particular collections and "
+"components, <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects and primitives are persisted and deleted along with "
+"their containing entity, they cannot be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"O estado persistente da entidade consiste de referências para outras "
+"entidades e instâncias de tipos de <emphasis>valor</emphasis>. Valores são "
+"primitivos: coleções (não o que tem dentro de uma coleção), componentes e "
+"certos objetos imutáveis. Entidades distintas, valores (em coleções e "
+"componentes particulares) <emphasis>são</emphasis> persistidos e apagados "
+"por acessibilidade. Visto que objetos de valor (e primitivos) são "
+"persistidos e apagados junto com as entidades que os contém e não podem ser "
+"versionados independentemente. Valores têm identidade não independente, "
+"assim eles não podem ser comuns para duas entidades ou coleções."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, we have been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Not all user-defined classes with a "
+"persistent state, however, are entities. A <emphasis>component</emphasis> is "
+"a user-defined class with value semantics. A Java property of type "
+"<literal>java.lang.String</literal> also has value semantics. Given this "
+"definition, all types (classes) provided by the JDK have value type "
+"semantics in Java, while user-defined types can be mapped with entity or "
+"value type semantics. This decision is up to the application developer. An "
+"entity class in a domain model will normally have shared references to a "
+"single instance of that class, while composition or aggregation usually "
+"translates to a value type."
+msgstr ""
+"Até agora, estivemos usando o termo \"classe persistente\" para referir às "
+"entidades. Continuaremos a fazer isto. No entanto, nem todas as classes "
+"definidas pelo usuário com estados persistentes são entidades. Um "
+"<emphasis>componente</emphasis> é uma classe de usuário definida com valores "
+"semânticos. Uma propriedade de Java de tipo <literal>java.lang.String</"
+"literal> também tem um valor semântico. Dada esta definição, nós podemos "
+"dizer que todos os tipos (classes) fornecidos pelo JDK têm tipo de valor "
+"semântico em Java, enquanto que tipos definidos pelo usuário, podem ser "
+"mapeados com entidade ou valor de tipo semântico. Esta decisão pertence ao "
+"desenvolvedor da aplicação. Uma boa dica para uma classe de entidade em um "
+"modelo de domínio são referências comuns para uma instância simples daquela "
+"classe, enquanto a composição ou agregação geralmente se traduz para um tipo "
+"de valor."
+
+#. Tag: para
+#, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr "Iremos rever ambos os conceitos durante todo o guia de referência."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge is to map the Java type system, and the developers' definition "
+"of entities and value types, to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate. For entities, <literal>&lt;"
+"class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. "
+"For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;"
+"component&gt;</literal>etc., that usually have a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides a range of mappings "
+"for standard JDK value types out of the box. You can write your own mapping "
+"types and implement your own custom conversion strategies."
+msgstr ""
+"O desafio é mapear o sistema de tipo de Java e a definição do desenvolvedor "
+"de entidades e tipos de valor para o sistema de tipo SQL/banco de dados. A "
+"ponte entre ambos os sistemas é fornecida pelo Hibernate. Para entidades que "
+"usam <literal>&lt;class&gt;</literal>, <literal>&lt; subclass&gt;</literal> "
+"e assim por diante. Para tipos de valores nós usamos <literal>&lt;"
+"property&gt;</literal>, <literal>&lt;component&gt;</literal>, etc, "
+"geralmente com uma função <literal>type</literal>. O valor desta função é o "
+"nome de um <emphasis>tipo de mapeamento</emphasis> do Hibernate. O Hibernate "
+"fornece muitos mapeamentos imediatos para tipos de valores do JDK padrão. "
+"Você pode escrever os seus próprios tipos de mapeamentos e implementar sua "
+"estratégia de conversão adaptada, como você."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of collections, all built-in Hibernate types support null "
+"semantics."
+msgstr ""
+"Todos os tipos internos do hibernate exceto coleções, suportam semânticas "
+"nulas com a exceção das coleções."
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "Valores de tipos básicos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> can be roughly "
+"categorized into the following:"
+msgstr ""
+"Os <emphasis>tipos de mapeamento básicos</emphasis> fazem parte da "
+"categorização do seguinte:"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+msgstr ""
+"<literal>integer, long, short, float, double, character, byte, boolean, "
+"yes_no, true_false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"Tipos de mapeamentos de classes primitivas ou wrapper Java específicos "
+"(vendor-specific) para tipos de coluna SQL. Boolean, <literal>boolean, "
+"yes_no</literal> são todas codificações alternativas para um "
+"<literal>boolean</literal> ou <literal>java.lang.Boolean</literal> do Java."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>string</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"Um tipo de mapeamento de <literal>java.lang.String</literal> para "
+"<literal>VARCHAR</literal> (ou <literal>VARCHAR2</literal> no Oracle)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "<literal>date, time, timestamp</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"Tipos de mapeamento de <literal>java.util.Date</literal> e suas subclasses "
+"para os tipos SQL <literal>DATE</literal>, <literal>TIME</literal> e "
+"<literal>TIMESTAMP</literal> (ou equivalente)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "<literal>calendar, calendar_date</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"Tipo de mapeamento de <literal>java.util.Calendar</literal> para os tipos "
+"SQL <literal>TIMESTAMP</literal> e <literal>DATE</literal> (ou equivalente)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "<literal>big_decimal, big_integer</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"Tipo de mapeamento de <literal>java.math.BigDecimal</literal> and "
+"<literal>java.math.BigInteger</literal> para <literal>NUMERIC</literal> (ou "
+"<literal>NUMBER</literal> no Oracle)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "<literal>locale, timezone, currency</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
+msgstr ""
+"Tipos de mapeamentos de <literal>java.util.Locale</literal>, <literal>java."
+"util.TimeZone</literal> e <literal>java.util.Currency</literal> para "
+"<literal>VARCHAR</literal> (ou <literal>VARCHAR2</literal> no Oracle). "
+"Instâncias de f <literal>Locale</literal> e <literal>Currency</literal> são "
+"mapeados para seus códigos ISO. Instâncias de <literal>TimeZone</literal> "
+"são mapeados para seu <literal>ID</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>class</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
+msgstr ""
+"Um tipo de mapeamento de <literal>java.lang.Class</literal> para "
+"<literal>VARCHAR</literal> (ou <literal>VARCHAR2</literal> no Oracle). Uma "
+"<literal>Class</literal> é mapeada pelo seu nome qualificado (completo)."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "Mapeia matrizes de bytes para um tipo binário de SQL apropriado."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>text</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"Mapeia strings de Java longos para um tipo SQL <literal>CLOB</literal> ou "
+"<literal>TEXT</literal>. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>serializable</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You can also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
+msgstr ""
+"Mapeia tipos Java serializáveis para um tipo binário SQL apropriado. Você "
+"pode também indicar o tipo <literal>serializable</literal> do Hibernate com "
+"o nome da classe ou interface Java serializável que não é padrão para um "
+"tipo básico. "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>clob, blob</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types can be inconvenient for some "
+"applications, since the blob or clob object cannot be reused outside of a "
+"transaction. Driver support is patchy and inconsistent."
+msgstr ""
+"Tipos de mapeamentos para as classes JDBC <literal>java.sql.Clob</literal> "
+"and <literal>java.sql.Blob</literal>. Estes tipos podem ser inconvenientes "
+"para algumas aplicações, visto que o objeto blob ou clob não pode ser "
+"reusado fora de uma transação. Além disso, o suporte de driver é imcompleto "
+"e inconsistente."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+msgstr ""
+"<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Type mappings for what are considered mutable Java types. This is where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new, "
+"nonidentical, object to the property."
+msgstr ""
+"Mapeamento de tipos para, os geralmente considerados, tipos mutáveis de "
+"Java. Isto é onde o Hibernate faz determinadas otimizações apropriadas "
+"somente para tipos imutáveis de Java, e a aplicação trata o objeto como "
+"imutável. Por exemplo, você não deve chamar <literal>Date.setTime()</"
+"literal> para uma instância mapeada como <literal>imm_timestamp</literal>. "
+"Para mudar o valor da propriedade, e ter a mudança feita persistente, a "
+"aplicação deve atribuir um novo objeto (nonidentical) à propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unique identifiers of entities and collections can be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. Composite identifiers are also allowed. See below for more "
+"information."
+msgstr ""
+"Identificadores únicos das entidades e coleções podem ser de qualquer tipo "
+"básico exceto <literal>binary</literal>, <literal>blob</literal> ou "
+"<literal>clob</literal>. (Identificadores compostos também são permitidos. "
+"Leia abaixo para maiores informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"Os tipos de valores básicos têm suas constantes <literal>Type</literal> "
+"correspondentes definidas em <literal>org.hibernate.Hibernate</literal>. Por "
+"exemplo, <literal>Hibernate.STRING</literal> representa o tipo "
+"<literal>string</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "Tipos de valores personalizados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. Custom types are not limited to "
+"mapping a property, or collection element, to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"É relativamente fácil para desenvolvedores criarem seus próprios tipos de "
+"valores. Por exemplo, você pode querer persistir propriedades do tipo "
+"<literal>java.lang.BigInteger</literal> para colunas <literal>VARCHAR</"
+"literal>. O Hibernate não fornece um tipo correspondente para isso. Mas os "
+"tipos adaptados não são limitados a mapeamento de uma propriedade, ou "
+"elemento de coleção, a uma única coluna da tabela. Assim, por exemplo, você "
+"pode ter uma propriedade Java <literal>getName()</literal>/<literal>setName()"
+"</literal> do tipo <literal>java.lang.String</literal> que é persistido para "
+"colunas <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, "
+"<literal>SURNAME</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. View "
+"<literal>org.hibernate.test.DoubleStringType</literal> to see the kind of "
+"things that are possible."
+msgstr ""
+"Para implementar um tipo personalizado, implemente <literal>org.hibernate."
+"UserType</literal> ou <literal>org.hibernate.CompositeUserType</literal> e "
+"declare propriedades usando o nome qualificado da classe do tipo. Veja "
+"<literal>org.hibernate.test.DoubleStringType</literal> para outras "
+"funcionalidades. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice the use of <literal>&lt;column&gt;</literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"Observe o uso da tag <literal>&lt;column&gt;</literal> para mapear uma "
+"propriedade para colunas múltiplas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"As interfaces <literal>CompositeUserType</literal>, "
+"<literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, "
+"e <literal>UserVersionType</literal> fornecem suporte para usos mais "
+"especializados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal>&lt;"
+"type&gt;</literal> element in your mapping files."
+msgstr ""
+"Você mesmo pode fornecer parâmetros a um <literal>UserType</literal> no "
+"arquivo de mapeamento. Para isto, seu <literal>UserType</literal> deve "
+"implementar a interface <literal>org.hibernate.usertype.ParameterizedType</"
+"literal>. Para fornecer parâmetros a seu tipo personalizado, você pode usar "
+"o elemento <literal>&lt;type&gt;</literal> em seus arquivos de mapeamento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"O <literal>UserType</literal> pode agora recuperar o valor para o parâmetro "
+"chamado <literal>padrão</literal> da <literal>Propriedade</literal> do "
+"passado a ele."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you regularly use a certain <literal>UserType</literal>, it is useful to "
+"define a shorter name for it. You can do this using the <literal>&lt;"
+"typedef&gt;</literal> element. Typedefs assign a name to a custom type, and "
+"can also contain a list of default parameter values if the type is "
+"parameterized."
+msgstr ""
+"Se você usar freqüentemente um determinado <literal>UserType</literal>, pode "
+"ser útil definir um nome mais curto para ele. Você pode fazer isto usando o "
+"elemento <literal>&lt;typedef&gt;</literal>. Typedefs atribui um nome a um "
+"tipo personalizado, e pode também conter uma lista de valores de parâmetro "
+"padrão se o tipo for parametrizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"Também é possível substituir os parâmetros fornecidos em um tipo de "
+"definição em situações de caso a caso, utilizando tipos de parâmetros no "
+"mapeamento da propriedade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will rarely need to use a custom type, it is considered "
+"good practice to use custom types for non-entity classes that occur "
+"frequently in your application. For example, a <literal>MonetaryAmount</"
+"literal> class is a good candidate for a <literal>CompositeUserType</"
+"literal>, even though it could be mapped as a component. One reason for this "
+"is abstraction. With a custom type, your mapping documents would be "
+"protected against changes to the way monetary values are represented."
+msgstr ""
+"Apesar da rica variedade, os tipos construídos do Hibernate e suporte para "
+"componentes raramente irão utilizar  um tipo de padrão, no entanto, é "
+"considerado uma boa idéia, utilizar tipos customizados para classes não "
+"entidade que ocorrem com freqüência em seu aplicativo. Por exemplo, uma "
+"classe <literal>MonetaryAmount</literal> é um bom candidato para um "
+"<literal>CompositeUserType</literal>, apesar de poder ter sido mapeado "
+"facilmente como um componente. Uma motivação para isto é a abstração. Com um "
+"tipo padronizado, seus documentos de mapeamento seriam colocados à prova "
+"contra mudanças possíveis na forma de representação de valores monetários. "
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "Mapeando uma classe mais de uma vez"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case, you must specify an <emphasis>entity name</emphasis> to "
+"disambiguate between instances of the two mapped entities. By default, the "
+"entity name is the same as the class name. Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"É possível fornecer mais de um mapeamento para uma classe persistente em "
+"específico. Neste caso, você deve especificar um <emphasis>nome de entidade</"
+"emphasis> para as instâncias das duas entidades mapeadas não se tornarem "
+"ambíguas. Por padrão, o nome da entidade é o mesmo do nome da classe. O "
+"Hibernate o deixa especificar o nome de entidade quando estiver trabalhando "
+"com objetos persistentes, quando escrever consultas, ou ao mapear "
+"associações para a entidade nomeada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations are now specified using <literal>entity-name</literal> instead "
+"of <literal>class</literal>."
+msgstr ""
+"Note como as associações são agora especificadas utilizando o "
+"<literal>entity-name</literal> ao invés da <literal>class</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "Identificadores quotados do SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal>. This is usually double quotes, but the SQL Server uses brackets "
+"and MySQL uses backticks."
+msgstr ""
+"Você poderá forçar o Hibernate a quotar um identificador no SQL gerado, "
+"anexando o nome da tabela ou coluna aos backticks no documento de "
+"mapeamento. O Hibernate usará o estilo de quotação correto para o SQL  "
+"<literal>Dialect</literal>. Geralmente são quotas dúplas, mas parênteses "
+"para o Servidor SQL e backticks para MeuSQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "Alternativas de Metadados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"XML does not suit all users so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
+msgstr ""
+"O XML não é para todos, e portanto existem algumas formas alternativas de "
+"defiinir o metadado de mapeamento no Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "Usando a marcação XDoclet."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover "
+"this approach in this reference guide since it is considered part of "
+"XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings:"
+msgstr ""
+"Muitos usuários do Hibernate preferem encubar a informação de mapeamento "
+"diretamente no código de fonte utilizando o XDoclet <literal>@hibernate."
+"tags</literal>. Nós não falaremos sobre esta abordagem neste documento, uma "
+"vez que é estritamente considerado parte de um XDoclet. No entanto, "
+"incluímos os seguintes exemplos  da classe <literal>Cat</literal> com os "
+"mapeamentos de XDoclet:"
+
+#. Tag: para
+#, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr ""
+"Veja o web site do Hibernate para maiores detalhes sobre um XDoclet e "
+"Hibernate.  "
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "Usando as anotações JDK 5.0"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level that are "
+"type-safe and checked at compile time. This mechanism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API). Support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr ""
+"O JDK 5.0 introduziu as anotações estilo XDoclet em nível de linguagem, tipo "
+"seguro e checado em tempo de compilação. Este mecanismo é mais potente do "
+"que as anotações XDoclet e melhor suportado pelas ferramentas e IDEs. O "
+"IntelliJ IDEA por exemplo, suporta a auto complexão e destaque da sintaxe "
+"das anotações JDK 5.0. A nova revisão da especificação EJB (JSR-220) usa as "
+"anotações JDK 5.0 como mecanismos de metadados para beans de entidade. O "
+"Hibernate3 implementa o <literal>EntityManager</literal> do JSR-220 (o API "
+"de persistência). O suporte para mapear metadados está disponível através do "
+"pacote <emphasis>Anotações do Hibernate</emphasis>, como um download "
+"separado. Ambos os EJB3 (JSR-220) e o metadado Hibernate3 são suportados. "
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr "Este é um exemplo de uma classe POJO anotado como um bean de entidade EJB:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Support for JDK 5.0 Annotations (and JSR-220) is currently under "
+"development. Please refer to the Hibernate Annotations module for more "
+"details."
+msgstr ""
+"Note que o suporte para Anotações JDK 5.0 (e JSR-220) ainda está em "
+"construção. Consulte o módulo de Anotações do Hibernate para maiores "
+"detalhes.  "
+
+#. Tag: title
+#, no-c-format
+msgid "Generated properties"
+msgstr "Propriedades geradas "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Generated properties are properties that have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects that contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. When Hibernate issues "
+"an SQL INSERT or UPDATE for an entity that has defined generated properties, "
+"it immediately issues a select afterwards to retrieve the generated values."
+msgstr ""
+"Propriedades Geradas são propriedades que possuem seus valores gerados pelo "
+"banco de dados. Como sempre, os aplicativos do Hibernate precisavam "
+"<literal>renovar</literal> objetos que contenham qualquer propriedade para "
+"qual o banco de dados estivesse gerando valores. No entanto, vamos permitir "
+"que o aplicativo delegue esta responsabilidade ao Hibernate. Essencialmente, "
+"quando o Hibernate edita um SQL INSERT ou UPDATE para uma entidade que tem "
+"propriedades geradas definidas, ele edita imediatamente depois uma seleção "
+"para recuperar os valores gerados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link>, "
+"can be marked as generated."
+msgstr ""
+"As propriedades marcadas como geradas devem ser não-inseríveis e não-"
+"atualizáveis. Somente <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"e <link linkend=\"mapping-declaration-property\">simple properties</link> podem ser marcadas como geradas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>never</literal> (the default): the given property value is not "
+"generated within the database."
+msgstr ""
+"<literal>never</literal> (padrão) - significa que o valor de propriedade "
+"dado não é gerado dentro do banco de dados.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: the given property value is generated on insert, "
+"but is not regenerated on subsequent updates. Properties like created-date "
+"fall into this category. Even though <link linkend=\"mapping-declaration-"
+"version\">version</link> and <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> properties can be marked as generated, this option is "
+"not available."
+msgstr ""
+"<literal>insert</literal>: informa que o valor de propriedade dado é gerado "
+"ao inserir, mas não é novamente gerado nas próximas atualizações. "
+"Propriedades do tipo data criada, se encaixam nesta categoria. Note que "
+"embora as propriedades <link linkend=\"mapping-declaration-"
+"version\">version</link> e <link linkend=\"mapping-declaration-timestamp"
+"\">timestamp</link> podem ser marcadas como "
+"geradas, esta opção não está disponível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>always</literal>: the property value is generated both on insert "
+"and on update."
+msgstr ""
+"<literal>always</literal> - informa que o valor da propriedade é gerado "
+"tanto ao inserir quanto ao atualizar. "
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr "Coluna de expressöes de gravação e leitura"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to customize the SQL it uses to read and write the "
+"values of columns mapped to <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. For example, if your database provides a set of "
+"data encryption functions, you can invoke them for individual columns like "
+"this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr ""
+"O Hibernate permite você personalizar o SQL utilizado para ler e gravar os valores da coluna mapeada ao <link linkend=\"mapping-declaration-property"
+"\">simple properties</link>. Por exemplo, caso o seu banco de dados fornecer um conjunto de funçöes encriptonados de dados, você poderá invocá-las para colunas individuais como: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber"
+"\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" "
+"write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate applies the custom expressions automatically whenever the property "
+"is referenced in a query. This functionality is similar to a derived-"
+"property <literal>formula</literal> with two differences:"
+msgstr "O Hibernate aplica automaticamente as expressöes personalizadas a todo instante que a propriedade é referenciada numa consulta. Esta funcionalidade é parecida a uma <literal>formula</literal> de propriedade-derivada com duas diferenças:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The property is backed by one or more columns that are exported as part of "
+"automatic schema generation."
+msgstr "Esta propriedade é suportada por uma ou mais colunas que são exportadas como parte da geração do esquema automático."
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr "Esta propriedade é de gravação-leitura, e não de leitura apenas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>write</literal> expression, if specified, must contain exactly "
+"one '?' placeholder for the value."
+msgstr "Caso a expressão <literal>write</literal>seja especificada, deverá conter um '?' para o valor."
+
+#. Tag: title
+#, no-c-format
+msgid "Auxiliary database objects"
+msgstr "Objetos de Banco de Dados Auxiliares "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Auxiliary database objects allow for the CREATE and DROP of arbitrary "
+"database objects. In conjunction with Hibernate's schema evolution tools, "
+"they have the ability to fully define a user schema within the Hibernate "
+"mapping files. Although designed specifically for creating and dropping "
+"things like triggers or stored procedures, any SQL command that can be run "
+"via a <literal>java.sql.Statement.execute()</literal> method is valid (for "
+"example, ALTERs, INSERTS, etc.). There are essentially two modes for "
+"defining auxiliary database objects:"
+msgstr ""
+"Permite o uso dos comandos CREATE e DROP para criar e remover os objetos de "
+"banco de dados arbitrários. Juntamente às ferramentas de evolução do esquema "
+"do Hibernate, eles possuem a habilidade de definir completamente um esquema "
+"de usuário dentro dos arquivos de mapeamento do Hibernate. Embora criado "
+"especificamente para criar e remover algo como trigger ou procedimento "
+"armazenado, qualquer comando SQL que pode rodar através de um método "
+"<literal>java.sql.Statement.execute()</literal> é válido. Existem dois "
+"módulos essenciais para definir objetos de banco de dados auxiliares:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands in the "
+"mapping file:"
+msgstr ""
+"O primeiro módulo é para listar explicitamente os comandos CREATE e DROP no "
+"arquivo de mapeamento: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second mode is to supply a custom class that constructs the CREATE and "
+"DROP commands. This custom class must implement the <literal>org.hibernate."
+"mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr ""
+"O segundo módulo é para fornecer uma classe padrão que sabe como construir "
+"os comandos CREATE e DROP. Esta classe padrão deve implementar a interface "
+"<literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped so that they "
+"only apply when certain dialects are used."
+msgstr ""
+"Além disso, estes objetos de banco de dados podem ter um escopo opcional que "
+"só será aplicado quando certos dialetos forem utilizados. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,572 @@
+# translation of batch.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: batch\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 14:19+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "Batch processing"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100,000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Uma alternativa para inserir 100.000 linhas no banco de dados usando o "
+"Hibernate pode ser a seguinte: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50,000th row. That is because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache. In this chapter we will show you how to avoid this problem."
+msgstr ""
+"Isto irá falhar com um <literal>OutOfMemoryException</literal> em algum "
+"lugar próximo a linha 50.000. Isso ocorre devido ao fato do Hibernate fazer "
+"cache de todas as instâncias de <literal>Customer</literal> inseridas num "
+"cachê em nível de sessão. Nós demonstraremos neste capitulo como evitar este "
+"problema."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are undertaking batch processing you will need to enable the use of "
+"JDBC batching. This is absolutely essential if you want to achieve optimal "
+"performance. Set the JDBC batch size to a reasonable number (10-50, for "
+"example):"
+msgstr ""
+"Entretanto, se você vai realizar processamento em lotes, é muito importante "
+"que você habilite o uso de lotes JDBC, se você pretende obter um desempenho "
+"razoável. Defina o tamanho do lote JDBC em um valor razoável (algo entre 10-"
+"50, por exemplo):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate disables insert batching at the JDBC level transparently if you "
+"use an <literal>identity</literal> identifier generator."
+msgstr ""
+"Note que o Hibernate desabilita o loteamento de inserção no nível JDBC de "
+"forma transparente se você utilizar um gerador de identificador "
+"<literal>identiy</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also do this kind of work in a process where interaction with the "
+"second-level cache is completely disabled:"
+msgstr ""
+"Você também pode querer rodar esse tipo de processamento em lotes com o "
+"cache secundário completamente desabilitado: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"Mas isto não é absolutamente necessário, desde que possamos ajustar o "
+"<literal>CacheMode</literal> para desabilitar a interação com o cache "
+"secundário."
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "Inserção em lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When making new objects persistent <literal>flush()</literal> and then "
+"<literal>clear()</literal> the session regularly in order to control the "
+"size of the first-level cache."
+msgstr ""
+"Quando você estiver inserindo novos objetos persistentes, vocês deve "
+"executar os métodos <literal>flush()</literal> e <literal>clear()</literal> "
+"regularmente na sessão, para controlar o tamanho do cache primário. "
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "Atualização em lotes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For retrieving and updating data, the same ideas apply. In addition, you "
+"need to use <literal>scroll()</literal> to take advantage of server-side "
+"cursors for queries that return many rows of data."
+msgstr ""
+"Para recuperar e atualizar informações a mesma idéia é válida. Além disso, "
+"pode precisará usar o <literal>scroll()</literal> para usar recursos no lado "
+"do servidor em consultas que retornem muita informação. "
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "A interface de Sessão sem Estado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that can be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session never cascade to associated instances. Collections "
+"are ignored by a stateless session. Operations performed via a stateless "
+"session bypass Hibernate's event model and interceptors. Due to the lack of "
+"a first-level cache, Stateless sessions are vulnerable to data aliasing "
+"effects. A stateless session is a lower-level abstraction that is much "
+"closer to the underlying JDBC."
+msgstr ""
+"Como forma alternativa, o Hibernate provê uma API orientada à comandos, que "
+"pode ser usada para transmitir um fluxo de dados de e para o banco de dados "
+"na forma de objetos desanexados. Um <literal>StatelessSession</literal> não "
+"tem um contexto persistente associado e não fornece muito das semânticas de "
+"alto nível para controle do ciclo de vida. Especialmente uma Sessão sem "
+"Estado não implementa um cachê primário e nem interage com o cache "
+"secundário ou cachê de consulta. Ela não implementa uma gravação temporária "
+"transacional ou checagem suja automática. Operações realizadas usando uma "
+"sessão sem estado não fazem nenhum tipo de cascata com as instâncias "
+"associadas. As coleções são ignoradas por uma Sessão sem Estado. Operações "
+"realizadas com uma Sessão sem Estado ignoram a arquitetura de eventos e os "
+"interceptadores. As sessões sem estado são vulneráveis aos efeitos do alias "
+"dos dados, devido à falta do cachê primário. Uma Sessão sem Estado é uma "
+"abstração de baixo nível, muito mais próxima do JDBC adjacente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this code example, the <literal>Customer</literal> instances returned by "
+"the query are immediately detached. They are never associated with any "
+"persistence context."
+msgstr ""
+"Veja neste exempo, as instâncias de <literal>Customer</literal> retornadas "
+"pela consulta, são imediatamente desvinculadas. Elas nunca serão associadas "
+"à um contexto persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations. They result in the "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. They have different semantics to the "
+"<literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>Session</literal> interface."
+msgstr ""
+"As operações <literal>insert(), update()</literal> e <literal>delete()</"
+"literal> definidas pela interface <literal>StatelessSession</literal> são "
+"considerados operações diretas no banco de dados. Isto resulta em uma "
+"execução imediata de comandos SQL <literal>INSERT, UPDATE</literal> ou "
+"<literal>DELETE</literal> respectivamente. Dessa forma, eles possuem uma "
+"semântica bem diferente das operações <literal>save(), saveOrUpdate()</"
+"literal> ou <literal>delete()</literal> definidas na interface "
+"<literal>Session</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "Operações no estilo DML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of the object state. The object state is "
+"available in memory. This means that manipulating data directly in the "
+"database (using the SQL <literal>Data Manipulation Language</literal> (DML) "
+"the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, "
+"<literal>DELETE</literal>) will not affect in-memory state. However, "
+"Hibernate provides methods for bulk SQL-style DML statement execution that "
+"is performed through the Hibernate Query Language (<link linkend=\"queryhql"
+"\">HQL</link>)."
+msgstr ""
+"Como já discutido anteriormente, o mapeamento objeto/relacional automático e "
+"transparente é adquirido com a gerência do estado do objeto. Com isto o "
+"estado daquele objeto fica disponível na memória. Isto significa que a "
+"manipulação de dados (usando as instruções SQL <literal>Data Manipulation "
+"Language</literal> (SQL-style DML): <literal>INSERT</literal>, "
+"<literal>UPDATE</literal>, <literal>DELETE</literal>) diretamente no banco "
+"de dados não irá afetar o estado registrado em memória. Entretanto, o "
+"Hibernate provê métodos para executar instruções de volume de SQL-style DML, "
+"que são totalmente executados com HQL (Hibernate Query Language - Linguagem "
+"de Consulta Hibernate) (<link linkend=\"queryhql"
+"\">HQL</link>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>."
+msgstr ""
+"A pseudo-sintaxe para instruções <literal>UPDATE</literal> e "
+"<literal>DELETE</literal> é: Algumas observações: <literal>( UPDATE | "
+"DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr "Alguns pontos a serem destacados:"
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "Na cláusula from, a palavra chave FROM é opcional;"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause. It can, however, "
+"be aliased. If the entity name is aliased, then any property references must "
+"be qualified using that alias. If the entity name is not aliased, then it is "
+"illegal for any property references to be qualified."
+msgstr ""
+"Somente uma entidade pode ser chamada na cláusula from. Isto pode, "
+"opcionalmente, ser um alias. Se o nome da entidade for um alias, então "
+"qualquer referência de propriedade deve ser qualificada usando esse alias. "
+"Caso o nome da entidade não for um alias, então será ilegal qualquer das "
+"referências de propriedade serem qualificadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or "
+"explicit, can be specified in a bulk HQL query. Sub-queries can be used in "
+"the where-clause, where the subqueries themselves may contain joins."
+msgstr ""
+"Nenhum <link linkend=\"queryhql-joins-forms\">joins</link>, tanto implícito ou "
+"explícito, pode ser especificado em uma consulta de volume HQL. As Sub-"
+"consultas podem ser utilizadas na cláusula onde, em que as subconsultas "
+"podem conter uniões. "
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "A clausula onde também é opcional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method. The method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>:"
+msgstr ""
+"Como exemplo para executar um HQL <literal>UPDATE</literal>, use o método "
+"<literal>Query.executeUpdate()</literal>. O método ganhou o nome devido à "
+"sua familiaridade com o do JDBC <literal>PreparedStatement.executeUpdate()</"
+"literal>):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> "
+"statements, by default, do not effect the <link linkend=\"mapping-"
+"declaration-version\">version</link> or the <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> property values for the affected "
+"entities. However, you can force Hibernate to reset the <literal>version</"
+"literal> or <literal>timestamp</literal> property values through the use of "
+"a <literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"As instruções do HQL <literal>UPDATE</literal> por padrão não afetam o  <link linkend=\"mapping-"
+"declaration-version\">version</link> ou os valores de propriedade <link linkend=\"mapping-"
+"declaration-timestamp\">timestamp</link> para as entidades afetadas, de "
+"acordo com a especificação EJB3. No entanto, você poderá forçar o Hibernate "
+"a redefinir corretamente os valores de propriedade <literal>version</"
+"literal> ou <literal>timestamp</literal> usando um <literal>versioned "
+"update</literal>. Para tal, adicione uma palavra chave <literal>VERSIONED</"
+"literal> após a palavra chave <literal>UPDATE</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Custom version types, <literal>org.hibernate.usertype.UserVersionType</"
+"literal>, are not allowed in conjunction with a <literal>update versioned</"
+"literal> statement."
+msgstr ""
+"Note que os tipos de versões padronizadas, <literal>org.hibernate.usertype."
+"UserVersionType</literal>, não são permitidos junto às instruções "
+"<literal>update versioned</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"Para executar um HQL <literal>DELETE</literal>, use o mesmo método "
+"<literal>Query.executeUpdate()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicates the number of entities effected by the "
+"operation. This may or may not correlate to the number of rows effected in "
+"the database. An HQL 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 ""
+"O valor <literal>int</literal> retornado pelo método <literal>Query."
+"executeUpdate()</literal> indica o número de entidade afetadas pela "
+"operação. Lembre-se que isso pode estar ou não relacionado ao número de "
+"linhas alteradas no banco de dados. Uma operação de volume HQL pode resultar "
+"em várias instruções SQL atuais a serem executadas (por exemplo, no caso de "
+"subclasses unidas). O número retornado indica a quantidade real de entidades "
+"afetadas pela instrução. Voltando ao exemplo da subclasse unida, a exclusão "
+"de uma das subclasses pode resultar numa exclusão em outra tabelas, não "
+"apenas na tabela para qual a subclasses está mapeada, mas também tabela "
+"\"root\" e possivelmente nas tabelas de subclasses unidas num nível "
+"hierárquico imediatamente abaixo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"A pseudo-sintáxe para o comando <literal>INSERT</literal> é: <literal>INSERT "
+"INTO EntityName properties_list select_statement</literal>. Alguns pontos a "
+"observar:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"Apenas a forma INSERT INTO ... SELECT ... é suportada; INSERT INTO ... "
+"VALUES ... não é suportada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column specification</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritance, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"A lista de propriedade é análoga ao <literal>column specification</literal> "
+"do comando SQL <literal>INSERT</literal>. Para entidades envolvidas em "
+"mapeamentos, apenas as propriedades definidas diretamente em nível da classe "
+"podem ser usadas na properties_list. Propriedades da superclasse não são "
+"permitidas e as propriedades da subclasse não fazem sentido. Em outras "
+"palavras, os comandos <literal>INSERT</literal> não são polimórficos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. This might, however, cause problems between Hibernate "
+"<literal>Type</literal>s which are <emphasis>equivalent</emphasis> as "
+"opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"selecionar_instruções pode ser qualquer consulta de seleção HQL válida, "
+"desde que os tipos de retorno sejam compatíveis com os tipos esperados pela "
+"inserção. Atualmente, isto é verificado durante a compilação da consulta, ao "
+"invés de permitir que a verificação chegue ao banco de dados. Entretanto, "
+"perceba que isso pode causar problemas entre os <literal>Tipo</literal>s de "
+"Hibernate que são <emphasis>equivalentes</emphasis> e não <emphasis>iguais</"
+"emphasis>. Isso pode causar problemas nas combinações entre a propriedade "
+"definida como <literal>org.hibernate.type.DateType</literal>e uma "
+"propriedade definida como <literal>org.hibernate.type.TimestampType</"
+"literal>, embora o banco de dados não possa fazer uma distinção ou possa ser "
+"capaz de manusear a conversão."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list, in which "
+"case its value is taken from the corresponding select expression, or omit it "
+"from the properties_list, in which case a generated value is used. This "
+"latter option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. For the purposes of this "
+"discussion, in-database generators are considered to be <literal>org."
+"hibernate.id.SequenceGenerator</literal> (and its subclasses) and any "
+"implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>. The most notable exception here is <literal>org.hibernate.id."
+"TableHiLoGenerator</literal>, which cannot be used because it does not "
+"expose a selectable way to get its values."
+msgstr ""
+"Para a propriedade id, a instrução insert oferece duas opções. Você pode "
+"especificar qualquer propriedade id explicitamente no properties_list (em "
+"alguns casos esse valor é obtido diretamente da instrução select) ou pode "
+"omitir do properties_list (nesse caso, um valor gerado é usado). Essa última "
+"opção só é válida quando são usados geradores de ids que operam no banco de "
+"dados; a tentativa de usar essa opção com geradores do tipo \"em memória\" "
+"irá causar um exceção durante a etapa de análise. Note que para a finalidade "
+"desta discussão, os seguintes geradores operam com o banco de dados "
+"<literal>org.hibernate.id.SequenceGenerator</literal> (e suas subclasses) e "
+"qualquer implementação de <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal>. Aqui, a exceção mais notável é o "
+"<literal>org.hibernate.id.TableHiLoGenerator</literal>, que não pode ser "
+"usado porque ele não dispõe de mecanismos para recuperar os seus valores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list, in which case "
+"its value is taken from the corresponding select expressions, or omit it "
+"from the properties_list, in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr ""
+"Para propriedades mapeadas como <literal>version</literal> ou "
+"<literal>timestamp</literal>, a instrução insert lhe oferece duas opções. "
+"Você pode especificar a propriedade na properties_list, nesse caso o seu "
+"valor é obtido a partir da instrução select correspondente, ou ele pode ser "
+"omitido da properties_list (neste caso utiliza-se o <literal>seed value</"
+"literal> definido pela classe <literal>org.hibernate.type.VersionType</"
+"literal>)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of an HQL <literal>INSERT</literal> statement "
+"execution:"
+msgstr "Segue abaixo o exemplo da execução de um HQL <literal>INSERT</literal>:"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,530 @@
+# translation of best_practices.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: best_practices\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 15:52+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "Melhores práticas"
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
+"literal>:"
+msgstr ""
+"Escreva classes compactas e mapeie-as usando <literal>&lt;component&gt;</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"Use uma classe <literal>Endereço</literal> para encapsular <literal>rua</"
+"literal>, <literal>bairro</literal>, <literal>estado</literal>, "
+"<literal>CEP</literal>. Isto promove a reutilização de código e simplifica o "
+"refactoring."
+
+#. Tag: term
+#, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "Declare propriedades identificadoras em classes persistentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are a range of reasons "
+"why you should use them. We recommend that identifiers be 'synthetic', that "
+"is, generated with no business meaning."
+msgstr ""
+"O Hibernate constrói propriedades identificadoras opcionais. Existem "
+"inúmeras razões para utilizá-las. Nós recomendamos que os identificadores "
+"sejam 'sintéticos', quer dizer, gerados sem significado para negócios. "
+
+#. Tag: term
+#, no-c-format
+msgid "Identify natural keys:"
+msgstr "Identifique chaves naturais:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal>&lt;"
+"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"Identifique chaves naturais para todas as entidades, e mapeie-as usando "
+"<literal>&lt;natural-id&gt;</literal>. Implemente <literal>equals()</"
+"literal> e <literal>hashCode()</literal> para comparar as propriedades que "
+"compõem a chave natural."
+
+#. Tag: term
+#, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "Coloque cada classe de mapeamento em seu próprio arquivo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"sense, particularly in a team environment."
+msgstr ""
+"Não use um único código de mapeamento monolítico. Mapeie <literal>com.eg."
+"Foo</literal> no arquivo <literal>com/eg/Foo.hbm.xml</literal>. Isto faz "
+"bastante sentido, especialmente em ambiente de equipe."
+
+#. Tag: term
+#, no-c-format
+msgid "Load mappings as resources:"
+msgstr "Carregue os mapeamentos como recursos:"
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "Implemente os mapeamentos junto às classes que eles mapeiam."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "Considere a possibilidade de externar as strings de consultas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is recommended if your queries call non-ANSI-standard SQL functions. "
+"Externalizing the query strings to mapping files will make the application "
+"more portable."
+msgstr ""
+"Esta é uma boa prática se suas consultas chamam funções SQL que não sejam "
+"ANSI. Externar as strings de consultas para mapear arquivos irá tornar a "
+"aplicação mais portável. "
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "Use variáveis de vínculo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Do not use string "
+"manipulation to bind a non-constant value in a query. You should also "
+"consider using named parameters in queries."
+msgstr ""
+"Assim como em JDBC, sempre substitua valores não constantes por \"?\". Nunca "
+"use a manipulação de strings para concatenar valores não constantes em uma "
+"consulta. Até melhor, considere a possibilidade de usar parâmetros nomeados "
+"nas consultas."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "Não gerencie suas conexões JDBC:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows the application to manage JDBC connections, but his "
+"approach should be considered a last-resort. If you cannot use the built-in "
+"connection providers, consider providing your own implementation of "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"O Hibernate permite que a aplicação gerencie conexões JDBC, mas esta "
+"abordagem deve ser considerada um último recurso. Se você não pode usar os "
+"provedores de conexão embutidos, considere fazer sua implementação a partir "
+"de <literal>org.hibernate.connection.ConnectionProvider</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider using a custom type:"
+msgstr "Considere a possibilidade de usar tipos customizados:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you have a Java type from a library that needs to be persisted but "
+"does not provide the accessors needed to map it as a component. You should "
+"consider implementing <literal>org.hibernate.UserType</literal>. This "
+"approach frees the application code from implementing transformations to/"
+"from a Hibernate type."
+msgstr ""
+"Suponha que você tenha um tipo Java, de alguma biblioteca, que precisa ser "
+"persistido mas não provê de acessórios necessários para mapeá-lo como um "
+"componente. Você deve implementar <literal>org.hibernate.UserType</literal>. "
+"Esta abordagem livra o código da aplicação de implementar transformações de/"
+"para o tipo Hibernate. "
+
+#. Tag: term
+#, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "Use código manual JDBC nos afunilamentos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
+"faster. Please wait until you <emphasis>know</emphasis> something is a "
+"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
+"<literal>Session</literal>, wrap your JDBC operation as a <literal>org."
+"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
+"way you can still use the same transaction strategy and underlying "
+"connection provider."
+msgstr ""
+"Nas áreas de desempenho crítico do sistema, alguns tipos de operações podem "
+"se beneficiar do uso direto do JDBC. Mas por favor, espere até você "
+"<emphasis>saber</emphasis> se é um afunilamento. E não suponha que o uso "
+"direto do JDBC é necessariamente mais rápido. Se você precisar usar "
+"diretamente o JDBC, vale a pena abrir uma <literal>Session</literal> do "
+"Hibernate, embrulhar a sua operaçäo JDBC como um objeto <literal>org."
+"hibernate.jdbc.Work</literal> e usar uma conexão JDBC. De modo que você possa ainda usar a mesma "
+"estratégia de transação e ocultar o provedor a conexão."
+
+#. Tag: term
+#, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "Entenda o esvaziamento da <literal>Session</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the Session synchronizes its persistent state with the database. "
+"Performance will be affected if this process occurs too often. You can "
+"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
+"even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"De tempos em tempos a sessão sincroniza seu estado persistente com o banco "
+"de dados. O desempenho será afetado se este processo ocorrer frequentemente. "
+"Você pode algumas vezes minimizar a liberação desnecessária desabilitando a "
+"liberação automática ou até mesmo mudando a ordem das consultas e outras "
+"operações em uma transação particular. "
+
+#. Tag: term
+#, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr "Em uma arquitetura de três camadas, considere o uso de objetos separados:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When using a servlet/session bean architecture, you can pass persistent "
+"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
+"new session to service each request. Use <literal>Session.merge()</literal> "
+"or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the "
+"database."
+msgstr ""
+"Ao usar a arquitetura do bean de sessão/servlet, você pode passar os objetos "
+"persistentes carregados no bean de sessão para e a partir da camada servlet/"
+"JSP. Use uma nova sessão para manipular cada solicitação. Use a "
+"<literal>Session.merge()</literal> ou a <literal>Session.saveOrUpdate()</"
+"literal> para sincronizar objetos com o banco de dados.  "
+
+#. Tag: term
+#, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr ""
+"Em uma arquitetura de duas camadas, considere o uso de contextos de longa "
+"persistência:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often necessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An appropriate alternative in a two "
+"tiered architecture, is to maintain a single open persistence contact "
+"session for the whole life cycle of the application transaction. Then simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction or you will be working with "
+"stale data."
+msgstr ""
+"As Transações do Banco de Dados precisam ser as mais curtas possíveis para "
+"uma melhor escalabilidade. No entanto, é geralmente necessário implementar "
+"<emphasis>transações de aplicações</emphasis> de longa duração, uma única "
+"unidade de trabalho a partir do ponto de vista de um usuário. Uma transação "
+"de aplicação pode transpor diversos ciclos de solicitação/resposta de "
+"cliente. É comum usar objetos desanexados para implementar as transações de "
+"aplicação. Uma outra alternativa, extremamente apropriada em uma arquitetura "
+"de duas camadas, é manter um único contato de persistência aberto (sessão) "
+"para todo o tempo de vida da transação de aplicação e simplesmente "
+"disconectá-lo do JDBC ao final de cada solicitação e reconectá-lo no início "
+"de uma solicitação subsequente. Nunca compartilhe uma sessão única com mais "
+"de uma transação de aplicação, ou você irá trabalhar com dados antigos."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "Não trate as exceções como recuperáveis:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you do not do this, Hibernate cannot "
+"guarantee that in-memory state accurately represents the persistent state. "
+"For example, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"Isto é mais uma prática necessária do que uma \"melhor\" prática. Quando uma "
+"exceção ocorre, retorne à <literal>Transaction</literal> e feche a "
+"<literal>Sessão</literal>. Se não fizer isto, o Hibernate não poderá "
+"garantir que o estado em memória representará de forma precisa o estado "
+"persistente. Como este é um caso especial, não utilize a <literal>Session."
+"load()</literal> para determinar se uma instância com dado identificador "
+"existe em um banco de dados, use <literal>Session.get()</literal> ou então "
+"uma consulta. "
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "Prefira a busca lazy para associações:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When join fetching is appropriate "
+"to a particular use case, use a query with a <literal>left join fetch</"
+"literal>."
+msgstr ""
+"Use a busca antecipada de forma moderada. Use as coleções proxy e lazy para "
+"a maioria das associações para classes que possam não ser completamente "
+"mantidas em cache de segundo nível. Para associações de classes em cache, "
+"onde existe uma enorme probabilidade de coincidir caches, desabilite "
+"explicitamente a busca antecipada usando <literal>lazy=\"false\"</literal>. "
+"Quando uma busca de união é apropriada para um caso específico, use a "
+"consulta com <literal>left join fetch</literal>."
+
+#. Tag: term
+#, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr ""
+"Use o modelo <emphasis>sessão aberta na visualização</emphasis>, ou uma "
+"<emphasis>fase de construção</emphasis> para evitar problemas com dados não "
+"encontrados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. Unless you are prepared to hold the persistence context (the "
+"session) open across the view rendering process, you will still need an "
+"assembly phase. Think of your business methods as having a strict contract "
+"with the presentation tier about what data is available in the detached "
+"objects. This is not a limitation of Hibernate. It is a fundamental "
+"requirement of safe transactional data access."
+msgstr ""
+"O Hibernate libera o desenvolvedor de escrever <emphasis>Objetos de "
+"Transferência de Dados</emphasis> (DTO). Em uma arquitetura tradicional EJB, "
+"os DTOs servem dois propósitos: primeiro, eles se deparam com o problema de "
+"que os beans de entidade não são serializáveis, depois, eles implicitamente "
+"definem uma fase de construção onde todos os dados a serem utilizados pelo "
+"view são buscados e conduzidos aos DTOs antes mesmo de retornar o controle à "
+"camada de apresentação. O Hibernate elimina o primeiro propósito. No "
+"entanto, você ainda precisará de uma fase de construção (pense em seus "
+"métodos de negócios como tendo um contrato estrito com a camada de "
+"apresentação sobre o quais dados estão disponíveis nos objetos desanexados) "
+"a não ser que você esteja preparado para manter o contexto de persistência "
+"(sessão) aberto no processo de renderização da visualização. Isto não é uma "
+"limitação do Hibernate. É uma solicitação fundamental para acesso a dados "
+"transacionais seguros."
+
+#. Tag: term
+#, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr "Considere abstrair sua lógica comercial do Hibernate:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hide Hibernate data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC "
+"associated to Hibernate via a <literal>UserType</literal>. This advice is, "
+"however, intended for \"sufficiently large\" applications. It is not "
+"appropriate for an application with five tables."
+msgstr ""
+"Oculte (Hibernate) o código de acesso a dados atrás de uma interface. "
+"Combine os modelos <emphasis>DAO</emphasis> e <emphasis>Sessão Local de "
+"Thread</emphasis>. Você pode também persistir algumas classes pelo JDBC "
+"handcoded, associado ao Hibernate via um  <literal>UserType</literal>. Este "
+"é um conselho para aplicações \"grandes o suficiente\", não é apropriado "
+"para uma aplicação com cinco tabelas."
+
+#. Tag: term
+#, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "Não use mapeamentos de associação exóticos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Practical test cases for real many-to-many associations are rare. Most of "
+"the time you need additional information stored in the \"link table\". In "
+"this case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, most associations are one-to-many and many-"
+"to-one. For this reason, you should proceed cautiously when using any other "
+"association style."
+msgstr ""
+"Casos de testes práticos para associações muitos-para-muitos reais são "
+"raros. A maioria do tempo você precisa de informação adicional armazenada na "
+"\" tabela de link\". Neste caso, é muito melhor usar associações dois um-"
+"para-muitos para uma classe de link intermediário. Na verdade, acreditamos "
+"que a maioria das associações é um-para-muitos e muitos-para-um, você deve "
+"tomar cuidado ao utilizar qualquer outro tipo de associação e perguntar a "
+"você mesmo se é realmente necessário. "
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "Prefira associações bidirecionais:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"As associações unidirecionais são mais difíceis para pesquisar. Em "
+"aplicações grandes, quase todas as associações devem navegar nas duas "
+"direções em consultas. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,52 @@
+# translation of bibliography.po to
+# Language pt-BR translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bibliography\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-17 14:22+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr "Referências"
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr "Padröes da Arquitetura do Aplicativo Enterprise "
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr "Martin"
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr "Persitência Java com Hibernate"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr "Segunda Edição do Hibernate em Ação"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1319 @@
+# translation of collection_mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: collection_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-03-15 16:00+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mapping"
+msgstr "Mapeamento de coleção "
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "Coleções persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type. For example:"
+msgstr ""
+"O Hibernate requer que os campos de coleções de valor persistente sejam "
+"declarados como um tipo de interface. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or anything you like (\"anything you "
+"like\" means you will have to write an implementation of <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"A interface atual pode ser <literal>java.util.Set</literal>, <literal>java."
+"util.Collection</literal>, <literal>java.util.List</literal>, <literal>java."
+"util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java."
+"util.SortedMap</literal> ou o que desejar. (\"o que desejar\" significa que "
+"você terá que escrever uma implementação de <literal>org.hibernate.usertype."
+"UserCollectionType</literal>.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice how the instance variable was initialized with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent, by calling <literal>persist()</literal> for "
+"example, Hibernate will actually replace the <literal>HashSet</literal> with "
+"an instance of Hibernate's own implementation of <literal>Set</literal>. Be "
+"aware of the following errors:"
+msgstr ""
+"Observe como inicializamos a variável da instância com uma instância de "
+"<literal>HashSet</literal>. Esta é a melhor maneira de inicializar "
+"propriedades de coleções de valor de instâncias recentemente instanciadas "
+"(não persistentes). Quando você fizer uma instância persistente, chamando "
+"<literal>persist()</literal>, como por exemplo: o Hibernate substituirá o "
+"<literal>HashSet</literal> por uma instância da própria implementação do "
+"Hibernate do <literal>Set</literal>. Cuidado com erros como este:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending on the interface type."
+msgstr ""
+"As coleções persistentes injetadas pelo Hibernate, se comportam como "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> ou <literal>ArrayList</literal>, "
+"dependendo do tipo de interface."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and are "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities cannot share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics. Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"As instâncias de coleção têm o comportamento comum de tipos de valores. Eles "
+"são automaticamente persistidos quando referenciados por um objeto "
+"persistente e automaticamente deletados quando não referenciados. Se a "
+"coleção é passada de um objeto persistente para outro, seus elementos devem "
+"ser movidos de uma tabela para outra. Duas entidades não devem compartilhar "
+"uma referência com uma mesma instância de coleção. Devido ao modelo "
+"relacional adjacente, as propriedades de coleções válidas, não suportam "
+"semânticas de valores nulos. O Hibernate não distingue entre a referência da "
+"coleção nula e uma coleção vazia. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use persistent collections the same way you use ordinary Java collections. "
+"However, please ensure you understand the semantics of bidirectional "
+"associations (these are discussed later)."
+msgstr ""
+"Use as coleções persistentes da mesma forma que usa coleções Java comuns. No "
+"entanto, somente tenha a certeza de entender as semânticas de associações "
+"bidirecionais (as quais serão discutidas mais tarde)."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "Mapeamento de coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections "
+"that cover many common relational models. We suggest you experiment with the "
+"schema generation tool so that you understand how various mapping "
+"declarations translate to database tables."
+msgstr ""
+"Existem diversas variedades de mapeamento que podem ser gerados para as "
+"coleções, cobrindo muitos modelos relacionais comuns. Sugerimos que você "
+"faça o teste com a ferramenta de geração do esquema para obter uma idéia de "
+"como diversas declarações de mapeamento traduzem as tabelas de banco de "
+"dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of interface. For example, a <literal>&lt;set&gt;</literal> element is "
+"used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"O elemento do mapeamento do Hibernate, usado para mapear uma coleção, "
+"depende do tipo de interface. Por exemplo, um elemento <literal>&lt;set&gt;</"
+"literal> é usado para mapear propriedades do tipo <literal>Set</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;"
+"list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</"
+"literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-"
+"array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> "
+"element is representative:"
+msgstr ""
+"Além do <literal>&lt;set&gt;</literal>, existe também os elementos de "
+"mapeamento <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, "
+"<literal>&lt;bag&gt;</literal>, <literal>&lt;array&gt;</literal> and "
+"<literal>&lt;primitive-array&gt;</literal>. O elemento <literal>&lt;map&gt;</"
+"literal> é de representação:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal>: o nome da propriedade da coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name): the name of "
+"the collection table. It is not used for one-to-many associations."
+msgstr ""
+"<literal>table</literal> (opcional - padrão para nome de propriedade): o "
+"nome da tabela de coleção. Isto não é usado para associações um-para-muitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (opcional): o nome de um esquema de tabela para "
+"sobrescrever o esquema declarado no elemento raíz."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>): "
+"disables lazy fetching and specifies that the association is always eagerly "
+"fetched. It can also be used to enable \"extra-lazy\" fetching where most "
+"operations do not initialize the collection. This is suitable for large "
+"collections."
+msgstr ""
+"<literal>lazy</literal> (opcional - padrão para <literal>true</literal>): "
+"pode ser utilizado para desabilitar a busca lazy e especificar que a "
+"associação é sempre buscada antecipadamente, ou para habilitar busca \"extra-"
+"lazy\" onde a maioria das operações não inicializa a coleção (apropriado "
+"para coleções bem grandes)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): marks this collection as the \"inverse\" end of a bidirectional "
+"association."
+msgstr ""
+"<literal>inverse</literal> (opcional - padrão para <literal>false</"
+"literal>): marque esta coleção como o lado \"inverso\" de uma associação "
+"bidirecional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>): "
+"enables operations to cascade to child entities."
+msgstr ""
+"<literal>cascade</literal> (opcional - padrão para <literal>none</literal>): "
+"habilita operações para cascata para entidades filho."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>sort</literal> (optional): specifies a sorted collection with "
+"<literal>natural</literal> sort order or a given comparator class."
+msgstr ""
+"<literal>sort</literal> (opcional): especifica uma coleção escolhida com "
+"ordem de escolha<literal>natural</literal> ou uma dada classe comparatória."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only): specifies a table "
+"column or columns that define the iteration order of the <literal>Map</"
+"literal>, <literal>Set</literal> or bag, together with an optional "
+"<literal>asc</literal> or <literal>desc</literal>."
+msgstr ""
+"<literal>order-by</literal> (opcional, somente JDK1.4): especifica uma "
+"coluna da tabela (ou colunas) que define a ordem de iteração do "
+"<literal>Map</literal>, <literal>Set</literal> ou bag, juntos com um "
+"<literal>asc</literal> ou <literal>desc</literal> opcional."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional): specifies an arbitrary SQL "
+"<literal>WHERE</literal> condition that is used when retrieving or removing "
+"the collection. This is useful if the collection needs to contain only a "
+"subset of the available data."
+msgstr ""
+"<literal>where</literal> (opcional): especifica uma condição SQL arbitrária "
+"<literal>WHERE</literal> a ser usada quando recuperar ou remover a coleção "
+"Isto é útil se a coleção tiver somente um subconjunto dos dados disponíveis."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>): "
+"chooses between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (opcional, padrão para <literal>select</literal>): "
+"escolha entre busca de união externa, busca por seleção sequencial e busca "
+"por subseleção sequencial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): "
+"specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (opcional, padrão para <literal>1</literal>): "
+"especifica um \"tamanho de lote\" para instâncias de busca lazy desta "
+"coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): the strategy Hibernate uses for accessing the collection property "
+"value."
+msgstr ""
+"<literal>access</literal> (opcional - padrão para <literal>property</"
+"literal>): A estratégia que o Hibernate deve usar para acessar a coleção de "
+"valor de propriedade. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): specifies that changes to the state of the collection results in "
+"increments of the owning entity's version. For one-to-many associations you "
+"may want to disable this setting."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - padrão para <literal>true</"
+"literal>): especifica que alterações para o estado da coleção, resulta no "
+"incremento da versão da própria entidade. Para associações um-para-muitos, é "
+"sempre bom desabilitar esta configuração."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"a value of <literal>false</literal> specifies that the elements of the "
+"collection never change. This allows for minor performance optimization in "
+"some cases."
+msgstr ""
+"<literal>mutable</literal> (opcional - padrão para <literal>true</literal>): "
+"um valor de <literal>false</literal> especifica que os elementos  da coleção "
+"nunca mudam. Isto permite uma otimização mínima do desempenho em alguns "
+"casos."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "Chaves Externas de Coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis>, or columns, of the collection "
+"table. The collection key column is mapped by the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Instâncias de coleção são distinguidas no banco de dados pela chave exterior "
+"da entidade que possui a coleção. Esta chave exterior é referida como a "
+"<emphasis>coluna de chave de coleção</emphasis> (ou colunas) da tabela de "
+"coleção. A coluna de chave de coleção é mapeada pelo elemento <literal>&lt;"
+"key&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There can be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one-to-many associations, "
+"the foreign key column is nullable by default, so you may need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"Pode existir uma restrição de nulabilidade na coluna da chave exterior. Para "
+"a maioria das coleções, isto está implícito. Para associações unidirecionais "
+"um-para-muitos, a coluna de chave estrangeira é anulável por padrão, "
+"portanto você pode precisar especificar <literal>not-null=\"true\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr "A restrição da chave exterior pode usar <literal>ON DELETE CASCADE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"Veja nos capítulos anteriores para uma completa definição do "
+"elemento<literal>&lt;key&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "Elementos de coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections can contain almost any other Hibernate type, including: basic "
+"types, custom types, components and references to other entities. This is an "
+"important distinction. An object in a collection might be handled with "
+"\"value\" semantics (its life cycle fully depends on the collection owner), "
+"or it might be a reference to another entity with its own life cycle. In the "
+"latter case, only the \"link\" between the two objects is considered to be a "
+"state held by the collection."
+msgstr ""
+"As coleções podem conter quase qualquer outro tipo de Hibernate, incluindo "
+"todos os tipos básicos, tipos padronizados, e é claro, referências a outras "
+"entidades. Isto é uma distinção importante: um objeto em uma coleção pode "
+"ser manipulada com as semânticas \"valor\" (seu ciclo de vida depende "
+"totalmente do proprietário da coleção), ou ele pode ser uma referência à "
+"outra entidade, com seu próprio ciclo de vida. No último caso, somente o "
+"\"link\" entre os dois objetos é considerado como estado seguro pela "
+"coleção. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</"
+"literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of "
+"entity references, with <literal>&lt;one-to-many&gt;</literal> or "
+"<literal>&lt;many-to-many&gt;</literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"O tipo contido é referido como <emphasis>tipo de elemento de coleção</"
+"emphasis>. Os elementos de coleção são mapeados pelo <literal>&lt;element&gt;"
+"</literal> ou <literal>&lt;composite-element&gt;</literal>,ou no caso de "
+"referências de entidade, com <literal>&lt;one-to-many&gt;</literal> "
+"ou<literal>&lt;many-to-many&gt;</literal>. Os primeiros dois, mapeiam "
+"elementos com semânticas de valor, os dois outros são usados para mapear "
+"associações de entidade."
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "Coleções indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table. An index column "
+"is a column that maps to an array index, or <literal>List</literal> index, "
+"or <literal>Map</literal> key. The index of a <literal>Map</literal> may be "
+"of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be "
+"an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</"
+"literal>, or it can be a composite type mapped with <literal>&lt;composite-"
+"map-key&gt;</literal>. The index of an array or list is always of type "
+"<literal>integer</literal> and is mapped using the <literal>&lt;list-"
+"index&gt;</literal> element. The mapped column contains sequential integers "
+"that are numbered from zero by default."
+msgstr ""
+"Todos os mapeamentos de coleção, exceto aqueles com semânticas de conjunto e "
+"bag, precisam de uma <emphasis>coluna índice</emphasis> na tabela de "
+"coleção, uma coluna que mapeia para um índice matriz ou índice "
+"<literal>List</literal> ou chave de <literal>Map</literal>. O índice de um "
+"<literal>Map</literal> pode ser de qualquer tipo, mapeado com <literal>&lt;"
+"map-key&gt;</literal>, pode ser uma referência de entidade mapeada com "
+"<literal>&lt;map-key-many-to-many&gt;</literal>, ou pode ser um tipo "
+"composto, mapeado com <literal>&lt;composite-map-key&gt;</literal>. O índice "
+"de uma matriz ou lista é sempre do tipo <literal>integer</literal> e é "
+"mapeado usando o elemento <literal>&lt;list-index&gt;</literal>. As colunas "
+"mapeadas contém inteiros sequenciais, dos quais são numerados a partir do "
+"zero, por padrão. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column_name</literal> (required): the name of the column holding "
+"the collection index values."
+msgstr ""
+"<literal>column_name</literal> (requerido): O nome da coluna que mantém os "
+"valores do índice da coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>base</literal> (optional - defaults to <literal>0</literal>): the "
+"value of the index column that corresponds to the first element of the list "
+"or array."
+msgstr ""
+"<literal>base</literal> (opcional - padrão para <literal>0</literal>): o "
+"valor da coluna de índice que corresponde ao primeiro elemento da lista ou "
+"matriz."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection index values."
+msgstr ""
+"<literal>column</literal>(opcional): o nome da coluna que mnatém os valores "
+"do índice de coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQL formula used to evaluate the "
+"key of the map."
+msgstr ""
+"<literal>formula</literal> (opcional): Uma fórmula SQL usada para avaliar a "
+"chave ou o mapa."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr "<literal>type</literal> (requerido): o tipo de chaves de mapa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the foreign key column for "
+"the collection index values."
+msgstr ""
+"<literal>column</literal> (opcional): o nome de uma coluna de chave exterior "
+"para os valores do índice de coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): a SQ formula used to evaluate the "
+"foreign key of the map key."
+msgstr ""
+"<literal>formula</literal> (opcional): uma fórmula SQ usada para avaliar a "
+"chave exterior da chave do mapa."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the entity class used as the map key."
+msgstr ""
+"<literal>class</literal> (requerido): a classe da entidade usada como chave "
+"do mapa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your table does not have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you can map the property as a "
+"Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order "
+"when it is retrieved from the database, but it can be optionally sorted or "
+"ordered."
+msgstr ""
+"Se sua tabela não possui uma coluna de índice e você ainda quiser usar a "
+"<literal>Lista</literal> como tipo de propriedade, você deve mapeiar a "
+"propriedade como uma <emphasis>&lt;bag&gt;</emphasis> do Hibernate. Uma bag "
+"não mantém sua ordem quando é recuperadada do banco de dados, mas pode ser "
+"escolhida de forma opcional ou ordenada. "
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "Coleções de valores e associações muitos-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any collection of values or many-to-many associations requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns, and possibly an "
+"index column or columns."
+msgstr ""
+"Quaisquer valores de coleção ou associação muitos-para-muitos requerem uma "
+"<emphasis>tabela de coleção</emphasis> dedicada, com uma coluna de chave "
+"exterior ou colunas, <emphasis>collection element column</emphasis> ou "
+"colunas e possivelmente uma coluna de índice ou colunas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a collection of values use the <literal>&lt;element&gt;</literal> tag. "
+"For example:"
+msgstr ""
+"Para uma coleção com valores, utilizamos a tag <literal>&lt;element&gt;</"
+"literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the column holding the "
+"collection element values."
+msgstr ""
+"<literal>column</literal> (opcional): o nome da coluna que mantém os valores "
+"do elemento da coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element."
+msgstr ""
+"<literal>formula</literal> (opcional): uma fórmula usada para avaliar o "
+"elemento."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr "<literal>type</literal> (requerido): o tipo do elemento de coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>many-to-many association</emphasis> is specified using the "
+"<literal>&lt;many-to-many&gt;</literal> element."
+msgstr ""
+"A <emphasis>associação muitos-para-muitos</emphasis> é especificada usando o "
+"elemento <literal>&lt;many-to-many&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional): the name of the element foreign key "
+"column."
+msgstr ""
+"<literal>column</literal> (opcional): o nome da coluna da chave exterior do "
+"elemento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL formula used to evaluate the "
+"element foreign key value."
+msgstr ""
+"<literal>formula</literal> (opcional): uma fórmula SQL usada para avaliar o "
+"valor da chave exterior do elemento."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr "<literal>class</literal> (requerido): O nome da classe associada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching in a single <literal>SELECT</"
+"literal> of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching,not only of the collection "
+"itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</"
+"literal> nested element."
+msgstr ""
+"<literal>fetch</literal> (opcional - padrão para <literal>join</literal>): "
+"ativa a busca de seleção seqüencial ou união exterior para esta associação. "
+"Isto é um caso especial; para uma busca completa num <literal>SELECT</"
+"literal> único de uma entidade e suas relações muitos-para-muitos com outras "
+"entidades, você deverá ativar a busca <literal>join</literal>, não apenas a "
+"própria coleção, mas também este atributo no elemento aninhado <literal>&lt;"
+"many-to-many&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): enables the DDL generation of a unique "
+"constraint for the foreign-key column. This makes the association "
+"multiplicity effectively one-to-many."
+msgstr ""
+"<literal>unique</literal> (opcional): ativa a geração DDl de uma restrição "
+"única para a coluna de chave exterior. Isto realiza efetivamente a "
+"multiplicidade da associação um-para-muitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - padrão para <literal>exception</"
+"literal>): especifica como os identificadores em cache que referenciam as "
+"linhas faltantes serão tratadas: <literal>ignore</literal> tratará a linha "
+"faltante como uma associação nula. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): the entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"<literal>entity-name</literal> (opcional): O nome da entidade da classe "
+"associada, como uma alternativa para a <literal>class</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): the name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal> (opcional): o nome de uma propriedade de "
+"classe associada que é unida a esta chave exterior. caso não especificada, a "
+"chave primária da classe associada será usada."
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr "Segue abaixo alguns exemplos."
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr "Um conjunto de strings:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bag containing integers with an iteration order determined by the "
+"<literal>order-by</literal> attribute:"
+msgstr ""
+"Uma bag contendo inteiros com uma ordem de iteração determinada pelo "
+"atributo <literal>order-by</literal>):"
+
+#. Tag: para
+#, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr "Uma matriz de entidades, neste caso, uma associação muitos-para-muitos: "
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "Um mapa desde índices de strigs até datas:"
+
+#. Tag: para
+#, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr "Uma lista de componentes (isto será discutido no próximo capítulo):"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "Associações um-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>one-to-many association</emphasis> links the tables of two "
+"classes via a foreign key with no intervening collection table. This mapping "
+"loses certain semantics of normal Java collections:"
+msgstr ""
+"Uma <emphasis>associação um para muitos</emphasis> liga as tabelas das duas "
+"classes através de uma chave exterior, sem a intervenção da tabela de "
+"coleção. Este mapeamento perde um pouco da semântica das coleções normais do "
+"Java: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot belong to more than one "
+"instance of the collection."
+msgstr ""
+"Uma instância de classes entidades contidas, podem não pertencer à mais de "
+"uma instância da coleção. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of the contained entity class cannot appear at more than one "
+"value of the collection index."
+msgstr ""
+"Uma instância da classe de entidade contida pode não aparecer em mais de um "
+"valor do índice da coleção. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires the existence of a foreign key column and possibly an index column "
+"to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</"
+"literal> tag indicates that this is a one-to-many association."
+msgstr ""
+"Uma associação a partir do <literal>Produto</literal> até a <literal>Parte</"
+"literal> requer a existência de uma coluna de chave exterior e possivelmente "
+"uma coluna de índice para a tabela <literal>Part</literal> Uma tag "
+"<literal>&lt;one-to-many&gt;</literal> indica que esta é uma associação um "
+"para muitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): specifies how cached identifiers that reference missing rows will "
+"be handled. <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - padrão para <literal>exception</"
+"literal>): Especifica como os identificadores em cache que referenciam as "
+"linhas faltantes serão tratadas: <literal>ignore</literal> tratará a linha "
+"faltante como uma associação nula. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;one-to-many&gt;</literal> element does not need to declare "
+"any columns. Nor is it necessary to specify the <literal>table</literal> "
+"name anywhere."
+msgstr ""
+"Note que o elemento <literal>&lt;one-to-many&gt;</literal> não precisa "
+"declarar qualquer coluna. Nem é necessário especificar o nome da "
+"<literal>table</literal> em qualquer lugar. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> "
+"association is declared <literal>NOT NULL</literal>, you must declare the "
+"<literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> "
+"or <emphasis>use a bidirectional association</emphasis> with the collection "
+"mapping marked <literal>inverse=\"true\"</literal>. See the discussion of "
+"bidirectional associations later in this chapter for more information."
+msgstr ""
+"Se a coluna da chave exterior de uma associação <literal>&lt;one-to-many&gt;"
+"</literal> for declarada como <literal>NOT NULL</literal>, você deve "
+"declarar a <literal>&lt;key&gt;</literal> mapeando <literal>not-null=\"true"
+"\"</literal> ou <emphasis>use uma associação bidirecional</emphasis> com o "
+"mapeamento da coleção marcado como <literal>inverse=\"true\"</literal>. Veja "
+"a discussão das associações bidirecionais mais tarde neste mesmo capítulo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following example shows a map of <literal>Part</literal> entities by "
+"name, where <literal>partName</literal> is a persistent property of "
+"<literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr ""
+"Este exemplo demonstra um mapa das entidades <literal>Part</literal> por "
+"nome, onde <literal>partName</literal> é uma propriedade persistente de "
+"<literal>Part</literal>. Note que o uso de um índice baseado em fórmula:"
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "Mapeamentos de coleção avançados."
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "Coleções escolhidas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"O Hibernate suporta a implementação de coleções <literal>java.util."
+"SortedMap</literal> e <literal>java.util.SortedSet</literal>. Você deve "
+"especificar um comparador no arquivo de mapeamento:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"Valores permitidos da função<literal>sort</literal> são<literal>unsorted</"
+"literal>, <literal>natural</literal> e o nome de uma classe implementando "
+"<literal>java.util.Comparator</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Coleções escolhidas, na verdade se comportam como <literal>java.util."
+"TreeSet</literal> ou <literal>java.util.TreeMap</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements, use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher and is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This "
+"performs the ordering in the SQL query and not in the memory."
+msgstr ""
+"Se você quiser que o próprio banco de dados ordene os elementos da coleção "
+"use a função <literal>order-by</literal> do <literal>set</literal>, "
+"<literal>bag</literal> ou mapeamentos <literal>map</literal>. Esta solução "
+"está disponível somente sob JDK 1.4 ou versões posteriores e é implementada "
+"usando <literal>LinkedHashSet</literal> ou <literal>LinkedHashMap</"
+"literal>). Este desempenha a ordenação na consulta SQL, não em memória."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The value of the <literal>order-by</literal> attribute is an SQL ordering, "
+"not an HQL ordering."
+msgstr ""
+"Note que o valor da função <literal>order-by</literal> é uma ordenação SQL e "
+"não uma ordenação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations can even be sorted by arbitrary criteria at runtime using a "
+"collection <literal>filter()</literal>:"
+msgstr ""
+"Associações podem também ser escolhidas por algum critério arbritrário em "
+"tempo de espera usando uma coleção <literal>filter()</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "Associações Bidirecionais"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"Uma <emphasis>associação bidirecional</emphasis> permite a navegação de "
+"ambos os \"lados\" da associação. Dois dos casos de associação bidirecional, "
+"são suportados: "
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "Um-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr "conjunto ou bag de valor em um dos lados, valor único do outro "
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "Muitos-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "Conjunto ou bag com valor em ambos os lados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a bidirectional many-to-many association by mapping two many-"
+"to-many associations to the same database table and declaring one end as "
+"<emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr ""
+"Você deve especificar uma associação muitos-para-muitos bidirecional, "
+"simplesmente mapeando as duas associações muitos-para-muitos para alguma "
+"tabela de banco de dados e declarando um dos lados como <emphasis>inverso</"
+"emphasis> Voce não poderá selecionar uma coleção indexada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a bidirectional many-to-many association that "
+"illustrates how each category can have many items and each item can be in "
+"many categories:"
+msgstr ""
+"Segue aqui um exemplo de uma associação muitos-para-muitos bidirecional. "
+"Cada categoria pode ter muitos ítens e cada ítem pode estar em várias "
+"categorias: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association: one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how a many-to-many relationship in Javais created:"
+msgstr ""
+"As mudanças feitas somente de um lado da associação <emphasis>não</emphasis> "
+"são persistidas. Isto significa que o Hibernate tem duas representações na "
+"memória para cada associação bidirecional, uma associação de A para B e uma "
+"outra associação de B para A. Isto é mais fácil de compreender se você pensa "
+"sobre o modelo de objetos do Java e como criamos um relacionamento muitos "
+"para muitos em Java:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr "A outra ponta é usada para salvar a representação em memória à base de dados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"Você pode definir uma associação bidirecional um para muitos através de uma "
+"associação um-para-muitos indicando as mesmas colunas da tabela que à "
+"associação muitos-para-um e declarando a propriedade <literal>inverse=\"true"
+"\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"does not affect the operation of cascades as these are orthogonal concepts."
+msgstr ""
+"Mapear apenas uma das pontas da associação com <literal>inverse=\"true\"</"
+"literal> não afeta as operações em cascata, uma vez que isto é um conceito "
+"ortogonal."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "Associações bidirecionais com coleções indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal>&lt;"
+"list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special "
+"consideration. If there is a property of the child class that maps to the "
+"index column you can use <literal>inverse=\"true\"</literal> on the "
+"collection mapping:"
+msgstr ""
+"Uma associação bidirecional onde um dos lados é representado por uma "
+"<literal>&lt;list&gt;</literal> ou <literal>&lt;map&gt;</literal> requer uma "
+"consideração especial. Se houver uma propriedade da classe filha que faça o "
+"mapeamento da coluna do índice sem problemas, pode-se continuar usando "
+"<literal>inverse=\"true\"</literal> no mapeamento da coleção:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If there is no such property on the child class, the association cannot be "
+"considered truly bidirectional. That is, there is information available at "
+"one end of the association that is not available at the other end. In this "
+"case, you cannot map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, you could use the following mapping:"
+msgstr ""
+"Mas, se não houver nenhuma propriedade na classe filha, não podemos ver essa "
+"associação como verdadeiramente bidirecional (há uma informação disponível "
+"em um lado da associação que não está disponível no extremo oposto). Nesse "
+"caso, nós não podemos mapear a coleção usando <literal>inverse=\"true\"</"
+"literal>. Devemos usar o seguinte mapeamento: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key."
+msgstr ""
+"Veja que neste mapeamento, o lado de coleção válida da associação é "
+"responsável pela atualização da chave exterior. "
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "Associações Ternárias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One "
+"approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"Há três meios possíveis de se mapear uma associação ternária. Uma é usar um "
+"<literal>Map</literal> com uma associação como seu índice: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second approach is to remodel the association as an entity class. This is "
+"the most common approach."
+msgstr ""
+"A segunda maneira é simplesmente remodelar a associação das classes da "
+"entidade. Esta é a abordagem que utilizamos com mais freqüência. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which will be discussed "
+"later."
+msgstr ""
+"Uma alternativa final é usar os elementos compostos, que nós discutiremos "
+"mais tarde. "
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "<literal>Using an &lt;idbag&gt;</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The majority of the many-to-many associations and collections of values "
+"shown previously all map to tables with composite keys, even though it has "
+"been have suggested that entities should have synthetic identifiers "
+"(surrogate keys). A pure association table does not seem to benefit much "
+"from a surrogate key, although a collection of composite values "
+"<emphasis>might</emphasis>. It is for this reason that Hibernate provides a "
+"feature that allows you to map many-to-many associations and collections of "
+"values to a table with a surrogate key."
+msgstr ""
+"A maioria das associações e coleções muitos para muitos de valores "
+"apresentados anteriormente mapeiam às tabelas com as chaves de composição, "
+"mesmo que foi sugerido que as entidades devem ser identificadores sintéticos "
+"(chaves substitutas). Uma tabela de associação pura não parece tirar muito "
+"proveito de uma chave substituta, mesmo que uma coleção de valores compostos "
+"<emphasis>usufruam disto</emphasis>. É por este motivo que o Hibernate provê "
+"uma maneira de mapear uma associação muitos para muitos com uma coleção de "
+"valores para uma tabela com uma chave substituta. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr ""
+"O elemento <literal>&lt;idbag&gt;</literal> permite mapear um <literal>List</"
+"literal> (ou uma <literal>Collection</literal>) com uma semântica de bag. "
+"Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like "
+"an entity class. A different surrogate key is assigned to each collection "
+"row. Hibernate does not, however, provide any mechanism for discovering the "
+"surrogate key value of a particular row."
+msgstr ""
+"O <literal>&lt;idbag&gt;</literal> possui um gerador de id sintético, igual "
+"a uma classe de entidade. Uma chave substituta diferente é associada para "
+"cada elemento de coleção. Porém, o Hibernate não provê de nenhum mecanismo "
+"para descobrir qual a chave substituta de uma linha em particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a "
+"regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows "
+"efficiently and update or delete them individually, similar to a list, map "
+"or set."
+msgstr ""
+"Note que o desempenho de atualização de um <literal>&lt;idbag&gt;</literal> "
+"é melhor do que um <literal>&lt;bag&gt;</literal> normal. O Hibernate pode "
+"localizar uma linha individual eficazmente e atualizar ou deletar "
+"individualmente, como um list, map ou set."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal>&lt;idbag&gt;</literal> "
+"collection identifiers."
+msgstr ""
+"Na implementação atual, a estratégia de geração de identificador "
+"<literal>native</literal> não é suportada para identificadores de coleção "
+"usando o <literal>&lt;idbag&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "Exemplos de coleções"
+
+#. Tag: para
+#, no-c-format
+msgid "This section covers collection examples."
+msgstr "Esta sessão cobre os exemplos de coleções."
+
+#. Tag: para
+#, no-c-format
+msgid "The following class has a collection of <literal>Child</literal> instances:"
+msgstr "A seguinte classe possui uma coleção de instâncias <literal>Child</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If each child has, at most, one parent, the most natural mapping is a one-to-"
+"many association:"
+msgstr ""
+"Se cada Filho tiver no máximo um Pai, o mapeamento natural é uma associação "
+"um para muitos:"
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "Esse mapeamento gera a seguinte definição de tabelas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"Se o pai for <emphasis>obrigatório</emphasis>, use uma associação "
+"bidirecional um para muitos:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "Repare na restrição <literal>NOT NULL</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, if this association must be unidirectional you can declare "
+"the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</"
+"literal> mapping:"
+msgstr ""
+"Uma outra alternativa, no caso de você insistir que esta associação deva ser "
+"unidirecional, você pode declarar a restrição como <literal>NOT NULL</"
+"literal> no mapeamento <literal>&lt;key&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, if a child has multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"Por outro lado, se um filho puder ter os múltiplos pais, a associação "
+"apropriada será muitos-para-muitos: "
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "Definições das tabelas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For more examples and a complete explanation of a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr ""
+"Para mais exemplos e um exemplo completo de mapeamento de relacionamento de "
+"mestre/detalhe, consulte <xref linkend=\"example-parentchild\" />."
+
+#. Tag: para
+#, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr ""
+"Até mesmo o mapeamento de associações mais complexos serão discutimos no "
+"próximo capítulo."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,513 @@
+# translation of component_mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: component_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 14:28+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "Mapeamento de Componentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts and purposes throughout Hibernate."
+msgstr ""
+"A noção de <emphasis>componente</emphasis> é re-utilizada em vários "
+"contextos diferentes, para propósitos diferentes, pelo Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "Objetos dependentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type and not "
+"an entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition and not to architecture-level components. For example, "
+"you can model a person like this:"
+msgstr ""
+"Um componente é um objeto contido que é persistido como um tipo de valor, "
+"não uma referência de entidade. O termo \"componente\" refere-se à noção de "
+"composição da orientação a objetos e não a componentes no nível de "
+"arquitetura. Por exemplo, você pode modelar uma pessoa desta maneira: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now <literal>Name</literal> can be persisted as a component of "
+"<literal>Person</literal>. <literal>Name</literal> defines getter and setter "
+"methods for its persistent properties, but it does not need to declare any "
+"interfaces or identifier properties."
+msgstr ""
+"Agora <literal>Name</literal> pode ser persistido como um componente de "
+"<literal>Person</literal>. Note que <literal>Name</literal> define métodos "
+"getter e setter para suas propriedades persistentes, mas não necessita "
+"declarar nenhuma interface ou propriedades identificadoras. "
+
+#. Tag: para
+#, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "Nosso mapeamento do Hibernate seria semelhante a este: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"A tabela person teria as seguintes colunas <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Like value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name objects that were only \"the same\" by "
+"value. The null value semantics of a component are <emphasis>ad hoc</"
+"emphasis>. When reloading the containing object, Hibernate will assume that "
+"if all component columns are null, then the entire component is null. This "
+"is suitable for most purposes."
+msgstr ""
+"Assim como todos tipos por valor, componentes não suportam referências "
+"cruzadas. Em outras palavras, duas persons podem ter o mesmo nome, mas os "
+"dois objetos person podem ter dois objetos de nome independentes, apenas \"o "
+"mesmo\" por valor. A semântica dos valores null de um componente são "
+"<emphasis>ad hoc</emphasis>. No recarregameno do conteúdo do objeto, o "
+"Hibernate entenderá que se todas as colunas do componente são null, então "
+"todo o componente é null. Isto seria o certo para a maioria dos propósitos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties of a component can be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a fine-grained object model."
+msgstr ""
+"As propriedades de um componente podem ser de qualquer tipo do Hibernate"
+"(coleções, associações muitos-para-um, outros componentes, etc). Componentes "
+"agrupados <emphasis>não</emphasis> devem ser considerados luxo. O Hibernate "
+"tem a intenção de suportar um modelo de objetos fine-grained (muito bem "
+"granulados)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
+"parent&gt;</literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"O elemento <literal>&lt;component&gt;</literal> permite um sub-elemento "
+"<literal>&lt;parent&gt;</literal> mapeie uma propriedade da classe do "
+"componente como uma referencia de volta para a entidade que o contém."
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "Coleções de objetos dependentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections of components are supported (e.g. an array of type "
+"<literal>Name</literal>). Declare your component collection by replacing the "
+"<literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-"
+"element&gt;</literal> tag:"
+msgstr ""
+"Coleções de componentes são suportadas (ex.: uma matriz de tipo "
+"<literal>Name</literal>). Declare a sua coleção de componentes substituindo "
+"a tag<literal>&lt;element&gt;</literal> pela tag <literal>&lt;composite-"
+"element&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you define a <literal>Set</literal> of composite elements, it is "
+"important to implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> correctly."
+msgstr ""
+"Se você definir um <literal>Set</literal> de elementos compostos, é muito "
+"importante implementar <literal>equals()</literal> e <literal>hashCode()</"
+"literal> corretamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can contain components but not collections. If your "
+"composite element contains components, use the <literal>&lt;nested-composite-"
+"element&gt;</literal> tag. This case is a collection of components which "
+"themselves have components. You may want to consider if a one-to-many "
+"association is more appropriate. Remodel the composite element as an entity, "
+"but be aware that even though the Java model is the same, the relational "
+"model and persistence semantics are still slightly different."
+msgstr ""
+"Elementos compostos podem conter componentes mas não coleções. Se o seu "
+"elemento composto tiver componentes , use a tag <literal>&lt;nested-"
+"composite-element&gt;</literal>. Este é um caso bastante exótico – coleções "
+"de componentes que por si própria possui componentes. Neste momento você "
+"deve estar se perguntando se uma associação de um-para-muitos seria mais "
+"apropriada. Tente remodelar o elemento composto como uma entidade – mas note "
+"que mesmo pensando que o modelo Java é o mesmo, o modelo relacional e a "
+"semântica de persistência ainda são diferentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A composite element mapping does not support null-able properties if you are "
+"using a <literal>&lt;set&gt;</literal>. There is no separate primary key "
+"column in the composite element table. Hibernate uses each column's value to "
+"identify a record when deleting objects, which is not possible with null "
+"values. You have to either use only not-null properties in a composite-"
+"element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr ""
+"Um mapeamento de elemento composto não suporta propriedades capazes de serem "
+"null se você estiver usando um <literal>&lt;set&gt;</literal>. Não existe "
+"coluna chave primária separada na tabela de elemento composto. O Hibernate "
+"tem que usar cada valor das colunas para identificar um registro quando "
+"estiver deletando objetos, que não é possível com valores null. Você tem que "
+"usar um dos dois, ou apenas propriedades não null em um elemento composto ou "
+"escolher uma <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</"
+"literal>, <literal>&lt;bag&gt;</literal> ou <literal>&lt;idbag&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to "
+"map extra columns of a many-to-many association table to the composite "
+"element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal>, where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"Um caso especial de elemento composto é um elemento composto com um elemento "
+"<literal>&lt;many-to-one&gt;</literal> aninhado. Um mapeamento como este "
+"permite que você mapeie colunas extras de uma tabela de associação de muitos-"
+"para-muitos para a classe de elemento composto. A seguinte associação de "
+"muitos-para-muitos de <literal>Order</literal> para um <literal>Item</"
+"literal> onde <literal>purchaseDate</literal>, <literal>price</literal> e "
+"<literal>quantity</literal> são propriedades da associação:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There cannot be a reference to the purchase on the other side for "
+"bidirectional association navigation. Components are value types and do not "
+"allow shared references. A single <literal>Purchase</literal> can be in the "
+"set of an <literal>Order</literal>, but it cannot be referenced by the "
+"<literal>Item</literal> at the same time."
+msgstr ""
+"Não pode haver uma referência de compra no outro lado, para a navegação da "
+"associação bidirecional. Lembre-se que componentes são tipos por valor e não "
+"permitem referências compartilhadas. Uma classe <literal>Purchase</literal> "
+"simples pode estar no conjunto de uma classe <literal>Order</literal>, mas "
+"ela não pode ser referenciada por <literal>Item</literal> no mesmo momento."
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "Até mesmo associações ternárias (ou quaternária, etc) são possíveis:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Composite elements can appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"Elementos compostos podem aparecer em pesquisas usando a mesma sintaxe assim "
+"como associações para outras entidades."
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "Componentes como índices de Map"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a "
+"component class as the key of a <literal>Map</literal>. Ensure that you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"O elemento <literal>&lt;composite-map-key&gt;</literal> permite você mapear "
+"uma classe componente como uma chave de um <literal>Map</literal>. Tenha "
+"certeza que você sobrescreveu <literal>hashCode()</literal> e <literal>equals"
+"()</literal> corretamente na classe componente. "
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "Componentes como identificadores compostos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"Você pode usar um componente como um identificador de uma classe entidade. "
+"Sua classe componente deve satisfazer certos requisitos: "
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "Ele deve implementar <literal>java.io.Serializable</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal> consistently with the database's notion of composite key equality."
+msgstr ""
+"Ele deve re-implementar <literal>equals()</literal> e <literal>hashCode()</"
+"literal>, consistentemente com a noção de igualdade de chave composta do "
+"banco de dados. "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In Hibernate3, although the second requirement is not an absolutely hard "
+"requirement of Hibernate, it is recommended."
+msgstr ""
+"No Hibernate 3, o segundo requisito não é um requisito absolutamente "
+"necessário. Mas atenda ele de qualquer forma."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"Você não pode usar um <literal>IdentifierGenerator</literal> para gerar "
+"chaves compostas. Ao invés disso, o aplicativo deve gerenciar seus próprios "
+"identificadores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use the <literal>&lt;composite-id&gt;</literal> tag, with nested "
+"<literal>&lt;key-property&gt;</literal> elements, in place of the usual "
+"<literal>&lt;id&gt;</literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"Use a tag <literal>&lt;composite-id&gt;</literal>, com elementos "
+"<literal>&lt;key-property&gt;</literal> aninhados, no lugar da declaração "
+"<literal>&lt;id&gt;</literal> de costume. Por exemplo, a classe "
+"<literal>OrderLine</literal> possui uma chave primária que depende da chave "
+"primária (composta) de <literal>Order</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any foreign keys referencing the <literal>OrderLine</literal> table are now "
+"composite. Declare this in your mappings for other classes. An association "
+"to <literal>OrderLine</literal> is mapped like this:"
+msgstr ""
+"Agora, qualquer chave exterior referenciando a tabela <literal>OrderLine</"
+"literal> também será composta. Você deve declarar isto em seus mapeamentos "
+"para outras classes. Uma associação para <literal>OrderLine</literal> seria "
+"mapeada dessa forma:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>column</literal> element is an alternative to the "
+"<literal>column</literal> attribute everywhere. Using the <literal>column</"
+"literal> element just gives more declaration options, which are mostly "
+"useful when utilizing <literal>hbm2ddl</literal>"
+msgstr ""
+"O elemento <literal>column</literal> é uma alternativa para a função "
+"<literal>column</literal> em todos os lugares. O uso do elemento <literal>column</"
+"literal> apenas fornece mais opçöes de declaração, das quais são úteis quando utilizando <literal>hbm2ddl</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"Uma associação <literal>many-to-many</literal> para <literal>many-to-many</"
+"literal> também usa a chave estrangeira composta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"A coleção de <literal>OrderLine</literal>s em <literal>Order</literal> "
+"usaria:  "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr "O elemento <literal>&lt;one-to-many&gt;</literal> não declara colunas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"Se <literal>OrderLine</literal> possui uma coleção, ela também tem uma chave "
+"externa composta."
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "Componentes Dinâmicos"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "Você pode até mesmo mapear uma propriedade do tipo <literal>Map</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
+"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"You can also access, and change, Hibernate's configuration-time metamodel "
+"via the <literal>Configuration</literal> object."
+msgstr ""
+"A semântica de um mapeamento <literal>&lt;dynamic-component&gt;</literal> é "
+"idêntica à <literal>&lt;component&gt;</literal>. A vantagem deste tipo de "
+"mapeamento é a habilidade de determinar as propriedades atuais do bean no "
+"momento da implementação, apenas editando o documento de mapeamento. A "
+"Manipulação em tempo de execução do documento de mapeamento também é "
+"possível, usando o parser DOM. Até melhor, você pode acessar,e mudar, o "
+"tempo de configuração do metamodelo do Hibernate através do objeto "
+"<literal>Configuration</literal>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2715 @@
+# translation of configuration.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 14:39+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is designed to operate in many different environments and, as "
+"such, there is a broad range of configuration parameters. Fortunately, most "
+"have sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"displays the various options. Simply put the example file in your classpath "
+"and customize it to suit your needs."
+msgstr ""
+"Devido ao fato do Hibernate ser projetado para operar em vários ambientes "
+"diferentes, há um grande número de parâmetros de configuração. Felizmente, a "
+"maioria possui valores padrão consideráveis e o Hibernate é distribuído com "
+"um arquivo <literal>hibernate.properties</literal> de exemplo no "
+"<literal>etc/</literal> que mostra várias opções. Apenas coloque o arquivo "
+"de exemplo no seu classpath e personalize-o. "
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "Configuração programática"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An instance of <classname>org.hibernate.cfg.Configuration</classname> "
+"represents an entire set of mappings of an application's Java types to an "
+"SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is "
+"used to build an immutable <interfacename>org.hibernate.SessionFactory</"
+"interfacename>. The mappings are compiled from various XML mapping files."
+msgstr ""
+"Uma instância de <literal>org.hibernate.cfg.Configuration</literal> "
+"representa um conjunto inteiro de mapeamentos de tipos Java de aplicação "
+"para um banco de dados SQL. O <classname>org.hibernate.cfg.Configuration</"
+"classname> é usado para construir uma <literal>SessionFactory</literal> "
+"imutável. Os mapeamentos são compilados a partir de diversos arquivos de "
+"mapeamento XML. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can obtain a <classname>org.hibernate.cfg.Configuration</classname> "
+"instance by instantiating it directly and specifying XML mapping documents. "
+"If the mapping files are in the classpath, use <literal>addResource()</"
+"literal>. For example:"
+msgstr ""
+"Você pode obter uma instância <classname>org.hibernate.cfg.Configuration</"
+"classname> intanciando-a diretamente e especificando os documentos de "
+"mapeamento XML. Se os arquivos de mapeamento estiverem no classpath, use "
+"<literal>addResource()</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative way is to specify the mapped class and allow Hibernate to "
+"find the mapping document for you:"
+msgstr ""
+"Uma alternativa é especificar a classe mapeada e permitir que o Hibernate "
+"encontre o documento de mapeamento para você:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will then search for mapping files named <filename>/org/hibernate/"
+"auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm."
+"xml</filename> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"O Hibernate procurará pelos arquivos de mapeamento chamados <literal>/org/"
+"hibernate/auction/Item.hbm.xml</literal> e <literal>/org/hibernate/auction/"
+"Bid.hbm.xml</literal> no classpath. Esta abordagem elimina qualquer nome de "
+"arquivo de difícil compreensão."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <classname>org.hibernate.cfg.Configuration</classname> also allows you to "
+"specify configuration properties. For example:"
+msgstr ""
+"Uma <literal>Configuration</literal> também permite que você especifique "
+"propriedades de configuração específica. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. Some "
+"alternative options include:"
+msgstr ""
+"Esta não é a única forma de passar as propriedades de configuração para o "
+"Hibernate. As várias opções incluem: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Pass an instance of <classname>java.util.Properties</classname> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"Passar uma instância de <literal>java.util.Properties</literal> para "
+"<literal>Configuration.setProperties()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Place a file named <filename>hibernate.properties</filename> in a root "
+"directory of the classpath."
+msgstr ""
+"Colocar <literal>hibernate.properties</literal> de arquivo nomeado no "
+"diretório raíz do classpath."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"Determinar as propriedades do <literal>System</literal> usando <literal>java "
+"-Dproperty=value</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal> (this is discussed later)."
+msgstr ""
+"Incluir elementos <literal>&lt;property&gt;</literal> no <literal>hibernate."
+"cfg.xml</literal> (discutido mais tarde). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to get started quickly<filename>hibernate.properties</filename> "
+"is the easiest approach."
+msgstr ""
+"Caso você deseje inicializar rapidamente o <filename>hibernate.properties</"
+"filename> é a abordagem mais rápida."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <classname>org.hibernate.cfg.Configuration</classname> is intended as a "
+"startup-time object that will be discarded once a <literal>SessionFactory</"
+"literal> is created."
+msgstr ""
+"O <classname>org.hibernate.cfg.Configuration</classname> é previsto como um "
+"objeto de tempo de inicialização, a ser descartado quando um "
+"<literal>SessionFactory</literal> for criado."
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "Obtendo uma SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When all mappings have been parsed by the <classname>org.hibernate.cfg."
+"Configuration</classname>, the application must obtain a factory for "
+"<interfacename>org.hibernate.Session</interfacename> instances. This factory "
+"is intended to be shared by all application threads:"
+msgstr ""
+"Quando todos os mapeamentos forem analisados pelo <classname>org.hibernate."
+"cfg.Configuration</classname>, a aplicação deve obter uma factory para as "
+"instâncias do <interfacename>org.hibernate.Session</interfacename>. O "
+"objetivo desta factory é ser compartilhado por todas as threads da aplicação: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. This is useful "
+"if you are using more than one database."
+msgstr ""
+"O Hibernate permite sua aplicação instanciar mais do que um "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. Isto será útil "
+"se você estiver usando mais do que um banco de dados.  "
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "Conexões JDBC"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is advisable to have the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> create and pool JDBC connections for you. If you take this "
+"approach, opening a <interfacename>org.hibernate.Session</interfacename> is "
+"as simple as:"
+msgstr ""
+"Normalmente, você deseja que o <interfacename>org.hibernate.SessionFactory</"
+"interfacename> crie e faça um um pool de conexões JDBC para você. Se você "
+"seguir essa abordagem, a abertura de um <interfacename>org.hibernate."
+"Session</interfacename> será tão simples quanto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you start a task that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"Assim que você fizer algo que requeira o acesso ao banco de dados, uma "
+"conexão JDBC será obtida a partir do pool."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Before you can do this, you first need to pass some JDBC connection "
+"properties to Hibernate. All Hibernate property names and semantics are "
+"defined on the class <classname>org.hibernate.cfg.Environment</classname>. "
+"The most important settings for JDBC connection configuration are outlined "
+"below."
+msgstr ""
+"Para esse trabalho, precisaremos passar algumas propriedades da conexão JDBC "
+"para o Hibernate. Todos os nomes de propriedades Hibernate e semânticas são "
+"definidas na classe <literal>org.hibernate.cfg.Environment</literal>. "
+"Descreveremos agora as configurações mais importantes para a conexão JDBC. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will obtain and pool connections using <classname>java.sql."
+"DriverManager</classname> if you set the following properties:"
+msgstr ""
+"O Hibernate obterá conexões (e efetuará o pool) usando <literal>java.sql."
+"DriverManager</literal> se você determinar as seguintes propriedades: "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Propriedades JDBC Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "Nome da Propriedade"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "Propósito"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "<property>hibernate.connection.driver_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "<emphasis>JDBC driver class</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "<property>hibernate.connection.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr "<emphasis>JDBC URL</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "<property>hibernate.connection.username</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "<emphasis>usuário de banco de dados</emphasis> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "<property>hibernate.connection.password</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "<emphasis>senha de usuário de banco de dados</emphasis> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "<property>hibernate.connection.pool_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "<emphasis>número máximo de conexões em pool</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is, however, quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis>, or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <property>hibernate.connection.pool_size</property> property "
+"with connection pool specific settings. This will turn off Hibernate's "
+"internal pool. For example, you might like to use c3p0."
+msgstr ""
+"No entanto, o algoritmo de pool de conexões do próprio Hibernate é um tanto "
+"rudimentar. A intenção dele é ajudar a iniciar e <emphasis>não para ser "
+"usado em um sistema de produção</emphasis> ou até para testar o desempenho. "
+"Você deve utilizar um pool de terceiros para conseguir um melhor desempenho "
+"e estabilidade. Apenas substitua a propriedade <literal>hibernate.connection."
+"pool_size</literal> pela configuração específica do pool de conexões. Isto "
+"irá desligar o pool interno do Hibernate. Por exemplo, você pode gostar de "
+"usar C3P0. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <filename>lib</filename> directory. Hibernate will use its "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for "
+"connection pooling if you set <property>hibernate.c3p0.*</property> "
+"properties. If you would like to use Proxool, refer to the packaged "
+"<filename>hibernate.properties</filename> and the Hibernate web site for "
+"more information."
+msgstr ""
+"O C3P0 é um pool conexão JDBC de código aberto distribuído junto com "
+"Hibernate no diretório <literal>lib</literal>. O Hibernate usará o próprio "
+"<classname>org.hibernate.connection.C3P0ConnectionProvider</classname> para "
+"o pool de conexão se você configurar a propriedade <literal>hibernate.c3p0."
+"*</literal>. Se você gostar de usar Proxool, consulte o pacote "
+"<literal>hibernate.properties</literal> e o web site do Hibernate para mais "
+"informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example <filename>hibernate.properties</filename> file "
+"for c3p0:"
+msgstr ""
+"Este é um exemplo de arquivo <literal>hibernate.properties</literal> para "
+"c3p0:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You "
+"will need to set at least one of the following properties:"
+msgstr ""
+"Para usar dentro de um servidor de aplicação, você deve configurar o "
+"Hibernate para obter conexões de um servidor de aplicação "
+"<interfacename>javax.sql.Datasource</interfacename> registrado no JNDI. Você "
+"precisará determinar pelo menos uma das seguintes propriedades:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Propriedades do Datasource do Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "<property>hibernate.connection.datasource</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "<emphasis>nome JNDI de fonte de dados</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "<property>hibernate.jndi.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "<emphasis>URL do fornecedor JNDI</emphasis> (opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "<property>hibernate.jndi.class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
+"<emphasis>classe de JNDI <literal>InitialContextFactory</literal></emphasis> "
+"(opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr "<emphasis>usuário de banco de dados</emphasis> (opcional)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr "<emphasis>senha de usuário de banco de dados</emphasis> (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example <filename>hibernate.properties</filename> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"Eis um exemplo de arquivo <literal>hibernate.properties</literal> para um "
+"servidor de aplicação fornecedor de fontes de dados JNDI:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"Conexões JDBC obtidas de um datasource JNDI irão automaticamente participar "
+"das transações gerenciadas pelo recipiente no servidor de aplicação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Arbitrary connection properties can be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the connection property name. "
+"For example, you can specify a <property>charSet</property> connection "
+"property using <property>hibernate.connection.charSet</property>."
+msgstr ""
+"As propriedades de conexão arbitrárias podem ser acrescentandas ao "
+"\"<literal>hibernate.connnection</literal>\" ao nome da propriedade. Por "
+"exemplo, você deve especificar a propriedade de conexão <literal>charSet</"
+"literal> usando <property>hibernate.connection.charSet</property>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, and specifying your custom "
+"implementation via the <property>hibernate.connection.provider_class</"
+"property> property."
+msgstr ""
+"Você pode definir sua própria estratégia de plugin para obter conexões JDBC "
+"implementando a interface <literal>org.hibernate.connection."
+"ConnectionProvider</literal> e especificando sua implementação customizada "
+"através da propriedade <literal>hibernate.connection.provider_class</"
+"literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "Propriedades opcionais de configuração"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a number of other properties that control the behavior of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"Há um grande número de outras propriedades que controlam o comportamento do "
+"Hibernate em tempo de execução. Todos são opcionais e têm valores padrão "
+"lógicos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Some of these properties are \"system-level\" only.</emphasis> "
+"System-level properties can be set only via <literal>java -Dproperty=value</"
+"literal> or <filename>hibernate.properties</filename>. They "
+"<emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>Algumas destas propriedades são somente em nível de sistema.</emphasis>. As propriedades "
+"em nível de sistema podem ser determinadas somente via <literal>java -"
+"Dproperty=value</literal> ou <literal>hibernate.properties</literal>. Elas "
+"<emphasis>não podem</emphasis> ser configuradas por outras técnicas "
+"descritas acima."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Propriedades de Configuração do Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "<property>hibernate.dialect</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> which allows Hibernate to generate SQL optimized for a particular "
+"relational database."
+msgstr ""
+"O nome da classe de um Hibernate <classname>org.hibernate.dialect.Dialect</"
+"classname> que permite o Hibernate gerar SQL otimizado para um banco de "
+"dados relacional em particular.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of."
+"Dialect</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases Hibernate will actually be able to choose the correct "
+"<classname>org.hibernate.dialect.Dialect</classname> implementation based on "
+"the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr ""
+"Na maioria dos casos, o Hibernate irá atualmente estar apto a escolher a "
+"implementação <classname>org.hibernate.dialect.Dialect</classname> correta "
+"baseada no <literal>JDBC metadata</literal> retornado pelo JDBC driver."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "<property>hibernate.show_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"Escreve todas as instruções SQL no console. Esta é uma alternativa para "
+"configurar a categoria de log <literal>org.hibernate.SQL</literal> to "
+"<literal>debug</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "<property>hibernate.format_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "Imprime o SQL formatado no log e recipiente. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "<property>hibernate.default_schema</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"Qualifica no SQL gerado, os nome das tabelas desqualificadas com o esquema/"
+"espaço da tabela dado."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "<property>hibernate.default_catalog</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"Qualifica no SQL gerado, os nome das tabelas desqualificadas com catálogo "
+"dado."
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "<property>hibernate.session_factory_name</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.SessionFactory</interfacename> will be "
+"automatically bound to this name in JNDI after it has been created."
+msgstr ""
+"O <interfacename>org.hibernate.SessionFactory</interfacename> irá "
+"automaticamente se ligar a este nome no JNDI depois de ter sido criado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "<property>hibernate.max_fetch_depth</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"Estabelece a \"profundidade\" máxima para árvore de busca de união externa "
+"para associações finais únicas (um para um, muitos para um). Um <literal>0</"
+"literal> desativa por padrão a busca de união externa.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis> valores recomendados "
+"entre<literal>0</literal> e <literal>3</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "<property>hibernate.default_batch_fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr "Determina um tamanho padrão para busca de associações em lotes do Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis> valores recomendados <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "<property>hibernate.default_entity_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"Determina um modo padrão para representação de entidade para todas as "
+"sessões abertas desta <literal>SessionFactory</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "<property>hibernate.order_updates</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"Força o Hibernate a ordenar os updates SQL pelo valor da chave primária dos "
+"ítens a serem atualizados. Isto resultará em menos deadlocks nas transações "
+"em sistemas altamente concorrente. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "<property>hibernate.generate_statistics</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"Se habilitado, o Hibernate coletará estatísticas úteis para o ajuste do "
+"desempenho. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "<property>hibernate.use_identifier_rollback</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"Se habilitado, propriedades identificadoras geradas serão zeradas para os "
+"valores padrão quando os objetos forem apagados. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "<property>hibernate.use_sql_comments</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"Se ligado, o Hibernate irá gerar comentários dentro do SQL, para facilitar a "
+"depuração, o valor padrão é <literal>false</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "JDBC Hibernate e Propriedades de Conexão"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "<property>hibernate.jdbc.fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"Um valor maior que zero determina o tamanho da buscado JDBC (chamadas "
+"<literal>Statement.setFetchSize()</literal>)."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "<property>hibernate.jdbc.batch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr ""
+"Um valor maior que zero habilita o uso das atualizações em lotes JDBC2 pelo "
+"Hibernate.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ex.</emphasis> valores recomentados entre "
+"<literal>5</literal> e <literal>30</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "<property>hibernate.jdbc.batch_versioned_data</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal>. Iit is usually "
+"safe to turn this option on. Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"Configure esta propriedade como <literal>true</literal> se seu driver JDBC "
+"retornar o número correto de linhas no <literal>executeBatch()</literal>. "
+"Geralmente é seguro ligar opção. O Hibernate então usará o DML em lotes para "
+"dados automaticamente vertidos. Padronizar para <literal>false</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "<property>hibernate.jdbc.factory_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Most applications will not need this configuration property."
+msgstr ""
+"Escolher um <interfacename>org.hibernate.jdbc.Batcher</interfacename>. "
+"Muitas aplicações não irão precisar desta propriedade de configuração."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user-supplied JDBC connections. Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Habilita o uso dos resultados de ajustes roláveis do JDBC2 pelo Hibernate. "
+"Essa propriedade somente é necessária quando se usa Conexões JDBC providas "
+"pelo usuário. Do contrário, o Hibernate os os metadados da conexão. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "<property>hibernate.jdbc.use_streams_for_binary</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+msgstr ""
+"Utilize fluxos para escrever/ler tipos <literal>binary</literal> ou tipos "
+"<literal>serializable</literal> para/do JDBC. <emphasis>*system-level "
+"property*</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "<property>hibernate.jdbc.use_get_generated_keys</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, it tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"Possibilita o uso do <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"JDBC3 para recuperar chaves geradas de forma nativa depois da inserção. "
+"Requer driver JDBC3+ e JRE1.4+, ajuste para falso se seu driver tiver "
+"problemas com gerador de indentificadores Hibernate. Por padrão, tente "
+"determinar o driver capaz de usar metadados da conexão.  "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr "<emphasis role=\"strong\">exemplo</emphasis> <literal>true|false</literal>  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "<property>hibernate.connection.provider_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename> which provides JDBC connections to "
+"Hibernate."
+msgstr ""
+"O nome da classe de um <interfacename>org.hibernate.connection."
+"ConnectionProvider</interfacename>, do qual proverá conexões JDBC para o "
+"Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis><literal>classname.of."
+"ConnectionProvider</literal>  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "<property>hibernate.connection.isolation</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Sets the JDBC transaction isolation level. Check <interfacename>java.sql."
+"Connection</interfacename> for meaningful values, but note that most "
+"databases do not support all isolation levels and some define additional, "
+"non-standard isolations."
+msgstr ""
+"Determina o nível de isolamento de uma transação JDBC. Verifique "
+"<literal>java.sql.Connection</literal> para valores significativos mas note "
+"que a maior parte dos bancos de dados não suportam todos os isolamentos que "
+"não são padrões. "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr "<emphasis role=\"strong\">exemplo</emphasis> <literal>1, 2, 4, 8</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "<property>hibernate.connection.autocommit</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr "Habilita o auto-commit para conexões no pool JDBC (não recomendado). "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "<property>hibernate.connection.release_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Specifies when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, use <literal>after_statement</"
+"literal> to aggressively release connections after every JDBC call. For a "
+"non-JTA connection, it often makes sense to release the connection at the "
+"end of each transaction, by using <literal>after_transaction</literal>. "
+"<literal>auto</literal> will choose <literal>after_statement</literal> for "
+"the JTA and CMT transaction strategies and <literal>after_transaction</"
+"literal> for the JDBC transaction strategy."
+msgstr ""
+"Especifica quando o Hibernate deve liberar conexões JDBC. Por padrão, uma "
+"conexão JDBC é retida até a sessão estar explicitamente fechada ou "
+"desconectada. Para uma fonte de dados JTA do servidor de aplicação, você "
+"deve usar <literal>after_statement</literal> para forçar a liberação da "
+"conexões depois de todas as chamadas JDBC. Para uma conexão não-JTA, "
+"freqüentemente faz sentido liberar a conexão ao fim de cada transação, "
+"usando <literal>after_transaction</literal>. O <literal>auto</literal> "
+"escolherá <literal>after_statement</literal> para as estratégias de "
+"transaçãoes JTA e CMT e <literal>after_transaction</literal> para as "
+"estratégias de transação JDBC."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) "
+"| <literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>auto</literal> "
+"(padrão) | <literal>on_close</literal> | <literal>after_transaction</"
+"literal> | <literal>after_statement</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This setting only affects <literal>Session</literal>s returned from "
+"<literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\" />"
+msgstr ""
+"Note que esta configuração somente afeta as <literal>Session</literal>s "
+"retornadas da <literal>SessionFactory.openSession</literal>. Para as "
+"<literal>Session</literal>s obtidas através da <literal>SessionFactory."
+"getCurrentSession</literal>, a implementação <literal>CurrentSessionContext</"
+"literal> configurada para uso, controla o modo de liberação de conexão para "
+"estas <literal>Session</literal>s. Consulte <xref linkend=\"architecture-"
+"current-session\" />"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+msgstr ""
+"<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</"
+"emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
+"Passar a propriedade JDBC <emphasis>&lt;propertyName&gt;</emphasis> para "
+"<literal>DriverManager.getConnection()</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
+"Passar a propriedade <emphasis>&lt;propertyName&gt;</emphasis> para o JNDI "
+"<literal>InitialContextFactory</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Propriedades de Cachê do Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "<literal>hibernate.cache.provider_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr "O nome da classe de um  <literal>CacheProvider</literal> personalizado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>classname.of."
+"CacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "<literal>hibernate.cache.use_minimal_puts</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Optimizes second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"Otimizar operação de cachê de segundo nível para minimizar escritas, ao "
+"custo de leituras mais freqüentes. Esta configuração é mais útil para cachês "
+"em cluster e, no Hibernate3, é habilitado por padrão para implementações de "
+"cache em cluster. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "<literal>hibernate.cache.use_query_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the query cache. Individual queries still have to be set cachable."
+msgstr ""
+"Habilita a cache de consultas. Mesmo assim, consultas individuais ainda têm "
+"que ser habilitadas para o cache."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "<literal>hibernate.cache.use_second_level_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Can be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal>&lt;cache&gt;</literal> "
+"mapping."
+msgstr ""
+"Pode ser utilizado para desabilitar completamente o cache de segundo nível, "
+"o qual é habilitado por padrão para as classes que especificam um mapeamento "
+"<literal>&lt;cache&gt;</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "<literal>hibernate.cache.query_cache_factory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"O nome de classe de uma interface personalizada <literal>QueryCache</"
+"literal>, padroniza para o <literal>StandardQueryCache</literal> criado "
+"automaticamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>classname.of."
+"QueryCache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "<literal>hibernate.cache.region_prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr "Um prefixo para usar em nomes regionais de cachê de segundo nível"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr "<emphasis role=\"strong\">exemplo</emphasis> <literal>prefix</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "<literal>hibernate.cache.use_structured_entries</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"Força o Hibernate a armazenar dados no cachê de segundo nível em um formato "
+"mais humanamente amigável."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Propriedades de Transação do Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "<literal>hibernate.transaction.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"O nome da classe de uma <literal>TransactionFactory</literal>  para usar com "
+"API do Hibernate  <literal>Transaction</literal> ( por "
+"padrão<literal>JDBCTransactionFactory</literal> ). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>classname.of."
+"TransactionFactory</literal>  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "<literal>jta.UserTransaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"Um nome JNDI usado pelo  <literal>JTATransactionFactory</literal>para obter "
+"uma  <literal>UserTransaction</literal> JTA a partir do servidor de "
+"aplicação. "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "<literal>hibernate.transaction.manager_lookup_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal>. It is "
+"required when JVM-level caching is enabled or when using hilo generator in a "
+"JTA environment."
+msgstr ""
+"O nome da classe de um <literal>TransactionManagerLookup</literal>. Ele é "
+"requerido quando o caching a nível JVM estiver habilitado ou quando "
+"estivermos usando um gerador hilo em um ambiente JTA. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "<literal>hibernate.transaction.flush_before_completion</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Se habilitada, a sessão será automaticamente liberada antes da fase de "
+"conclusão da transação. Prefere-se o gerenciamento de contexto da sessão "
+"criada e automática, veja <xref linkend=\"architecture-current-session\" />."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "<literal>hibernate.transaction.auto_close_session</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\" /"
+">."
+msgstr ""
+"Se habilitada, a sessão será automaticamente fechada após a fase de "
+"conclusão da transação. Prefere-se a gerência interna e automática do "
+"contexto da sessão, veja <xref linkend=\"architecture-current-session\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "Propriedades Variadas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "<literal>hibernate.current_session_context_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Supply a custom strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\" /> for more information about the built-in strategies."
+msgstr ""
+"Fornece uma estratégia personalizada para extensão da <literal>Session</"
+"literal>\"atual\". Veja <xref linkend=\"architecture-current-session\" /> "
+"para mais informação sobre estratégias internas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "<literal>hibernate.query.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "Escolha a implementação de análise HQL. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>org.hibernate.hql.ast. "
+"ASTQueryTranslatorFactory</literal> ou <literal>org.hibernate.hql.classic. "
+"ClassicQueryTranslatorFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "<literal>hibernate.query.substitutions</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Is used to map from tokens in Hibernate queries to SQL tokens (tokens might "
+"be function or literal names, for example)."
+msgstr ""
+"Mapeamento a partir de símbolos em consultas do Hibernate para para símbolos "
+"SQL (símbolos devem ser por exemplo, funções ou nome literais).  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> "
+"<literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "<literal>hibernate.hbm2ddl.auto</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Automatically validates or exports schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"Automaticamente valida ou exporta DDL esquema para o banco de dados quando o "
+"<literal>SessionFactory</literal> é criado. Com <literal>create-drop</"
+"literal>, o esquema do banco de dados será excluido quando a "
+"<literal>SessionFactory</literal> for fechada explicitamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">exemplo</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Enables the use of CGLIB instead of runtime reflection (System-level "
+"property). Reflection can sometimes be useful when troubleshooting. "
+"Hibernate always requires CGLIB even if you turn off the optimizer. You "
+"cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Habilita o uso de CGLIB ao invés de reflexão em tempo de execução "
+"(propriedade a nível de sistema). Reflexão pode algumas vezes ser útil "
+"quando controlar erros, note que o Hibernate sempre irá solicitar a CGLIB "
+"mesmo se você desligar o otimizador. Você não pode determinar esta "
+"propriedade no <literal>hibernate.cfg.xml</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "Dialetos SQL"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Always set the <literal>hibernate.dialect</literal> property to the correct "
+"<literal>org.hibernate.dialect.Dialect</literal> subclass for your database. "
+"If you specify a dialect, Hibernate will use sensible defaults for some of "
+"the other properties listed above. This means that you will not have to "
+"specify them manually."
+msgstr ""
+"Você deve sempre determinar a propriedade <literal>hibernate.dialect</"
+"literal> para a subclasse de <literal>org.hibernate.dialect.Dialect</"
+"literal> correta de seu banco de dados. Se você especificar um dialeto, o "
+"Hibernate usará padrões lógicos para qualquer um das outras propriedades "
+"listadas abaixo, reduzindo o esforço de especificá-los manualmente."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Dialetos SQL do Hibernate (<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialeto"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr "DB2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "Meu SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MeuSQL com InnoDB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "Meu SQL com MeuISAM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle (qualquer versão)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.OracleDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr "Oracle 9i"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr "Oracle 10g"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Qualquer lugar"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Servidor Microsoft SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InformixDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.IngresDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progresso"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Base Ponto"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "Base Frontal"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "Busca por união externa (Outer Join Fetching)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database. This is, "
+"however, at the cost of possibly more work performed by the database itself. "
+"Outer join fetching allows a whole graph of objects connected by many-to-"
+"one, one-to-many, many-to-many and one-to-one associations to be retrieved "
+"in a single SQL <literal>SELECT</literal>."
+msgstr ""
+"Se seu banco de dados suporta união externa no estilo ANSI, Oracle ou "
+"Sybase, a <emphasis>outer join fetching</emphasis> freqüentemente aumentará "
+"o desempenho limitando o número de chamadas (round trips) para e a partir do "
+"banco de dados. No entanto, isto ao custo de possivelmente mais trabalho "
+"desempenhado pelo próprio banco de dados. A busca por união externa (outer "
+"join fetching) permite um gráfico completo de objetos conectados por "
+"associações muitos-para-um, um-para-muitos, muitos-para-muitos e um-para-um "
+"para serem recuperadas em uma simples instrução SQL <literal>SELECT</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Outer join fetching can be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations that have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"A busca por união externa pode ser desabilitada <emphasis>globalmente</"
+"emphasis> configurando a propriedade <literal>hibernate.max_fetch_depth</"
+"literal> para <literal>0</literal>. Um valor <literal>1</literal> ou maior "
+"habilita a busca por união externa para associações um-para-um e muitos-para-"
+"um, cujos quais têm sido mapeados com <literal>fetch=\"join\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr "Veja <xref linkend=\"performance-fetching\" /> para mais informações."
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "Fluxos Binários (Binary Streams)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that can be passed "
+"to and/or from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"O Oracle limita o tamanho de matrizes de <literal>byte</literal> que podem "
+"ser passadas para/do driver JDBC. Se você desejar usar grandes instâncias de "
+"tipos <literal>binary</literal> ou <literal>serializable</literal>, você "
+"deve habilitar <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>Essa é uma configuração que só pode ser feita em nível de sistema."
+"</emphasis> "
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "Cachê de segundo nível e consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr ""
+"As propriedades pré-fixadas pelo <literal>hibernate.cache</literal> permitem "
+"que você use um sistema de cache de segundo nível em um processo executado "
+"ou em cluster com Hibernate. Veja <xref linkend=\"performance-cache\"/> para "
+"maiores detalhes. "
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "Substituição na Linguagem de Consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"Você pode definir novos símbolos de consulta Hibernate usando "
+"<literal>hibernate.query.substitutions</literal>. Por exemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This would cause the tokens <literal>true</literal> and <literal>false</"
+"literal> to be translated to integer literals in the generated SQL."
+msgstr ""
+"Isto faria com que os símbolos <literal>true</literal> e <literal>false</"
+"literal> passasem a ser traduzidos para literais inteiros no SQL gerado."
+
+#. Tag: para
+#, no-c-format
+msgid "This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr "Isto permitirá que você renomeie a função <literal>LOWER</literal> no SQL."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Estatísticas do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"exposes a number of metrics that are useful when tuning a running system via "
+"<literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"Se você habilitar <literal>hibernate.generate_statistics</literal>, o "
+"Hibernate exibirá um número de métricas bastante útil ao ajustar um sistema "
+"via <literal>SessionFactory.getStatistics()</literal>. O Hibernate pode até "
+"ser configurado para exibir essas estatísticas via JMX. Leia o Javadoc da "
+"interface <literal>org.hibernate.stats</literal> para mais informações."
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "Logging"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J "
+"can direct your logging output to several logging frameworks (NOP, Simple, "
+"log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen "
+"binding. In order to setup logging you will need <filename>slf4j-api.jar</"
+"filename> in your classpath together with the jar file for your preferred "
+"binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See "
+"the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</"
+"ulink> for more detail. To use Log4j you will also need to place a "
+"<filename>log4j.properties</filename> file in your classpath. An example "
+"properties file is distributed with Hibernate in the <literal>src/</literal> "
+"directory."
+msgstr ""
+"O Hibernate utiliza o <ulink url=\"http://www.slf4j.org/\">Simple Logging "
+"Facade for Java</ulink> (SLF4J) com o objetivo de registrar os diversos "
+"eventos de sistema. O SLF4J pode direcionar a sua saída de logging a "
+"diversos frameworks de logging (NOP, Simple, log4j version 1.2, JDK 1.4 "
+"logging, JCL ou logback) dependendo de sua escolha de vinculação. Com o "
+"objetivo de determinar o seu logging, você precisará do <filename>slf4j-api."
+"jar</filename> em seu classpatch juntamente com o arquivo jar para a sua "
+"vinculação preferida - <filename>slf4j-log4j12.jar</filename> no caso do "
+"Log4J. Consulte o SLF4J <ulink url=\"http://www.slf4j.org/manual.html"
+"\">documentation</ulink> para maiores detalhes. Para usar o Log4j você "
+"precisará também colocar um arquivo <filename>log4j.properties</filename> em "
+"seu classpath. Um exemplo do arquivo de propriedades está distribuído com o "
+"Hibernate no diretório <literal>src/</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"Nós recomendamos que você se familiarize-se com mensagens de log do "
+"Hibernate. Tem sido um árduo trabalho fazer o log Hibernate tão detalhado "
+"quanto possível, sem fazê-lo ilegível. É um dispositivo de controle de erros "
+"essencial. As categorias de log mais interessantes são as seguintes:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Categorias de Log do Hibernate"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "Categoria"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "Função"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "<literal>org.hibernate.SQL</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "Registra todas as instruções SQL DML a medida que elas são executadas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "<literal>org.hibernate.type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "Registra todos os parâmetros JDBC"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "<literal>org.hibernate.tool.hbm2ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "Registra todas as instruções SQL DDL a medida que elas são executadas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "<literal>org.hibernate.pretty</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"Registra o estado de todas as entidades (máximo 20 entidades) associadas à "
+"sessão no momento da liberação (flush)."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "<literal>org.hibernate.cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "Registra todas as atividades de cachê de segundo nível"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "<literal>org.hibernate.transaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "Registra atividades relacionada à transação"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "<literal>org.hibernate.jdbc</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "Registra todas as requisições de recursos JDBC"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "<literal>org.hibernate.hql.ast.AST</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "Registra instruções SQL e HQL durante a análise da consultas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "<literal>org.hibernate.secure</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "Registra todas as requisições de autorização JAAS"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "<literal>org.hibernate</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"Log everything. This is a lot of information but it is useful for "
+"troubleshooting"
+msgstr ""
+"Registra tudo. Apesar de ter muita informação, é muito útil para o problema "
+"de inicialização."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Ao desenvolver aplicações com Hibernate, você deve quase sempre trabalhar "
+"com o depurador <literal>debug</literal> habilitado para a categoria "
+"<literal>org.hibernate.SQL</literal>, ou, alternativamente, com a "
+"propriedade <literal>hibernate.show_sql</literal> habilitada."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "Implementando um <literal>NamingStrategy</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"A interface <literal>org.hibernate.cfg.NamingStrategy</literal> permite que "
+"você especifique um \"padrão de nomeação\" para objetos do banco de dados e "
+"elementos de esquema."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"Você deve criar regras para a geração automaticamente de identificadores do "
+"banco de dados a partir de identificadores Java ou para processar colunas "
+"\"lógicas\" e nomes de tabelas dado o arquivo de mapeamento para nomes "
+"\"físicos\" de tabelas e colunas. Este recurso ajuda a reduzir a verbosidade "
+"do documento de mapeamento, eliminando interferências repetitivas "
+"(<literal>TBL_</literal> prefixos, por exemplo). A estratégia padrão usada "
+"pelo Hibernate é bastante mínima. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"Você pode especificar uma estratégia diferente ao chamar "
+"<literal>Configuration.setNamingStrategy()</literal> antes de adicionar os "
+"mapeamentos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> é uma estratégia "
+"interna que pode ser um ponto inicial útil para algumas aplicações."
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "Arquivo de configuração XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"Uma maneira alternativa de configuração é especificar uma configuração "
+"completa em um arquivo chamado <literal>hibernate.cfg.xml</literal>. Este "
+"arquivo pode ser usado como um substituto para o arquivo <literal>hibernate."
+"properties</literal> ou, se ambos estiverem presentes, para substituir "
+"propriedades."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root of your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"O arquivo XML de configuração deve ser encontrado na raíz do seu "
+"<literal>CLASSPATH</literal>. Veja um exemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The advantage of this approach is the externalization of the mapping file "
+"names to configuration. The <literal>hibernate.cfg.xml</literal> is also "
+"more convenient once you have to tune the Hibernate cache. It is your choice "
+"to use either <literal>hibernate.properties</literal> or <literal>hibernate."
+"cfg.xml</literal>. Both are equivalent, except for the above mentioned "
+"benefits of using the XML syntax."
+msgstr ""
+"Como você pode ver, a vantagem deste enfoque é a externalização dos nomes "
+"dos arquivos de mapeamento para configuração. O <literal>hibernate.cfg.xml</"
+"literal> também é mais conveniente caso você tenha que ajustar o cache do "
+"Hibernate. Note que a escolha é sua em usar <literal>hibernate.properties</"
+"literal> ou <literal>hibernate.cfg.xml</literal>, ambos são equivalentes, "
+"exceto os acima mencionados de usar a sintaxe de XML. "
+
+#. Tag: para
+#, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr "Com a configuração do XML, iniciar o Hibernate é então tão simples quanto: "
+
+#. Tag: para
+#, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "Você poderá escolher um arquivo de configuração XML diferente, utilizando:"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "Integração com servidores de aplicação J2EE"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr ""
+"O Hibernate tem os seguintes pontos da integração para a infraestrutura de "
+"J2EE:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), especially distributed transaction handling across several "
+"datasources. You can also demarcate transaction boundaries programmatically "
+"(BMT), or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>DataSources gerenciados pelo container</emphasis>: O Hibernate "
+"pode usar conexões JDBC gerenciadas pelo Container e fornecidas pela JNDI. "
+"Geralmente, um <literal>TransactionManager</literal> compatível com JTA e um "
+"<literal>ResourceManager</literal> cuidam do gerenciamento da transação "
+"(CMT), especialmente em transações distribuídas,  manipuladas através de "
+"vários DataSources. Naturalmente, você também pode demarcar os limites das "
+"transações programaticamente (BMT) ou você poderia querer usar a API "
+"opcional do Hibernate <literal>Transaction</literal> para esta manter seu "
+"código portável. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>Vinculação (binding) automática à JNDI</emphasis>: O Hibernate "
+"pode associar sua <literal>SessionFactory</literal> a JNDI depois de "
+"iniciado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</"
+"literal> can be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate manage flushing and closing the "
+"<literal>Session</literal> when your JTA transaction completes. Transaction "
+"demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>Vinculação (binding) da Sessão na JTA:</emphasis> A "
+"<literal>Session</literal> do Hibernate pode automaticamente ser ligada ao "
+"escopo da transações JTA. Simplesmente localizando a "
+"<literal>SessionFactory</literal> da JNDI e obtendo a <literal>Session</"
+"literal> corrente. Deixe o Hibernate cuidar da liberação e encerramento da "
+"<literal>Session</literal> quando as transações JTA terminarem. A Demarcação "
+"de transação pode ser declarativa (CMT) ou programática (BMT/Transação do "
+"usuário)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> if you have a JMX capable application "
+"server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal> and also "
+"take care of service dependencies (datasource has to be available before "
+"Hibernate starts, etc)."
+msgstr ""
+"<emphasis>JMX deployment:</emphasis> Se você usa um JMX servidor de "
+"aplicações capaz (ex. Jboss AS), você pode fazer a instalação do Hibernate "
+"como um MBean controlado. Isto evita ter que iniciar uma linha de código "
+"para construir sua <literal>SessionFactory</literal> de uma "
+"<literal>Configuration</literal>. O container iniciará seu "
+"<literal>HibernateService</literal>, e também cuidará das dependências de "
+"serviços (DataSources, têm que estar disponíveis antes do Hibernate iniciar, "
+"etc.). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"Dependendo do seu ambiente, você pode ter que ajustar a opção de "
+"configuração <literal>hibernate.connection.aggressive_release</literal> para "
+"verdadeiro ( true ), se seu servidor de aplicações lançar exeções \"retenção "
+"de conexão\"."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "Configuração de estratégia de transação"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly through a connection pool, you can begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"A API Hibernate <literal>Session</literal> é independente de qualquer "
+"sistema de demarcação de transação em sua arquitetura. Se você deixar o "
+"Hibernate usar a JDBC diretamente, através de um pool de conexões, você pode "
+"inicializar e encerrar suas transações chamando a API JDBC. Se você rodar em "
+"um servidor de aplicações J2EE, você poderá usar transações controladas por "
+"beans e chamar a API JTA e <literal>UserTransaction</literal> quando "
+"necessário. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"Para manter seu código portável entre estes dois (e outros) ambientes, "
+"recomendamos a API Hibernate <literal>Transaction</literal>, que envolve e "
+"esconde o sistema subjacente. Você tem que especificar uma classe "
+"construtora para instâncias <literal>Transaction</literal> ajustando a "
+"propriedade de configuração do <literal>hibernate.transaction.factory_class</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "Existem três escolhas, ou internas, padrões: "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "delega as transações (JDBC) para bases de dados (Padrão)"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"delegates to container-managed transactions if an existing transaction is "
+"underway in this context (for example, EJB session bean method). Otherwise, "
+"a new transaction is started and bean-managed transactions are used."
+msgstr ""
+"delega para uma transação à um container gerenciado se uma transação "
+"existente estiver de acordo neste contexto (ex: método bean de sessão EJB). "
+"No entanto, uma nova transação será iniciada e serão usadas transações "
+"controladas por um bean."
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "delega para um container gerenciador de transações JTA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"Você também pode definir suas próprias estratégias de transação (para um "
+"serviço de transação CORBA, por exemplo)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some features in Hibernate (i.e., the second level cache, Contextual "
+"Sessions with JTA, etc.) require access to the JTA "
+"<literal>TransactionManager</literal> in a managed environment. In an "
+"application server, since J2EE does not standardize a single mechanism, you "
+"have to specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>:"
+msgstr ""
+"Algumas características no Hibernate (ex., o cache de segundo nível, sessões "
+"contextuais com JTA, etc.) requerem acesso a JTA "
+"<literal>TransactionManager</literal> em um ambiente controlado. Em um "
+"servidor de aplicação você tem que especificar como o Hibernate pode obter "
+"uma referência para a <literal>TransactionManager</literal>, pois o J2EE não "
+"padroniza um mecanismo simples:"
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "Gerenciadores de transações JTA"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "Factory de Transação"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "Servidor de Aplicação"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+msgstr ""
+"<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "<literal>SessionFactory</literal> vinculada à JNDI"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup function of the factory and create new <literal>Session</literal>s. "
+"This is not, however, related to a JNDI bound <literal>Datasource</literal>; "
+"both simply use the same registry."
+msgstr ""
+"Uma <literal>SessionFactory</literal> de Hibernate vinculada à JNDI pode "
+"simplificar a localização da fábrica e a criação de novas <literal>Session</"
+"literal>s. Observe que isto não está relacionado a um <literal>Datasource</"
+"literal> ligado a JNDI, simplesmente ambos usam o mesmo registro."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. This is especially useful in environments with a "
+"read-only JNDI default implementation (in Tomcat, for example)."
+msgstr ""
+"Se você desejar ter uma <literal>SessionFactory</literal> limitada a um nome "
+"de espaço de JNDI, especifique um nome (ex.: <literal>java:hibernate/"
+"SessionFactory</literal>) usando a propriedade <literal>hibernate."
+"session_factory_name</literal>. Se esta propriedade for omitida, a "
+"<literal>SessionFactory</literal> não será limitada ao JNDI. Isto é muito "
+"útil em ambientes com uma implementação padrão JNDI de somente leitura (ex.: "
+"Tomcat)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"Ao vincular a <literal>SessionFactory</literal> ao JNDI, o Hibernate irá "
+"utilizar os valores de <literal>hibernate.jndi.url</literal>, "
+"<literal>hibernate.jndi.class</literal> para instanciar um contexto inicial. "
+"Se eles não forem especificados, será usado o padrão "
+"<literal>InitialContext</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will have this call in some startup code, or utility class in your "
+"application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (this is discussed later in greater "
+"detail)."
+msgstr ""
+"O Hibernate colocará automaticamente a <literal>SessionFactory</literal> no "
+"JNDI depois que você chamar a <literal>cfg.buildSessionFactory()</literal>. "
+"Isto significa que você terá esta chamada em pelo menos algum código de "
+"inicialização (ou classe de utilidade) em seu aplicativo, a não ser que você "
+"use a implementação JMX com o <literal>HibernateService</literal> (discutido "
+"mais tarde). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class, you can obtain the <literal>SessionFactory</literal> using a JNDI "
+"lookup."
+msgstr ""
+"Se você usar um JNDI <literal>SessionFactory</literal>, o EJB ou qualquer "
+"outra classe obterá a <literal>SessionFactory</literal> utilizando um "
+"localizador JNDI."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you bind the <literal>SessionFactory</literal> to "
+"JNDI in a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate&mdash;see chapter 1."
+msgstr ""
+"Recomendamos que você vincule a <literal>SessionFactory</literal> ao JNDI em "
+"um ambiente gerenciado e utilize um singleton <literal>static</literal>. "
+"Para proteger seu código de aplicativo destes detalhes, também recomendamos "
+"que esconda o código de localização atual para uma <literal>SessionFactory</"
+"literal> em uma classe de ajuda, assim como o <literal>HibernateUtil."
+"getSessionFactory()</literal>. Note que tal classe é também uma forma "
+"bastante conveniente de inicializar o Hibernate&mdash; veja o capítulo 1."
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "Gerenciamento de contexto de Sessão atual com JTA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The easiest way to handle <literal>Sessions</literal> and transactions is "
+"Hibernate's automatic \"current\" <literal>Session</literal> management. For "
+"a discussion of contextual sessions see <xref linkend=\"architecture-current-"
+"session\" />. Using the <literal>\"jta\"</literal> session context, if there "
+"is no Hibernate <literal>Session</literal> associated with the current JTA "
+"transaction, one will be started and associated with that JTA transaction "
+"the first time you call <literal>sessionFactory.getCurrentSession()</"
+"literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> "
+"context are set to automatically flush before the transaction completes, "
+"close after the transaction completes, and aggressively release JDBC "
+"connections after each statement. This allows the <literal>Session</"
+"literal>s to be managed by the life cycle of the JTA transaction to which it "
+"is associated, keeping user code clean of such management concerns. Your "
+"code can either use JTA programmatically through <literal>UserTransaction</"
+"literal>, or (recommended for portable code) use the Hibernate "
+"<literal>Transaction</literal> API to set transaction boundaries. If you run "
+"in an EJB container, declarative transaction demarcation with CMT is "
+"preferred."
+msgstr ""
+"A maneira mais fácil de manusear as <literal>Session</literal> e transações "
+"é com o gerenciamento automático do Hibernates \"atual\" <literal>Session</"
+"literal>. Veja a discussão do <xref linkend=\"architecture-current-session\"/"
+">. Utilizando o contexto da sessão <literal>\"jta\"</literal>, caso não haja "
+"uma <literal>Session</literal> do Hibernate associada com a transação atual "
+"do JTA, uma será iniciada e associada à transação JTA na primeira vez que "
+"você chamar a <literal>sessionFactory.getCurrentSession()</literal>. As "
+"<literal>Session</literal>s recuperadas através do contexto "
+"<literal>getCurrentSession()</literal> em <literal>\"jta\"</literal> serão "
+"ajustadas para liberar automaticamente antes que a transação se complete, e "
+"fechada após a transação se complete e liberar instantaneamente as conexões "
+"JDBC após cada instrução. Isto permitirá que as <literal>Session</literal>s "
+"sejam gerenciadas pelo ciclo de vida da transação JTA para as quais estão "
+"associadas, mantendo o código do usuário limpo de tais preocupações de "
+"gerenciamento. Seu código pode tanto utilizar um JTA programaticamente "
+"através do <literal>UserTransaction</literal>, ou (recomendado para códigos "
+"portáveis) use o API <literal>Transaction</literal> do Hibernate para "
+"ajustar as limitações das transações. Se você rodar em um recipiente EJB, "
+"prefira uma demarcação de transação declarativa com CMT. "
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "implementação JMX "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block, like "
+"the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as "
+"a <emphasis>managed service</emphasis>."
+msgstr ""
+"A linha <literal>cfg.buildSessionFactory()</literal> ainda precisa ser "
+"executada em algum local para conseguir uma <literal>SessionFactory</"
+"literal> em JNDI. Você pode escolher fazer isto em um bloqueio de "
+"inicializador <literal>static</literal>, como aquele em "
+"<literal>HibernateUtil</literal>, ou implementar o Hibernate como "
+"<emphasis>serviço gerenciado</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor-specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"O Hibernate é distribuído com o <literal>org.hibernate.jmx.HibernateService</"
+"literal> para implementação em um servidor de aplicativo com capacidades "
+"JMX, tal como o JBoss AS. A implementação atual e configuração é comercial. "
+"Segue aqui um exemplo do <literal>jboss-service.xml</literal> para o JBoss "
+"4.0.x:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) can be "
+"kept in their own JAR file, but you can include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"Este arquivo é implementado em um diretório chamado <literal>META-INF</"
+"literal> e envolto em um arquivo JAR com a extensão <literal>.sar</literal> "
+"(arquivo de serviço). Você também pode precisar envolver o Hibernate, suas "
+"bibliotecas de terceiros solicitadas, suas classes persistentes compiladas, "
+"assim como seus arquivos de mapeamento no mesmo arquivo. Seus beans de "
+"empresa (geralmente beans de sessão) podem ser mantidos em seus próprios "
+"arquivos JAR, mas você poderá incluir estes arquivos EJB JAR no arquivo de "
+"serviço principal para conseguir uma única unidade de (hot)-deployable. "
+"Consulte a documentação do JBoss AS para maiores informações sobre o serviço "
+"JMX e implementação EJB.  "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,663 @@
+# translation of events.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-10-28 16:51+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "Interceptadores e Eventos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"É muito útil quando a aplicação precisa reagir a certos eventos que ocorrem "
+"dentro do Hibernate. Isso permite a implementação de certas funções "
+"genéricas, assim como permite estender as funcionalidades do Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "Interceptadores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"A interface <literal>Interceptor</literal> permite fornecer informações da "
+"sessão para o aplicativo, permitindo que o aplicativo inspecione e/ou "
+"manipule as propriedades de um objeto persistente antes de ser salvo, "
+"atualizado, excluído ou salvo. Pode ser usado para gerar informações de "
+"auditoria. Por exemplo, o seguinte <literal>Interceptor</literal> ajusta a "
+"função automaticamente <literal>createTimestamp</literal> quando um "
+"<literal>Auditable</literal> é criado e atualiza a função "
+"<literal>lastUpdateTimestamp</literal> quando um <literal>Auditable</"
+"literal> é atualizado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"Você pode implementar <literal>Interceptor</literal> diretamente ou pode "
+"estender <literal>EmptyInterceptor</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"Os interceptadores se apresentam de duas formas: <literal>Session</literal>-"
+"scoped e <literal>SessionFactory</literal>-scoped."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"Um interceptador delimitado da <literal>Session</literal>, é definido quando "
+"uma sessão é aberta usando o método sobrecarregado da SessionFactory."
+"openSession() que aceita um <literal>Interceptor</literal> como parâmetro."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"Um interceptador da <literal>SessionFactory</literal>-scoped é definido no "
+"objeto <literal>Configuration</literal> antes da <literal>SessionFactory</"
+"literal> ser instanciada. Nesse caso, o interceptador fornecido será "
+"aplicado para todas as sessões abertas por aquela <literal>SessionFactory</"
+"literal>; Isso apenas não ocorrerá caso seja especificado um interceptador "
+"no momento em que a sessão for aberta. Um interceptador no escopo de "
+"<literal>SessionFactory</literal> deve ser thread safe. Cetifique-se de não "
+"armazenar funções de estado específicos da sessão, pois, provavelmente, "
+"múltiplas sessões irão utilizar esse interceptador simultaneamente."
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "Sistema de Eventos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"Se você precisar executar uma ação em determinados eventos da camada de "
+"persistência, você também pode usar a arquitetura de <emphasis>event</"
+"emphasis> do Hibernate3. Um evento do sistema pode ser utilizado como "
+"complemento ou em substituição a um interceptador. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"Essencialmente todos os métodos da interface <literal>Session</literal> "
+"possuem um evento correlacionado. Se você tiver um <literal>LoadEvent</"
+"literal>, um <literal>LoadEvent</literal>, etc. Consulte o DTD do XML de "
+"arquivo deconfiguração ou o pacote <literal>org.hibernate.event</literal> "
+"para a lista completa dos tipos de eventos). Quando uma requisição é feita "
+"em um desses métodos, a <literal>Session</literal> do hibernate gera um "
+"evento apropriado e o envia para o listener de evento correspondente àquele "
+"tipo de evento. Esses listeners implementam a mesma lógica que aqueles "
+"métodos, trazendo os mesmos resultados. Entretanto, você é livre para "
+"implementar uma customização de um desses listeners (isto é, o "
+"<literal>LoadEvent</literal> é processado pela implementação registrada da "
+"interface <literal>LoadEventListener</literal>), então sua implementação vai "
+"ficar responsável por processar qualquer requisição <literal>load()</"
+"literal> feita pela <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"Para todos os efeitos esses listeners devem ser considerados singletons. "
+"Isto significa que eles são compartilhados entre as requisições, e assim "
+"sendo, não devem salvar nenhum estado das variáveis instanciadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"Um listener personalizado deve implementar a interface referente ao evento a "
+"ser processado e/ou deve estender a classes base equivalentes (ou mesmo os "
+"listeners padrões usados pelo Hibernate, eles não são declarados como finais "
+"com esse objetivo). O listener personalizado pode ser registrado "
+"programaticamente no objeto <literal>Configuration</literal>, ou "
+"declarativamente no XML de configuração do Hibernate especificado. A "
+"configuração declarativa através do arquivo de propriedades não é suportado. "
+"Aqui temos um exemplo de como carregar um listener personalizado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"Você também precisa adicionar uma entrada no XML de configuração do "
+"Hibernate para registrar declarativamente qual listener deve se utilizado em "
+"conjunto com o listener padrão:"
+
+#. Tag: para
+#, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "Ou, você pode registrar o listener programaticamente:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"Listeners registrados declarativamente não compartilham da mesma instância. "
+"Se o mesmo nome da classe for utilizado em vários elementos <literal>&lt;"
+"listener/&gt;</literal>, cada um resultará em uma instância separada dessa "
+"classe. Se você tem a necessidade de compartilhar uma instância de um "
+"listener entre diversos tipos de listeners você deve registrar o listener "
+"programaticamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"Mas, por quê implementar uma interface e definir o tipo específico durante a "
+"configuração? Bem, um listener pode implementar vários listeners de evento. "
+"Com o tipo sendo definido durante o registro, fica fácil ligar ou desligar "
+"listeners personalizados durante a configuração. "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Segurança declarativa do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"Geralmente a segurança declarativa nos aplicativos do Hibernate é gerenciada "
+"em uma camada de fachada de sessão. Agora o Hibernate3 permite certas ações "
+"serem aceitas através do JACC e autorizadas através do JAAS. Esta é uma "
+"funcionalidade opcional construída em cima da arquitetura do evento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"Primeiro, você precisa configurar um evento listener apropriado, para "
+"possibilitar o uso da autorização JAAS."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"Note que <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> é "
+"somente um atalho para <literal>&lt;event type=\"...\"&gt;&lt;listener class="
+"\"...\"/&gt;&lt;/event&gt;</literal> quando existir somente um listener para "
+"um tipo de evento em particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"Depois disso, ainda em <literal>hibernate.cfg.xml</literal>, vincule as "
+"permissões aos papéis:"
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr "Os nomes das funções são as funções conhecidas pelo seu provedor JACC."
+
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1370 @@
+# translation of example_mappings.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: example_mappings\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-10-28 16:59+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "Exemplo: Vários Mapeamentos"
+
+#. Tag: para
+#, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr ""
+"Este capítulo mostra algums mapeamentos de associações mais complexos. "
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "Empregador/Empregado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"O modelo a seguir, do relacionamento entre <literal>Employer</literal> e "
+"<literal>Employee</literal> utiliza uma entidade de classe atual "
+"(<literal>Employment</literal>) para representar a associação. Isto é feito "
+"porque pode-se ter mais do que um período de trabalho para as duas partes "
+"envolvidas. Outros Componentes são usados para modelar valores monetários e "
+"os nomes do empregado. "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "Abaixo, segue o documento de um possível mapeamento: "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"E abaixo, segue o esquema da tabela gerado pelo <literal>SchemaExport</"
+"literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "Autor/Trabalho"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"Considere o seguinte modelo de relacionamento entre <literal>Work</literal>, "
+"<literal>Author</literal> e <literal>Person</literal>. Nós representamos o "
+"relacionamento entre <literal>Work</literal> e <literal>Author</literal> "
+"como uma associação muitos-para-muitos. Nós escolhemos representar o "
+"relacionamento entre <literal>Author</literal> e <literal>Person</literal> "
+"como uma associação um-para-um. Outra possibilidade seria ter "
+"<literal>Author</literal> estendendo <literal>Person</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr ""
+"O mapeamento do código seguinte representa corretamente estes "
+"relacionamentos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"Existem quatro tabelas neste mapeamento: <literal>works</literal>, "
+"<literal>authors</literal> e <literal>persons</literal> matém os dados de "
+"trabalho, autor e pessoa, respectivamente. O <literal>author_work</literal> "
+"é uma tabela de associação que liga autores à trabalhos. Abaixo, segue o "
+"esquema das tabelas, gerados pelo <literal>SchemaExport</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "Cliente/Ordem/Produto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"Agora considere um modelo de relacionamento entre <literal>Customer</"
+"literal>, <literal>Order</literal> e <literal>LineItem</literal> e "
+"<literal>Product</literal>. Existe uma associação um-para-muitos entre "
+"<literal>Customer</literal> e <literal>Order</literal>, mas como devemos "
+"representar <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? Neste exemplo, o LineItem é mapeado como uma "
+"classe de associação representando a associação muitos-para-muitos entre "
+"<literal>Order</literal> e <literal>Product</literal>. No Hibernate, isto é "
+"conhecido como um elemento composto."
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "O documento de mapeamento será parecido com:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> e <literal>products</literal> recebem os dados "
+"de customer, order, line_item e product, respectivamente. "
+"<literal>line_items</literal> também atua como uma tabela de associação "
+"ligando ordens a produtos."
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "Exemplos variados de mapeamento"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"Todos estes exemplos são retirados do conjunto de testes do Hibernate. Lá, "
+"você encontrará vários outros exemplos úteis de mapeamentos. Verifique o "
+"diretório <literal>test</literal> da distribuição do Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "Associação um-para-um \"Typed\""
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "Exemplo de chave composta"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr "Muitos-para-muitos com função de chave composta compartilhada"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "Conteúdo baseado em discriminação"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "Associações em chaves alternativas"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+#~ msgstr ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,519 @@
+# translation of example_parentchild.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: example_parentchild\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-17 14:42+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "Exemplo: Pai/Filho"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the first things that new users want to do with Hibernate is to model "
+"a parent/child type relationship. There are two different approaches to "
+"this. The most convenient approach, especially for new users, is to model "
+"both <literal>Parent</literal> and <literal>Child</literal> as entity "
+"classes with a <literal>&lt;one-to-many&gt;</literal> association from "
+"<literal>Parent</literal> to <literal>Child</literal>. The alternative "
+"approach is to declare the <literal>Child</literal> as a <literal>&lt;"
+"composite-element&gt;</literal>. The default semantics of a one-to-many "
+"association in Hibernate are much less close to the usual semantics of a "
+"parent/child relationship than those of a composite element mapping. We will "
+"explain how to use a <emphasis>bidirectional one-to-many association with "
+"cascades</emphasis> to model a parent/child relationship efficiently and "
+"elegantly."
+msgstr ""
+"Uma das primeiras coisas que um usuário tenta fazer com o Hibernate é "
+"modelar um tipo de relacionamento Pai/Filho. Existem duas abordagens "
+"diferentes para isto. Por diversas razões diferentes, a abordagem mais "
+"conveniente, especialmente para novos usuários, é modelar ambos os "
+"<literal>Parent</literal> e <literal>Child</literal> como classes de "
+"entidade com uma associação <literal>&lt;one-to-many&gt;</literal> a partir "
+"do <literal>Parent</literal> para o <literal>Child</literal>. A abordagem "
+"alternativa é declarar o <literal>Child</literal> como um <literal>&lt;"
+"composite-element&gt;</literal>. As semânticas padrões da associação um para "
+"muitos (no Hibernate), são muito menos parecidas com as semânticas comuns de "
+"um relacionamento pai/filho do que aqueles de um mapeamento de elemento de "
+"composição. Explicaremos como utilizar uma <emphasis>associação bidirecional "
+"um para muitos com cascatas</emphasis> para modelar um relacionamento pai/"
+"filho de forma eficiente e elegante."
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "Uma nota sobre as coleções"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity and not of the contained entities. Be aware that this is a critical "
+"distinction that has the following consequences:"
+msgstr ""
+"As coleções do Hibernate são consideradas uma parte lógica de suas próprias "
+"entidades, nunca das entidades contidas. Saiba que esta é uma distinção que "
+"possui as seguintes conseqüências:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When you remove/add an object from/to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"Quando removemos ou adicionamos um objeto da/na coleção, o número da versão "
+"do proprietário da coleção é incrementado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (e.g. a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"Se um objeto removido de uma coleção for uma instância de um tipo de valor "
+"(ex.: um elemento de composição), este objeto irá parar de ser persistente e "
+"seu estado será completamente removido do banco de dados. Da mesma forma, ao "
+"adicionar uma instância de tipo de valor à coleção, causará ao estado uma "
+"persistência imediata. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Conversely, if an entity is removed from a collection (a one-to-many or many-"
+"to-many association), it will not be deleted by default. This behavior is "
+"completely consistent; a change to the internal state of another entity "
+"should not cause the associated entity to vanish. Likewise, adding an entity "
+"to a collection does not cause that entity to become persistent, by default."
+msgstr ""
+"Por outro lado, se uma entidade é removida de uma coleção (uma associação um-"
+"para-muitos ou muitos-para-muitos), ela não será deletada por padrão. Este "
+"comportamento é completamente consistente, uma mudança para o estado interno "
+"de uma outra entidade não deve fazer com que a entidade associada "
+"desapareça. Da mesma forma, ao adicionar uma entidade à coleção, não faz com "
+"que a entidade se torne persistente, por padrão. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Adding an entity to a collection, by default, merely creates a link between "
+"the two entities. Removing the entity will remove the link. This is "
+"appropriate for all sorts of cases. However, it is not appropriate in the "
+"case of a parent/child relationship. In this case, the life of the child is "
+"bound to the life cycle of the parent."
+msgstr ""
+"A adição de uma entidade à coleção, por padrão, meramente cria um link entre "
+"as duas entidades. A remoção da entidade, removerá o link. Isto é muito "
+"apropriado para alguns tipos de casos. No entanto, não é apropriado o caso "
+"de um relacionamento pai/filho. Neste caso, a vida do filho está vinculada "
+"ao ciclo de vida do pai."
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "Bidirecional um-para-muitos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"Suponha que começamos uma associação <literal>&lt;one-to-many&gt;</literal> "
+"simples de <literal>Parent</literal> para <literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "Se fossemos executar o seguinte código:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "O Hibernate editaria duas instruções SQL"
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr "um <literal>INSERT</literal> para criar um registro para <literal>c</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"um <literal>UPDATE</literal> para criar um link de <literal>p</literal> para "
+"<literal>c</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. You can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"Isto não é somente ineficiente como também viola qualquer restrição "
+"<literal>NOT NULL</literal> na coluna <literal>parent_id</literal>. Nós "
+"podemos concertar a violação da restrição de nulabilidade, especificando um "
+"<literal>not-null=\"true\"</literal> no mapeamento da coleção:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "No entanto, esta não é uma solução recomendada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The underlying cause of this behavior is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. The "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"As causas subjacentes deste comportamento é que o link (a chave exterior "
+"<literal>parent_id</literal>) de <literal>p</literal> para <literal>c</"
+"literal> não é considerada parte do estado do objeto <literal>Child</"
+"literal> e por isso não é criada no <literal>INSERT</literal>. Então a "
+"solução é fazer uma parte de link do mapeamento do <literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class."
+msgstr ""
+"Nós também precisamos adicionar a propriedade <literal>parent</literal> à "
+"classe do <literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute to do this:"
+msgstr ""
+"Agora que a entidade <literal>Child</literal> está gerenciando o estado do "
+"link, informaremos à coleção para não atualizar o link. Utilizamos o "
+"atributo <literal>inverse</literal> para isto:"
+
+#. Tag: para
+#, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr ""
+"O seguinte código seria usado para adicionar um novo <literal>Child</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr "E agora, somente um SQL <literal>INSERT</literal> seria editado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You could also create an <literal>addChild()</literal> method of "
+"<literal>Parent</literal>."
+msgstr ""
+"Para assegurar tudo isto, podemos criar um método de <literal>addChild()</"
+"literal> do <literal>Parent</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr "Agora, o código que adiciona um <literal>Child</literal> se parece com este: "
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr "Ciclo de vida em Cascata "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can address the frustrations of the explicit call to <literal>save()</"
+"literal> by using cascades."
+msgstr ""
+"A chamada explícita para <literal>save()</literal> ainda é incômoda. Iremos "
+"nos referir a ela utilizando cascatas."
+
+#. Tag: para
+#, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "Isto simplifica o código acima para:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, we do not need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"Da mesma forma, não precisamos repetir este comando com os filhos ao salvar "
+"ou deletar um <literal>Parent</literal>. O comando seguinte irá remover o "
+"<literal>p</literal> e todos os seus filhos do banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid "However, the following code:"
+msgstr "No entanto, este código:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database. In this case, it "
+"will only remove the link to <literal>p</literal> and cause a <literal>NOT "
+"NULL</literal> constraint violation. You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"não irá remover <literal>c</literal> do banco de dados. Neste caso, ele "
+"somente removerá o link para <literal>p</literal> e causará uma violação de "
+"restrição <literal>NOT NULL</literal>). Você precisará <literal>delete()</"
+"literal> de forma explícita o <literal>Child</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In our case, a <literal>Child</literal> cannot exist without its parent. So "
+"if we remove a <literal>Child</literal> from the collection, we do want it "
+"to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan"
+"\"</literal>."
+msgstr ""
+"Agora, no seu caso, um <literal>Child</literal> não pode existir sem seu "
+"pai. Então, se removermos um <literal>Child</literal> da coleção, não iremos "
+"mais querer que ele seja deletado. Devido a isto, devemos utilizar um "
+"<literal>cascade=\"all-delete-orphan\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though the collection mapping specifies <literal>inverse=\"true\"</"
+"literal>, cascades are still processed by iterating the collection elements. "
+"If you need an object be saved, deleted or updated by cascade, you must add "
+"it to the collection. It is not enough to simply call <literal>setParent()</"
+"literal>."
+msgstr ""
+"Apesar do mapeamento da coleção especificar <literal>inverse=\"true\"</"
+"literal>, as cascatas ainda são processadas por repetição dos elementos de "
+"coleção. Portanto, se você requiser que um objeto seja salvo, deletado ou "
+"atualizado por uma cascata, você deverá adicioná-lo à sua coleção. Chamar "
+"<literal>setParent()</literal> não é o bastante."
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "Cascatas e <literal>unsaved-value</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wanted to persist these "
+"changes in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of children and, since "
+"the cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. We "
+"will also assume that both <literal>Parent</literal> and <literal>Child</"
+"literal> have generated identifier properties of type <literal>Long</"
+"literal>. Hibernate will use the identifier and version/timestamp property "
+"value to determine which of the children are new. (See <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer "
+"necessary to specify an <literal>unsaved-value</literal> explicitly.</"
+"emphasis>"
+msgstr ""
+"Vamos supor que tenhamos carregado um <literal>Parent</literal> em uma "
+"<literal>Session</literal>, fizemos algumas mudanças em uma ação UI e "
+"desejamos que persista estas mudanças em uma sessão nova, chamando um "
+"<literal>update()</literal>. O <literal>Parent</literal> irá conter uma "
+"coleção de filhos e uma vez que a atualização da cascata esteja habilitada, "
+"o Hibernate precisará saber qual filho foi instanciado mais recentemente e "
+"qual representa a linha existente no banco de dados. Vamos supor que ambos "
+"os <literal>Parent</literal> e <literal>Child</literal> tenham gerado "
+"propriedades de identificador do tipo <literal>Long</literal>. O Hibernate "
+"usará o identificador e o valor de propriedade da versão/carimbo de data e "
+"hora para determinar qual filho é novo. (Veja <xref linkend="
+"\"objectstate-saveorupdate\" />.) <emphasis>No Hibernate3, não é mais necessário "
+"especificar um <literal>unsaved-value</literal> explicitamente.</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>:"
+msgstr ""
+"O seguinte código atualizará o <literal>parent</literal> e o <literal>child</"
+"literal> e inserirá um <literal>newChild</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This may be suitable for the case of a generated identifier, but what about "
+"assigned identifiers and composite identifiers? This is more difficult, "
+"since Hibernate cannot use the identifier property to distinguish between a "
+"newly instantiated object, with an identifier assigned by the user, and an "
+"object loaded in a previous session. In this case, Hibernate will either use "
+"the timestamp or version property, or will actually query the second-level "
+"cache or, worst case, the database, to see if the row exists."
+msgstr ""
+"Bem, isto cabe bem no caso de um identificador gerado, mas e os "
+"identificadores atribuídos e os identificadores de composição? Isto é mais "
+"difícil, pois uma vez que o Hibernate não pode utilizar a propriedade do "
+"identificador para distinguir entre um objeto instanciado recentemente, com "
+"um identificador atribuído pelo usuário, e um objeto carregado em uma sessão "
+"anterior. Neste caso, o Hibernate usará tanto um carimbo de data e hora "
+"(timestamp) ou uma propriedade de versão, ou irá na verdade consultar um "
+"cache de segundo nível, ou no pior dos casos, o banco de dados, para ver se "
+"a linha existe. "
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "Conclusão"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The sections we have just covered can be a bit confusing. However, in "
+"practice, it all works out nicely. Most Hibernate applications use the "
+"parent/child pattern in many places."
+msgstr ""
+"Há muito o que digerir aqui e pode parecer confuso na primeira vez. No "
+"entanto, na prática, funciona muito bem. A maioria dos aplicativos do "
+"Hibernate utiliza o modelo pai/filho em muitos lugares.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
+"which have exactly the semantics of a parent/child relationship. "
+"Unfortunately, there are two big limitations with composite element classes: "
+"composite elements cannot own collections and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"Nós mencionamos uma alternativa neste primeiro parágrafo. Nenhum dos casos "
+"acima existem no caso de mapeamentos <literal>&lt;composite-element&gt;</"
+"literal>, que possuem exatamente a semântica do relacionamento pai/filho. "
+"Infelizmente, existem duas grandes limitações para elementos compostos: "
+"elementos compostos podem não possuir coleções e assim sendo podem não ser "
+"filhos de nenhuma outra entidade a não ser do pai único. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,962 @@
+# translation of example_weblog.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: example_weblog\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-10-29 11:19+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "Exemplo: Aplicativo Weblog"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Classes Persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"As classes persistentes representam um weblog, e um item postado em um "
+"weblog. Eles não devem ser modelados como um relacionamento padrão pai/"
+"filho, mas usaremos uma bolsa ordenada ao invés de um conjunto:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Mapeamentos Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "Os mapeamentos XML devem agora ser um tanto diretos. Por exemplo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Código Hibernate "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr ""
+"A seguinte classe demonstra algumas atividades que podemos realizar com "
+"estas classes, usando Hibernate:"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,427 @@
+# translation of filters.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: filters\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-16 15:07+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "Filtrando dados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"O Hibernate3 provê um novo método inovador para manusear dados com regras de "
+"\"visibilidade\". Um <emphasis>Filtro do Hibernate</emphasis> é um filtro "
+"global, nomeado e parametrizado que pode ser habilitado ou não dentro de uma "
+"Sessão do Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Filtros do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"O Hibernate3 tem a habilidade de pré-definir os critérios do filtro e anexar "
+"esses filtros no nível da classe e no nível da coleção. Um critério do "
+"filtro é a habilidade de definir uma cláusula restritiva muito semelhante à "
+"função \"where\" disponível para a classe e várias coleções. A não ser que "
+"essas condições de filtros possam ser parametrizadas. A aplicação pode, "
+"então decidir, em tempo de execução, se os filtros definidos devem estar "
+"habilitados e quais valores seus parâmetros devem ter. Os filtros podem ser "
+"usados como Views de bancos de dados, mas com parâmetros dentro da aplicação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"Para usar esses filtros, eles devem inicialmente ser definidos e anexados "
+"aos elementos do mapeamento apropriados. Para definir um filtro, use o "
+"elemento <literal>&lt;filter-def/&gt;</literal> dentro do elemento "
+"<literal>&lt;hibernate-mapping/&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "Esse filtro pode ser acoplado à uma classe:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to a collection:"
+msgstr "Ou, à uma coleção:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "Ou, mesmo para ambos (ou muitos de cada) ao mesmo tempo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"Os métodos na <literal>Session</literal> são: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal> e <literal>disableFilter(String filterName)</literal>. Por padrão, "
+"os filtros <emphasis>não</emphasis> são habilitados dentro de qualquer "
+"sessão. Eles devem ser explicitamente habilitados usando o método "
+"<literal>Session.enabledFilter()</literal>, que retorna uma instância da "
+"interface <literal>Filter</literal>. Usando o filtro simples definido acima, "
+"o código se pareceria com o seguinte: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"Veja que os métodos da interface org.hibernate.Filter permite o encadeamento "
+"do método, comum à maioria das funções do Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr ""
+"Um exemplo completo, usando dados temporais com um padrão de datas de "
+"registro efetivo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"Para garantir que você sempre tenha registro efetivos, simplesmente habilite "
+"o filtro na sessão antes de recuperar os dados dos empregados: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"No HQL acima, mesmo que tenhamos mencionado apenas uma restrição de salário "
+"nos resultados, por causa do filtro habilitado, a consulta retornará apenas "
+"os funcionários ativos cujo salário é maior que um milhão de dólares. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"Nota: se você planeja usar filtros com união externa (por HQL ou por busca "
+"de carga) seja cuidadoso quanto à direção da expressão de condição. É mais "
+"seguro configurá-lo para uma união externa esquerda. Coloque o parâmetro "
+"primeiro seguido pelo(s) nome(s) da coluna após o operador. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"Após ser definido, o filtro deve ser anexado às entidades múltiplas e/ou "
+"coleções, cada uma com sua própria condição. Isto pode ser tedioso quando as "
+"condições se repetem. Assim, usando o <literal>&lt;filter-def/&gt;</literal> "
+"permite denifir uma condição padrão, tanto como uma função quanto CDATA:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"Esta condição padrão será utilizada todas as vezes que um filtro for anexado "
+"a algo sem uma condição específica. Note que isto significa que você pode "
+"dar uma condição específica como parte de um anexo de filtro que substitua a "
+"condição padrão neste caso em particular. "
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+#~ msgstr ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,630 @@
+# translation of inheritance_mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: inheritance_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-17 15:42+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Inheritance mapping"
+msgstr "Mapeamento de Herança "
+
+#. Tag: title
+#, no-c-format
+msgid "The three strategies"
+msgstr "As três estratégias "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr "O Hibernate suporta as três estratégias básicas de mapeamento de herança:"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "tabela por hierarquia de classes"
+
+#. Tag: para
+#, no-c-format
+msgid "table per subclass"
+msgstr "tabela por subclasse"
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "tabela por classe concreta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr ""
+"Além disso, o Hibernate suporta um quarto tipo de polimorfismo um pouco "
+"diferente:"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "polimorfismo implícito"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy. You can then make use of implicit "
+"polymorphism to achieve polymorphism across the whole hierarchy. However, "
+"Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, "
+"<literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-"
+"subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</"
+"literal> element. It is possible to mix together the table per hierarchy and "
+"table per subclass strategies under the the same <literal>&lt;class&gt;</"
+"literal> element, by combining the <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr ""
+"É possível usar diferentes estratégias de mapeamento para diferentes "
+"ramificações da mesma hierarquia de herança. Você pode fazer uso do "
+"polimorfismo implícito para alcançá-lo através da hierarquia completa. De "
+"qualquer forma, o Hibernate não suporta a mistura de mapeamentos "
+"<literal>&lt;subclass&gt;</literal>, <literal>&lt;joined-subclass&gt;</"
+"literal> e <literal>&lt;union-subclass&gt;</literal> dentro do mesmo "
+"elemento raíz <literal>&lt;class&gt;</literal>. É possível usar, junto às "
+"estratégias, uma tabela por hierarquia e tabela por subclasse, abaixo do "
+"mesmo elemento <literal>&lt;class&gt;</literal>, combinando os elementos "
+"<literal>&lt;subclass&gt;</literal> e <literal>&lt;join&gt;</literal> (veja "
+"abaixo)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierarchy by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Previously this "
+"feature made the ordering of the mapping documents important. Since "
+"Hibernate3, the ordering of mapping files is irrelevant when using the "
+"extends keyword. The ordering inside a single mapping file still needs to be "
+"defined as superclasses before subclasses."
+msgstr ""
+"É possível definir mapeamentos <literal>subclass</literal>, <literal>union-"
+"subclass</literal> e <literal>joined-subclass</literal> em documentos de "
+"mapeamento separados, diretamente abaixo de <literal>hibernate-mapping</"
+"literal>. Isso permite que você estenda uma hierarquia de classes apenas "
+"adicionando um novo arquivo de mapeamento. Você deve especificar uma função "
+"<literal>extends</literal> no mapeamento da subclasse, nomeando uma "
+"superclasse previamente mapeada. Anteriormente esta característica fazia o "
+"ordenamento dos documentos de mapeamento importantes. Desde o Hibernate3, o "
+"ordenamento dos arquivos de mapeamento não importa quando usamos a palavra "
+"chave extends. O ordenamento dentro de um arquivo de mapeamento simples "
+"ainda necessita ser definido como superclasse antes de subclasse."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "Tabela por hierarquia de classes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal> with the "
+"implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, and <literal>ChequePayment</literal>. The table per hierarchy "
+"mapping would display in the following way:"
+msgstr ""
+"Vamos supor que temos uma interface <literal>Payment</literal>, com sua "
+"implementação <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal> e <literal>ChequePayment</literal>. O mapeamento da tabela por "
+"hierarquia seria parecido com:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Exactly one table is required. There is a limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"É requisitado exatamente uma tabela. Existe uma grande limitação desta "
+"estratégia de mapeamento: colunas declaradas por subclasses, tais como "
+"<literal>CCTYPE</literal>, podem não ter restrições <literal>NOT NULL</"
+"literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "Tabela por subclasse"
+
+#. Tag: para
+#, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr "Um mapeamento de tabela por subclasse seria parecido com: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table so the relational model is actually a "
+"one-to-one association."
+msgstr ""
+"São necessárias quatro tabelas. As três tabelas subclasses possuem "
+"associação de chave primária para a tabela de superclasse, desta maneira o "
+"modelo relacional é atualmente uma associação de um-para-um."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "Tabela por subclasse: usando um discriminador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's implementation of table per subclass does not require a "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass that requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement, but arguably more correct from a relational point of "
+"view. If you want to use a discriminator column with the table per subclass "
+"strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and "
+"<literal>&lt;join&gt;</literal>, as follows:"
+msgstr ""
+"A implementação de tabela por subclasse do Hibernate não necessita de coluna "
+"de discriminador. Outro mapeador objeto/relacional usa uma implementação "
+"diferente de tabela por subclasse, que necessita uma coluna com o tipo "
+"discriminador na tabela da superclasse. A abordagem escolhida pelo Hibernate "
+"é muito mais difícil de implementar, porém mais correto de um ponto de vista "
+"relacional. Se você deseja utilizar uma coluna discriminadora com a "
+"estratégia tabela por subclasse, você poderá combinar o uso de <literal>&lt;"
+"subclass&gt;</literal> e <literal>&lt;join&gt;</literal>, dessa maneira:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"A declaração opcional <literal>fetch=\"select\"</literal> diz ao Hibernate "
+"para não buscar os dados da subclasse <literal>ChequePayment</literal>, "
+"quando usar uma união externa pesquisando a superclasse."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "Mesclar tabela por hierarquia de classes com tabela por subclasse"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even mix the table per hierarchy and table per subclass strategies "
+"using the following approach:"
+msgstr ""
+"Você pode até mesmo mesclar a estratégia de tabela por hierarquia e tabela "
+"por subclasse usando esta abordagem:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;"
+"</literal>."
+msgstr ""
+"Para qualquer uma dessas estratégias de mapeamento, uma associação "
+"polimórfica para a classe raíz <literal>Payment</literal> deve ser mapeada "
+"usando <literal>&lt;many-to-one&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "Tabela por classe concreta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two ways we can map the table per concrete class strategy. First, "
+"you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr ""
+"Existem duas formas que poderíamos usar a respeito da estratégia de "
+"mapeamento de tabela por classe concreta. A primeira é usar <literal>&lt;"
+"union-subclass&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"Três tabelas estão envolvidas para as subclasses. Cada tabela define colunas "
+"para todas as propriedades da classe, incluindo propriedades herdadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. The "
+"identity generator strategy is not allowed in union subclass inheritance. "
+"The primary key seed has to be shared across all unioned subclasses of a "
+"hierarchy."
+msgstr ""
+"A limitação dessa abordagem é que se uma propriedade é mapeada na "
+"superclasse, o nome da coluna deve ser o mesmo em todas as tabelas das "
+"subclasses. A estratégia do gerador identidade não é permitida na união da "
+"herança de sub-classe. A fonte de chave primária deve ser compartilhada "
+"através de todas subclasses unidas da hierarquia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. If it is not abstract, an additional table (it defaults to "
+"<literal>PAYMENT</literal> in the example above), is needed to hold "
+"instances of the superclass."
+msgstr ""
+"Se sua superclasse é abstrata, mapeie-a com <literal>abstract=\"true\"</"
+"literal>. Claro, que se ela não for abstrata, uma tabela adicional (padrão "
+"para <literal>PAYMENT</literal> no exemplo acima), será necessária para "
+"segurar as instâncias da superclasse."
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr "Tabela por classe concreta usando polimorfismo implícito"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "Uma abordagem alternativa é fazer uso de polimorfismo implícito:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Notice that the <literal>Payment</literal> interface is not mentioned "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> "
+"declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr ""
+"Veja que em nenhum lugar mencionamos a interface <literal>Payment</literal> "
+"explicitamente. Note também que propriedades de <literal>Payment</literal> "
+"são mapeadas em cada uma das subclasses. Se você quiser evitar duplicação, "
+"considere usar entidades de XML (ex. <literal>[ &lt;!ENTITY allproperties "
+"SYSTEM \"allproperties.xml\"&gt; ]</literal> na declaração do "
+"<literal>DOCTYPE</literal> e <literal>&amp; allproperties;</literal> no "
+"mapeamento). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"A desvantagem dessa abordagem é que o Hibernate não gera <literal>UNION</"
+"literal>s de SQL quando executa pesquisas polimórficas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr ""
+"Para essa estratégia, uma associação polimórfica para <literal>Payment</"
+"literal> geralmente é mapeada usando <literal>&lt;any&gt;</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "Mesclando polimorfismo implícito com outros mapeamentos de herança"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the subclasses are each mapped in their own <literal>&lt;class&gt;</"
+"literal> element, and since <literal>Payment</literal> is just an "
+"interface), each of the subclasses could easily be part of another "
+"inheritance hierarchy. You can still use polymorphic queries against the "
+"<literal>Payment</literal> interface."
+msgstr ""
+"Existe ainda um item a ser observado sobre este mapeamento. Como as "
+"subclasses são mapeadas em seu próprio elemento <literal>&lt;class&gt;</"
+"literal>, e como o <literal>Payment</literal> é apenas uma interface, cada "
+"uma das subclasses pode ser facilmente parte de uma outra hierarquia de "
+"herança! (E você ainda pode usar pesquisas polimórficas em cima da interface "
+"<literal>Payment</literal>.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once again, <literal>Payment</literal> is not mentioned explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface, for "
+"example <literal>from Payment</literal>, Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal>, but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"Mais uma vez, nós não mencionamos <literal>Payment</literal> explicitamente. "
+"Se nós executarmos uma pesquisa em cima da interface <literal>Payment</"
+"literal>, por exemplo, <literal>from Payment</literal> – o Hibernate retorna "
+"automaticamente instâncias de <literal>CreditCardPayment</literal> (e suas "
+"subclasses, desde que elas também implementem <literal>Payment</literal>), "
+"<literal>CashPayment</literal> e <literal>ChequePayment</literal> mas não as "
+"instâncias de <literal>NonelectronicTransaction</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "Limitações"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are limitations to the \"implicit polymorphism\" approach to the table "
+"per concrete-class mapping strategy. There are somewhat less restrictive "
+"limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr ""
+"Existem certas limitações para a abordagem do \"polimorfismo implícito\" "
+"comparada com a estratégia de mapeamento da tabela por classe concreta. "
+"Existe uma limitação um tanto menos restritiva para mapeamentos <literal>&lt;"
+"union-subclass&gt;</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"A seguinte tabela demonstra as limitações do mapeamento de tabela por classe "
+"concreta e do polimorfismo implícito no Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "Recurso dos Mapeamentos de Herança "
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "Estratégia de Herança "
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "muitos-para-um Polimórfico"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "um-para-um Polimórfico"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "um-para-muitos Polimórfico"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "muitos-para-um Polimórfico"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr "Polimórfico <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Consultas Polimórficas"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "Junçöes Polimórficas"
+
+#. Tag: entry
+#, no-c-format
+msgid "Outer join fetching"
+msgstr "Busca por união externa"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per class-hierarchy"
+msgstr "tabela por hierarquia de class"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "<literal>&lt;many-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "<literal>&lt;one-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "<literal>&lt;one-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "<literal>&lt;many-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "<literal>s.get(Payment.class, id)</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr "<literal>from Payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr "<literal>from Order o join o.payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr "<emphasis>supported</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "tabela por classe concreta (subclasses de união)"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
+"<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "tabela por classe concreta (polimorfismo implícito)  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr "<literal>&lt;any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr "<emphasis>not supported</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "<literal>&lt;many-to-any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+msgstr ""
+"<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) )."
+"uniqueResult()</literal>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2332 @@
+# translation of performance.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: performance\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-18 14:45+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "Aumentando o desempenho"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "Estratégias de Busca "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"Uma <emphasis>estratégia de busca</emphasis> é a estratégia que o Hibernate "
+"irá usar para recuperar objetos associados se a aplicação precisar navegar "
+"pela associação. Estratégias de Busca podem ser declaradas nos metadados de "
+"mapeamento O/R, ou sobrescritos por uma consulta HQL ou consulta com "
+"<literal>Criteria</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3 define as seguintes estratégias de busca:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>Join fetching</emphasis> - o Hibernate busca o objeto ou coleção "
+"associada no mesmo <literal>SELECT</literal>, usando um <literal>OUTER JOIN</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>Select fetching</emphasis> - um segundo <literal>SELECT</literal> "
+"é usado para buscar a entidade ou coleção associada. A menos que você "
+"desabilite a busca lazy, especificando <literal>lazy=\"false\"</literal>, "
+"esse segundo SELECT será executado apenas quando você acessar a associação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>Subselect fetching</emphasis> - um segundo <literal>SELECT</"
+"literal> será usado para recuperar as coleções associadas de todas as "
+"entidades recuperadas em uma consulta ou busca anterior. A menos que você "
+"desabilite a busca lazy especificando <literal>lazy=\"false\"</literal>, "
+"esse segundo SELECT será executado apenas quando você acessar a associação.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>Batch fetching</emphasis> - uma opção de otimização para "
+"selecionar a busca. O Hibernate recupera um lote de instâncias ou entidades "
+"usando um único <literal>SELECT</literal>, especificando uma lista de chaves "
+"primárias ou chaves externas."
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "O Hibernate distingue também entre:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>Immediate fetching</emphasis> - uma associação, coleção ou função "
+"é imediatamente recuperada, quando o proprietário for carregado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>Lazy collection fetching</emphasis> - a coleção é recuperada "
+"quando a aplicação invoca uma operação sobre aquela coleção. Esse é o padrão "
+"para coleções."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis> - elementos "
+"individuais de uma coleção são acessados a partir do banco de dados quando "
+"necessário. O Hibernate tenta não buscar a coleção inteira dentro da memória "
+"a menos que seja absolutamente necessário. Isto é indicado para coleções "
+"muito grandes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>Proxy fetching</emphasis>: uma associação de um valor é carregada "
+"quando um método diferente do getter do identificador é invocado sobre o "
+"objeto associado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>\"No-proxy\" fetching</emphasis> - uma associação de um único "
+"valor é recuperada quando a variável da instância é acessada. Comparada à "
+"busca proxy, esse método é menos preguiçoso (lazy); a associação é buscada "
+"até mesmo quando somente o identificador é acessado. Ela é mais "
+"transparente, já que não há proxies visíveis para a aplicação. Esse método "
+"requer instrumentação de bytecodes em build-time e é raramente necessário."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Lazy attribute fetching</emphasis>: um atributo ou associação de "
+"um valor é buscado quanto a varíavel da instância é acessada. Esse método "
+"requer instrumentação de bytecodes em build-time e é raramente necessário."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"Nós temos aqui duas noções ortogonais: <emphasis>quando</emphasis> a "
+"associação é buscada e <emphasis>como</emphasis> ela é buscada. É importante "
+"que você não os confuda. Nós usamos <literal>fetch</literal> para ajustar o "
+"desempenho. Podemos usar <literal>lazy</literal> para definir um contrato "
+"para qual dado é sempre disponível em qualquer instância desconectada de uma "
+"classe particular."
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "Trabalhando com associações preguiçosas (lazy)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"Por padrão, o Hibernate3 usa busca preguiçosa para coleções e busca "
+"preguiçosa com proxy para associações de um valor. Esses padrões fazem "
+"sentido para quase todas as associações em quase todas a aplicações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"Se você ajustar <literal>hibernate. default_batch_fetch_size</literal>, o "
+"Hibernate irá usar otimização de busca em lote para a busca preguiçosa. Essa "
+"otimização pode ser também habilitada em um nível mais fino."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"Perceba que o acesso a associações preguiçosas fora do contexto de uma "
+"sessão aberta do Hibernate irá resultar numa exceção. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"Como a coleção de permissões não foi inicializada quando a <literal>Session</"
+"literal> for fechada, a coleção não poderá carregar o seu estado. "
+"<emphasis>O Hibernate não suporta inicialização preguiçosa para objetos "
+"desconectados</emphasis>. Para consertar isso, é necessário mover o código "
+"que carrega a coleção para logo antes da transação ser submetida. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"Alternativamente, nós podemos usar uma coleção ou associação não preguiçosa, "
+"especificando <literal>lazy=\"false\"</literal> para o mapeamento da "
+"associação. Porém, é pretendido que a inicialização preguiçosa seja usada "
+"por quase todas as coleções e associações. Se você definir muitas "
+"associações não preguiçosas em seu modelo de objetos, o Hibernate irá "
+"precisar buscar no banco de dados inteiro da memória em cada transação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"Por outro lado, nós geralmente escolhemos a busca de união (que não é "
+"preguiçosa por natureza) ao invés do selecionar busca em uma transação "
+"particular. Nós agora veremos como customizar a estratégia de busca. No "
+"Hibernate3, os mecanismos para escolher a estratégia de busca são idênticos "
+"para as associações de valor único e para coleções."
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "Personalizando as estratégias de busca"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"O padrão selecionar busca, é extremamente vunerável aos problemas de seleção "
+"N+1, então habilitaremos a busca de união no documento de mapeamento:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"A estratégia de <literal>fetch</literal> definida no documento de mapeamento "
+"afeta:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr "recupera via <literal>get()</literal> ou <literal>load()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr ""
+"Recuperações que acontecem implicitamente quando navegamos por uma associação"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "consultas por <literal>Criteria</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "consultas HQL se a busca por <literal>subselect</literal> for usada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"Independentemente da estratégia de busca que você usar, o gráfico não "
+"preguiçoso definido será certamente carregado na memória. Note que isso irá "
+"resultar em diversas seleções imediatas sendo usadas para rodar uma consulta "
+"HQL em particular."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"Geralmente, não usamos documentos de mapeamento para customizar as buscas. "
+"Ao invés disso, nós deixamos o comportamento padrão e sobrescrevemos isso em "
+"uma transação em particular, usando <literal>left join fetch</literal> no "
+"HQL. Isso diz ao Hibernate para buscar a associação inteira no primeiro "
+"select, usando uma união externa. Na API de busca <literal>Criteria</"
+"literal>, você irá usar <literal>setFetchMode(FetchMode.JOIN)</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"Se você quiser mudar a estratégia de busca usada pelo <literal>get()</"
+"literal> ou <literal>load()</literal>, simplesmente use uma consulta por "
+"<literal>Criteria</literal>, por exemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"Isto é o equivalente do Hibernate para o que algumas soluções ORM chamam de "
+"\"plano de busca\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"Um meio totalmente diferente de evitar problemas com selects N+1 é usar um "
+"cache de segundo nível. "
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "Proxies de associação final único"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"A recuperação preguiçosa para coleções é implementada usando uma "
+"implementação própria do Hibernate para coleções persistentes. Porém, é "
+"necessário um mecanismo diferente para comportamento preguiçoso em "
+"associações de final único. A entidade alvo da associação precisa usar um "
+"proxy. O Hibernate implementa proxies para inicialização preguiçosa em "
+"objetos persistentes usando manipulação de bytecode, através da excelente "
+"biblioteca CGLIB. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"Por padrão, o Hibernate3 gera proxies (na inicialização) para todas as "
+"classes persistentes que os usem para habilitar recuperação preguiçosa de "
+"associações <literal>many-to-one</literal> e <literal>one-to-one</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"O arquivo de mapeamento deve declarar uma interface para usar como interface "
+"de proxy para aquela classe, com a função <literal>proxy</literal>. Por "
+"padrão, o Hibernate usa uma subclasse dessa classe. <emphasis>Note que a "
+"classe a ser usada via proxy precisa implementar o construtor padrão com "
+"pelo menos visibilidade de package. Nós recomendamos esse construtor para "
+"todas as classes persistentes</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr ""
+"Existe alguns truques que você deve saber quando estender esse comportamento "
+"para classes polimórficas. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"Primeiramente, instâncias de <literal>Cat</literal> nunca serão convertidas "
+"para <literal>DomesticCat</literal>, mesmo que a instância em questão seja "
+"uma instância de <literal>DomesticCat</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "E, segundo, é possível quebrar o proxy <literal>==</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"Porém a situação não é tão ruim como parece. Mesmo quando temos duas "
+"referências para objetos proxies diferentes, a instância adjacente será do "
+"mesmo objeto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"E por terceiro, você não pode usar um proxy CGLIB em uma classe "
+"<literal>final</literal> ou com quaisquer métodos <literal>final</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"Finalmente, se o seu objeto persistente adquirir qualquer recurso durante a "
+"instanciação (ex. em inicializadores ou construtor padrão), então esses "
+"recursos serão adquiridos pelo proxy também. A classe de proxy é uma "
+"subclasse da classe persistente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"Esses problemas se dão devido à limitação originária do modelo de herança "
+"simples do Java. Se você quiser evitar esses problemas em suas classes "
+"persistentes você deve implementar uma interface que declare seus métodos "
+"comerciais. Você deve especificar essas interfaces no arquivo de mapeamento "
+"onde <literal>CatImpl</literal> implementa a interface <literal>Cat</"
+"literal> e <literal>DomesticCatImpl</literal> implementa a interface "
+"<literal>DomesticCat</literal>. Por exemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"Então, os proxies para instâncias de <literal>Cat</literal> e  "
+"<literal>DomesticCat</literal> podem ser retornadas pelo <literal>load()</"
+"literal> ou <literal>iterate()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>list()</literal> normalmente retorna proxies."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"Relacionamentos são também inicializados de forma preguiçosa. Isso significa "
+"que você precisa declarar qualquer propriedade como sendo do tipo "
+"<literal>Cat</literal>, e não <literal>CatImpl</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr ""
+"Algumas operações <emphasis>não</emphasis> requerem inicialização por proxy: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>: se a classe persistente não sobrescrever "
+"<literal>equals()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>: se a classe persistente não sobrescrever "
+"<literal>hashCode()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "O método getter do identificador"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"O Hibernate irá detectar classes persistentes que sobrescrevem "
+"<literal>equals()</literal> ou <literal>hashCode()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"Escolhendo <literal>lazy=\"no-proxy\"</literal> ao invés do padrão "
+"<literal>lazy=\"proxy\"</literal>, podemos evitar problemas associados com "
+"typecasting. Porém, iremos precisar de instrumentação de bytecode em tempo "
+"de compilação e todas as operações irão resultar em inicializações de proxy "
+"imediatas. "
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "Inicializando coleções e proxies"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"Será lançada uma <literal>LazyInitializationException</literal> se uma "
+"coleção não inicializada ou proxy for acessado fora do escopo da "
+"<literal>Session</literal>, isto é, quando a entidade que contém a coleção "
+"ou que possua a referência ao proxy estiver no estado desanexado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"Algumas vezes precisamos garantir que o proxy ou coleção é inicializado "
+"antes de fechar a <literal>Session</literal>. Claro que sempre podemos "
+"forçar a inicialização chamando <literal>cat.getSex()</literal> ou "
+"<literal>cat.getKittens().size()</literal>, por exemplo. Mas isto parece "
+"confuso para quem lê o código e não é conveniente para códigos genéricos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"Os métodos estáticos <literal>Hibernate.initialize()</literal> e "
+"<literal>Hibernate.isInitialized()</literal> favorecem a aplicação para "
+"trabalhar com coleções ou proxies inicializados de forma preguiçosa. O "
+"<literal>Hibernate.initialize(cat)</literal> irá forçar a inicialização de "
+"um proxy, <literal>cat</literal>, contanto que a <literal>Session</literal> "
+"esteja ainda aberta. <literal>Hibernate.initialize (cat.getKittens() )</"
+"literal> tem um efeito similar para a coleção de kittens. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"Uma outra opção é manter a <literal>Session</literal> aberta até que todas "
+"as coleções e os proxies necessários sejam carregados. Em algumas "
+"arquiteturas de aplicações, particularmente onde o código que acessa os "
+"dados usando Hibernate e o código que os usa, se encontram em diferentes "
+"camadas da aplicação ou diferentes processos físicos, será um problema "
+"garantir que a <literal>Session</literal> esteja aberta quando uma coleção "
+"for inicializada. Existem dois caminhos básicos para lidar com esse "
+"problema: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"Em uma aplicações web, um filtro servlet pode ser usado para fechar a "
+"<literal>Session</literal> somente no final da requisição do usuário, quando "
+"a renderização da view estiver completa (o modelo <emphasis>Abrir Sessão em "
+"View</emphasis>). Claro, que isto demanda uma exatidão no manuseio de "
+"exceções na infraestrutura de sua aplicação. É extremamente importante que a "
+"<literal>Session</literal> seja fechada e a transação terminada antes de "
+"retornar para o usuário, mesmo que uma exceção ocorra durante a renderização "
+"da view. Veja o Wiki do Hibernate para exemplos do pattern \"Abrir Sessão em "
+"View\"."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"Em uma aplicação com uma camada de negócios separada, a lógica de negócios "
+"deve \"preparar\" todas as coleções que serão usadas pela camada web antes "
+"de retornar. Isto sgnifica que a camada de negócios deve carregar todos os "
+"dados e retorná-los já inicializados para a camada de apresentação que é "
+"representada para um caso de uso particular. Geralmente, a aplicação chama "
+"<literal>Hibernate.initialize()</literal> para cada coleção que será usada "
+"pela camada web (essa chamada deve ocorrer antes da sessão ser fechada) ou "
+"retorna a coleção usando uma consulta Hibernate com uma cláusula "
+"<literal>FETCH</literal> ou um <literal>FetchMode.JOIN</literal> na "
+"<literal>Criteria</literal>. Fica muito mais fácil se você adotar o modelo "
+"<emphasis>Command</emphasis> ao invés do <emphasis>Session Facade</"
+"emphasis>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"Você também pode anexar um objeto previamente carregado em uma nova "
+"<literal>Session</literal><literal>merge()</literal> ou <literal>lock()</"
+"literal> antes de acessar coleções não inicializadas (ou outros proxies). O "
+"Hibernate não faz e certamente <literal>não deve</literal> fazer isso "
+"automaticamente, pois isso introduziria semântica em transações  impromptu."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"Às vezes você não quer inicializar uma coleção muito grande, mas precisa de "
+"algumas informações, como o mesmo tamanho, ou um subconjunto de seus dados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"Você pode usar um filtro de coleção para saber seu tamanho sem inicializá-la:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"O método <literal>createFilter()</literal> é usado também para retornar "
+"algus dados de uma coleção eficientemente sem precisar inicializar a coleção "
+"inteira:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "Usando busca em lote"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"O Hibernate pode fazer uso eficiente de busca em lote, ou seja o Hibernate "
+"pode carregar diversos proxies não inicializados, se um proxy for acessado "
+"(ou coleções). A busca em lote é uma otimização da estratégia da busca de "
+"seleção lazy. Existem duas maneiras para você usar a busca em lote: no nível "
+"da classe ou no nível da coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"A recuperação em lote para classes/entidades é mais fácil de entender. "
+"Imagine que você tem a seguinte situação em tempo de execução: você tem 25 "
+"instâncias de <literal>Cat</literal> carregadas em uma <literal>Session</"
+"literal>, cada <literal>Cat</literal> possui uma referência ao seu "
+"<literal>owner</literal>, que é da classe <literal>Person</literal>. A "
+"classe <literal>Person</literal> é mapeada com um proxy, <literal>lazy=\"true"
+"\"</literal>. Se você interar sobre todos os Cat's e chamar <literal>getOwner"
+"()</literal> em cada, o Hibernate irá por padrão executar 25 comandos "
+"<literal>SELECT()</literal>, para buscar os proxies de owners. Você pode "
+"melhorar esse comportamento especificando um <literal>batch-size</literal> "
+"no mapeamento da classe <literal>Person</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr ""
+"O Hibernate irá executar agora apenas três consultas; o padrão é 10, 10, 5."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"Você também pode habilitar busca em lote de uma coleção. Por exemplo, se "
+"cada <literal>Person</literal> tem uma coleção preguiçosa de <literal>Cat</"
+"literal>s e 10 persons estão já carregadas em uma <literal>Session</"
+"literal>, serão gerados 10 <literal>SELECT</literal>s ao se interar todas as "
+"persons, um para cada chamada de <literal>getCats()</literal>. Se você "
+"habilitar busca em lote para a coleção de <literal>cats</literal> no "
+"mapeamento da classe <literal>Person</literal>, o Hibernate pode fazer uma "
+"pré carga das coleções:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"Com um <literal>batch-size</literal> de 3, o Hibernate irá carregar 3, 3, 3, "
+"1 coleções em 4 <literal>SELECT</literal>s. Novamente, o valor da função "
+"depende do número esperado de coleções não inicializadas em determinada "
+"<literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"A busca em lote de coleções é particularmente útil quando você tem uma "
+"árvore encadeada de ítens, ex.: o típico padrão bill-of-materials (Se bem "
+"que um <emphasis>conjunto encadeado</emphasis> ou <emphasis>caminho "
+"materializado</emphasis> pode ser uma opção melhor para árvores com mais "
+"leitura."
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "Usando busca de subseleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"Se uma coleção ou proxy simples precisa ser recuperado, o Hibernate carrega "
+"todos eles rodando novamente a consulta original em uma subseleção. Isso "
+"funciona da mesma maneira que busca em lote, sem carregar tanto."
+
+#. Tag: title
+#, no-c-format
+msgid "Fetch profiles"
+msgstr "Perfis de Busca "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+"Outra forma de afetar a estratégia de busca para o carregamento de objetos "
+"associados é através do chamado perfil de busca, que é uma associação de "
+"configuração de nomeada com o <interfacename>org.hibernate.SessionFactory</"
+"interfacename>, porém ativado pelo nome no <interfacename>org.hibernate."
+"Session</interfacename>. Uma vez ativado no <interfacename>org.hibernate."
+"Session</interfacename>, o perfil de busca será afetado pelo "
+"<interfacename>org.hibernate.Session</interfacename> até que o mesmo seja "
+"completamente desativado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr ""
+"O que isto significa? A explicação será através de um exemplo. Vamos dizer "
+"que nós temos os seguintes mapeamentos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+"Normalmente, quando você recebe uma referência para um cliente em "
+"particular, o conjunto do cliente de pedidos será lento, significando que "
+"nós ainda não baixamos estes pedidos a partir do banco de dados. Na maioria "
+"das vezes isto é bom. Agora vamos imaginar que você possui um determinado "
+"caso de uso, onde é mais eficiente carregar o cliente e outros pedidos "
+"juntos. Uma maneira correta é utilizar as estratégias de \"busca dinâmica\" "
+"através de um HQL ou consultas de critério. Entretanto, outra opção é usar "
+"um perfil de busca para atingir o mesmo objeto. Apenas adicione o seguinte a "
+"seu mapeamento:"
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr "ou ainda:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr ""
+"Agora que o código seguinte irá carregar ambos cliente <emphasis>e outros "
+"pedidos</emphasis>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+"Apenas os perfis de busca em estilo são suportados, mas planeja-se o suporte "
+"de estilos adicionais. Consulte <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> para maiores detalhes."
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "Usando busca preguiçosa de propriedade"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"O Hibernate3 suporta a busca lazy de propriedades individuais. Essa técnica "
+"de otimização é também conhecida como <emphasis>grupos de busca</emphasis>. "
+"Veja que esta é mais uma característica de marketing já que na prática, é "
+"mais importante a otimização nas leituras dos registros do que na leitura "
+"das colunas. Porém, carregar apenas algumas propriedades de uma classe pode "
+"ser útil em casos extremos, onde tabelas legadas podem ter centenas de "
+"colunas e o modelo de dados não pode ser melhorado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"Para habilitar a carga de propriedade lazy, é preciso ajustar a função "
+"<literal>lazy</literal> no seu mapeamento de propriedade:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"A carga de propriedades lazy requer instrumentação de bytecode. Se suas "
+"classes persistentes não forem melhoradas, o Hibernate irá ignorar "
+"silenciosamente essa configuração e usará a busca imediata."
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr "Para instrumentação de bytecode, use a seguinte tarefa do Ant:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"Uma forma diferente de evitar leitura de coluna desnecessária, ao menos para "
+"transações de somente leitura, deve-se usar os recursos de projeção do HQL "
+"ou consultas por Critério. Isto evita a necessidade de processamento de "
+"bytecode em build-time e é certamente uma melhor solução."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"Você pode forçar a busca antecipada comum de propriedades usando "
+"<literal>buscar todas as propriedades</literal> no HQL."
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "O Cachê de Segundo Nível"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Uma <literal>Session</literal> do Hibernate é um cache de nível transacional "
+"de dados persistentes. É possível configurar um cluster ou um cache de nível "
+"JVM (nível <literal>SessionFactory</literal>) em uma estrutura classe por "
+"classe e coleção por coleção. Você pode até mesmo plugar em um cache em "
+"cluster. Tenha cuidado, pois os caches nunca sabem das mudanças feitas em "
+"armazenamento persistente por um outro aplicativo. No entanto, eles podem "
+"ser configurados para dados em cache vencido regularmente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"Você tem a opção de informar o Hibernate sobre qual implementação de cache "
+"utilizar, especificando o nome de uma classe que implementa <literal>org."
+"hibernate.cache.CacheProvider</literal> usando a propriedade "
+"<literal>hibernate.cache.provider_class</literal>. O Hibernate vem envolvido "
+"com um número de integrações construídas com provedores de cache de fonte "
+"aberta (listados abaixo). Além disso, você pode implementar seu próprio e "
+"plugá-lo como mencionado acima. Note que as versões anteriores ao padrão 3.2 "
+"utilizam EhCache como provedor de cache padrão. "
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "Provedores de Cache "
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "Cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "Classe de provedor"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "Tipo"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "Segurança de Cluster"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "Cache de Consulta Suportado"
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr "Hashtable (não recomendado para uso de produção)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "memória"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr "sim"
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "memória, disco"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "clustered (ip multicast)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "sim (invalidação em cluster)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr "JBoss Cache 1.x"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "(ip multicast) em cluster, transacional"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "sim (replicação)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "sim (solicitação de sync. de relógio)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 2"
+msgstr "JBoss Cache 2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "sim (invalidação ou replicação)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "Mapeamento de Cache"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"O elemento <literal>&lt;cache&gt;</literal> de uma classe ou mapeamento de "
+"coleção possui a seguinte forma:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>uso</literal> (solicitado) especifica a estratégia de cache: "
+"<literal>transacional</literal>, <literal>leitura-escrita</literal>, "
+"<literal>leitura-escrita não estrito</literal> ou <literal>somente leitura</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (opcional: padrão à classe ou nome papel da "
+"coleção): especifica o nome da região do cache de segundo nível"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (opcional: padrão para <literal>all</literal>) "
+"<literal>non-lazy</literal>: especifica que a propriedade da entidade "
+"mapeada com <literal>lazy=\"true\"</literal> pode não estar em cache quando "
+"o nível da função busca lazy for habilitada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"De forma alternativa, você poderá especificar os elementos <literal>&lt;"
+"class-cache&gt;</literal> e <literal>&lt;collection-cache&gt;</literal> em "
+"<literal>hibernate.cfg.xml</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"A função <literal>uso </literal> especifica uma <emphasis>estratégia de "
+"concorrência de cache</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "Estratégia: somente leitura"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"Se sua aplicação precisar ler mas nunca modificar instâncias de uma classe "
+"persistente, pode-se utilizar um cache de <literal>read-only</literal>. Esta "
+"é a estratégia de desempenho mais simples e melhor. É também perfeitamente "
+"seguro para uso em um cluster."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "Estratégia: leitura/escrita"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"Se a aplicação precisar atualizar dados, um cache de <literal>read-write</"
+"literal> pode ser mais apropriado. Esta estratégia de cache nunca deve ser "
+"usada se solicitado um nível de isolação de transação serializável. Se o "
+"cache for usado em um ambiente JTA, você deve especificar a propriedade "
+"<literal>hibernate.transaction.manager_lookup_class</literal>, nomeando uma "
+"estratégia por obter o <literal>TransactionManager</literal> JTA. Em outros "
+"ambientes, você deve assegurar que a transação está completa quando a "
+"<literal>Session.close()</literal> ou <literal>Session.disconnect()</"
+"literal> for chamada. Se desejar utilizar esta estratégia em um cluster, "
+"você deve assegurar que a implementação de cache adjacente suporta o "
+"bloqueio. Os provedores de cache built-in <emphasis>não</emphasis> suportam "
+"o bloqueamento."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "Estratégia: leitura/escrita não estrita"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"Se a aplicação somente precisa atualizar dados ocasionalmente (ou seja, se "
+"for extremamente improvável que as duas transações tentem atualizar o mesmo "
+"ítem simultaneamente) e não for requerido uma isolação de transação estrita, "
+"o uso deum cache de <literal>nonstrict-read-write</literal> pode ser mais "
+"apropriado. Se um cache é usado em ambiente JTA, você deverá especificar o "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Em outros "
+"ambientes, você deve assegurar que a transação está completa quando a "
+"<literal>Session.close()</literal> ou <literal>Session.disconnect()</"
+"literal> for chamada."
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "Estratégia: transacional"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"A estratégia de cache <literal>transactional</literal> provê suporte para "
+"provedores de cache transacional completo como o JBoss TreeCache. Tal cache, "
+"deve ser usado somente em um ambiente JTA e você deverá especificar o "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "Compatibilidade de Estratégia de Concorrência de Cache Provedor"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"Nenhum provedor de cache suporta todas as estratégias de concorrência de "
+"cache. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"A seguinte tabela mostra qual provedor é compatível com qual estratégia de "
+"concorrência. "
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr "Suporte de Estratégia de Concorrência de Cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "somente leitura"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "leitura-escrita não estrita"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "leitura-escrita"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transacional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "Gerenciando os caches"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"Quando passar um objeto para <literal>save()</literal>, <literal>update()</"
+"literal> ou <literal>saveOrUpdate()</literal> e quando recuperar um objeto "
+"usando um <literal>load()</literal>, <literal>get()</literal>, <literal>list"
+"()</literal>, <literal>iterate()</literal> ou <literal>scroll()</literal>, "
+"este objeto será adicionado ao cache interno da <literal>Session</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"Quando o <literal>flush()</literal> for subsequentemente chamado, o estado "
+"deste objeto será sincronizado com o banco de dados. Se você não desejar que "
+"esta sincronização aconteça ou se você estiver processando uma grande "
+"quantidade de objetos e precisar gerenciar a memória de forma eficiente, o "
+"método <literal>evict()</literal> pode ser usado para remover o objeto de "
+"suas coleções de cache de primeiro nível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"A <literal>Session</literal> também oferece um método<literal>contains()</"
+"literal> para determinar se uma instância pertence ao cache de sessão."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"Para despejar completamente todos os objetos do cache de Sessão, chame "
+"<literal>Session.clear()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"Para o cache de segundo nível, existem métodos definidos na "
+"<literal>SessionFactory</literal> para despejar o estado de cache de uma "
+"instância, classe inteira, instância de coleção ou papel de coleção inteiro."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"O <literal>CacheMode</literal> controla como uma sessão em particular "
+"interage com o cache de segundo nível:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - lê e escreve itens ao cache de segundo "
+"nível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal>: itens de leitura do cache de segundo "
+"nível. Não escreve ao cache de segundo nível, exceto quando atualizar dados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal>: escreve itens ao cache de segundo nível. "
+"Não lê a partir do cache de segundo nível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal>: escreve itens ao cache de segundo "
+"nível, mas não lê a partir do cache de segundo nível. Passa o efeito de "
+"<literal>hibernate.cache.use_minimal_puts</literal>, forçando uma "
+"atualização do cache de segundo nível para que todos os itens leiam a partir "
+"do banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"Para navegar o conteúdo do segundo nível ou região de cache de consulta, use "
+"o<literal>Statistics</literal> API:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"Você precisará habilitar estatísticas e, opcionalmente, forçar o Hibernate a "
+"manter as entradas de cache em um formato mais compreensível: "
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "O Cache de Consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"O conjunto de resultado de consulta pode também estar em cache. Isto é útil, "
+"somente para consultas que são rodadas freqüentemente com os mesmos "
+"parâmetros. "
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr "Ativação do cache de consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+"A aplicação do cache nos resultados de consulta introduz alguns resultados "
+"referentes o seu processamento transacional normal de aplicações. Por "
+"exemplo, se você realizar o cache nos resultados de uma consulta do Person "
+"Hibernate, você precisará acompanhar quando estes resultados deverão ser "
+"inválidos devido alterações salvas no Person. Tudo isto, acompanhado com o "
+"fato de que a maioria dos aplicativos não recebem benefício algum ao "
+"realizar o cache nos resultados da consulta, levando o Hibernate a desativar "
+"o cache de resultados de consulta por padrão. Para uso do cache de consulta, "
+"você primeiro precisa ativar o cache de consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr "Esta configuração cria duas novas regiões de cache:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, mantendo os "
+"resultados da consulta com cache."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, mantém os "
+"timestamps das atualizações mais recentes para tabelas consultáveis. Elas "
+"são usadas para validar os resultados uma vez que elas são servidas a partir "
+"do cache de consulta."
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+"Se você configurar sua implementação de cache adjacente para usar expirar ou "
+"intervalo, é bastante importante que o intervalo do cache da região de cache "
+"adjacente para o UpdateTimestampsCache seja coonfigurado num valor mais alto "
+"que os intervalos de qualquer um dos caches de consulta. Na realidade, nós "
+"recomendamos que a região UpdateTimestampsCache não seja configurada para "
+"expirar. Perceba que uma política expirar do cache LRU nunca será apropriada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"Conforme mencionado acima, a maioria das consultas não se beneficiam do "
+"cache ou de seus resultados. Portanto por padrão, as consultas individuais "
+"não estão em cache mesmo depois de ativar o cache de consulta. Para "
+"habilitar o caching de resultados, chame <literal>org.hibernate.Query."
+"setCacheable(true)</literal>. Esta chamada permite que a consulta procure "
+"por resultados de caches existentes ou adicione seus resultados ao cache "
+"quando for executado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+"O cache de consulta não realiza o cache ao estado de entidades atuais no "
+"cache, ele apenas realiza o cache nos valores identificadores e resultados "
+"do tipo de valor. Por esta razão, o cache de consulta deve sempre ser usado "
+"em conjunção com o cache de segundo nível para as entidades esperadas a "
+"sofrerem o cache como parte de um cache de resultado de consulta (apenas com "
+"o cache de coleção)."
+
+#. Tag: title
+#, no-c-format
+msgid "Query cache regions"
+msgstr "Regiões de cache de consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"Se você solicitar um controle de granulado fino com políticas de validade do "
+"cache de consulta, você poderá especificar uma região de cache nomeada para "
+"uma consulta em particular, chamando <literal>Query.setCacheRegion()</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"Se você quiser forçar um cache de consulta para uma atualização de sua "
+"região (independente de quaisquer resultados com cache encontrados nesta "
+"região), você poderá usar <literal>org.hibernate.Query.setCacheMode"
+"(CacheMode.REFRESH)</literal>. Juntamente com a região que você definiu para "
+"o cache gerado, o Hibernate seletivamente forçará os resultados com cache, "
+"naquela região particular a ser atualizada. Isto é particularmente útil em "
+"casos onde dados adjacentes podem ter sido atualizados através de um "
+"processo em separado , além de ser uma alternativa mais eficiente se "
+"aplicada ao despejo de uma região de cache através de "
+"<literal>SessionFactory.evictQueries()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "Entendendo o desempenho da Coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+"Nas seções anteriores nós descrevemos as coleções e seus aplicativos. Nesta "
+"seção nós exploraremos mais problemas em relação às coleções no período de "
+"execução."
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "Taxonomia"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "O Hibernate define três tipos básicos de coleções:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "Coleções de valores"
+
+#. Tag: para
+#, no-c-format
+msgid "one-to-many associations"
+msgstr "Associações um-para-muitos "
+
+#. Tag: para
+#, no-c-format
+msgid "many-to-many associations"
+msgstr "Associações muitos-para-muitos "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"A classificação distingue as diversas tabelas e relacionamento de chave "
+"externa, mas não nos diz tudo que precisamos saber sobre o modelo "
+"relacional. Para entender completamente a estrutura relacional e as "
+"características de desempenho, devemos também considerar a estrutura da "
+"chave primária que é usada pelo Hibernate para atualizar ou deletar linhas "
+"de coleções. Isto sugere a seguinte classificação:"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "Coleções indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "conjuntos"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "Bags"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"Todas as coleções indexadas (mapas, listas, matrizes) possuem uma chave "
+"primária, que consiste em colunas <literal>&lt;key&gt;</literal> e "
+"<literal>&lt;index&gt;</literal>. Neste caso, as atualizações de coleção são "
+"geralmente muito eficientes. A chave primária pode ser indexada de forma "
+"eficiente e uma linha em particular pode ser localizada de forma eficiente "
+"quando o Hibernate tentar atualizar ou deletá-la. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"Os conjuntos possuem uma chave primária que consiste em <literal>&lt;key&gt;"
+"</literal> e colunas de elemento. Isto pode ser menos eficiente para alguns "
+"tipos de elementos de coleções, especialmente elementos compostos ou textos "
+"grandes ou ainda campos binários. O banco de dados pode não ser capaz de "
+"indexar uma chave primária complexa de forma tão eficiente. Por um outro "
+"lado, para associações um-para-muitos ou muitos-para-muitos, especialmente "
+"no caso de identificadores sintáticos, é bem provável que seja tão eficiente "
+"quanto. Se você quiser que o <literal>SchemaExport</literal> crie para você "
+"uma chave primária de um <literal>&lt;set&gt;</literal> você deverá declarar "
+"todas as colunas como <literal>not-null=\"true\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"Os mapeamentos <literal>&lt;idbag&gt;</literal> definem uma chave "
+"substituta, para que elas sejam sempre muito eficientes ao atualizar. Na "
+"verdade, este é o melhor caso. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"As Bags são os piores casos. Como uma bag permite duplicar valores de "
+"elementos e não possui coluna de índice, não se deve definir nenhuma chave "
+"primária. O Hibernate não tem como distinguir entre linhas duplicadas. O "
+"Hibernate resolve este problema, removendo completamente em um único "
+"<literal>DELETE</literal> e recria a coleção quando mudar. Isto pode ser "
+"bastante ineficiente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"Note que para uma associação um-para-muitos, a chave primária pode não ser a "
+"chave primária física da tabela do banco de dados, mas mesmo neste caso, a "
+"classificação acima é ainda útil. Isto reflete como o Hibernate \"localiza\" "
+"linhas individuais da coleção."
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr ""
+"Listas, mapas, bags de id e conjuntos são coleções mais eficientes para "
+"atualizar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"A partir da discussão acima, deve ficar claro que as coleções indexadas e "
+"conjuntos (geralmente) permitem uma operação mais eficente em termos de "
+"adição, remoção e atualização de elementos.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"Existe ainda, mais uma vantagem, das coleções indexadas sob conjuntos para "
+"associações muitos-para-muitos. Por causa da estrutura de um <literal>Set</"
+"literal>, o Hibernate nunca utiliza o comando <literal>UPDATE</literal> em "
+"uma linha quando um elemento é \"modificado\". As mudanças para o <literal> "
+"Conjunto</literal> funcionam sempre através do comando <literal>INSERT</"
+"literal> e <literal>DELETE</literal> de linhas individuais. Novamente, esta "
+"consideração não se aplica às associações um para muitos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"Após observar que as matrizes não podem ser preguiçosas, nós concluimos que "
+"as listas, mapas e bags de id são tipos de coleções com maior desempenho "
+"(não inverso), com conjuntos que não ficam atrás. Espera-se que os conjuntos "
+"sejam um tipo mais comum de coleção nas aplicações Hibernate. Isto porque as "
+"semânticas \"conjunto\" são mais naturais em modelos relacionais. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"No entanto, em modelos de domínio de Hibernate bem criados, geralmente vemos "
+"que a maioria das coleções são de fato, associações um-para-muitos com "
+"<literal>inverse=\"true\"</literal>. Para estas associações, a atualização é "
+"manipulada pelo lado muitos-para-um de uma associação e portanto "
+"considerações de desempenho de atualização de coleção simplesmente não se "
+"aplicam a este caso.  "
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "As Bags e listas são as coleções de inversão mais eficientes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"Existe um caso em particular no qual as bags (e também as listas) possuem um "
+"desempenho muito maior do que conjuntos. Para uma coleção com "
+"<literal>inverse=\"true\"</literal>, o idioma de relacionamento um-para-um "
+"bidirecional padrão, por exemplo, podemos adicionar elementos a uma bag ou "
+"uma lista sem precisar inicializar (buscar) os elementos da bag. Isto "
+"acontece porque a <literal>Collection.add()</literal> ou <literal>Collection."
+"addAll()</literal> deve sempre retornar verdadeira para uma bag ou "
+"<literal>List</literal>. Isto pode fazer que o código comum seguinte seja "
+"muito mais rápido:"
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "Deletar uma vez"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"Às vezes, deletar elementos de coleção um por um pode ser extremamente "
+"ineficiente. O Hibernate não é completamente burro, portanto ele sabe que "
+"não deve fazer isso no caso de uma coleção que tenha sido esvaziada "
+"recentemente (se você chamou <literal>list.clear()</literal>, por exemplo). "
+"Neste caso, o Hibernate irá editar um único <literal>DELETE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"Vamos supor que tenha adicionado um elemento único à uma coleção de tamanho "
+"vinte e então remove dois elementos. O Hibernate irá editar uma instrução "
+"<literal>INSERT</literal> e duas instruções <literal>DELETE</literal>, a não "
+"ser que a coleção seja uma bag. Isto é certamente desejável."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"No entanto, suponha que removamos dezoito elementos, deixando dois e então "
+"adicionando três novos elementos. Existem duas formas possíveis de se "
+"proceder:"
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr "delete dezoito linhas uma por uma e então insira três linhas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr ""
+"remova toda a coleção em um SQL <literal>DELETE</literal> e insira todos os "
+"cinco elementos atuais, um por um"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"O Hibernate não sabe que a segunda opção é provavelmente mais rápida neste "
+"caso. O Hibernate não deseha saber a opção, uma vez que tal comportamento "
+"deve confundir os triggers do banco de dados, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"Felizmente, você pode forçar este comportamento (ou seja, uma segunda "
+"estratégia) a qualquer momento, descartando (ou seja, desreferenciando) a "
+"coleção original e retornando uma coleção recentemente instanciada com todos "
+"os elementos atuais. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"É claro que, deletar somente uma vez, não se aplica às coleções mapeadas "
+"<literal>inverse=\"true\"</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "Monitorando desempenho"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"A otimização não é muito usada sem o monitoramento e acesso ao número de "
+"desempenho. O Hibernate oferece uma grande variedade de números sobre suas "
+"operações internas. Estatísticas em Hibernate estão disponíveis através do "
+"<literal>SessionFactory</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "Monitorando uma SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"Você poderá acessar as métricas da <literal>SessionFactory</literal> de duas "
+"formas. Sua primeira opção é chamar a <literal>sessionFactory.getStatistics()"
+"</literal> e ler ou dispôr as <literal>Estatísticas</literal> você mesmo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"O Hibernate também usa o JMX para publicar métricas se você habilitar o "
+"MBean de <literal>StatisticsService</literal>. Você deve habiliar um MBean "
+"único para todas as suas <literal>SessionFactory</literal> ou uma por "
+"factory. Veja o seguinte código para exemplos de configurações "
+"minimalísticos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"Você pode (des)ativar o monitoramento para uma <literal>SessionFactory</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"no tempo de configuração, ajuste <literal>hibernate.generate_statistics</"
+"literal> para <literal>falso</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"em tempo de espera: <literal>sf.getStatistics().setStatisticsEnabled(true)</"
+"literal> ou <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"As estatísticas podem ser reajsutadas de forma programática, usando o método "
+"<literal>clear()</literal>. Um resumo pode ser enviado para o usuário (nível "
+"de info) usando o método <literal>logSummary()</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "Métricas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"O Hibernate oferece um número de métricas, desde informações bem básicas até "
+"especializadas, somente relevantes a certos cenários. Todos os contadores "
+"disponíveis estão descritos na API da interface <literal>Statistics</"
+"literal>, em três categorias: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"As métricas relacionadas ao uso da <literal>Sessão</literal>, tal como um "
+"número de sessões em aberto, conexões JDBC recuperadas, etc."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr ""
+"As métricas relacionadas às entidades, coleções, consultas e caches como um "
+"todo (mais conhecido como métricas globais). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr ""
+"Métricas detalhadas relacionadas à uma entidade em particular, coleção, "
+"consulta ou região de cache."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"Por exemplo, você pode verificar a coincidência de um cache, perder e "
+"colocar a relação entre as entidades, colações e consultas e tempo médio que "
+"uma consulta precisa. Esteja ciente de que o número de milisegundos é "
+"sujeito a aproximação em Java. O Hibernate é preso à precisão do JVM, em "
+"algumas plataformas a precisão chega a ser de 10 segundos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"Os Getters simples são usados para acessar métricas globais (ou seja, não "
+"presos à uma entidade em particular, coleção, região de cache, etc.) Você "
+"pode acessar as métricas de uma entidade em particular, coleção ou região de "
+"cache através de seu nome e através de sua representação de HQL ou SQL para "
+"consultas. Por favor consulte a Javadoc API <literal>Statistics</literal>, "
+"<literal>EntityStatistics</literal>, <literal>CollectionStatistics</"
+"literal>, <literal>SecondLevelCacheStatistics</literal>, e "
+"<literal>QueryStatistics</literal> para maiores informações. O seguinte "
+"código mostra um exemplo simples:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"Para trabalhar em todas as entidades, coleções, consultas e caches "
+"regionais, você poderá recuperar os nomes de lista de entidades, coleções, "
+"consultas e caches regionais com os seguintes métodos: <literal>getQueries()"
+"</literal>, <literal>getEntityNames()</literal>, "
+"<literal>getCollectionRoleNames()</literal>, e "
+"<literal>getSecondLevelCacheRegionNames()</literal>. "

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,747 @@
+# translation of persistent_classes.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: persistent_classes\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-18 14:48+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "Classes Persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state. For example, an instance can instead be transient "
+"or detached."
+msgstr ""
+"As classes persistentes são classes dentro de um aplicativo que implementa "
+"as entidades de problemas de negócios (ex.: Cliente e Pedido em um "
+"aplicativo e-commerce). Nem todas as instâncias de uma classe persistente "
+"estão em estado persistente, uma instância pode, ao invés disso, ser "
+"transiente ou desanexada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You can express a domain model "
+"in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr ""
+"O Hibernate trabalha melhor se estas classes seguirem uma regra simples, "
+"também conhecida como modelo de programação Objeto de Java Antigo Simples "
+"(POJO). No entanto, nenhuma destas regras são difíceis solicitações. "
+"Certamente, o Hibernate3 considera muito pouco da natureza de seus objetos "
+"persistentes. Você pode expressar um modelo de domínio de outras formas (por "
+"exemplo: utilizando árvores de instâncias <literal>Map</literal>)."
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "Um exemplo simples de POJO"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Most Java applications require a persistent class representing felines. For "
+"example:"
+msgstr ""
+"A maior parte dos aplicativos Java requerem uma classe persistente que "
+"representa os felinos. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The four main rules of persistent classes are explored in more detail in the "
+"following sections."
+msgstr ""
+"As quatro regras principais das classes persistentes são descritas em "
+"maiores detalhes nas seguintes seções."
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "Implemente um construtor de não argumento"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which can be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. It "
+"is recommended that you have a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal> possui um construtor de não argumento. Todas as "
+"classes persistentes devem ter um construtor padrão (que não pode ser "
+"público), para que o Hibernate possa instanciá-lo utilizando um "
+"<literal>Constructor.newInstance()</literal>. Nós recomendamos enfaticamente "
+"ter um construtor padrão com ao menos uma visibilidade <emphasis>package</"
+"emphasis> para a geração de um proxy de tempo de espera no Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "Providencie uma propriedade de identificador (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. If your legacy database table has "
+"composite keys, you can use a user-defined class with properties of these "
+"types (see the section on composite identifiers later in the chapter.)"
+msgstr ""
+"<literal>Cat</literal> possui uma propriedade chamada <literal>id</literal>. "
+"Esta propriedade mapeia para a coluna de chave primária de uma tabela de "
+"banco de dados. A propriedade pode ter sido chamada por qualquer nome e seu "
+"tipo pode ter sido qualquer um primitivo, ou qualquer tipo \"wrapper\", "
+"<literal>java.lang.String</literal> ou <literal>java.util.Date</literal>. Se "
+"sua tabela de banco de dados de legacia possuir chaves compostas, você "
+"também poderá usar uma classe de usuário definido, com propriedades destes "
+"tipos (veja a seção de identificadores compostos mais adiante.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"A propriedade de identificador é estritamente opcional. Você pode deixá-los "
+"desligados e deixar que o Hibernate encontre os identificadores de objeto "
+"internamente. No entanto, não recomendamos que faça isto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes that declare an "
+"identifier property:"
+msgstr ""
+"Na verdade, algumas funcionalidades estão disponíveis somente para classes "
+"que declaram uma propriedade de identificador:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr ""
+"Reconexão transitiva para objetos desanexados (atualização de cascata ou "
+"mesclagem de cascata) - veja <xref linkend=\"objectstate-transitive\" />"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "<literal>Session.saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "<literal>Session.merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We recommend that you declare consistently-named identifier properties on "
+"persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr ""
+"Recomendamos que você declare propriedades de identificador nomeados de "
+"forma consistente nas classes persistentes e que você use um tipo anulável "
+"(ou seja, não primitivo)."
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "Prefira classes não finais (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Um recurso central do Hibernate, <emphasis>proxies</emphasis>, depende da "
+"classe persistente ser tanto não final como uma implementação de uma "
+"interface que declare todos os métodos públicos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate. You will not, however, be able to use proxies for "
+"lazy association fetching which will ultimately limit your options for "
+"performance tuning."
+msgstr ""
+"Você pode persistir as classes <literal>final</literal> que não implementam "
+"uma interface com o Hibernate, mas não poderá usar os proxies para busca por "
+"associação lazy, que irá limitar suas opções para ajuste de desempenho. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"Você deve evitar declarar métodos <literal>public final</literal> em classes "
+"não finais. Se você desejar usar uma classe com um método <literal>public "
+"final</literal> você deve desabilitar o proxy explicitamente, ajustando "
+"<literal>lazy=\"false\"</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr "Declare acessores e mutadores para campos persistentes (opcional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. It is "
+"better to provide an indirection between the relational schema and internal "
+"data structures of the class. By default, Hibernate persists JavaBeans style "
+"properties and recognizes method names of the form <literal>getFoo</"
+"literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If "
+"required, you can switch to direct field access for particular properties."
+msgstr ""
+"<literal>Cat</literal> declara os métodos assessores para todos os seus "
+"campos persistentes. Muitas ferramentas ORM persistem diretamente variáveis "
+"de instâncias. Acreditamos ser melhor prover uma indireção entre o esquema "
+"relacional e as estruturas de dados internos da classe. Por padrão, o "
+"Hibernate persiste as propriedades de estilo JavaBeans, e reconhece nomes de "
+"métodos da forma <literal>getFoo</literal>, <literal>isFoo</literal> e "
+"<literal>setFoo</literal>. Caso solicitado, você pode mudar para direcionar "
+"acesso ao campo para certas propriedades, caso seja necessário. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"As propriedades precisam <emphasis>not</emphasis> ser declaradas como "
+"públicas. O Hibernate pode persistir uma propriedade com um par get/set "
+"padrão <literal>protegido</literal> ou <literal>privado</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "Implementando herança"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr ""
+"Uma subclasse também deve observar as primeiras e segundas regras. Ela herda "
+"sua propriedade de identificador a partir das superclasses, <literal>Cat</"
+"literal>. Por exemplo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr "Implementando <literal>equals()</literal> e <literal>hashCode()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you:"
+msgstr ""
+"Você precisa substituir os métodos <literal>equals()</literal> e "
+"<literal>hashCode()</literal> se você:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations); <emphasis>and</"
+"emphasis>"
+msgstr ""
+"pretender inserir instâncias de classes persistentes em um <literal>Set</"
+"literal> (a forma mais recomendada é representar associações de muitos "
+"valores), <emphasis>e</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "pretender usar reconexão de instâncias desanexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. When you mix instances "
+"retrieved in different sessions, you must implement <literal>equals()</"
+"literal> and <literal>hashCode()</literal> if you wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"O Hibernate garante a equivalência de identidades persistentes (linha de "
+"base de dados) e identidade Java somente dentro de um certo escopo de "
+"sessão. Dessa forma, assim que misturarmos instâncias recuperadas em sessões "
+"diferentes, devemos implementar <literal>equals()</literal> e "
+"<literal>hashCode()</literal> se quisermos ter semânticas significativas "
+"para os <literal>Set</literal>s.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, "
+"because they are equal. If both are added to a <literal>Set</literal>, you "
+"will only have one element in the <literal>Set</literal>). Unfortunately, "
+"you cannot use that approach with generated identifiers. Hibernate will only "
+"assign identifier values to objects that are persistent; a newly created "
+"instance will not have any identifier value. Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. This is not a "
+"Hibernate issue, but normal Java semantics of object identity and equality."
+msgstr ""
+"A forma mais óbvia é implementar <literal>equals()</literal>/"
+"<literal>hashCode()</literal> comparando o valor do identificador de ambos "
+"objetos. Caso o valor seja o mesmo, ambos devem ter a mesma linha de base de "
+"dados, assim eles serão iguais (se ambos forem adicionados a um "
+"<literal>Set</literal>, nós só teremos um elemento no <literal>Set</"
+"literal>). Infelizmente, não podemos usar esta abordagem com os "
+"identificadores gerados. O Hibernate atribuirá somente os valores de "
+"identificadores aos objetos que forem persistentes, uma instância "
+"recentemente criada não terá nenhum valor de identificador. Além disso, se "
+"uma instância não for salva e estiver em um <literal>Set</literal>, salvá-la "
+"atribuirá um valor de identificador ao objeto. Se <literal>equals()</"
+"literal> e <literal>hashCode()</literal> fossem baseados em um valor "
+"identificador, o código hash teria mudado, quebrando o contrato do "
+"<literal>Set</literal>. Consulte o website do Hibernate para acessar uma "
+"discussão completa sobre este problema. Note que esta não é uma edição do "
+"Hibernate, e sim semânticas naturais do Java de igualdade e identidade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is recommended that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> using <emphasis>Business key equality</"
+"emphasis>. Business key equality means that the <literal>equals()</literal> "
+"method compares only the properties that form the business key. It is a key "
+"that would identify our instance in the real world (a <emphasis>natural</"
+"emphasis> candidate key):"
+msgstr ""
+"Recomendamos implementar <literal>equals()</literal> e <literal>hashCode()</"
+"literal> usando <emphasis>Business key equality</emphasis>. A chave de "
+"negócios significa que o método <literal>equals()</literal> compara somente "
+"a propriedade que formar uma chave de negócios, uma chave que identificaria "
+"nossa instância na realidade (uma chave de candidato <emphasis>natural</"
+"emphasis>): "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A business key does not have to be as solid as a database primary key "
+"candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable "
+"or unique properties are usually good candidates for a business key."
+msgstr ""
+"Note que uma chave de negócios não tem que ser tão sólida quanto um "
+"candidato de chave primária de base de dados (veja <xref linkend=\"transactions-basics-identity\" />). Propriedades imutáveis ou únicas são "
+"bons candidatos para uma chave de negócios. "
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "Modelos dinâmicos"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>The following features are currently considered experimental and "
+"may change in the near future.</emphasis>"
+msgstr ""
+"<emphasis>Os recursos seguintes são considerados experimentais no momento e "
+"podem mudar no futuro.</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Persistent entities do not necessarily have to be represented as POJO "
+"classes or as JavaBean objects at runtime. Hibernate also supports dynamic "
+"models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) "
+"and the representation of entities as DOM4J trees. With this approach, you "
+"do not write persistent classes, only mapping files."
+msgstr ""
+"Entidades persistentes não precisam ser representadas como classes POJO ou "
+"como objetos JavaBeans em tempo de espera. O Hibernate também suporta "
+"modelos dinâmicos (usando <literal>Map</literal>s de <literal>Map</literal>s "
+"em tempo de execução) e a representação de entidades como árvores DOM4J. Com "
+"esta abordagem, você não escreve classes persistes, somente arquivos de "
+"mapeamentos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You can set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr ""
+"Por padrão, o Hibernate funciona em modo POJO normal. Você deve ajustar um "
+"modo de representação de entidade por padrão para uma certa "
+"<literal>SessionFactory</literal> usando a opção de configuração "
+"<literal>default_entity_mode</literal> (veja <xref linkend=\"configuration-optional-properties\" />). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following examples demonstrate the representation using <literal>Map</"
+"literal>s. First, in the mapping file an <literal>entity-name</literal> has "
+"to be declared instead of, or in addition to, a class name:"
+msgstr ""
+"Os seguintes exemplos demonstram a representação usando <literal>Map</"
+"literal>s. Primeiro, no arquivo de mapeamento, um <literal>entity-name</"
+"literal> precisa ser declarado ao invés de (ou além de) um nome de classe:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though associations are declared using target class names, the target "
+"type of associations can also be a dynamic entity instead of a POJO."
+msgstr ""
+"Note que embora as associações sejam declaradas utilizando nomes de classe, "
+"o tipo alvo de uma associação pode também ser uma entidade dinâmica, ao "
+"invés de um POJO. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, you can, at runtime, work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"Após ajustar o modo de entidade padrão para <literal>dynamic-map</literal> "
+"para a <literal>SessionFactory</literal>, você poderá trabalhar com "
+"<literal>Map</literal>s de <literal>Map</literal>s no período de execução: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the main advantages of dynamic mapping is quick turnaround time for "
+"prototyping, without the need for entity class implementation. However, you "
+"lose compile-time type checking and will likely deal with many exceptions at "
+"runtime. As a result of the Hibernate mapping, the database schema can "
+"easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"As vantagens de um mapeamento dinâmico são o tempo de retorno rápido para "
+"realizar o protótipo sem a necessidade de implementar uma classe de "
+"entidade. No entanto, você perde o tipo de tempo de compilação, verificando "
+"e muito provavelmente terá que lidar com muitas exceções de tempo de espera. "
+"Graças ao mapeamento do Hibernate, o esquema do banco de dados pode ser "
+"facilmente normalizado e seguro, permitindo adicionar uma implementação "
+"modelo de domínio apropriado na camada do topo num futuro próximo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"Modos de representação de entidade podem ser também ajustados para base por "
+"<literal>Session</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you do not have to call <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"Por favor, note que a chamada para a <literal>getSession()</literal> usando "
+"um <literal>EntityMode</literal> está na API de <literal>Session</literal> e "
+"não na <literal>SessionFactory</literal>. Dessa forma, a nova "
+"<literal>Session</literal> compartilha a conexão, transação e outra "
+"informação de contexto JDBC adjacente. Isto significa que você não precisará "
+"chamar <literal>flush()</literal> e <literal>close()</literal> na "
+"<literal>Session</literal> secundária, e também deixar a transação e o "
+"manuseio da conexão para a unidade primária do trabalho. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\" />."
+msgstr ""
+"Você poderá encontrar maiores informações sobre as atividades de "
+"representação XML em <xref linkend=\"xml\" />. "
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "Tuplizadores"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing that knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the corresponding tuplizer knows how create the POJO "
+"through its constructor. It also knows how to access the POJO properties "
+"using the defined property accessors."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, e suas sub-interfaces, são "
+"responsáveis por gerenciar uma certa representação de uma parte de dado, "
+"dada a <literal>org.hibernate.EntityMode</literal> da representação. Se uma "
+"parte de dado é tida como uma estrutura de dado, então o tuplizador se "
+"encarrega de criar tal estrutura de dado e como extrair e injetar valores de "
+"e em tal estrutura de dados. Por exemplo, para um modo POJO, o tuplizador "
+"correspondente sabe como criar um POJO através de seu construtor. Além "
+"disso, ele sabe como acessar propriedades de POJO usando assessores de "
+"propriedades definidas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two high-level types of Tuplizers, represented by the <literal>org."
+"hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate."
+"tuple.component.ComponentTuplizer</literal> interfaces. "
+"<literal>EntityTuplizer</literal>s are responsible for managing the above "
+"mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+"Existem dois tipos de alto nível de Tuplizadores, representados pelas "
+"interfaces <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> e "
+"<literal>org.hibernate.tuple.component.ComponentTuplizer</literal>. Os "
+"<literal>EntityTuplizer</literal>s são responsáveis pelo gerenciamento dos "
+"contratos mencionados acima em relação às entidades, enquanto os "
+"<literal>ComponentTuplizer</literal>s realizam o mesmo para os componentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Users can also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode. Or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizer definitions are attached to the entity or component "
+"mapping they are meant to manage. Going back to the example of our customer "
+"entity:"
+msgstr ""
+"Os usuários podem também plugar seu próprio tuplizador. Talvez você queira "
+"usar uma implementação <literal>java.util.Map</literal> ao invés de uma "
+"<literal>java.util.HashMap</literal> enquanto estiver no modo de entidade "
+"mapa dinâmico, ou talvez você precise definir uma estratégia de geração de "
+"proxy diferente, ao invés de uma utilizada por padrão. Ambas seriam "
+"alcançadas definindo uma implementação de tuplizador personalizada. As "
+"definições do tuplizador estão anexadas à entidade ou ao mapeamento de "
+"componente que tiverem que gerenciar. Retornando ao exemplo da entidade do "
+"nosso cliente:"
+
+#. Tag: title
+#, no-c-format
+msgid "EntityNameResolvers"
+msgstr "EntityNameResolvers"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"interface is a contract for resolving the entity name of a given entity "
+"instance. The interface defines a single method "
+"<methodname>resolveEntityName</methodname> which is passed the entity "
+"instance and is expected to return the appropriate entity name (null is "
+"allowed and would indicate that the resolver does not know how to resolve "
+"the entity name of the given entity instance). Generally speaking, an "
+"<interfacename>org.hibernate.EntityNameResolver</interfacename> is going to "
+"be most useful in the case of dynamic models. One example might be using "
+"proxied interfaces as your domain model. The hibernate test suite has an "
+"example of this exact style of usage under the <package>org.hibernate.test."
+"dynamicentity.tuplizer2</package>. Here is some of the code from that "
+"package for illustration."
+msgstr ""
+"A interface <interfacename>org.hibernate.EntityNameResolver</interfacename> "
+"é um contrato para resolver o nome da entidade de uma instância de entidade "
+"dada. A interface define um <methodname>resolveEntityName</methodname> de "
+"método único que é passado à instância de entidade e é esperado a retornar "
+"ao nome de entidade apropriado (nulo é permitido e indicaria que o "
+"solucionador não saiba como resolver o nome de entidade da instância de "
+"entidade dada). Normalmente, um <interfacename>org.hibernate."
+"EntityNameResolver</interfacename> será mais útil no caso de modelos "
+"dinâmicos. Um exemplo poderá ser usado nas interfaces com proxie no caso dos "
+"modelos dinâmicos. O hibernate test suite possui um exemplo deste estilo "
+"exato de uso sob o <package>org.hibernate.test.dynamicentity.tuplizer2</"
+"package>. Segue abaixo parte do código a partir daquele pacote para "
+"ilustração."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to register an <interfacename>org.hibernate.EntityNameResolver</"
+"interfacename> users must either:"
+msgstr ""
+"Com o objetivo de registrar um <interfacename>org.hibernate."
+"EntityNameResolver</interfacename>, os usuários devem tanto:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link>, implementing the <methodname>getEntityNameResolvers</methodname> "
+"method."
+msgstr ""
+"Implementar um <link linkend=\"persistent-classes-tuplizers\">Tuplizer</"
+"link> personalizado, implementando o método <methodname>getEntityNameResolvers</methodname>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (which is the implementation class for <interfacename>org."
+"hibernate.SessionFactory</interfacename>) using the "
+"<methodname>registerEntityNameResolver</methodname> method."
+msgstr ""
+"Registrá-lo com o <classname>org.hibernate.impl.SessionFactoryImpl</"
+"classname> (que é a classe de implementação para <interfacename>org."
+"hibernate.SessionFactory</interfacename>) usando o método "
+"<methodname>registerEntityNameResolver</methodname>."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,480 @@
+# translation of portability.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: portability\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-18 15:20+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: portability.xml:31
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr "Considerações da Portabilidade do Banco de Dados"
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr "Fundamentos da Portabilidade"
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+"Um dos pontos de venda do Hibernate (e realmente Mapeamento do Objeto/"
+"Relacional como um conjunto) é a noção da portabilidade do banco de dados. "
+"Isto pode significar um usuário de TI interno migrando a partir de um "
+"fornecedor de banco de dados a outro, ou isto pode significar que um "
+"framework ou aplicativo implementável consumindo o Hibernate para produtos "
+"de banco de dados múltiplos de destinação simultaneamente pelos usuários. "
+"Independente do cenário exato, a idéia básica é que você queira que o "
+"Hibernate o ajude a rodar em referência a qualquer número de banco de dados "
+"sem as alterações a seu código e preferencialmente sem quaisquer alterações "
+"ao metadados de mapeamento."
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialeto"
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+"A primeira linha de portabilidade para o Hibernate é o dialeto, que trata-se "
+"de uma especialização de um contrato <classname>org.hibernate.dialect."
+"Dialect</classname>. Um dialeto encapsula todas as diferenças em como o "
+"Hibernate deve comunicar-se com um banco de dados particular para completar "
+"algumas tarefas como obter um valor de seqüência ou estruturar uma consulta "
+"SELECT. O Hibernate vincula uma variedade de dialetos para muitos dos bancos "
+"de dados mais populares. Se você achar que seu banco de dados particular não "
+"está seguindo os mesmos, não será difícil escrever o seu próprio."
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr "Resolução do Dialeto"
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+"Originalmente, o Hibernate sempre solicita que os usuários especifiquem qual "
+"dialeto a ser usado. No caso dos usuários buscarem banco de dados múltiplos "
+"de destinação simultaneamente com as próprias construções que eram "
+"problemáticas. Normalmente, isto solicita que seus próprios usuários "
+"configurem o dialeto do Hibernate ou definam o próprio método de "
+"determinação do valor."
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+"Inicializando com a versão 3.2, o Hibernate introduziu a noção de detecção "
+"automática do dialeto para uso baseado no <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtido a partir de um <interfacename>java."
+"sql.Connection</interfacename> para aquele banco de dados. Era muito melhor, "
+"esperar que esta resolução limitada aos bancos de dados Hibernate soubesse "
+"com antecedência e que em ocasião alguma era configurável ou substituível."
+
+#. Tag: para
+#: portability.xml:77
+#, fuzzy, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException]]></"
+"programlisting>. The basic contract here is that if the resolver "
+"'understands' the given database metadata then it returns the corresponding "
+"Dialect; if not it returns null and the process continues to the next "
+"resolver. The signature also identifies <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname> as possibly being thrown. "
+"A JDBCConnectionException here is interpreted to imply a \"non transient"
+"\" (aka non-recoverable) connection problem and is used to indicate an "
+"immediate stop to resolution attempts. All other exceptions result in a "
+"warning and continuing on to the next resolver."
+msgstr ""
+"Inicializando com a versão 3.3, o Hibernate possui uma maneira muito mais "
+"potente para determinar automaticamente qual dialeto deve ser usado baseando-"
+"se numa série de delegações que determinam qual implementação deve ser usada "
+"baseando-se numa série de delegações que implementam o <interfacename>org."
+"hibernate.dialect.resolver.DialectResolver</interfacename> que define apenas "
+"um método único: <programlisting role=\"JAVA\">public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException</programlisting>. "
+"Este contrato básico é que se o solucionador 'entender' o metadados do banco "
+"de dados dado, ele retornará o Dialeto correspondente. Caso contrário, ele "
+"retornará nulo e o processo continuará ao próximo solucionador. A assinatura "
+"também identifica o <exceptionname>org.hibernate.exception."
+"JDBCConnectionException</exceptionname> como possivelmente lançado. Neste "
+"caso, o JDBCConnectionException é interpretado para implicar um problema de "
+"conexão (também conhecida com não-recuperável) \"não transiente\" e é usado "
+"para indicar uma parada imediata de tentativas de resolução. Todas as demais "
+"exceções resultam num aviso e dão continuidade ao próximo solucionador. "
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+"A melhor parte destes solucionadores é que os usuários também podem "
+"registrar os seus próprios solucionadores personalizados dos quais serão "
+"processados antes dos Hibernates internos. Isto poderá ser útil em um número "
+"diferente de situações: permite uma integração fácil de auto-detecção de "
+"dialetos além daqueles lançados com o próprio Hibernate. Além disto, permite "
+"que você especifique o uso de um dialeto personalizado quando um banco de "
+"dados particular é reconhecido, etc. Para registrar um ou mais "
+"solucionadores, apenas especifique-os (separados por vírgula, tabs ou "
+"espaços) usando o conjunto de configuração 'hibernate."
+"dialect_resolvers' (consulte a constante <constant>DIALECT_RESOLVERS</"
+"constant> no <classname>org.hibernate.cfg.Environment</classname>)."
+
+#. Tag: title
+#: portability.xml:103
+#, no-c-format
+msgid "Identifier generation"
+msgstr "Geração do identificador"
+
+#. Tag: para
+#: portability.xml:105
+#, fuzzy, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics. <note> <para> Hibernate was changed slightly once the implication "
+"of this was better understood so that the insert is delayed in cases where "
+"that is feasible. </para> </note> The underlying issue is that the actual "
+"semanctics of the application itself changes in these cases."
+msgstr ""
+"Quando considerando a portabilidade entre os bancos de dados, outra "
+"importante decisão é selecionar a estratégia de geração do identificador que "
+"você deseja usar. Originalmente, o Hibernate fornecia o gerador "
+"<emphasis>nativo</emphasis> para este propósito, que intencionava selecionar "
+"entre uma estratégia de <emphasis>seqüência</emphasis>, "
+"<emphasis>identidade</emphasis> ou <emphasis>tabela</emphasis> dependendo da "
+"capacidade do banco de dados adjacente. No entanto, uma implicação insidiosa "
+"desta abordagem vêem quando destinando alguns bancos de dados que suportam a "
+"geração de identidade e outros que não suportam. A geração "
+"<emphasis>identidade</emphasis> baseia-se na definição de uma coluna (ou "
+"auto-incremento) IDENTITY para gerenciar o valor identificador. Isto é "
+"conhecido como estratégia de geração pós-inserção devido à inserção ter que "
+"ocorrer antes que nós possamos conhecer o valor identificador. Devido ao "
+"Hibernate depender neste valor identificador para unicamente referenciar "
+"entidades com um contexto persistente, ele deverá imprimir a inserção "
+"imediatamente quando as solicitações dos usuários de entidade estiverem "
+"associados com a sessão (como através save() e.g.) independente das "
+"semânticas de transação atual. "
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way. <note> <para> There are "
+"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
+"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
+"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
+"listitem> </itemizedlist> </para> </note> The idea behind these generators "
+"is to port the actual semantics of the identifer value generation to the "
+"different databases. For example, the <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
+"databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, no-c-format
+msgid "Database functions"
+msgstr "Funções do banco de dados"
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+"Esta é uma área do Hibernate com necessidade de melhoramentos. Este manuseio "
+"de função funciona atualmente muito bem com o HQL, quando falamos das "
+"preocupações de portabilidade. No entanto, é bastante precária em outros "
+"aspectos."
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+"As funções SQL podem ser referenciadas em diversas maneiras pelos usuários. "
+"No entanto, nem todos os bancos de dados suportam o mesmo conjunto de "
+"função. O Hibernate fornece um significado de mapeamento do nome da função "
+"<emphasis>lógica</emphasis> para uma delegação que sabe como manusear aquela "
+"função em particular, mesmo quando usando uma chamada de função física "
+"totalmente diferente."
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr "Tipos de mapeamentos"
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr "A seção está esquematizada para finalização numa data posterior..."
+
+#~ msgid ""
+#~ "Hibernate was changed slightly once the implication of this was better "
+#~ "understood so that the insert is delayed in cases where that is feasible."
+#~ msgstr ""
+#~ "O Hibernate foi atualizado para que a inserção seja lenta em casos em que "
+#~ "isto é possível, sendo desta forma melhor compreendido. "
+
+#~ msgid ""
+#~ "The underlying issue is that the actual semanctics of the application "
+#~ "itself changes in these cases."
+#~ msgstr ""
+#~ "O problema adjacente é que as semânticas atuais do próprio aplicativo "
+#~ "altere nestes casos."
+
+#~ msgid ""
+#~ "Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+#~ "\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier "
+#~ "generators targetting portability in a much different way."
+#~ msgstr ""
+#~ "Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+#~ "\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier "
+#~ "generators targetting portability in a much different way."
+
+#~ msgid ""
+#~ "There are specifically 2 bundled <emphasis>enhanced</emphasis>generators:"
+#~ msgstr ""
+#~ "There are specifically 2 bundled <emphasis>enhanced</emphasis>generators:"
+
+#~ msgid ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+#~ msgstr ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+
+#~ msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+#~ msgstr "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+
+#~ msgid ""
+#~ "The idea behind these generators is to port the actual semantics of the "
+#~ "identifer value generation to the different databases. For example, the "
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> "
+#~ "mimics the behavior of a sequence on databases which do not support "
+#~ "sequences by using a table."
+#~ msgstr ""
+#~ "The idea behind these generators is to port the actual semantics of the "
+#~ "identifer value generation to the different databases. For example, the "
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> "
+#~ "mimics the behavior of a sequence on databases which do not support "
+#~ "sequences by using a table."

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,297 @@
+# translation of Preface.po to
+# translation of preface.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: preface\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-18 15:24+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "Prefácio"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an Object/Relational Mapping tool for Java environments. The term Object/"
+"Relational Mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"O trabalho com o software objeto relacional e banco de dados relacionais, "
+"pode ser incômodo e desgastante atualmente num meio empresarial. Hibernate é "
+"um Objeto/Relacional de Mapeamento de ferramentas nos meios Java. O termo "
+"Objeto/Relacional de Mapeamento (ORM) refere-se à técnica de mapeamento de "
+"dados, representada desde o objeto modelo aos dados relacionais modelo com "
+"um esquema baseado na SQL. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities. It can also significantly reduce development "
+"time otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"O Hibernate não cuida apenas do mapeamento desde às classes de Java até as "
+"mesas de banco de dados (e de tipos de dados Java até tipos de dados da "
+"SQL), mas também proporciona a consulta de dados e facildades de recuperação "
+"que pode significativamente reduzir o tempo de desenvolvimento. Do "
+"contrário, consumido com o manual de dados executados em SQL e JDBC. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"A meta de Hibernate é aliviar o desenvolvedor em 95% de dados comuns de "
+"persistência relacionados as tarefas de programação. O Hibernate talvez não "
+"seja a melhor solução para as aplicações centradas em dados, das quais "
+"apenas usam procedimentos armazenados para a implementação das lógicas "
+"comerciais no banco de dados. Isto é mais utilizado orientando o objeto aos "
+"modelos de domínio e lógicas comerciais na camada intermediária baseada em "
+"Java. No entanto, o Hibernate pode certamente ajudá-lo a remover ou "
+"condensar o específico código fornecedor SQL, e ajudará com a tarefa comum "
+"de resultado estabelecido pela tradução desde a representação tabular até um "
+"gráfico de objetos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"Por favor siga  os seguintes passos, caso você seja inexperiente com o "
+"Hibernate, Mapeamento Objeto/Relacional ou mesmo Java:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"Leia <xref linkend=\"tutorial\" /> com passo-a-passo de instruções tutoriais. "
+"O código de origem tutorial está incluído no diretório de distribuição <literal>doc/reference/tutorial/</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\" /> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Leia <xref linkend=\"architecture\"/> para melhor entendimento dos meios "
+"onde Hibernate pode ser utilizado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"View the <literal>eg/</literal> directory in the Hibernate distribution. It "
+"contains a simple standalone application. Copy your JDBC driver to the "
+"<literal>lib/</literal> directory and edit <literal>etc/hibernate."
+"properties</literal>, specifying correct values for your database. From a "
+"command prompt in the distribution directory, type <literal>ant eg</literal> "
+"(using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Verifique no diretório <literal>eg/</literal> em sua distribuição de "
+"Hibernate, do qual possui uma simples aplicação autônoma. Copie seu driver "
+"JDBC para o diretório <literal>lib/</literal> e edite <literal>eg/hibernate."
+"properties</literal>, especificando valores corretos para o seu banco de "
+"dados. No diretório de distribuição sob o comando aviso, digite <literal>ant "
+"eg</literal> (usando Ant), ou sob Windows, digite <literal>build eg</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need "
+"more help with application design, or if you prefer a step-by-step tutorial. "
+"Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download "
+"the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr ""
+"Utilize esta documentação de referência como a sua primeira fonte de "
+"informação. Considere a leitura <biblioref linkend=\"biblio-JPwH\"></biblioref>, caso você precise de auxílio com a aplicação de design, ou tutorial com passo-a-passo, caso seja desejado. "
+"Você pode também visitar <ulink url=\"http://caveatemptor.hibernate.org\" /> e fazer o "
+"download do exemplo de aplicação da <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr ""
+"As respostas das perguntas mais freqüentes podem ser encontradas no website "
+"Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Links to third party demos, examples, and tutorials are maintained on the "
+"Hibernate website."
+msgstr ""
+"A terceira parte de demonstração, exemplos e tutoriais estão vinculadas no "
+"website Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"A Área de Comunidade no website Hibernate é um bom recurso para parceiros de "
+"design e várias soluções integradas. ( Tomcat, JBoss AS, Struts, EJB, etc. )"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue tracking system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"Em caso de dúvidas, utilize o fórum do usuário encontrado no website "
+"Hibernate. Nós também provemos o JIRA sistema de questão de rastreamento "
+"para os relatórios de erros de programação e recursos solicitados. Se você "
+"tem interesse no desenvolvimento do Hibernate, participe da lista de correio "
+"eletrônico do desenvolvedor. Caso você tenha interesse em traduzir este "
+"documento na sua própria língua, por favor entre em contato conosco através "
+"da lista de correio eletrônico do desenvolvedor.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"O suporte do desenvolvimento comercial, suporte de produção e treinamento de "
+"Hibernate está disponível através do JBoss Inc. ( see http://www.hibernate."
+"org/SupportTraining/ ). Hibernate é um projeto de Fonte Aberta Profissional "
+"e componente crítico do Sistema Jboss de Empreendimento e Middleware "
+"( JEMS ) suíte de produtos. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,508 @@
+# translation of query_criteria.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: query_criteria\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-19 09:29+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "Consultas por critérios"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr "O Hibernate provê uma API de consulta por critério intuitiva e extensível."
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "Criando uma instância <literal>Criteria</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"A interface <literal>org.hibernate.Criteria</literal> representa a consulta "
+"ao invés de uma classe persistente particular. A sessão é uma fábrica para "
+"instâncias de <literal>Criteria</literal> ."
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "Limitando o conjunto de resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"Um critério individual de consulta é uma instância da interface <literal>org."
+"hibernate.criterion.Criterion</literal>. A classe <literal>org.hibernate."
+"criterion.Restrictions</literal> define os métodos da fábrica para obter "
+"certos tipos de <literal>Criterion</literal> pré fabricados."
+
+#. Tag: para
+#, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "Restrições podem ser logicamente agrupadas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses). One of the most useful allows you to specify SQL "
+"directly."
+msgstr ""
+"Existe um grande número de critérios pré-fabricados (subclasses de "
+"<literal>Restrictions</literal>). Um dos mais úteis permite especificar o "
+"SQL diretamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"O parâmetro <literal>{alias}</literal> será substituido pelo alias da "
+"entidade procurada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also obtain a criterion from a <literal>Property</literal> instance. "
+"You can create a <literal>Property</literal> by calling <literal>Property."
+"forName()</literal>:"
+msgstr ""
+"Uma maneira alternativa de obter um critério é apartir de uma instância "
+"<literal>Property</literal>. Você pode criar uma <literal>Property</literal> "
+"chamando <literal>Property.forName()</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "Ordenando resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"Você poderá ordenar os resultados usando <literal>org.hibernate.criterion."
+"Order</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "Associações"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By navigating associations using <literal>createCriteria()</literal> you can "
+"specify constraints upon related entities:"
+msgstr ""
+"Através da navegação de associações usando <literal>createCriteria()</"
+"literal>, você pode especificar restrições por entidades relacionadas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The second <literal>createCriteria()</literal> returns a new instance of "
+"<literal>Criteria</literal> that refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"Note que o segundo <literal>createCriteria()</literal> retorna uma nova "
+"instância de <literal>Criteria</literal>, que refere aos elementos da "
+"coleção <literal>kittens</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "There is also an alternate form that is useful in certain circumstances:"
+msgstr "A seguinte forma alternada é útil em certas circunstâncias:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal> não cria uma nova instância de "
+"<literal>Criteria</literal>.)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The kittens collections held by the <literal>Cat</literal> instances "
+"returned by the previous two queries are <emphasis>not</emphasis> pre-"
+"filtered by the criteria. If you want to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"Note que as coleções de kittens mantidas pelas instâncias <literal>Cat</"
+"literal>, retornadas pelas duas consultas anteriores <emphasis>não</"
+"emphasis> são pré-filtradas pelo critério. Se você desejar recuperar somente "
+"os kittens que se encaixarem ao critérios, você deverá usar um  "
+"<literal>ResultTransformer</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr "Você pode ainda manipular o conjunto do resultado usando a junção exterior restante:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return all of the <literal>Cat</literal>s with a mate whose name "
+"starts with \"good\" ordered by their mate's age, and all cats who do not "
+"have a mate. This is useful when there is a need to order or limit in the "
+"database prior to returning complex/large result sets, and removes many "
+"instances where multiple queries would have to be performed and the results "
+"unioned by java in memory."
+msgstr "Isto retornará todos os <literal>Cat</literal>s com um mate (amigo) cujo nome inicia com \"bom\" ordenado pela idade de seu mate e todos os cats que não tem mates. Isto é útil quando houver necessidade de pedir ou limitar a prioridade do banco de dados em retornar conjuntos de resultado complexo/grande e remover muitas instâncias onde consultas múltiplas deveriam ter sido executadas e os resultados unidos pelo java em memória."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Without this feature, first all of the cats without a mate would need to be "
+"loaded in one query."
+msgstr "Sem este recurso, o primeiro de todos os cats sem um mate teria que ser carregado em uma consulta."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A second query would need to retreive the cats with mates who's name started "
+"with \"good\" sorted by the mates age."
+msgstr "Uma segunda consulta teria que restaurar os cats com os mates cujos os nomes iniciem com \"bom\" selecionados pelas idades dos mates. "
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr "A terceira, em memória; as listas teriam que ser unidas manualmente. "
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "Busca de associação dinâmica"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"Você deve especificar as semânticas de busca de associação em tempo de "
+"execução usando <literal>setFetchMode()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\" /> for "
+"more information."
+msgstr ""
+"Esta consulta fará a busca tanto de <literal>mate</literal> quanto de "
+"<literal>kittens</literal> por uma união externa. Para maiores informações, "
+"veja <xref linkend=\"performance-fetching\" />. "
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "Exemplos de consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"A classe <literal>org.hibernate.criterion.Example</literal> permite que você "
+"construa um critério de consulta a partir de uma dada instância."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"Propriedades de versão, identificadores e associações são ignoradas. Por "
+"padrão, as propriedades de valor null são excluídas."
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr "Você pode ajustar como o  <literal>Exemplo</literal> é aplicado."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr ""
+"Você pode até usar os exemplos para colocar os critérios em objetos "
+"associados."
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "Projeções, agregações e agrupamento."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. You can apply a "
+"projection to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"A classe <literal>org.hibernate.criterion.Projections</literal> é uma "
+"fábrica para instâncias de <literal>Projection</literal>. Você pode aplicar "
+"uma projeção à uma consulta, chamando o <literal>setProjection()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"Não há necessidade de um \"agrupamento por\" explícito em uma consulta por "
+"critério. Certos tipos de projeção são definidos para serem "
+"<emphasis>projeções de agrupamento</emphasis>, que também aparecem em uma "
+"cláusula <literal>agrupamento por</literal>SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An alias can be assigned to a projection so that the projected value can be "
+"referred to in restrictions or orderings. Here are two different ways to do "
+"this:"
+msgstr ""
+"Um alias pode ser atribuído de forma opcional à uma projeção, assim o valor "
+"projetado pode ser referenciado em restrições ou ordenações. Aqui seguem "
+"duas formas diferentes para fazer isto:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"Os métodos <literal>alias()</literal> e <literal>as()</literal> simplesmente "
+"envolvem uma instância de projeção à outra instância de <literal>Projeção</"
+"literal> em alias. Como um atalho, você poderá atribuir um alias quando "
+"adicionar a projeção à uma lista de projeção:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"Você também pode usar um <literal>Property.forName()</literal> para "
+"expressar projeções:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "Consultas e subconsultas desanexadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class allows you to create a query "
+"outside the scope of a session and then execute it using an arbitrary "
+"<literal>Session</literal>."
+msgstr ""
+"A classe <literal>DetachedCriteria</literal> deixa você criar uma consulta "
+"fora do escopo de uma sessão, e depois executá-la usando alguma "
+"<literal>Session</literal> arbitrária. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> can also be used to express a "
+"subquery. Criterion instances involving subqueries can be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"Um <literal>DetachedCriteria</literal> também pode ser usado para expressar "
+"uma subconsulta. As instâncias de critérios, que envolvem subconsultas, "
+"podem ser obtidas através das <literal>Subqueries</literal> ou "
+"<literal>Property</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "Até mesmo as subconsultas correlacionadas são possíveis: "
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "Consultas por um identificador natural"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not "
+"efficient because query cache invalidation occurs too frequently. However, "
+"there is a special kind of query where you can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"Para a maioria das consultas, incluindo consultas de critérios, o cache de "
+"consulta não é muito eficiente, pois a invalidação do cache de consulta "
+"ocorre com muita frequência. No entanto, não há um tipo de consulta especial "
+"onde possamos otimizar um algoritmo de invalidação de cache: consultas "
+"realizadas por chaves naturais constantes. Em algumas aplicações, este tipo "
+"de consulta ocorre com freqüência. O API de critério provê provisão especial "
+"para este caso de uso.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, map the natural key of your entity using <literal>&lt;natural-id&gt;</"
+"literal> and enable use of the second-level cache."
+msgstr ""
+"Primeiro, você deve mapear a chave natural de sua entidade usando um "
+"<literal>&lt;natural-id&gt;</literal> e habilitar o uso de um cache de "
+"segundo nível."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"Note que esta funcionalidade não é proposta para o uso com entidades com "
+"chaves naturais <emphasis>mutáveis</emphasis>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once you have enabled the Hibernate query cache, the <literal>Restrictions."
+"naturalId()</literal> allows you to make use of the more efficient cache "
+"algorithm."
+msgstr ""
+"Uma vez que você tenha ativado o cache de consulta Hibernate, o "
+"<literal>Restrictions.naturalId()</literal> nos permite que utilizemos um "
+"algoritmo de cache mais eficiente."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1536 @@
+# translation of query_hql.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: query_hql\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-19 09:37+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: A Linguagem de Consultas do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a powerful query language (HQL) that is similar in appearance "
+"to SQL. Compared with SQL, however, HQL is fully object-oriented and "
+"understands notions like inheritance, polymorphism and association."
+msgstr ""
+"O Hibernate vem com uma poderosa linguagem de consulta (HQL) que é muito "
+"parecida com o SQL. No entanto, comparado com o SQL o HQL é totalmente "
+"orientado à objetos, e compreende noções de herança, polimorfismo e "
+"associações."
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "Diferenciação de maiúscula e minúscula"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With the exception of names of Java classes and properties, queries are case-"
+"insensitive. 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 ""
+"As Consultas não diferenciam maiúscula de minúscula, exceto pelo nomes das "
+"classes e propriedades Java. Portanto, <literal>SeLeCT</literal> é o mesmo "
+"que <literal>sELEct</literal> que é o mesmo que <literal>SELECT</literal>, "
+"mas <literal>org.hibernate.eg.FOO</literal> não é <literal>org.hibernate.eg."
+"Foo</literal> e <literal>foo.barSet</literal> não é <literal>foo.BARSET</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but this convention is unsuitable for "
+"queries embedded in Java code."
+msgstr ""
+"Esse manual usa as palavras chave HQL em letras minúsculas. Alguns usuários "
+"acreditam que com letras maiúsculas as consultas ficam mais legíveis, mas "
+"nós acreditamos que este formato não é apropriado para o código Java. "
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "A cláusula from"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "A consulta mais simples possível do Hibernate é a seguinte:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This returns all instances of the class <literal>eg.Cat</literal>. You do "
+"not usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. For example:"
+msgstr ""
+"Isto simplesmente retornará todas as instâncias da classe <literal>eg.Cat</"
+"literal>. Geralmente não precisamos qualificar o nome da classe, uma vez que "
+"o <literal>auto-import</literal> é o padrão. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to refer to the <literal>Cat</literal> in other parts of the query, "
+"you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr ""
+"Com o objetivo de referir-se ao <literal>Cat</literal> em outras partes da "
+"consulta, você precisará determinar um <emphasis>alias</emphasis>. Por "
+"exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so you can use that alias later in the query. The "
+"<literal>as</literal> keyword is optional. You could also write:"
+msgstr ""
+"Essa consulta atribui um alias a <literal>cat</literal> para as instâncias "
+"de <literal>Cat</literal>, portanto poderemos usar esse alias mais tarde na "
+"consulta. A palavra chave <literal>as</literal> é opcional. Você também pode "
+"escrever assim:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Multiple classes can appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"Classes múltiplas podem ser envolvidas, resultando em um produto cartesiano "
+"ou união \"cruzada\". "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is good practice to name query aliases using an initial lowercase as this "
+"is consistent with Java naming standards for local variables (e.g. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"É considerada uma boa prática nomear alias de consulta, utilizando uma letra "
+"minúscula inicial, consistente com os padrões de nomeação Java para "
+"variáveis locais (ex.: <literal>domesticCat</literal>). "
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "Associações e uniões"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also assign aliases to associated entities or to elements of a "
+"collection of values using a <literal>join</literal>. For example:"
+msgstr ""
+"Podemos também atribuir aliases em uma entidade associada, ou mesmo em "
+"elementos de uma coleção de valores, usando uma <literal>join</literal>. Por "
+"exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "Os tipos de uniões suportados foram inspirados no ANSI SQL:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "<literal>inner join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>left outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "<literal>right outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>união completa</literal> (geralmente não é útil)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"As construções <literal>inteiro</literal>, <literal>união esquerda externa</"
+"literal> e <literal>união direita externa</literal> podem ser abreviadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"Você pode fornecer condições extras de união usando a palavra chave do HQL "
+"<literal>with</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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 outer join and lazy declarations of the mapping file for associations "
+"and collections. See <xref linkend=\"performance-fetching\" /> for more "
+"information."
+msgstr ""
+"A união de \"busca\" permite que associações ou coleções de valores sejam "
+"inicializadas junto com o objeto pai, usando apenas um select. Isso é muito "
+"útil no caso das coleções. Isso efetivamente substitui as declarações união "
+"externa e declarações lazy do arquivo de mapeamento para associações e coleções. Consulte <xref linkend=\"performance-fetching\" /> para mais informações."
+
+#. Tag: para
+#, 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). The associated objects are also not returned directly "
+"in the query results. Instead, they may be accessed via the parent object. "
+"The only reason you might need an alias is if you are recursively join "
+"fetching a further collection:"
+msgstr ""
+"Geralmente, uma união de busca não precisa atribuir um alias, pois o objeto "
+"associado não deve ser usado na cláusula <literal>where</literal> (ou em "
+"qualquer outra cláusula). Também, os objetos associados não são retornados "
+"diretamente nos resultados da consulta. Ao invés disso, eles devem ser "
+"acessados usando o objeto pai. A única razão pela qual precisariamos de um "
+"alias é quando fazemos uma união de busca recursivamente em uma coleção "
+"adicional: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> construct cannot be used in queries called "
+"using <literal>iterate()</literal> (though <literal>scroll()</literal> can "
+"be used). <literal>Fetch</literal> should be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, "
+"as these operations are based on the result rows which usually contain "
+"duplicates for eager collection fetching, hence, the number of rows is not "
+"what you would expect. <literal>Fetch</literal> should also not be used "
+"together with impromptu <literal>with</literal> condition. It is possible to "
+"create a cartesian product by join fetching more than one collection in a "
+"query, so take care in this case. Join fetching multiple collection roles "
+"can produce unexpected results for bag mappings, so user discretion is "
+"advised when formulating queries in this case. Finally, note that "
+"<literal>full join fetch</literal> and <literal>right join fetch</literal> "
+"are not meaningful."
+msgstr ""
+"Observe que a construção <literal>busca</literal> não deve ser usada em "
+"consultas invocadas usando <literal>iterate()</literal> (embora possa ser "
+"usado com <literal>scroll()</literal>). O <literal>Fetch</literal> também "
+"não deve ser usado junto com o <literal>setMaxResults()</literal> ou "
+"<literal>setFirstResult()</literal> pois essas operações são baseadas nas "
+"linhas retornadas, que normalmente contém duplicidade devido à busca das "
+"coleções, então o número de linhas pode não ser o que você espera. A "
+"<literal>Fetch</literal> não deve ser usada junto com uma condição "
+"<literal>with</literal>. É possível que seja criado um produto cartesiano "
+"pela busca de união em mais do que uma coleção em uma consulta, então tome "
+"cuidado nesses casos. Uma busca de união em várias coleções pode trazer "
+"resultados inesperados para mapeamentos do tipo bag, tome cuidado na hora de "
+"formular consultas como essas. Finalmente, observe o seguinte, a "
+"<literal>busca de união completa</literal> e <literal>busca de união "
+"direita</literal> não são importantes."
+
+#. Tag: para
+#, 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 in the first query immediately using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"Se estiver usando o nível de propriedade busca lazy (com instrumentação de "
+"bytecode), é possível forçar o Hibernate a buscar as propriedades lazy "
+"imediatamente na primeira consulta, usando <literal>buscar todas as "
+"propriedades </literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "Formas de sintáxe de uniões"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"O HQL suporta duas formas de associação para união: <literal>implícita</"
+"literal> e <literal>explícita</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form, that is, where the join keyword is explicitly used in the "
+"from clause. This is the recommended form."
+msgstr ""
+"As consultas apresentadas na seção anterior usam a forma <literal>explícita</"
+"literal>, onde a palavra chave união é explicitamente usada na cláusula "
+"from. Essa é a forma recomendada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"A forma <literal>implícita</literal> não usa a palavra chave \"união\". "
+"Entretanto, as associações são \"diferenciadas\" usando pontuação (\".\" - "
+"dot-notation). Uniões<literal>implícitas</literal> podem aparecer em "
+"qualquer uma das cláusulas HQL. A união <literal>implícita</literal> resulta "
+"em declarações SQL que contém uniões inteiras."
+
+#. Tag: title
+#, no-c-format
+msgid "Referring to identifier property"
+msgstr "Referência à propriedade do identificador "
+
+#. Tag: para
+#, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr ""
+"Geralmente, existem duas formas para se referir à propriedade do "
+"indentificador de uma entidade: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that the "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"A propriedade especial (em letra minúscula) <literal>id</literal> pode ser "
+"usada para se referir à propriedade do identificador de uma entidade "
+"<emphasis>considerando que a entidade não define uma propriedade não "
+"identificadora chamada id</emphasis>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you can use that property "
+"name."
+msgstr ""
+"Se a entidade definir a propriedade do identificador nomeada, você poderá "
+"usar este nome de propriedade. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named. Otherwise, "
+"the special <literal>id</literal> property can be used to reference the "
+"identifier property."
+msgstr ""
+"As referências à composição das propriedades do identificador seguem as "
+"mesmas regras de nomeação. Se a entidade tiver uma propriedade de não "
+"identificador chamada id, a composição da propriedade do identificador pode "
+"somente ser referenciada pelo seu nome definido. Do contrário, uma "
+"propriedade especial <literal>id</literal> poderá ser usada para referenciar "
+"a propriedade do identificador. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please note that, starting in version 3.2.2, this has changed significantly. "
+"In previous versions, <literal>id</literal> <emphasis>always</emphasis> "
+"referred to the identifier property regardless of its actual name. A "
+"ramification of that decision was that non-identifier properties named "
+"<literal>id</literal> could never be referenced in Hibernate queries."
+msgstr ""
+"Observe: esta ação mudou completamente na versão 3.2.2. Nas versões "
+"anteriores o <literal>id</literal> <emphasis>sempre</emphasis> referia-se à "
+"propriedade do identificador não importando seu nome atual. Uma ramificação "
+"desta decisão era que as propriedades do não identificador de chamadas "
+"<literal>id</literal> nunca poderiam ser referenciadas nas consultas do "
+"Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "A cláusula select"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider the following:"
+msgstr ""
+"A cláusula <literal>select</literal> seleciona quais objetos e propriedades "
+"retornam no resultado da consulta. Considere: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. You can express this query more compactly as:"
+msgstr ""
+"A consulta selecionará <literal>mate</literal>s (parceiros), de outros "
+"<literal>Cat</literal>s. Atualmente, podemos expressar a consulta de forma "
+"mais compacta como: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"As consultas podem retornar propriedades de qualquer tipo de valor, "
+"incluindo propriedades de tipo de componente: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>:"
+msgstr ""
+"As consultas podem retornar múltiplos objetos e/ou propriedades como uma "
+"matriz do tipo <literal>Object[]</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "Ou como um <literal>List</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Or - assuming that the class <literal>Family</literal> has an appropriate "
+"constructor - as an actual typesafe Java object:"
+msgstr ""
+"Ou - considerando que a classe <literal>Family</literal> tenha um construtor "
+"apropriado - como um objeto Java typesafe atual:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"Pode-se designar alias à expressões selecionadas usando <literal>as</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr ""
+"Isto é bem mais útil quando usado junto <literal>com</"
+"literal><literal>selecione novo mapa</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"Esta consulta retorna um <literal>Mapa</literal> de referências para valores "
+"selecionados."
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "Funções de agregação"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries can even return the results of aggregate functions on properties:"
+msgstr ""
+"As consultas HQL podem retornar o resultado de funções agregadas nas "
+"propriedades:"
+
+#. Tag: para
+#, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "As funções agregadas suportadas são: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "<literal>count(*)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "<literal>count(...), count(distinct ...), count(all...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"Pode-se usar operadores aritméticos, concatenação e funções SQL reconhecidas "
+"na cláusula select: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords can be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"As palavras <literal>distinct</literal> e <literal>all</literal> podem ser "
+"usadas e têm a mesma semântica que no SQL. "
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "Pesquisas Polimórficas"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "A consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries can name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. 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 ""
+"retorna instâncias não só de <literal>Cat</literal>, mas também de "
+"subclasses como <literal>DomesticCat</literal>. As consultas do Hibernate "
+"podem nomear qualquer classe Java ou interface na cláusula <literal>from</"
+"literal>. A consulta retornará instâncias de todas as classes persistentes "
+"que extendam a determinada classe ou implemente a determinada interface. A "
+"consulta a seguir, poderia retornar todos os objetos persistentes: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"A interface <literal>Named</literal> pode ser implementada por várias "
+"classes persistentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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 cannot call these "
+"queries using <literal>Query.scroll()</literal>."
+msgstr ""
+"Note que as duas últimas consultas requerem mais de um SQL <literal>SELECT</"
+"literal>. Isto significa que a cláusula <literal>order by</literal> não "
+"ordena corretamente todo o resultado. Isso também significa que você não "
+"pode chamar essas consultas usando <literal>consulta.scroll()</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "A cláusula where"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to refine the list of "
+"instances returned. If no alias exists, you can refer to properties by name:"
+msgstr ""
+"A cláusula <literal>where</literal> permite estreitar a lista de instâncias "
+"retornadas. Se não houver referência alguma, pode-se referir à propriedades "
+"pelo nome: "
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr "Se houver uma referência, use o nome da propriedade qualificada:"
+
+#. Tag: para
+#, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "Isto retorna instâncias de <literal>Cat</literal> com nome ‘Fritz’."
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr "A seguinte consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr ""
+"retornará todas as instâncias de <literal>Foo</literal>, para cada um que "
+"tiver uma instância de <literal>bar</literal> com a propriedade "
+"<literal>date</literal> igual a propriedade <literal>startDate</literal> de "
+"<literal>Foo</literal>. Expressões de caminho compostas fazem da cláusula "
+"<literal>where</literal>, extremamente poderosa. Consideremos: "
+
+#. Tag: para
+#, no-c-format
+msgid "This query translates to an SQL query with a table (inner) join. For example:"
+msgstr ""
+"Esta consulta traduz para uma consulta SQL com uma tabela (inner) união. Por "
+"exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr "resultaria numa consulta que necessitasse de união de quatro tabelas, no SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator can be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"O operador <literal>=</literal> pode ser usado para comparar não apenas "
+"propriedades, mas também instâncias: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> can be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\" /> for more information."
+msgstr ""
+"A propriedade especial (letra minúscula) <literal>id</literal> pode ser "
+"usada para referenciar o identificador único de um objeto. Para maiores "
+"informações consulte a <xref linkend=\"queryhql-"
+"identifier-property\" />.  "
+
+#. Tag: para
+#, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "A segunda consulta é eficiente e não requer nenhuma união de tabelas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Properties of composite identifiers can also be used. Consider the following "
+"example where <literal>Person</literal> has composite identifiers consisting "
+"of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr ""
+"As propriedades de identificadores compostas também podem ser usadas. "
+"Considere o seguinte exemplo onde <literal>Person</literal> possui "
+"identificadores compostos que consistem de <literal>country</literal> e "
+"<literal>medicareNumber</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "Mais uma vez, a segunda consulta não precisa de nenhuma união de tabela."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"queryhql-identifier-property\" /> for more information "
+"regarding referencing identifier properties)"
+msgstr ""
+"Veja <xref linkend=\"queryhql-identifier-property\" /> para maiores "
+"informações a respeito das propriedades do identificador referenciado) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+"Da mesma forma, a propriedade especial <literal>class</literal> acessa o "
+"valor discriminador da instância, no caso de persistência polimórfica. O "
+"nome de uma classe Java inclusa em uma cláusula where, será traduzida para "
+"seu valor discriminante."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\" /> for more "
+"information."
+msgstr ""
+"Pode-se também utilizar componentes ou tipos de usuários de composição, ou "
+"propriedades dos tipos de componentes mencionados. Veja <xref linkend=\"queryhql-components\" /> para maiores informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal> that allows you to express a join in the following "
+"way (where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>):"
+msgstr ""
+"Um tipo \"any\" possui as propriedades <literal>id</literal> e "
+"<literal>class</literal> especiais, nos permitindo expressar uma união da "
+"seguinte forma (onde <literal>AuditLog.item</literal> é uma propriedade "
+"mapeada <literal>com</literal><literal>&lt;any&gt;</literal>):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <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 ""
+"Veja que <literal>log.item.class</literal> e <literal>payment.class</"
+"literal> podem referir-se à valores de colunas de banco de dados "
+"completamente diferentes, na consulta acima. "
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "Expressões"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Expressions used in the <literal>where</literal> clause include the "
+"following:"
+msgstr ""
+"As expressões permitidas na cláusula <literal>where</literal> incluem o "
+"seguinte:"
+
+#. Tag: para
+#, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "operadores matemáticos: <literal>+, -, *, /</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr ""
+"operadores de comparação binários: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, "
+"like</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "operadores lógicos <literal>and, or, not</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "Parênteses <literal>( )</literal> que indica o agrupamento"
+
+#. Tag: para
+#, 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 ""
+"<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>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"case \"simples\" , <literal>case ... when ... then ... else ... end</"
+"literal>, and \"searched\" case, <literal>case when ... then ... else ... "
+"end</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"concatenação de string <literal>...||...</literal> ou <literal>concat"
+"(...,...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, and "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal> e "
+"<literal>current_timestamp()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"and <literal>year(...)</literal>"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal> "
+"e <literal>year(...)</literal>"
+
+#. Tag: para
+#, 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(), mod()"
+"</literal>"
+msgstr ""
+"qualquer função ou operador definidos pela EJB-QL 3.0: <literal>substring(), "
+"trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), "
+"mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"<literal>str()</literal> para converter valores numéricos ou temporais para "
+"uma string de leitura"
+
+#. Tag: para
+#, 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 ""
+"<literal>cast(... as ...)</literal>, onde o segundo argumento é o nome do "
+"tipo hibernate, e<literal>extract(... from ...)</literal> se ANSI "
+"<literal>cast()</literal> e <literal>extract()</literal> é suportado pelo "
+"banco de dados adjacente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"A função HQL <literal>index()</literal> , que se aplicam às referências de "
+"coleçôes associadas e indexadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions that can be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"As funções HQL que retornam expressões de coleções de valores: <literal>size"
+"(), minelement(), maxelement(), minindex(), maxindex()</literal>, junto com "
+"o elemento especial, <literal>elements()</literal> e funções de "
+"<literal>índices</literal> que podem ser quantificadas usando <literal>some, "
+"all, exists, any, in</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</"
+"literal>"
+msgstr ""
+"Qualquer função escalar suportada pelo banco de dados como <literal>sign()</"
+"literal>, <literal>trunc()</literal>, <literal>rtrim()</literal> e "
+"<literal>sin()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "Parâmetros posicionais ao estilo JDBC <literal>?</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"and <literal>:x1</literal>"
+msgstr ""
+"Parâmetros nomeados <literal>:name</literal>, <literal>:start_date</literal> "
+"e <literal>:x1</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"Literais SQL <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"Constantes Java <literal>final estático público</literal><literal>ex: Color."
+"TABBY</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr ""
+"<literal>in</literal> e <literal>between</literal> podem ser usadas da "
+"seguinte maneira: "
+
+#. Tag: para
+#, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "As formas negativas podem ser escritas conforme segue abaixo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similarly, <literal>is null</literal> and <literal>is not null</literal> can "
+"be used to test for null values."
+msgstr ""
+"Da mesma forma, <literal>is null</literal> e <literal>is not null</literal> "
+"podem ser usados para testar valores nulos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Booleans can be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Booleanos podem ser facilmente usados em expressões, declarando as "
+"substituições da consulta HQL, na configuração do Hibernate:"
+
+#. Tag: para
+#, 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 ""
+"Isso irá substituir as palavras chave <literal>true</literal> e "
+"<literal>false</literal><literal>pelos</literal> literais <literal>1</"
+"literal> e <literal>0</literal> na tradução do HQL para SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can test the size of a collection with the special property "
+"<literal>size</literal> or the special <literal>size()</literal> function."
+msgstr ""
+"Pode-se testar o tamanho de uma coleção com a propriedade especial "
+"<literal>size</literal> ou a função especial <literal>size()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For indexed collections, you can refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you can refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. For example:"
+msgstr ""
+"Para coleções indexadas, você pode se referir aos índices máximo e mínimo, "
+"usando as funções <literal>minindex</literal> e <literal>maxindex</literal>. "
+"Igualmente, pode-se referir aos elementos máximo e mínimo de uma coleção de "
+"tipos básicos usando as funções <literal>minelement</literal> e "
+"<literal>maxelement</literal>. Por exemplo:"
+
+#. Tag: para
+#, 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):"
+msgstr ""
+"As funções SQL <literal>any, some, all, exists, in</literal> são suportadas "
+"quando passado o elemento ou o conjunto de índices de uma coleção "
+"(<literal>elements</literal> e <literal>índices</literal> de funções) ou o "
+"resultado de uma subconsulta (veja abaixo):"
+
+#. Tag: para
+#, 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> - can only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"Note que essas construções - <literal>tamanho</literal>, <literal>elementos</"
+"literal>, <literal>índices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> – só podem ser usados na cláusula where do "
+"Hibernate3."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, and maps) can be referred to "
+"by index in a where clause only:"
+msgstr ""
+"Elementos de coleções com índice (matriz, listas, mapas) podem ser "
+"referenciadas pelo índice (apenas na cláusula where):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> can even be an arithmetic "
+"expression:"
+msgstr ""
+"A expressão entre colchetes <literal>[]</literal> pode ser até uma expressão "
+"aritimética:"
+
+#. Tag: para
+#, 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 ""
+"O HQL também provê a função interna <literal>index()</literal> para "
+"elementos de associação um-para-muitos ou coleção de valores."
+
+#. Tag: para
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr ""
+"Funções escalares SQL, suportadas pelo banco de dados subjacente podem ser "
+"usadas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider how much longer and less readable the following query would be in "
+"SQL:"
+msgstr ""
+"Se ainda não estiver totalmente convencido, pense o quão maior e menos "
+"legível poderia ser a consulta a seguir, em SQL: "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>Hint:</emphasis> algo como:"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "A cláusula ordenar por"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The list returned by a query can be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"A lista retornada pela consulta pode ser ordenada por qualquer propriedade "
+"da classe ou componentes retornados:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"As opções <literal>asc</literal> ou <literal>desc</literal> indicam ordem "
+"crescente ou decrescente, respectivamente."
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "A cláusula agrupar por"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query that returns aggregate values can be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"Uma consulta que retorne valores agregados, podem ser agrupados por qualquer "
+"propriedade de uma classe ou componentes retornados:"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "Uma cláusula <literal>having</literal> também é permitida."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses if they are supported by "
+"the underlying database (i.e., not in MySQL)."
+msgstr ""
+"Funções SQL e funções agregadas são permitidas nas cláusulas "
+"<literal>having</literal> e <literal>order by</literal>, se suportadas pelo "
+"banco de dados subjacentes (ex: não no MeuSQL). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Neither the <literal>group by</literal> clause nor the <literal>order by</"
+"literal> clause can contain arithmetic expressions. Hibernate also does not "
+"currently expand a grouped entity, so you cannot write <literal>group by "
+"cat</literal> if all properties of <literal>cat</literal> are non-"
+"aggregated. You have to list all non-aggregated properties explicitly."
+msgstr ""
+"Note que, nem a cláusula <literal>group by</literal> ou <literal>order by</"
+"literal> podem conter expressões aritméticas. O Hibernate também não expande "
+"atualmente uma entidade agrupada, portanto você não pode escrever "
+"<literal>group by cat</literal> caso todas as propriedades do <literal>cat</"
+"literal> não estiverem agregadas. Você precisa listar claramente todas as "
+"propriedades não-agregadas. "
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "Subconsultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate 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 ""
+"Para bancos de dados que suportam subseleções, o Hibernate suporta "
+"subconsultas dentro de consultas. Uma subconsulta precisa estar entre "
+"parênteses (normalmente uma chamada de função agregada SQL). Mesmo "
+"subconsultas co-relacionadas (subconsultas que fazem referência à alias de "
+"outras consultas), são aceitas."
+
+#. Tag: para
+#, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr ""
+"Note que HQL subconsultas podem aparecer apenas dentro de cláusulas select "
+"ou where. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more "
+"information."
+msgstr ""
+"Note que as subconsultas também podem utilizar a sintáxe <literal>row value "
+"constructor</literal>. Veja <xref linkend=\"queryhql-tuple\" /> para maiores "
+"detalhes. "
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "Exemplos de HQL"
+
+#. Tag: para
+#, 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 main strengths. The following "
+"example queries are similar to queries that have been used on recent "
+"projects. Please note that most queries you will write will be much simpler "
+"than the following examples."
+msgstr ""
+"As consultas do Hibernate, podem ser muito poderosas e complexas. De fato, o "
+"poder da linguagem de consulta é um dos pontos principais na distribuição do "
+"Hibernate. Aqui temos algumas consultas de exemplo, muito similares a "
+"consultas usadas em um projeto recente. Note que a maioria das consultas que "
+"você irá escrever, são mais simples que estas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items, the given minimum "
+"total value and the total value of the order for all unpaid orders for a "
+"particular customer. The results are ordered 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 ""
+"A consulta a seguir retorna o id de ordenar, número de ítens e o valor total "
+"do ordenar para todos os ordenar não pagos para um cliente particular e "
+"valor total mínimo dado, ordenando os resultados por valor total. Para "
+"determinar os preços, utiliza-se o catálogo atual. A consulta SQL "
+"resultante, usando tabelas <literal>ORDER</literal>, <literal>ORDER_LINE</"
+"literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal> e "
+"<literal>PRICE</literal>, têm quatro uniões inteiras e uma subseleção (não "
+"correlacionada)."
+
+#. Tag: para
+#, 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 ""
+"Que monstro! Na verdade, na vida real, eu não sou muito afeiçoado à "
+"subconsultas, então minha consulta seria mais parecida com isto:"
+
+#. Tag: para
+#, 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 ""
+"A próxima consulta conta o número de pagamentos em cada status, excluindo "
+"todos os pagamentos no status <literal>AWAITING_APPROVAL</literal>, onde a "
+"mais recente mudança de status foi feita pelo usuário atual. Traduz-se para "
+"uma consulta SQL <literal>com</literal> duas uniões inteiras e uma "
+"subseleção correlacionada, nas tabelas <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal> e <literal>PAYMENT_STATUS_CHANGE</"
+"literal> ."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>statusChanges</literal> collection was mapped as a list, "
+"instead of a set, the query would have been much simpler to write."
+msgstr ""
+"Se eu tivesse mapeado a coleção <literal>statusChanges</literal> como um "
+"List, ao invés de um Set, a consulta teria sido muito mais simples de "
+"escrever. "
+
+#. Tag: para
+#, 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 ""
+"A próxima consulta usa a função <literal>isNull()</literal> do Servidor MS "
+"SQL, para retornar todas as contas e pagamentos não efetuados para a "
+"organização, para aquele que o usuário atual pertencer. Traduz-se para uma "
+"consulta SQL <literal>com</literal> três uniões inteiras, uma união externa "
+"e uma subseleção nas tabelas <literal>ACCOUNT</literal>, <literal>PAYMENT</"
+"literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</"
+"literal>, <literal>ORGANIZATION</literal> e <literal>ORG_USER</literal> ."
+
+#. Tag: para
+#, no-c-format
+msgid "For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"Para alguns bancos de dados, precisaremos eliminar a subseleção "
+"(correlacionada)."
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "Atualização e correção em lote"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\" /> for more information."
+msgstr ""
+"Agora o HQL suporta declarações, <literal>update</literal>, <literal>delete</"
+"literal> e <literal>insert ... select ...</literal>. Veja <xref linkend="
+"\"batch-direct\" />  para mais detalhes. "
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "Dicas &amp; Truques"
+
+#. Tag: para
+#, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr "Pode-se contar o número de resultados da consulta, sem realmente retorná-los:"
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+"Para ordenar um resultado pelo tamanho de uma coleção, use a consulta a "
+"seguir."
+
+#. Tag: para
+#, 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 ""
+"Se seu banco de dados suporta subseleções, pode-se colocar uma condição "
+"sobre tamanho de seleção na cláusula where da sua consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr "Se seu banco de dados não suporta subseleções, use a consulta a seguir: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As this solution cannot return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"Com essa solução não se pode retornar um <literal>User</literal> sem nenhuma "
+"menssagem, por causa da união inteira, a forma a seguir também é útil:"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr ""
+"As propriedades de um JavaBean podem ser limitadas à parâmetros nomeados da "
+"consulta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"As coleções são pagináveis, usando a interface <literal>Query</literal> com "
+"um filtro:"
+
+#. Tag: para
+#, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr ""
+"Os elementos da coleção podem ser ordenados ou agrupados usando um filtro de "
+"consulta: "
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr "Pode-se achar o tamanho de uma coleção sem inicializá-la:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "Componentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Components can be used similarly to the simple value types that are used in "
+"HQL queries. They can appear in the <literal>select</literal> clause as "
+"follows:"
+msgstr ""
+"Os componentes podem ser usados de quase todas as formas que os tipos de "
+"valores simples são usados nas consultas HQL. Eles podem aparecer na "
+"cláusula <literal>select</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"onde a propriedade do nome da Person é um componente. Os componentes também "
+"podem ser utilizados na cláusula <literal>where</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr ""
+"Os componentes também podem ser usados na cláusula <literal>order by</"
+"literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"Outro uso comum dos componentes é nos <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "Sintáxe do construtor de valores de linha"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax, sometimes referred to AS <literal>tuple</literal> syntax, even "
+"though the underlying database may not support that notion. Here, we are "
+"generally referring to multi-valued comparisons, typically associated with "
+"components. Consider an entity Person which defines a name component:"
+msgstr ""
+"O HQL suporta o uso da sintáxe ANSI SQL <literal>row value constructor</"
+"literal>, algumas vezes chamado de sintáxe <literal>tupla</literal>, embora "
+"o banco de dados adjacente possa não suportar esta noção. Aqui nós "
+"geralmente nos referimos às comparações de valores múltiplos, tipicamente "
+"associada aos componentes. Considere uma entidade Person que define um "
+"componente de nome:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"That is valid syntax although it is a little verbose. You can make this more "
+"concise by using <literal>row value constructor</literal> syntax:"
+msgstr ""
+"Esta é uma sintáxe válida, embora um pouco verbosa. Seria ótimo tornar essa "
+"sintáxe um pouco mais concisa e utilizar a sintáxe <literal>row value "
+"constructor</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr "Pode também ser útil especificar isto na cláusula <literal>select</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using <literal>row value constructor</literal> syntax can also be beneficial "
+"when using subqueries that need to compare against multiple values:"
+msgstr ""
+"Com o uso da sintáxe <literal>row value constructor</literal>, e que pode "
+"ser de benéfico, seria quando utilizar as subconsultas que precisem comparar "
+"com os valores múltiplos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax, is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"Ao decidir se você quer usar esta sintáxe ou não, deve-se considerar o fato "
+"de que a consulta será dependente da ordenação das sub-propriedades do "
+"componente no metadados. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1094 @@
+# translation of query_sql.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: query_sql\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:47\n"
+"PO-Revision-Date: 2010-03-19 09:46+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "SQL Nativo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can 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 <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"Você também pode expressar consultas no dialeto SQL nativo de seu banco de "
+"dados. Isto é bastante útil para usar recursos específicos do banco de "
+"dados, assim como dicas de consultas ou a palavra chave em Oracle "
+"<literal>CONNECT</literal>. Ele também oferece um caminho de migração limpo "
+"de uma aplicação baseada em SQL/JDBC direta até o Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL, including stored "
+"procedures, for all create, update, delete, and load operations."
+msgstr ""
+"O Hibernate3 permite que você especifique o SQL escrito à mão, incluindo "
+"procedimentos armazenados, para todas as operações de criar, atualizar, "
+"deletar e carregar."
+
+#. Tag: title
+#, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "Usando um <literal>SQLQuery</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following sections describe how to use this "
+"API for querying."
+msgstr ""
+"A execução de consultas SQL nativa é controlada através da interface "
+"<literal>SQLQuery</literal> que é obtido, chamando a <literal>Session."
+"createSQLQuery()</literal>. As seções abaixo descrevem como usar este API "
+"para consultas."
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "Consultas Escalares"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr "A consulta SQL mais básica é obter uma lista dos escalares (valores)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These will return a List of Object arrays (Object[]) with scalar values for "
+"each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"Eles irão retornar uma matriz de Lista de Objeto (Object[]) com valores "
+"escalares para cada coluna na tabela CATS. O Hibernate usará o "
+"ResultSetMetadata para deduzir a ordem atual e tipos de valores escalares "
+"retornados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal>, or "
+"simply to be more explicit in what is returned, one can use "
+"<literal>addScalar()</literal>:"
+msgstr ""
+"Para evitar o uso do <literal>ResultSetMetadata</literal> ou simplesmente "
+"para ser mais explícito em o quê é retornado, você poderá usar o "
+"<literal>addScalar()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "Esta consulta especificou:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "A string da consulta SQL"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "as colunas e tipos para retornar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This will return Object arrays, but now it will not use "
+"<literal>ResultSetMetadata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"Este ainda irá retornar as matrizes de Objeto, mas desta vez ele não usará o "
+"<literal>ResultSetMetdata</literal>, ao invés disso, obterá explicitamente a "
+"coluna de ID, NOME e DATA DE NASCIMENTO como respectivamente uma Longa, "
+"String e Curta a partir do conjunto de resultados adjacentes. Isto também "
+"significa que somente estas três colunas irão retornar, embora a consulta "
+"esteja utilizando <literal>*</literal> e possa retornar mais do que três "
+"colunas listadas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr ""
+"É possível deixar de fora o tipo de informação para todos ou alguns dos "
+"escalares."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to determine the type of NAME "
+"and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr ""
+"Esta é a mesma consulta de antes, mas desta vez, o "
+"<literal>ResultSetMetaData</literal> é utilizado para decidir o tipo de NOME "
+"e DATA DE NASCIMENTO onde o tipo de ID é explicitamente especificado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped, or does not result in the expected type, it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"Como o java.sql.Types retornados do ResultSetMetadata é mapeado para os "
+"tipos Hibernate, ele é controlado pelo Dialeto. Se um tipo específico não é "
+"mapeado ou não resulta no tipo esperado, é possível padronizá-lo através de "
+"chamadas para <literal>registerHibernateType</literal> no Dialeto. "
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "Consultas de Entidade"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"As consultas acima foram todas sobre o retorno de valores escalares, "
+"basicamente retornando os valores \"não processados\" do conjunto de "
+"resultados. A seguir, mostramos como obter objetos de entidade da consulta "
+"sql nativa através do <literal>addEntity()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "A entidade retornada por uma consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Considerando que o Cat esteja mapeado como uma classe com colunas ID,NOME e "
+"DATA DE NASCIMENTO, as consultas acima irão devolver uma Lista onde cada "
+"elemento é uma entidade de Cat."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"Se a entidade estiver mapeada com um <literal>muitos-para-um</literal> para "
+"outra entidade, requer-se que devolva também este ao desempenhar a consulta "
+"nativa, senão ocorrerá um erro de banco de dados específico \"coluna não "
+"encontrada\". As colunas adicionais serão automaticamente retornadas ao usar "
+"a anotação, mas preferimos ser explícitos como no seguinte exemplo para "
+"uma<literal>muitos-para-um</literal> para um <literal>Dog</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "Isto irá permitir que o cat.getDog() funcione de forma apropriada"
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "Manuseio de associações e coleções"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"É possível realizar a recuperação adiantada no <literal>Dog</literal> para "
+"evitar uma viagem extra por inicializar o proxy. Isto é feito através do "
+"método <literal>addJoin()</literal>que permite que você se una à associação "
+"ou coleção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example, the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that you added an alias name (\"cat\") to "
+"be able to specify the target property path of the join. It is possible to "
+"do the same eager joining for collections, e.g. if the <literal>Cat</"
+"literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"Neste exemplo, a devolução do <literal>Cat</literal> terá sua propriedade "
+"<literal>dog</literal> totalmente inicializada sem nenhuma viagem extra ao "
+"banco de dados. Note que adicionamos um nome alias (\"cat\") para poder "
+"especificar o caminho da propriedade alvo na união. É possível fazer a mesma "
+"união para coleções, ex.: se ao invés disso, o <literal>Cat</literal> "
+"tivesse um-para-muitos para <literal>Dog</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this stage you are reaching the limits of what is possible with native "
+"queries, without starting to enhance the sql queries to make them usable in "
+"Hibernate. Problems can arise when returning multiple entities of the same "
+"type or when the default alias/column names are not enough."
+msgstr ""
+"Neste estágio, estamos chegando no limite do que é possível fazer com as "
+"consultas nativas sem começar a destacar as colunas sql para torná-las útil "
+"no Hibernate. Os problemas começam a surgir quando se retorna entidades "
+"múltiplas do mesmo tipo ou quando o padrão de nomes de alias/coluna não são "
+"suficientes. "
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "Retorno de entidades múltiplas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Until now, the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries that join multiple tables, since the same column names can "
+"appear in more than one table."
+msgstr ""
+"Até aqui, os nomes de colunas do conjunto de resultados são considerados "
+"como sendo os mesmos que os nomes de colunas especificados no documento de "
+"mapeamento. Isto pode ser problemático para as consultas SQL, que une "
+"tabelas múltiplas, uma vez que os mesmos nomes de colunas podem aparecer em "
+"mais de uma tabela. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr ""
+"É necessário uma injeção de alias de coluna na seguinte consulta (a qual é "
+"bem provável que falhe):"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query was intended to return two Cat instances per row: a cat and its "
+"mother. The query will, however, fail because there is a conflict of names; "
+"the instances are mapped to the same column names. Also, on some databases "
+"the returned column aliases will most likely be on the form \"c.ID\", \"c."
+"NAME\", etc. which are not equal to the columns specified in the mappings "
+"(\"ID\" and \"NAME\")."
+msgstr ""
+"A intenção para esta consulta é retornar duas instâncias Cat por linha: um "
+"cat e sua mãe. Isto irá falhar pois existe um conflito de nomes, são "
+"mapeados aos mesmos nomes de colunas e em alguns bancos de dados os aliases "
+"de colunas retornadas estarão, muito provavelmente, na forma de \"c.ID\", "
+"\"c.NOME\", etc., os quais não são iguais às colunas especificadas no "
+"mapeamento (\"ID\" e \"NOME\"). "
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr "A seguinte forma não é vulnerável à duplicação do nome de coluna:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"a string da consulta SQL, com espaço reservado para Hibernate para injetar "
+"aliases de coluna."
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "as entidades retornadas pela consulta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you can list the columns explicitly, but even "
+"in this case Hibernate injects the SQL column aliases for each property. The "
+"placeholder for a column alias is just the property name qualified by the "
+"table alias. In the following example, you retrieve Cats and their mothers "
+"from a different table (cat_log) to the one declared in the mapping "
+"metadata. You can even use the property aliases in the where clause."
+msgstr ""
+"A anotação {cat.*} e {mãe.*} usada acima, é um atalho para \"todas as "
+"propriedades\". De forma alternativa, você pode listar as colunas "
+"explicitamente, mas até neste caso nós deixamos o Hibernate injetar os "
+"aliases de coluna SQL para cada propriedade. O espaço reservado para um "
+"alias de coluna é simplesmente o nome de propriedade qualificado pelo alias "
+"de tabela. No seguinte exemplo, recuperamos os Cats e suas mães de uma "
+"tabela diferente (cat_log) para aquele declarado no metadado de mapeamentos. "
+"Note que podemos até usar os aliases de propriedade na cláusula where se "
+"quisermos."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "Alias e referências de propriedades"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases the above alias injection is needed. For queries relating to "
+"more complex mappings, like composite properties, inheritance "
+"discriminators, collections etc., you can use specific aliases that allow "
+"Hibernate to inject the proper aliases."
+msgstr ""
+"Para a maioria dos casos, necessita-se da injeção de alias acima. Para "
+"consultas relatadas aos mapeamentos mais complexos, como as propriedades "
+"compostas, discriminadores de herança, coleções, etc., você pode usar "
+"aliases específicos que permitem o Hibernate injetar os aliases apropriados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows the different ways you can use the alias "
+"injection. Please note that the alias names in the result are simply "
+"examples; each alias will have a unique and probably different name when "
+"used."
+msgstr ""
+"As seguintes tabelas mostram as diferentes formas de usar uma injeção de "
+"alias. Por favor note que os nomes de alias no resultado são exemplos, cada "
+"alias terá um nome único e provavelmente diferente quando usado."
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "Nomes de injeção de alias"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Descrição"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "Sintáxe"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "Exemplo"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "Uma propriedade simples"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "<literal>{[aliasname].[propertyname]</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "<literal>A_NAME as {item.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "Uma propriedade composta"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+msgstr ""
+"<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</"
+"literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "Discriminador de uma entidade"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "<literal>{[aliasname].class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "<literal>DISC as {item.class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "Todas as propriedades de uma entidade"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "<literal>{[aliasname].*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "Uma chave de coleção"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "<literal>{[aliasname].key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "<literal>ORGID as {coll.key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "O id de uma coleção"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "<literal>{[aliasname].id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "<literal>EMPID as {coll.id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "O elemento de uma coleção"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "<literal>{[aliasname].element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "<literal>XID as {coll.element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "property of the element in the collection"
+msgstr "propriedade de elemento na coleção "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].element.[propertyname]}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "<literal>NAME as {coll.element.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "Todas as propriedades de elemento na coleção"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "<literal>{[aliasname].element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the collection"
+msgstr "Todas as propriedades da coleção "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "Retorno de entidades não gerenciadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native SQL queries, allowing "
+"it to return non-managed entities."
+msgstr ""
+"É possível aplicar um ResultTransformer para consultas sql nativas, "
+"permitindo que o retorno de entidades não gerenciadas."
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "um transformador de resultado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"A consulta acima irá devolver uma lista de <literal>CatDTO</literal> que foi "
+"instanciada e injetada com valores dos comandos NAME e BIRTHDATE em suas "
+"propriedades correspondentes ou campos."
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "Manuseio de herança"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Native SQL queries which query for entities that are mapped as part of an "
+"inheritance must include all properties for the baseclass and all its "
+"subclasses."
+msgstr ""
+"As consultas sql nativas, as quais consultam entidades mapeadas como parte "
+"de uma herança, devem incluir todas as propriedades na classe base e todas "
+"as suas subclasses. "
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "Parâmetros"
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr ""
+"Consultas sql Nativas suportam parâmetros posicionais assim como parâmetros "
+"nomeados:"
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "Consultas SQL Nomeadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Named SQL queries can be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, you do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"Consultas SQL Nomeadas podem ser definidas no documento de mapeamento e "
+"chamadas exatamente da mesma forma que uma consulta HQL nomeada. Neste caso "
+"nós <emphasis>não</emphasis> precisamos chamar o <literal>addEntity()</"
+"literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;return-join&gt;</literal> element is use to join "
+"associations and the <literal>&lt;load-collection&gt;</literal> element is "
+"used to define queries which initialize collections,"
+msgstr ""
+"Os elementos <literal>&lt;return-join&gt;</literal> e <literal>&lt;load-"
+"collection&gt;</literal> são usados para unir associações e definir "
+"consultas que inicializam coleções, "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> "
+"element:"
+msgstr ""
+"Uma consulta SQL nomeada pode devolver um valor escalar. Você deve declarar "
+"um alias de coluna e um tipo Hibernate usando o elemento <literal>&lt;return-"
+"scalar&gt;</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can externalize the resultset mapping information in a <literal>&lt;"
+"resultset&gt;</literal> element which will allow you to either reuse them "
+"across several named queries or through the <literal>setResultSetMapping()</"
+"literal> API."
+msgstr ""
+"Você pode externar as informações de mapeamento de conjunto de resultado em "
+"um elemento <literal>&lt;resultset&gt;</literal> tanto para reusá-los em "
+"diversas consultas nomeadas quanto através da API "
+"<literal>setResultSetMapping()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can, alternatively, use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"Você pode também, como forma alternativa, usar a informação de mapeamento de "
+"conjunto de resultado em seus arquivos hbm em código de java. "
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr ""
+"Utilizando a propriedade retorno para especificar explicitamente os nomes de "
+"colunas/alias"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can explicitly tell Hibernate what column aliases to use with "
+"<literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}"
+"</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr ""
+"Com a <literal>&lt;return-property&gt;</literal> você pode informar "
+"explicitamente, quais aliases de coluna utilizar, ao invés de usar a sintáxe "
+"<literal>{}</literal> para deixar o Hibernate injetar seus próprios aliases. "
+"Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;return-property&gt;</literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which cannot "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal>&lt;return-property&gt;</literal> também funciona com colunas "
+"múltiplas. Isto resolve a limitação com a sintáxe <literal>{}</literal> que "
+"não pode permitir controle granulado fino de muitas propriedades de colunas "
+"múltiplas. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this example <literal>&lt;return-property&gt;</literal> was used in "
+"combination with the <literal>{}</literal>-syntax for injection. This allows "
+"users to choose how they want to refer column and properties."
+msgstr ""
+"Observe que neste exemplo nós usamos <literal>&lt;return-property&gt;</"
+"literal> combinado à síntáxe <literal>{}</literal> para injeção. Permite que "
+"os usuários escolham como eles querem se referir à coluna e às "
+"propriedades.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal>&lt;return-"
+"discriminator&gt;</literal> to specify the discriminator column."
+msgstr ""
+"Se seu mapeamento possuir um discriminador, você deve usar <literal>&lt;"
+"return-discriminator&gt;</literal> para especificar a coluna do "
+"discriminador."
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "Usando procedimentos de armazenamento para consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides support for queries via stored procedures and functions. "
+"Most of the following documentation is equivalent for both. The stored "
+"procedure/function must return a resultset as the first out-parameter to be "
+"able to work with Hibernate. An example of such a stored function in Oracle "
+"9 and higher is as follows:"
+msgstr ""
+"O Hibernate 3 apresenta o suporte para consultas através de procedimentos e "
+"funções armazenadas. A maior parte da documentação a seguir, é equivalente "
+"para ambos. Os procedimentos e funções armazenados devem devolver um "
+"conjunto de resultados como primeiros parâmetros externos para poder "
+"trabalhar com o Hibernate. Um exemplo disto é a função armazenada em Oracle "
+"9 e versões posteriores como se segue: "
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr ""
+"Para usar esta consulta no Hibernate você vai precisar mapeá-lo através de "
+"uma consulta nomeada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures currently only return scalars and entities. <literal>&lt;"
+"return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are "
+"not supported."
+msgstr ""
+"Observe que os procedimentos armazenados somente devolvem escalares e "
+"entidades. O <literal>&lt;return-join&gt;</literal> e <literal>&lt;load-"
+"collection&gt;</literal> não são suportados."
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "Regras e limitações para utilizar procedimentos armazenados."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You cannot use stored procedures with Hibernate unless you follow some "
+"procedure/function rules. If they do not follow those rules they are not "
+"usable with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Para usar procedimentos armazenados com Hibernate, os procedimentos e "
+"funções precisam seguir a mesma regra. Caso não sigam estas regras, não "
+"poderão ser usados com o Hibernate. Se você ainda desejar usar estes "
+"procedimentos, terá que executá-los através da <literal>session.connection()"
+"</literal>. As regras são diferentes para cada banco de dados, uma vez que "
+"os fabricantes possuem procedimentos de semânticas/sintáxe armazenados.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedure queries cannot be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"Consultas de procedimento armazenado não podem ser paginados com o "
+"<literal>setFirstResult()/setMaxResults()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;"
+"parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr ""
+"O formulário de chamada recomedado é o padrão SQL92: <literal>{ ? = call "
+"functionName(&lt;parameters&gt;) }</literal> or <literal>{ ? = call "
+"procedureName(&lt;parameters&gt;}</literal>. A sintáxe de chamada nativa não "
+"é suportada."
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "As seguintes regras se aplicam para Oracle:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type. See Oracle "
+"literature for further information."
+msgstr ""
+"A função deve retornar um conjunto de resultado. O primeiro parâmetro do "
+"procedimento deve ser um <literal>OUT</literal> que retorne um conjunto de "
+"resultado. Isto é feito usando o tipo <literal>SYS_REFCURSOR</literal> no "
+"Oracle 9 ou 10. No Oracle é necessário definir o tipo de <literal>REF "
+"CURSOR</literal>, veja a documentação do Oracle. "
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "Para servidores Sybase ou MS SQL aplicam-se as seguintes regras:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can "
+"return multiple result sets and update counts, Hibernate will iterate the "
+"results and take the first result that is a result set as its return value. "
+"Everything else will be discarded."
+msgstr ""
+"O procedimento deve retornar um conjunto de resultados. Observe que, como "
+"este servidor pode retornar múltiplos conjuntos de resultados e contas "
+"atualizadas, o Hibernate irá inteirar os resultados e pegar o primeiro "
+"resultado, o qual é o valor de retorno do conjunto de resultados. O resto "
+"será descartado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"Se você habilitar <literal>SET NOCOUNT ON</literal> no seu procedimento, ele "
+"provavelmente será mais eficiente. Mas, isto não é obrigatório"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr "SQL padronizado para criar, atualizar e deletar"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL for create, update, and delete operations. The "
+"SQL can be overridden at the statement level or inidividual column level. "
+"This section describes statement overrides. For columns, see <xref linkend="
+"\"mapping-column-read-and-write\" />."
+msgstr ""
+"O Hibernate 3 pode usar um SQL personalizado para criar, atualizar e deletar operações. O SQL pode ser substituído com o nível de declaração oi nível de coluna individua. Esta seção descreve as substituições de declaração. Para colunas, consulte <xref linkend="
+"\"mapping-column-read-and-write\" />."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The class and collection persisters in Hibernate already contain a set of "
+"configuration time generated strings (insertsql, deletesql, updatesql etc.). "
+"The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-"
+"delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override "
+"these strings:"
+msgstr ""
+"A persistência de classe e coleção no Hibernate já contém um "
+"conjunto de strings gerados por tempo de configuração (insertsql, deletesql, "
+"updatesql etc.). O mapeamento das tags <literal>&lt;sql-insert&gt;</"
+"literal>, <literal>&lt;sql-delete&gt;</literal>, e <literal>&lt;sql-"
+"update&gt;</literal> sobrescreve essas strings:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you can use any dialect "
+"you like. This will reduce the portability of your mapping if you use "
+"database specific SQL."
+msgstr ""
+"O SQL é executado diretamente no seu banco de dados, então você pode usar "
+"qualquer linguagem que quiser. Isto com certeza reduzirá a portabilidade do "
+"seu mapeamento se você utilizar um SQL para um banco de dados específico."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"Os procedimentos armazenados são suportados se a função <literal>callable</"
+"literal> estiver ativada:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The order of the positional parameters is vital, as they must be in the same "
+"sequence as Hibernate expects them."
+msgstr ""
+"A ordem de posições dos parâmetros são vitais, pois eles devem estar na "
+"mesma seqüência esperada pelo Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can view the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled, Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. To view the expected sequence, do not include "
+"your custom SQL in the mapping files, as this will override the Hibernate "
+"generated static SQL."
+msgstr ""
+"Você pode ver a ordem esperada ativando o debug logging no ní­vel "
+"<literal>org.hibernate.persister.entity</literal>. Com este ní­vel ativado, "
+"o Hibernate irá imprimir o SQL estático que foi usado para criar, atualizar, "
+"deletar, etc., entidades. Para ver a seqüência esperada, lembre-se de não "
+"incluir seu SQL padronizado no arquivo de mapeamento, pois ele irá "
+"sobrescrever o SQL estático gerado pelo Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The stored procedures are in most cases required to return the number of "
+"rows inserted, updated and deleted, as Hibernate has some runtime checks for "
+"the success of the statement. Hibernate always registers the first statement "
+"parameter as a numeric output parameter for the CUD operations:"
+msgstr ""
+"Os procedimentos armazenados são na maioria dos casos requeridos para "
+"retornar o número de linhas inseridas/atualizadas/deletadas, uma vez que o "
+"Hibernate possui algumas verificações em tempo de espera para o sucesso das "
+"instruções. O Hibernate sempre registra o primeiro parâmetro da instrução "
+"como um parâmetro de saída numérica para as operações CUD:"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "SQL padronizado para carga"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also declare your own SQL (or HQL) queries for entity loading. As "
+"with inserts, updates, and deletes, this can be done at the individual "
+"column level as described in <xref linkend=\"mapping-column-read-and-write"
+"\" /> or at the statement level. Here is an example of a statement level "
+"override:"
+msgstr ""
+"Você pode declarar também a sua própria consulta SQL (or HQL) para carregamento de entidade. Assim como inserções, atualizações e deletações, isto pode ser feito no nível de coluna individual conforme descrito no <xref linkend=\"mapping-column-read-and-write"
+"\" />ou no nível de declaração. Segue abaixo um exemplo de uma substituição no nível de declaração:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You can "
+"reference this named query in a class mapping:"
+msgstr ""
+"Este é apenas uma instrução de consulta nomeada, como discutido "
+"anteriormente. Você pode referenciar esta consulta nomeada em um mapeamento "
+"de classe:"
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "Este também funciona com procedimentos armazenados."
+
+#. Tag: para
+#, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr "Você pode também definir uma consulta para carregar uma coleção: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"Você pode até definir um carregador de entidade que carregue uma coleção por "
+"busca de união: "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/quickstart.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/quickstart.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/quickstart.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,12 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=utf-8\n"
+msgid "ROLES_OF_TRANSLATORS"
+msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+msgid "CREDIT_FOR_TRANSLATORS"
+msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/readonly.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/readonly.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/readonly.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1124 @@
+# Language pt-BR translations for PACKAGE package.
+# Automatically generated, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-25 06:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid ""
+"Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ "
+"from what you may have encountered elsewhere. Incorrect usage may cause "
+"unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check the entity's simple properties or single-"
+"ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid ""
+"Hibernate will not update simple properties or updatable single-ended "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid ""
+"Hibernate will not update the version of the read-only entity if only simple "
+"properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid ""
+"In some ways, Hibernate treats read-only entities the same as entities that "
+"are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid ""
+"Hibernate cascades operations to associations as defined in the entity "
+"mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid ""
+"Hibernate updates the version if the entity has a collection with changes "
+"that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid ""
+"Even if an entity is not read-only, its collection association can be "
+"affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid ""
+"For details about the affect of read-only entities on different property and "
+"association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid ""
+"It saves execution time by not dirty-checking simple properties or single-"
+"ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid ""
+"Only persistent entities can be made read-only. Transient and detached "
+"entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid ""
+"Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid ""
+"you can map an entity class as <emphasis>immutable</emphasis>; when an "
+"entity of an immutable class is made persistent, Hibernate automatically "
+"makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for "
+"details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid ""
+"you can change a default so that entities loaded into the session by "
+"Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-"
+"loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid ""
+"you can make an HQL query or criteria read-only so that entities loaded when "
+"the query or criteria executes, scrolls, or iterates, are automatically made "
+"read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid ""
+"you can make a persistent entity that is already in the in the session read-"
+"only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid ""
+"When an entity instance of an immutable class is made persistent, Hibernate "
+"automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid ""
+"An entity of an immutable class can created and deleted the same as an "
+"entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid ""
+"Hibernate treats a persistent entity of an immutable class the same way as a "
+"read-only persistent entity of a mutable class. The only exception is that "
+"Hibernate will not allow an entity of an immutable class to be changed so it "
+"is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid ""
+"To change the default behavior so Hibernate loads entity instances of "
+"mutable classes into the session and automatically makes them read-only, "
+"call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid ""
+"To change the default back so entities loaded by Hibernate are not made read-"
+"only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, entities loaded by the "
+"following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid ""
+"executing, scrolling, or iterating HQL queries and criteria; to override "
+"this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid ""
+"persistent entities that are refreshed via Session.refresh(); a refreshed "
+"persistent entity will only be read-only if it was read-only before "
+"refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid ""
+"persistent entities added by the application via Session.persist(), Session."
+"save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns false (the default) when an HQL query "
+"or criteria executes, then entities and proxies of mutable classes loaded by "
+"the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid ""
+"You can override this behavior so that entities and proxies loaded by an HQL "
+"query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid ""
+"<literal>Query.setReadOnly( true )</literal> must be called before "
+"<literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, "
+"<literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid ""
+"<literal>Criteria.setReadOnly( true )</literal> must be called before "
+"<literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</"
+"literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid ""
+"Entities and proxies that exist in the session before being returned by an "
+"HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid ""
+"Uninitialized persistent collections returned by the query are not affected. "
+"Later, when the collection is initialized, entities loaded into the session "
+"will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid ""
+"Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria."
+"setReadOnly( true )</literal> works well when a single HQL query or criteria "
+"loads all the entities and intializes all the proxies and collections that "
+"the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid ""
+"When it is not possible to load and initialize all necessary entities in a "
+"single query or criteria, you can temporarily change the session default to "
+"load entities as read-only before the query is executed. Then you can "
+"explicitly initialize proxies and collections before restoring the session "
+"default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"setDefaultReadOnly( true );\n"
+"Contract contract = \n"
+"   ( Contract ) session.createQuery(\n"
+"           \"from Contract where customerName = 'Sherman'\" )\n"
+"           .uniqueResult();\n"
+"Hibernate.initialize( contract.getPlan() );\n"
+"Hibernate.initialize( contract.getVariations() );\n"
+"Hibernate.initialize( contract.getNotes() );\n"
+"setDefaultReadOnly( false );\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, then you can use Query."
+"setReadOnly( false ) and Criteria.setReadOnly( false ) to override this "
+"session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid ""
+"Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid ""
+"To change a read-only entity or proxy of a mutable class so it is no longer "
+"read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid ""
+"When a read-only entity or proxy is changed so it is no longer read-only, "
+"Hibernate assumes that the current state of the read-only entity is "
+"consistent with its database representation. If this is not true, then any "
+"non-flushed changes made before or while the entity was read-only, will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid ""
+"To throw away non-flushed changes and make the persistent entity consistent "
+"with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid ""
+"To flush changes made before or while the entity was read-only and make the "
+"database representation consistent with the current state of the persistent "
+"entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+"// evict the read-only entity so it is detached\n"
+"session.evict( entity );\n"
+"\n"
+"// make the detached entity (with the non-flushed changes) persistent\n"
+"session.update( entity );\n"
+"\n"
+"// now entity is no longer read-only and its changes can be flushed\n"
+"s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid ""
+"The following table summarizes how different property types are affected by "
+"making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid ""
+"* Behavior is different when the entity having the property/association is "
+"read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid ""
+"When a persistent object is read-only, Hibernate does not dirty-check simple "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid ""
+"Hibernate will not synchronize simple property state changes to the "
+"database. If you have automatic versioning, Hibernate will not increment the "
+"version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"// get a contract and make it read-only\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"\n"
+"// contract.getCustomerName() is \"Sherman\"\n"
+"contract.setCustomerName( \"Yogi\" );\n"
+"tx.commit();\n"
+"\n"
+"tx = session.beginTransaction();\n"
+"\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"// contract.getCustomerName() is still \"Sherman\"\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-one and many-to-one associations in "
+"the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid ""
+"We use the term <emphasis>unidirectional single-ended association</emphasis> "
+"when referring to functionality that is common to unidirectional one-to-one "
+"and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check unidirectional single-ended associations when "
+"the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid ""
+"If you change a read-only entity's reference to a unidirectional single-"
+"ended association to null, or to refer to a different entity, that change "
+"will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, then its references to unidirectional "
+"single-ended associations must be assigned when that entity is first "
+"created. Because the entity is automatically made read-only, these "
+"references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid ""
+"In the following examples, Contract has a unidirectional many-to-one "
+"association with Plan. Contract cascades save and update operations to the "
+"association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid ""
+"The following shows that changing a read-only entity's many-to-one "
+"association reference to null has no effect on the entity's database "
+"representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and set its plan to null \n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"contract.setPlan( null );\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid ""
+"The following shows that, even though an update to a read-only entity's many-"
+"to-one association has no affect on the entity's database representation, "
+"flush still cascades the save-update operation to the locally changed "
+"association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and change to a new plan\n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"Plan newPlan = new Plan( \"new plan\"\n"
+"contract.setPlan( newPlan);\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"// newPlan is non-null because it was persisted when \n"
+"// the previous transaction was committed; \n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-many and many-to-many associations "
+"owned by a read-only entity the same as when owned by an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid ""
+"Hibernate dirty-checks unidirectional one-to-many and many-to-many "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid ""
+"The collection can contain entities that are read-only, as well as entities "
+"that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid ""
+"Entities can be added and removed from the collection; changes are flushed "
+"to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid ""
+"updates that change the association reference to null or to refer to a "
+"different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, and it owns a bidirectional one-to-"
+"one association, then its reference must be assigned when that entity is "
+"first created. Because the entity is automatically made read-only, these "
+"references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid ""
+"When the owner is not read-only, Hibernate treats an association with a read-"
+"only entity the same as when the association is with an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid ""
+"A read-only entity has no impact on a bidirectional one-to-many/many-to-one "
+"association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using a non-inverse "
+"collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid ""
+"the one-to-many side uses a non-inverse collection that contains the read-"
+"only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid ""
+"a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid ""
+"a read-only entity can only be removed from the collection by an orphan "
+"delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid ""
+"Hibernate treats bidirectional many-to-many associations owned by a read-"
+"only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid ""
+"The collection on either side of the association can contain entities that "
+"are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid ""
+"Entities are added and removed from both sides of the collection; changes "
+"are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in both sides of the collection if they dirty the entity owning the "
+"respective collections."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1725 @@
+# translation of session_api.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: session_api\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-19 10:25+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "Trabalhando com objetos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a natural object-oriented view of persistence "
+"in Java applications."
+msgstr ""
+"O Hibernate é uma solução completa de mapeamento objeto/relacional que não "
+"apenas poupa o desenvolvedor dos detalhes de baixo nível do sistema de "
+"gerenciamento do banco de dados, como também oferece um "
+"<emphasis>gerenciamento de estado</emphasis> para objetos. Isto é, ao "
+"contrário do gerenciamento de <literal>instruções</literal> SQL em camadas "
+"de persistência JDBC/SQL comuns, uma visão natural da persistência orientada "
+"a objetos em aplicações Java. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"Em outras palavras, desenvolvedores de aplicações Hibernate podem sempre "
+"considerar o <emphasis>estado</emphasis> de seus objetos, e não "
+"necessariamente a execução de instruções SQL. O Hibernate é responsável por "
+"esta parte e é relevante aos desenvolvedores de aplicações apenas quando "
+"estão ajustando o desempenho do sistema."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Estado dos objetos no Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr "O Hibernate define e suporta os seguintes estados de objetos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application does not hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transient</emphasis> - um objeto é transiente se ele foi "
+"instanciando usando apenas o operador <literal>new</literal> e não foi "
+"associado a uma <literal>Session</literal> do Hibernate. Ele não possui uma "
+"representação persistente no banco de dados e não lhe foi atribuído nenhum "
+"identificador. Instâncias transientes serão destruídas pelo coletor de lixo "
+"se a aplicação não mantiver sua referência. Use uma <literal>Session</"
+"literal> do Hibernate para tornar o objeto persistente (e deixe o Hibernate "
+"gerenciar as instruções SQL que serão necessárias para executar esta "
+"transição)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers do not execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistent</emphasis> - uma instância persistente possui uma "
+"representação no banco de dados e um identificador. Ela pode ter sido salva "
+"ou carregada, portanto ela se encontra no escopo de uma <literal>Session</"
+"literal>. O Hibernate irá detectar qualquer mudança feita a um objeto "
+"persistente e sincronizar o seu estado com o banco de dados quando completar "
+"a unidade de trabalho. Desenvolvedores não executam instruções manuais de "
+"<literal>UPDATE</literal>, ou instruções de <literal>DELETE</literal> quando "
+"o objeto se tornar transiente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e., a unit of work "
+"from the point of view of the user."
+msgstr ""
+"<emphasis>Detached</emphasis> – uma instância desanexada é um objeto que foi "
+"persistido, mas sua <literal>Session</literal> foi fechada. A referência ao "
+"objeto continua válida, é claro, e a instância desanexada pode ser acoplada "
+"a uma nova <literal>Session</literal> no futuro, tornando-o novamente "
+"persistente (e todas as modificações sofridas). Essa característica habilita "
+"um modelo de programação para unidades de trabalho de longa execução, que "
+"requeira um tempo de espera do usuário. Podemos chamá-las de "
+"<emphasis>transações da aplicação</emphasis>, ou seja, uma unidade de "
+"trabalho do ponto de vista do usuário."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"Agora iremos discutir os estados e suas transições (e os métodos do "
+"Hibernate que disparam uma transição) em mais detalhes."
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "Tornando os objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Newly instantiated instances of a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"As instâncias recentemente instanciadas de uma classe persistente são "
+"consideradas <emphasis>transientes </emphasis> pelo Hibernate. Podemos "
+"transformar uma instância transiente em <emphasis>persistente</emphasis> "
+"associando-a a uma sessão: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You can also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"Se <literal>Cat</literal> possui um identificador gerado, o identificador é "
+"gerado e atribuído à <literal>cat</literal> quando <literal>save()</literal> "
+"for chamado. Se <literal>Cat</literal> possuir um identificador "
+"<literal>Associado</literal>, ou uma chave composta, o identificador deverá "
+"ser atribuído à instância de <literal>cat</literal> antes que <literal>save()"
+"</literal> seja chamado. Pode-se usar também <literal>persist()</literal> ao "
+"invés de <literal>save()</literal>, com a semântica definida no novo esboço "
+"do EJB3. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it does not guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+"<literal>persist()</literal> faz uma instância transciente persistente. No "
+"entanto, isto não garante que o valor do identificador será determinado à "
+"instância persistente imediatamente, pois a determinação pode acontecer no "
+"período de limpeza. O <literal>persist()</literal> também garante que isto "
+"não executará uma declaração <literal>INSERT</literal> caso esta seja "
+"chamada fora dos limites da transação. Isto é útil em transações de longa-"
+"execução com um contexto de Sessão/persistência estendido."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
+msgstr ""
+"<literal>save()</literal> garante retornar um identificador. Caso um INSERT "
+"necessita ser executado para obter o identificador (ex.: gerador \"identidade"
+"\" e não \"seqüência\"), este INSERT acontece imediatamente, independente de "
+"você estar dentro ou fora da transação. Isto é problemático numa conversação "
+"de longa execução com um contexto de Sessão/persistência estendido."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"Alternativamente, pode-se atribuir o identificador usando uma versão "
+"sobrecarregada de <literal>save()</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects can be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"Se o objeto persistido tiver associado objetos (ex.: a coleção "
+"<literal>kittens</literal> no exemplo anterior), esses objetos podem se "
+"tornar persistentes em qualquer ordem que se queira, a não ser que se tenha "
+"uma restrição <literal>NOT NULL</literal> em uma coluna de chave "
+"estrangeira. Nunca há risco de violação de restrições de chave estrangeira. "
+"Assim, pode-se violar uma restrição <literal>NOT NULL</literal> se "
+"<literal>save()</literal> for usado nos objetos em uma ordem errada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually you do not bother with this detail, as you will normally use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations do not occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"Geralmente você não precisa se preocupar com esses detalhes, pois muito "
+"provavelmente usará a característica de <emphasis>persistência transitiva </"
+"emphasis> do Hibernate para salvar os objetos associados automaticamente. "
+"Assim, enquanto uma restrição <literal>NOT NULL</literal> não ocorrer, o "
+"Hibernate tomará conta de tudo. Persistência transitiva será discutida mais "
+"adiante nesse mesmo capítulo. "
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "Carregando o objeto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> provide "
+"a way of retrieving a persistent instance if you know its identifier. "
+"<literal>load()</literal> takes a class object and loads the state into a "
+"newly instantiated instance of that class in a persistent state."
+msgstr ""
+"O método <literal>load()</literal> de uma <literal> Session</literal> "
+"oferece uma maneira de recuperar uma instância persistente se o "
+"identificador for conhecido. O <literal>load()</literal> escolhe uma classe "
+"do objeto e carregará o estado em uma instância mais recente dessa classe, "
+"em estado persistente."
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr "Alternativamente, pode-se carregar um estado em uma instância dada:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Be aware that <literal>load()</literal> will throw an unrecoverable "
+"exception if there is no matching database row. If the class is mapped with "
+"a proxy, <literal>load()</literal> just returns an uninitialized proxy and "
+"does not actually hit the database until you invoke a method of the proxy. "
+"This is useful if you wish to create an association to an object without "
+"actually loading it from the database. It also allows multiple instances to "
+"be loaded as a batch if <literal>batch-size</literal> is defined for the "
+"class mapping."
+msgstr ""
+"Repare que <literal>load()</literal> irá lançar uma exceção irrecuperável se "
+"não houver na tabela no banco de dados um registro que combine. Se a classe "
+"for mapeada com um proxy, <literal>load()</literal> simplesmente retorna um "
+"proxy não inicializado e realmente não chamará o banco de dados até que um "
+"método do proxy seja invocado. Esse comportamento é muito útil para criar "
+"uma associação com um objeto sem que realmente o carregue do bando de dados. "
+"Isto também permite que sejam carregadas múltiplas instâncias como um grupo "
+"se o <literal>batch-size</literal> estiver definido para o mapeamento da "
+"classe. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"Se você não tiver certeza da existência do registro no banco, você deve usar "
+"o método <literal>get()</literal>, que consulta o banco imediatamente e "
+"retorna um null se não existir o registro. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"Também pode-se carregar um objeto usando <literal>SELECT ... FOR UPDATE</"
+"literal>, usando um <literal>LockMode</literal>. Veja a documentação da API "
+"para maiores informações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Any associated instances or contained collections will <emphasis>not</"
+"emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to "
+"specify <literal>lock</literal> or <literal>all</literal> as a cascade style "
+"for the association."
+msgstr ""
+"Note que quaisquer instâncias associadas ou que contenham coleções, "
+"<emphasis>não</emphasis> são selecionados <literal>FOR UPDATE</literal>, a "
+"não ser que você decida especificar um <literal>lock</literal> ou "
+"<literal>all</literal> como um estilo cascata para a associação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"É possível realizar o recarregamento de um objeto e todas as suas coleções a "
+"qualquer momento, usando o método <literal>refresh()</literal>.É útil quando "
+"os disparos do banco de dados são usados para inicializar algumas "
+"propriedades do objeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"How much does Hibernate load from the database and how many SQL "
+"<literal>SELECT</literal>s will it use? This depends on the "
+"<emphasis>fetching strategy</emphasis>. This is explained in <xref linkend="
+"\"performance-fetching\" />."
+msgstr ""
+"O quanto Hibernate carrega do banco de dados e quantos SQL <literal>SELECT</"
+"literal> ele irá usar? Isto depende da <emphasis>estratégia de "
+"busca</emphasis> usada e explicada na <xref linkend="
+"\"performance-fetching\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "Consultando"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You can also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"Se o identificador do objeto que se está buscando não for conhecido, será "
+"necessário realizar uma consulta. O Hibernate suporta uma linguagem de "
+"consulta (HQL) orientada a objetos fáceis de usar, porém poderosos. Para "
+"criação via programação de consultas, o Hibernate suporta características "
+"sofisticadas de consulta por Critério e Exemplo (QBCe QBE). Pode-se também "
+"expressar a consulta por meio de SQL nativa do banco de dados, com suporte "
+"opcional do Hibernate para conversão do conjunto de resultados em objetos. "
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "Executando consultas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
+msgstr ""
+"Consultas HQL e SQL nativas são representadas por uma instância de "
+"<literal>org.hibernate.Query</literal>. Esta interface oferece métodos para "
+"associação de parâmetros, tratamento de conjunto de resultados e para a "
+"execução de consultas reais. Você pode obter uma <literal>Query</literal> "
+"usando a <literal>Session</literal> atual:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A query is usually executed by invoking <literal>list()</literal>. The "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in a persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Queries that make use of eager "
+"fetching of collections usually return duplicates of the root objects, but "
+"with their collections initialized. You can filter these duplicates through "
+"a <literal>Set</literal>."
+msgstr ""
+"Geralmente uma consulta é executada ao invocar <literal>list()</literal>.O "
+"resultado da consulta será carregado completamente em uma coleção na "
+"memória. Instâncias de entidades recuperadas por uma consulta estão no "
+"estado persistente. O <literal>uniqueResult()</literal> oferece um atalho se "
+"você souber previamente, que a consulta retornará apenas um único objeto. "
+"Repare que consultas que fazem uso da busca antecipada (eager fetching) de "
+"coleções, geralmente retornam duplicatas dos objetos raiz, mas com suas "
+"coleções inicializadas. Pode-se filtrar estas duplicatas através de um "
+"simples <literal>Set</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "Interagindo com resultados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will usually "
+"be the case if you expect that the actual entity instances returned by the "
+"query will already be in the session or second-level cache. If they are not "
+"already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"Ocasionalmente, pode-se obter um melhor desempenho com a execução de "
+"consultas, usando o método <literal>iterate()</literal>. Geralmente isso "
+"acontece apenas se as instâncias das entidades reais retornadas pela "
+"consulta já estiverem na sessão ou no cachê de segundo nível. Caso elas "
+"ainda não tenham sido armazenadas, <literal>iterate()</literal> será mais "
+"devagar do que <literal>list()</literal> e podem ser necessários vários "
+"acessos ao banco de dados para uma simples consulta, geralmente <emphasis>1</"
+"emphasis> para a seleção inicial que retorna apenas identificadores, e "
+"<emphasis>n</emphasis> consultas adicionais para inicializar as instâncias "
+"reais. "
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "Consultas que retornam tuplas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate queries sometimes return tuples of objects. Each tuple is returned "
+"as an array:"
+msgstr ""
+"Algumas vezes as consultas do Hibernate retornam tuplas de objetos. Cada "
+"tupla é retornada como uma matriz:"
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "Resultados escalares"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Queries can specify a property of a class in the <literal>select</literal> "
+"clause. They can even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results and not entities in persistent state."
+msgstr ""
+"As consultas devem especificar uma propriedade da classe na cláusula "
+"<literal>select</literal>. Elas também podem chamar funções SQL de "
+"agregações. Propriedades ou agregações são consideradas resultados agregados "
+"e não entidades no estado persistente. "
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "Parâmetros de vínculo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are as follows:"
+msgstr ""
+"Métodos em <literal>Consulta</literal> são oferecidos para valores de "
+"vínculo para parâmetros nomeados ou de estilo JDBC <literal>?</literal>. "
+"<emphasis>Ao contrário do JDBC, o Hibernate numera parâmetros a partir de "
+"zero.</emphasis> Parâmetros nomeados são identificadores da forma<literal>:"
+"name</literal> na faixa de consulta. As vantagens de parâmetros nomeados "
+"são: "
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters are insensitive to the order they occur in the query string"
+msgstr ""
+"Parâmetros nomeados são insensíveis à ordem que eles ocorrem na faixa de "
+"consulta"
+
+#. Tag: para
+#, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "eles podem ocorrer em tempos múltiplos na mesma consulta "
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "eles são auto documentáveis"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "Paginação"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set, that is, the maximum "
+"number of rows you want to retrieve and/or the first row you want to "
+"retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"Se você precisar especificar vínculos do conjunto de resultados, o máximo de "
+"números por linha que quiser recuperar e/ou a primeira linha que quiser "
+"recuperar, você deve usar métodos de interface <literal>Consulta</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"O Hibernate sabe como traduzir esta consulta de limite para a SQL nativa de "
+"seu DBMS"
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "Iteração rolável"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface can be used to obtain a "
+"<literal>ScrollableResults</literal> object that allows flexible navigation "
+"of the query results."
+msgstr ""
+"Se seu driver JDBC driver suportar <literal>ResultSet</literal>s roláveis, a "
+"interface da <literal>Consulta</literal> poderá ser usada para obter um "
+"objeto de <literal>ScrollableResults</literal>, que permite uma navegação "
+"flexível dos resultados de consulta.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that an open database connection and cursor is required for this "
+"functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"Note que uma conexão aberta de banco de dados (e cursor) é requerida para "
+"esta função, use <literal>setMaxResult()</literal>/<literal>setFirstResult()"
+"</literal> se precisar da função de paginação offline. "
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "Externando consultas nomeadas"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also define named queries in the mapping document. Remember to use a "
+"<literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup."
+msgstr ""
+"Você pode também definir consultas nomeadas no documento de mapeamento. "
+"Lembre-se de usar uma seção <literal>CDATA</literal> se sua consulta "
+"contiver caracteres que possam ser interpretados como marcação."
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr "O vínculo e execução de parâmetro são feitos programaticamente :"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The actual program code is independent of the query language that is used. "
+"You can also define native SQL queries in metadata, or migrate existing "
+"queries to Hibernate by placing them in mapping files."
+msgstr ""
+"Note que o código de programa atual é independente da linguagem de consulta "
+"que é utilizada, você também pode definir as consultas SQL nativas no "
+"metadado, ou migrar consultas existentes para o Hibernate, colocando-os em "
+"arquivos de mapeamento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal>&lt;hibernate-"
+"mapping&gt;</literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal>&lt;class&gt;</literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"Observe também que uma declaração de consulta dentro de um elemento "
+"<literal>&lt;hibernate-mapping&gt;</literal> requer um nome único global "
+"para a consulta, enquanto uma declaração de consulta dentro de um elemento "
+"de <literal>&lt;classe&gt;</literal> torna-se único automaticamente, "
+"aguardando o nome completo da classe qualificada, por exemplo: <literal>eg."
+"Cat.ByNameAndMaximumWeight</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "Filtrando coleções"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that can "
+"be applied to a persistent collection or array. The query string can refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"Uma coleção <emphasis>filter</emphasis> é um tipo especial de consulta que "
+"pode ser aplicado a uma coleção persistente ou a uma matriz. A faixa de "
+"consulta pode referir-se ao <literal>this</literal>, significando o elemento "
+"de coleção atual. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The returned collection is considered a bag that is a copy of the given "
+"collection. The original collection is not modified. This is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior."
+msgstr ""
+"A coleção retornada é considerada uma bolsa, e é a cópia da coleção dada. A "
+"coleção original não é modificada. Ela é oposta à implicação do nome \"filtro"
+"\", mas é consistente com o comportamento esperado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause, "
+"although they can have one if required. Filters are not limited to returning "
+"the collection elements themselves."
+msgstr ""
+"Observe que os filtros não requerem uma cláusula <literal>from</literal> "
+"embora possam ter um, se requerido. Os filtros não são limitados a retornar "
+"aos elementos de coleção. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"large collection:"
+msgstr ""
+"Até mesmo um filtro vazio é útil, ex.: para carregar um subconjunto em uma "
+"coleção enorme:"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "Consulta por critério"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"HQL is extremely powerful, but some developers prefer to build queries "
+"dynamically using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"O HQL é extremamente potente mas alguns desenvolvedores preferem construir "
+"consultas de forma dinâmica, utilizando um API de objeto, ao invés de "
+"construir faixas de consultas. O Hibernate oferece uma API de consulta de "
+"<literal>Critério</literal> intuitiva para estes casos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria"
+"\" />."
+msgstr ""
+"Um <literal>Criteria</literal> e API associado <literal>Example</literal> "
+"serão discutidos em mais detalhes em <xref linkend=\"querycriteria"
+"\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "Consultas em SQL nativa"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate manage the mapping from result sets to objects. You can at "
+"any time call <literal>session.connection()</literal> and use the JDBC "
+"<literal>Connection</literal> directly. If you choose to use the Hibernate "
+"API, you must enclose SQL aliases in braces:"
+msgstr ""
+"Você pode expressar uma consulta em SQL utilizando <literal>createSQLQuery()"
+"</literal> e deixar o Hibernate tomar conta do mapeamento desde conjuntos de "
+"resultados até objetos. Note que você pode chamar uma <literal>session."
+"connection()</literal> a qualquer momento e usar a <literal>Connection</"
+"literal> JDBC diretamente. Se você escolher utilizar a API Hibernate, você "
+"deve incluir as aliases SQL dentro de chaves: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"SQL queries can contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\" />."
+msgstr ""
+"As consultas SQL podem conter parâmetros nomeados e posicionais, assim como "
+"as consultas Hibernate. Maiores informações sobre as consultas nativas SQL "
+"no Hibernate poderão ser encontradas em <xref linkend=\"querysql\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "Modificando objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (i.e. objects "
+"loaded, saved, created or queried by the <literal>Session</literal>) can be "
+"manipulated by the application, and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis>. This is discussed later in this chapter. There is no need to call "
+"a particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. The most straightforward way "
+"to update the state of an object is to <literal>load()</literal> it and then "
+"manipulate it directly while the <literal>Session</literal> is open:"
+msgstr ""
+"<emphasis>Instâncias persistentes transacionais</emphasis> (ou seja, objetos "
+"carregados, salvos, criados ou consultados pela <literal>Session</literal>) "
+"podem ser manipuladas pela aplicação e qualquer mudança para estado "
+"persistente será persistida quando a <literal>Sessão</literal> for "
+"<emphasis>limpa</emphasis>. Isto será discutido mais adiante neste capítulo. "
+"Não há necessidade de chamar um método em particular (como <literal>update()"
+"</literal>, que possui um propósito diferente) para fazer modificações "
+"persistentes. Portanto, a forma mais direta de atualizar o estado de um "
+"objeto é <literal>carregá-lo()</literal> e depois manipulá-lo diretamente, "
+"enquanto a <literal>Sessão</literal> estiver aberta:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient, as it requires in the same "
+"session both an SQL <literal>SELECT</literal> to load an object and an SQL "
+"<literal>UPDATE</literal> to persist its updated state. Hibernate offers an "
+"alternate approach by using detached instances."
+msgstr ""
+"Algumas vezes, este modelo de programação é ineficiente, uma vez que ele "
+"requer ambos SQL <literal>SELECT</literal> (para carregar um objeto) e um "
+"SQL<literal>UPDATE</literal> (para persistir seu estado atualizado) na mesma "
+"sessão. Por isso, o Hibernate oferece uma abordagem alternativa, usando "
+"instâncias desanexadas."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you do not have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate can, however, provide special mass operation functions. See <xref "
+"linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr ""
+"Note que o Hibernate não oferece seu próprio API para execução direta de "
+"instruções <literal>UPDATE</literal> ou <literal>DELETE</literal>. O "
+"Hibernate é um serviço de <emphasis>gerenciamento de estado</emphasis> que "
+"você nem precisa se preocupar com <emphasis>instruções</emphasis> para "
+"utilizá-lo. O JDBC é um API perfeito para executar instruções SQL, você pode "
+"ter uma <literal>Connection</literal> JDBC a qualquer momento, chamando "
+"<literal>session.connection()</literal>. Além disso, a noção de operações em "
+"massa conflitua com o mapeamento de objeto/relacional para aplicativos de "
+"transações online com processamento. No entanto, versões futuras do "
+"Hibernate poderão oferecer funções especiais de operação em massa. Veja "
+"<xref linkend=\"batch\" />  para alguns possíveis truques de operação em lote. "
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "Modificando objetos desacoplados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"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 ""
+"Muitas aplicações precisam recuperar um objeto em uma transação, enviá-lo "
+"para a camada UI para manipulação e somente então salvar as mudanças em uma "
+"nova transação. As aplicações que usam este tipo de abordagem em ambiente de "
+"alta concorrência, geralmente usam dados versionados para assegurar isolação "
+"durante a \"longa\" unidade de trabalho."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"O Hibernate suporta este modelo, oferecendo re-acoplamentos das instâncias "
+"usando os métodos <literal>Session.update()</literal> ou<literal>Session."
+"merge()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"Se o <literal>Cat</literal> com identificador <literal>catId</literal> já "
+"tivesse sido carregado pela<literal>segundaSessão</literal> quando a "
+"aplicação tentou re-acoplá-lo, teria surgido uma exceção."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are certain that the session does not "
+"contain an already persistent instance with the same identifier. Use "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that the reattachment of your detached instances is "
+"the first operation that is executed."
+msgstr ""
+"Use <literal>update()</literal> se você tiver certeza de que a sessão já não "
+"contém uma instância persistente com o mesmo identificador, e <literal>merge"
+"()</literal> se você quiser mesclar suas modificações a qualquer momento sem "
+"considerar o estado da sessão. Em outras palavras, <literal>update()</"
+"literal> é geralmente o primeiro método que você chama em uma nova sessão, "
+"assegurando que o re-acoplamento de suas instâncias seja a primeira operação "
+"executada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances that are reachable from the given detached instance "
+"<emphasis>only</emphasis> if it wants their state to be updated. This can be "
+"automated using <emphasis>transitive persistence</emphasis>. See <xref "
+"linkend=\"objectstate-transitive\" /> for more information."
+msgstr ""
+"A aplicação deve <literal>update()</literal> instâncias desanexadas "
+"individualmente, ao alcance da atual instância desanexada, se e "
+"<emphasis>somente</emphasis> se, esta requerer uma atualização também de seu "
+"estado. Esta ação pode ser automatizada utilizando "
+"<emphasis>persistência transitiva</emphasis>. Consulte <xref linkend="
+"\"objectstate-transitive\"/> para maiores informações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified."
+msgstr ""
+"O método <literal>lock()</literal> também permite que um aplicativo re-"
+"associe um objeto com uma nova sessão. No entanto, a instância desanexada "
+"não pode ser modificada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s. See the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"Note que <literal>lock()</literal> pode ser usado com diversos "
+"<literal>LockMode</literal>s, veja a documentação API e o capítulo sobre "
+"manuseio de transações para maiores informações. Re-acoplamento não é o "
+"único caso de uso para <literal>lock()</literal>.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\" />."
+msgstr ""
+"Outros modelos para unidades longas de trabalho serão discutidas em <xref linkend="
+"\"transactions-optimistic\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "Detecção automática de estado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Os usuários de Hibernate solicitaram um método geral, tanto para salvar uma "
+"instância transiente, gerando um novo identificador, quanto para atualizar/ "
+"re-acoplar as instâncias desanexadas associadas ao seu identificador atual. "
+"O método <literal>saveOrUpdate()</literal> implementa esta funcionalidade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"O uso e semântica do <literal>saveOrUpdate()</literal> parecem ser confusos "
+"para novos usuários. A princípio, enquanto você não tentar usar instâncias "
+"de uma sessão em outra nova sessão, não precisará utilizar <literal>update()"
+"</literal>, <literal>saveOrUpdate()</literal>, ou <literal>merge()</"
+"literal>. Algumas aplicações inteiras nunca precisarão utilizar estes "
+"métodos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"Geralmente, <literal>update()</literal> ou <literal>saveOrUpdate()</"
+"literal>são utilizados nos seguintes cenários:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "a aplicação carrega um objeto na primeira sessão"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "o objeto é passado para a camada UI"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "algumas modificações são feitas ao objeto"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "o objeto é retornado à camada lógica de negócios"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"a aplicação persiste estas modificações, chamando <literal>update()</"
+"literal> em uma segunda sessão."
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal> faz o seguinte:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr "se o objeto já estiver persistente nesta sessão, não faça nada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"se outro objeto associado com a sessão possuir o mesmo identificador, jogue "
+"uma exceção"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr ""
+"se o objeto não tiver uma propriedade de identificador <literal>salve-o()</"
+"literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"se o identificador do objeto possuir o valor atribuído ao objeto "
+"recentemente instanciado, <literal>salve-o()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if the object is versioned by a <literal>&lt;version&gt;</literal> or "
+"<literal>&lt;timestamp&gt;</literal>, and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"se o objeto for versionado por um <literal>&lt;version&gt;</literal> ou "
+"<literal>&lt;timestamp&gt;</literal>, e o valor da propriedade da versão for "
+"o mesmo valor atribuído ao objeto recentemente instanciado, <literal>salve()"
+"</literal> o mesmo"
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr "do contrário <literal>atualize()</literal> o objeto"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "e a <literal>mesclagem()</literal> é bastante diferente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"se existir uma instância persistente com um mesmo identificador associado "
+"atualmente com a sessão, copie o estado do objeto dado para a instância "
+"persistente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"se não existir uma instância persistente atualmente associada com a sessão, "
+"tente carregá-la a partir do banco de dados, ou crie uma nova instância "
+"persistente"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "a instância persistente é retornada"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"a instância dada não se torna associada com a sessão, ela permanece "
+"desanexada"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "Apagando objetos persistentes"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Your application, however, can still hold a reference to a deleted "
+"object. It is best to think of <literal>delete()</literal> as making a "
+"persistent instance, transient."
+msgstr ""
+"A <literal>Session.delete()</literal> removerá um estado de objeto do banco "
+"de dados. É claro que seu aplicativo pode ainda reter uma referência à um "
+"objeto apagado. É melhor pensar em <literal>delete()</literal> como fazer "
+"uma instância persistente se tornar transiente.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can delete objects in any order, without risk of foreign key constraint "
+"violations. It is still possible to violate a <literal>NOT NULL</literal> "
+"constraint on a foreign key column by deleting objects in the wrong order, e."
+"g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"Você poderá deletar objetos na ordem que desejar, sem risco de violação de "
+"restrição da chave estrangeira.  É possível violar uma restrição "
+"<literal>NOT NULL</literal> em uma coluna de chave estrangeira, apagando "
+"objetos na ordem inversa, ex.: se apagar o pai, mas esquecer de apagar o "
+"filho.  "
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "Replicando objeto entre dois armazenamentos de dados diferentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is sometimes useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"Algumas vezes é útil poder tirar um gráfico de instâncias persistentes e "
+"fazê-los persistentes em um armazenamento de dados diferente, sem gerar "
+"novamente valores de identificador. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database:"
+msgstr ""
+"O <literal>ReplicationMode</literal> determina como o <literal>replicate()</"
+"literal> irá lidar com conflitos em linhas existentes no banco de dados: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal>: ignore o objeto quando houver uma "
+"linha de banco de dados existente com o mesmo identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal>: subscreva uma linha de banco "
+"de dados existente com um mesmo identificador."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal>: jogue uma exceção se houver "
+"uma linha de banco de dados existente com o mesmo identificador. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal>: subscreva a linha se seu "
+"número de versão for anterior ao número de versão do objeto, caso contrário, "
+"ignore o objeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"O caso de uso para este recurso inclui dados de reconciliação em instâncias "
+"de banco de dados diferentes, atualizando informações da configuração do "
+"sistema durante a atualização do produto, retornando mudanças realizadas "
+"durante transações não ACID entre outras funções."
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "Limpando a Sessão"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes the <literal>Session</literal> will execute the SQL statements "
+"needed to synchronize the JDBC connection's state with the state of objects "
+"held in memory. This process, called <emphasis>flush</emphasis>, occurs by "
+"default at the following points:"
+msgstr ""
+"De vez em quando, a <literal>Session</literal> irá executar as instruções "
+"SQL, necessárias para sincronizar o estado de conexão JDBC com o estado de "
+"objetos mantidos na memória. Este processo de <emphasis>flush</emphasis>, "
+"ocorre por padrão nos seguintes pontos: "
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "antes de algumas execuções de consultas"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "a partir de<literal>org.hibernate.Transaction.commit()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "a partir de <literal>Session.flush()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "As instruções SQL são editadas na seguinte ordem:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity insertions in the same order the corresponding objects were saved "
+"using <literal>Session.save()</literal>"
+msgstr ""
+"todas as inserções de entidade, na mesma ordem que os objetos "
+"correspondentes foram salvos usando <literal>Session.save()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "todas as atualizações de entidades"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "todas as deleções de coleções"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr "todas as deleções, atualizações e inserções de elementos de coleção."
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "todas as inserções de coleção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"all entity deletions in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"todas as deleções de entidade, na mesma ordem que os objetos correspondentes "
+"foram deletados usando <literal>Session.delete()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved."
+msgstr ""
+"Uma exceção é que o objeto que utiliza a geração de ID <literal>native</"
+"literal> é inserido quando salvo."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Except when you explicitly <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale or incorrect data."
+msgstr ""
+"Exceto quando você explicitamente <literal>limpar()</literal>, não há "
+"nenhuma garantia sobre <emphasis>quando</emphasis> a <literal>Sessão</"
+"literal> executará as chamadas de JDBC, somente se sabe a <emphasis>ordem</"
+"emphasis> na qual elas são executadas. No entanto, o Hibernate garante que a "
+"<literal>Query.list(..)</literal> nunca retornará dados antigos, nem "
+"retornará dados errados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time when the Hibernate <literal>Transaction</"
+"literal> API is used, flush automatically using the explained routine, or "
+"never flush unless <literal>flush()</literal> is called explicitly. The last "
+"mode is useful for long running units of work, where a <literal>Session</"
+"literal> is kept open and disconnected for a long time (see <xref linkend="
+"\"transactions-optimistic-longsession\" />)."
+msgstr ""
+"É possível mudar o comportamento padrão para que a limpeza ocorra com menos "
+"freqüência. A classe <literal>FlushMode</literal> define três modos "
+"diferentes: somente limpe em um tempo submetido: somente quando a API da "
+"<literal>Transaction</literal> do Hibernate for usada, limpe automaticamente "
+"usando uma rotina explicada, ou nunca limpe a menos que o <literal>flush()</"
+"literal> seja chamado explicitamente. O último modo é útil para execução de "
+"unidades de trabalho longas, onde uma <literal>Session</literal> é mantida "
+"aberta e disconectada por um longo tempo (veja <xref linkend=\"transactions-"
+"optimistic-longsession\"/>). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\" />."
+msgstr ""
+"Durante uma limpeza, pode ocorrer uma exceção (ex.: se uma operação DML "
+"violar uma restrição). Como o manuseio de exceções envolve algum "
+"entendimento do comportamento transacional do Hibernate, discutiremos sobre "
+"isso em <xref linkend="
+"\"transactions\" />."
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "Persistência Transitiva"
+
+#. Tag: para
+#, 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 ""
+"É um tanto incômodo salvar, deletar ou reanexar objetos individuais, "
+"especialmente ao lidar com um grafo de objetos associados. Um caso comum é "
+"um relacionamento pai/filho. Considere o seguinte exemplo: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved and when the parent is deleted, the children will be deleted, etc. "
+"This works for operations such as the removal of a child from the "
+"collection. Since value-typed objects cannot have shared references, "
+"Hibernate will detect this and delete the child from the database."
+msgstr ""
+"Se os filhos em um relacionamento pai/filho fossem do tipo valor (ex.: "
+"coleção de endereços ou strings), seus ciclos de vida dependeriam do pai e "
+"nenhuma ação seria requerida para \"cascateamento\" de mudança de estado. "
+"Quando o pai é salvo, os objetos filho de valor são salvos também, quando o "
+"pai é deletado, os filhos também serão deletados, etc. Isto funciona até "
+"para operações como remoção de filho da coleção. O Hibernate irá detectar "
+"isto e como objetos de valor não podem ter referências compartilhadas, irá "
+"deletar o filho do banco de dados.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"Agora considere o mesmo cenário com objeto pai e filho sendo entidades, e "
+"não de valores (ex.: categorias e ítens, ou cats pai e filho). As entidades "
+"possuem seus próprios ciclos de vida, suportam referências compartilhadas "
+"(portanto, remover uma entidade da coleção não significa que possa ter sido "
+"deletada), e não existe efeito cascata de estado, por padrão, a partir de "
+"uma entidade para outras entidades associadas. O Hibernate não implementa "
+"<emphasis>persistência por alcance</emphasis> por padrão. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"Para cada operação básica da sessão do Hibernate, incluindo<literal>persistir"
+"(), mesclar(), salvarOuAtualizar(), deletar(), bloquear(), atualizar(), "
+"despejar(), replicar()</literal>, existe um estilo cascata correspondente. "
+"Respectivamente, os estilos cascatas são nomeados <literal>criar, mesclar, "
+"salvar-atualizar, deletar, bloquiar, atualizar, despejar, replicar</"
+"literal>. Se desejar uma operação em cascata junto a associação, você deverá "
+"indicar isto no documento de mapeamento. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr "Estilo cascata pode ser combinado:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"Você pode até utilizar <literal>cascade=\"all\"</literal> para especificar "
+"que <emphasis>todas</emphasis> as operações devem estar em cascata junto à "
+"associação. O padrão <literal>cascade=\"none\"</literal> especifica que "
+"nenhuma operação deve estar em cascata. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"Um estilo especial em cascata, <literal>delete-orphan</literal>, aplica "
+"somente associações um-para-um, e indica que a operação <literal>delete()</"
+"literal> deve ser aplicada em qualquer objeto filho que seja removido da "
+"associação."
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "Recomendações:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It does not usually make sense to enable cascade on a <literal>&lt;many-to-"
+"one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. "
+"Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and "
+"<literal>&lt;one-to-many&gt;</literal> associations."
+msgstr ""
+"Não faz sentido habilitar a cascata em uma associação. <literal>&lt;many-to-"
+"one&gt;</literal> ou <literal>&lt;many-to-many&gt;</literal> A Cascata é "
+"geralmente útil para associações <literal>&lt;one-to-one&gt;</literal> e "
+"<literal>&lt;one-to-many&gt;</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"Se o tempo de vida do objeto filho estiver vinculado ao tempo de vida do "
+"objeto pai, faça disto um <emphasis>objeto de ciclo de vida</emphasis> "
+"especificando um <literal>cascade=\"all,delete-orphan\"</literal>."
+
+#. Tag: para
+#, 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 "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"Caso contrário, você pode não precisar realizar a cascata. Mas se você achar "
+"que irá trabalhar com o pai e filho juntos com freqüência, na mesma "
+"transação, e quiser salvar você mesmo, considere o uso do <literal>cascata="
+"\"persistir,mesclar,salvar-atualizar\"</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"Ao mapear uma associação (tanto uma associação de valor único como uma "
+"coleção) com  <literal>casca de=\"all\"</literal>, a associação é demarcada  "
+"como um relacionamento de estilo <emphasis>parent/child</emphasis> onde "
+"salvar/atualizar/deletar do pai, resulta em salvar/atualizar/deletar do(s) "
+"filho(s)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Furthermore, a mere reference to a child from a persistent parent will "
+"result in save/update of the child. This metaphor is incomplete, however. A "
+"child which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"Além disso, uma mera referência ao filho de um pai persistente irá resultar "
+"em salvar/atualizar/ o filho. Entretanto, esta metáfora está incompleta. Um "
+"filho, que não é referenciado por seu pai <emphasis>não</emphasis> é "
+"deletado automaticamente, exceto no caso de uma associação <literal>&lt;one-"
+"to-many&gt;</literal> mapeada com <literal>casca de=\"delete-orphan\"</"
+"literal>. A semântica exata, de operações em cascata para o relacionamento "
+"pai/filho, são como as que se seguem: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"Se um pai é passado para <literal>persist()</literal>, todos os filhos são "
+"passados para <literal>persist()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"Se um pai é passado para <literal>merge()</literal>, todos os filhos são "
+"passados para  <literal>merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"Se um pai for passado para <literal>save()</literal>, <literal>update()</"
+"literal> ou <literal>saveOrUpdate()</literal>, todos os filhos passarão para "
+"<literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"Se um filho transiente ou desanexado se tornar referenciado pelo pai "
+"persistente, ele será passado para <literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"Se um pai for deletado, todos os filhos serão passados para <literal>delete()"
+"</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"Se um filho for diferenciado pelo pai persistente, <emphasis>nada de "
+"especial acontece</emphasis> - a aplicação deve explicitamente deletar o "
+"filho se necessário, a não ser que <literal>casca de=\"delete-orphan\"</"
+"literal>, nos quais casos o filho \"órfão\" é deletado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-update</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"Finalmente, note que o cascateamento das operações podem ser aplicados a um "
+"grafo de objeto em <emphasis>tempo de chamada</emphasis> ou em "
+"<emphasis>tempo de limpeza</emphasis>. Todas as operações, se habilitadas, "
+"são colocadas em cascata para entidades associadas atingíveis quando a "
+"operação for executada. No entanto, <literal>save-upate</literal> e "
+"<literal>delete-orphan</literal> são transitivas para todas as entidades "
+"associadas atingíveis durante a limpeza da <literal>Sessão</literal>. "
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "Usando metadados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate requires a rich meta-level model of all entity and value types. "
+"This model can be useful to the application itself. For example, the "
+"application might use Hibernate's metadata to implement a \"smart\" deep-"
+"copy algorithm that understands which objects should be copied (eg. mutable "
+"value types) and which objects that should not (e.g. immutable value types "
+"and, possibly, associated entities)."
+msgstr ""
+"O Hibernate requer um modelo muito rico, em nível de metadados, de todas as "
+"entidades e tipos de valores. De tempos em tempos, este modelo é muito útil "
+"à própria aplicação. Por exemplo, a aplicação pode usar os metadados do "
+"Hibernate, que executa um algoritmo \"inteligente\", que compreende quais "
+"objetos podem ser copiados (por exemplo, tipos de valores mutáveis) ou não "
+"(por exemplo, tipos de valores imutáveis e, possivelmente, entidades "
+"associadas). "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces can be obtained "
+"from the <literal>SessionFactory</literal>."
+msgstr ""
+"O Hibernate expõe os metadados via interfaces <literal>ClassMetadata</"
+"literal> e <literal>CollectionMetadata</literal> e pela hierarquia "
+"<literal>Type</literal>. Instâncias das interfaces de metadados podem ser "
+"obtidas a partir do <literal>SessionFactory</literal>. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,939 @@
+# translation of toolset_guide.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: toolset_guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-19 10:27+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "Guia de Toolset"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, and Ant tasks."
+msgstr ""
+"É possível realizar uma engenharia de roundtrip com o Hibernate, usando um "
+"conjunto de plug-ins de Eclipse, ferramentas de linha de comando, assim como "
+"tarefas Ant."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"As <emphasis>Ferramentas do Hibernate</emphasis> atualmente incluem os plug-"
+"ins para o IDE de Eclipse assim como as tarefas para reverter a engenharia "
+"dos bancos de dados existentes:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping "
+"files that supports auto-completion and syntax highlighting. It also "
+"supports semantic auto-completion for class names and property/field names, "
+"making it more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>Editor de Mapeamento:</emphasis> um editor para mapeamento de "
+"arquivos XML do Hibernate, suportando a auto complexão e destaque de "
+"sintáxe. Ele também suporta a auto complexão da semântica para nomes de "
+"classes e nomes de propriedade/campo, fazendo com que ele seja mais versátil "
+"do que um editor XML normal. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> the console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you are also "
+"provided with an interactive view of your persistent classes and their "
+"relationships. The console allows you to execute HQL queries against your "
+"database and browse the result directly in Eclipse."
+msgstr ""
+"<emphasis>Console:</emphasis> o console é uma nova visão em Eclipse. Além "
+"disso, para uma visão geral de árvore de suas configurações de console, você "
+"também pode obter uma visão interativa de suas classes persistentes e seus "
+"relacionamentos. O console permite que você execute as consultas HQL junto "
+"ao banco de dados e navegue o resultado diretamente em Eclipse. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> several wizards are provided with "
+"the Hibernate Eclipse tools. You can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or to reverse engineer an existing "
+"database schema into POJO source files and Hibernate mapping files. The "
+"reverse engineering wizard supports customizable templates."
+msgstr ""
+"<emphasis>Assistentes de Desenvolvimento:</emphasis> são oferecidos diversos "
+"assistentes com as ferramentas de Eclipse do Hibernate. Você pode usar o "
+"assistente para gerar rapidamente arquivos de configuração do Hibernate (cfg."
+"xml), ou você pode também reverter completamente o engenheiro, um esquema de "
+"banco de dados existente, para arquivos de fonte POJO e arquivos de "
+"mapeamento do Hibernate. O assistente de engenharia reversa suporta modelos "
+"padronizáveis."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package "
+"documentation for more information."
+msgstr ""
+"Por favor, consulte o pacote <emphasis>Ferramentas do Hibernate</emphasis> e "
+"suas documentações para maiores informações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool : "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even "
+"be used from \"inside\" Hibernate."
+msgstr ""
+"No entanto, o pacote principal do Hibernate vem em lote com uma ferramenta "
+"integrada: <emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>. "
+"Ele pode também ser usado dentro do Hibernate."
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "Geração de esquema automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"DDL can be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints, primary and "
+"foreign keys, for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"O DDL pode ser gerado a partir dos arquivos de mapeamento através dos "
+"utilitários do Hibernate. O esquema gerado inclui as restrições de "
+"integridade referencial, primária e chave estrangeira, para entidade e "
+"tabela de coleção. Tabelas e seqüência são também criadas por geradores de "
+"identificador mapeado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor-specific."
+msgstr ""
+"Você <emphasis>deve</emphasis> especificar um SQL <literal>Dialect</literal> "
+"através da propriedade <literal>hibernate.dialect</literal> ao usar esta "
+"ferramenta, uma vez que o DDL é um fabricante bastante específico."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must customize your mapping files to improve the generated "
+"schema. The next section covers schema customization."
+msgstr ""
+"Primeiro, padronize seus arquivos de mapeamento para melhorar o esquema "
+"gerado. A próxima seção cobrirá a personalização do esquema."
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "Padronizando o esquema"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You can set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"Muitos elementos de mapeamento do Hibernate definem funções opcionais "
+"nomeadas <literal>length</literal>, <literal>precision</literal> e "
+"<literal>scale</literal>. Você deve ajustar o length, precision e scale de "
+"uma coluna com esta função."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute for generating "
+"a <literal>NOT NULL</literal> constraint on table columns, and a "
+"<literal>unique</literal> attribute for generating <literal>UNIQUE</literal> "
+"constraint on table columns."
+msgstr ""
+"Algumas tags aceitam uma função <literal>not-null</literal> para gerar uma "
+"restrição <literal>NOT NULL</literal>nas colunas de tabela e uma função "
+"<literal>unique</literal> para gerar uma restrição <literal>UNIQUE</literal> "
+"em colunas de tabela."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute can be used to group columns in a "
+"single, unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL. It is only used to group the "
+"columns in the mapping file."
+msgstr ""
+"Uma função <literal>unique-key</literal> pode ser usada para agrupar colunas "
+"em uma restrição de chave única. Atualmente, o valor específico da função "
+"<literal>unique-key</literal> <emphasis>não é</emphasis> usada para nomear a "
+"restrição no DDL gerado, somente para agrupar as colunas no arquivo de "
+"mapeamento. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns can be "
+"grouped into the same index by simply specifying the same index name."
+msgstr ""
+"Uma função <literal>index</literal> especifica o nome de um indexe que será "
+"criado, usando a coluna ou colunas mapeada(s). As colunas múltiplas podem "
+"ser agrupadas no mesmo indexe, simplesmente especificando o mesmo nome de "
+"índice. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute can be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"Uma função <literal>foreign-key</literal> pode ser usada para sobrescrever o "
+"nome de qualquer restrição de chave exterior gerada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal>&lt;column&gt;</literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"Muitos elementos de mapeamento também aceitam um elemento filho <literal>&lt;"
+"column&gt;</literal>. Isto é particularmente útil para mapeamento de tipos "
+"multi-colunas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>default</literal> attribute allows you to specify a default "
+"value for a column.You should assign the same value to the mapped property "
+"before saving a new instance of the mapped class."
+msgstr ""
+"A função <literal>default</literal> deixa você especificar um valor padrão "
+"para uma coluna. Você deve atribuir o mesmo valor à propriedade mapeada "
+"antes de salvar uma nova instância da classe mapeada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"A função <literal>sql-type</literal> permite que o usuário sobrescreva o "
+"mapeamento padrão de um tipo de Hibernate para um tipo de dados SQL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"A função <literal>check</literal> permite que você especifique uma restrição "
+"de verificação."
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr "A seguinte tabela resume estes atributos opcionais."
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Sumário"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "Função"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "Valores"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "Interpretação"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>length</literal>"
+msgstr "<literal>length</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "número"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "comprimento da coluna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "<literal>precision</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "precisão da coluna decimal"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "<literal>scale</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "escaça de coluna decimal"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "<literal>not-null</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "<literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "especifica que a coluna deveria ser não anulável "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "<literal>unique</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "especifica que a coluna deveria ter uma restrição única"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index</literal>"
+msgstr "<literal>index</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "<literal>index_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "especifica o nome de um índice (multi-coluna)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "<literal>unique-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "<literal>unique_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "especifica o nome de uma restrição única de coluna múltipla"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "<literal>foreign-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "<literal>foreign_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-"
+"to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-"
+"to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"especifica o nome da restrição de chave estrangeira gerada para uma "
+"associação, por um elemento de mapeamento <literal>&lt;one-to-one&gt;</"
+"literal>, <literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</"
+"literal>, ou <literal>&lt;many-to-many&gt;</literal>. Note que os lados "
+"<literal>inverse=\"true\"</literal> não serão considerados pelo "
+"<literal>SchemaExport</literal>."
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "<literal>sql-type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "<literal>SQL column type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal>&lt;column&gt;</"
+"literal> element only)"
+msgstr ""
+"sobrescreve o tipo de coluna padrão (função do elemento <literal>&lt;"
+"column&gt;</literal>somente)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>default</literal>"
+msgstr "<literal>default</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "Expressão SQL "
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "especifica um valor padrão para a coluna"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>check</literal>"
+msgstr "<literal>check</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr "cria uma restrição de verificação de SQL tanto na coluna quanto na tabela"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;comment&gt;</literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"O elemento <literal>&lt;comment&gt;</literal> permite que você especifique "
+"comentários para esquema gerado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL where supported."
+msgstr ""
+"Isto resulta em uma instrução <literal>comment on table</literal> ou "
+"<literal>comment on column</literal> no DDL gerado, onde é suportado."
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "Executando a ferramenta"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"A ferramenta <literal>SchemaExport</literal> escreve um script DDL para "
+"padronizar e/ou para executar as instruções DDL."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaExport</literal> command "
+"line options"
+msgstr ""
+"A seguinte tabela exibe as opções de linha de comando do "
+"<literal>SchemaExport</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "<literal>SchemaExport</literal> Opções de Linha de Comando"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "Opção"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "Descrição"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "<literal>--quiet</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not output the script to stdout"
+msgstr "não saia do script para stdout "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "<literal>--drop</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "somente suspenda as tabelas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "<literal>--create</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "somente crie tabelas"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "<literal>--text</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export to the database"
+msgstr "não exporte para o banco de dados "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "<literal>--output=my_schema.ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "saia do script ddl para um arquivo"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "<literal>--naming=eg.MyNamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "seleciona um <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "<literal>--config=hibernate.cfg.xml</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "leia a configuração do Hibernate a partir do arquivo XML"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "<literal>--properties=hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr "leia propriedades de banco de dados a partir dos arquivos"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "<literal>--format</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "formatar bem o SQL gerado no script"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "<literal>--delimiter=;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "ajustar e finalizar o delimitador de linha para o script"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr ""
+"Você pode até mesmo incorporar o <literal>SchemaExport</literal> em sua "
+"aplicação: "
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "Propriedades"
+
+#. Tag: para
+#, no-c-format
+msgid "Database properties can be specified:"
+msgstr "As Propriedades do Banco de Daods podem ser especificadas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</"
+"emphasis>"
+msgstr ""
+"Como Propriedades de sistema com <literal>-D</literal><emphasis>&lt;"
+"property&gt;</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "em <literal>hibernate.properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr "em um arquivo de propriedades nomeadas com <literal>--properties</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "As propriedades necessárias são:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "SchemaExport Connection Properties"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "Nome de Propriedade"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "<literal>hibernate.connection.driver_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "classe de driver jdbc"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "<literal>hibernate.connection.url</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "jdbc url"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "<literal>hibernate.connection.username</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "usuário de banco de dados"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "<literal>hibernate.connection.password</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "senha do usuário"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "<literal>hibernate.dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "dialeto"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "Usando o Ant"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"Você pode chamar o <literal>SchemaExport</literal> a partir de seu script de "
+"construção do Ant:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "Atualizações de esquema incremental"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon "
+"the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr ""
+"A ferramenta <literal>SchemaUpdate</literal> irá atualizar um esquema "
+"existente com mudanças \"incrementais\". Observe que <literal>SchemaUpdate</"
+"literal> depende totalmente da API de metadados JDBC, portanto não irá "
+"funcionar com todos os driver JDBC. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "<literal>SchemaUpdate</literal>Opções de Linha de Comando"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export the script to the database"
+msgstr "não exporte o script ao banco de dados "
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "especifique um arquivo <literal>.cfg.xml</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr "Você pode incorporar o <literal>SchemaUpdate</literal> em sua aplicação: "
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "Utilizando Ant para atualizações de esquema incremental"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr "Você pode chamar <literal>SchemaUpdate</literal> a partir do script Ant:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "Validação de esquema"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. The "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API and, as such, will not work with all JDBC drivers. This tool is "
+"extremely useful for testing."
+msgstr ""
+"A ferramenta <literal>SchemaValidator</literal> irá confirmar que o esquema "
+"de banco de dados existente \"combina\" com seus documentos de mapeamento. "
+"Observe que o <literal>SchemaValidator</literal> depende totalmente da API "
+"de metadados JDBC, portanto ele não funcionará com todos os drivers JDBC. "
+"Esta ferramenta é extremamente útil para teste. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table displays the <literal>SchemaValidator</literal> command "
+"line options:"
+msgstr ""
+"A seguinte tabela exibe as opções de linha de comando do "
+"<literal>SchemaValidator</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "<literal>SchemaValidator</literal> Opções de Linha de Comando"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr "Você pode incorporar o <literal>SchemaValidator</literal> em sua aplicação:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "Utilizando Ant para validação de esquema"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr "Você pode chamar o <literal>SchemaValidator</literal> a partir do script Ant:"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1947 @@
+# translation of transactions.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: transactions\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-19 14:01+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "Transações e Concorrência "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. It is recommended "
+"that you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"O fator mais importante sobre o Hibernate e o controle de concorrência é que "
+"é muito fácil de ser compreendido. O Hibernate usa diretamente conexões de "
+"JDBC e recursos de JTA sem adicionar nenhum comportamento de bloqueio a "
+"mais. Recomendamos que você gaste algum tempo com o JDBC, o ANSI e a "
+"especificação de isolamento de transação de seu sistema de gerência da base "
+"de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Through <literal>Session</literal>, which is also a transaction-scoped "
+"cache, Hibernate provides repeatable reads for lookup by identifier and "
+"entity queries and not reporting queries that return scalar values."
+msgstr ""
+"O Hibernate não bloqueia objetos na memória. Sua aplicação pode esperar o "
+"comportamento tal qual definido de acordo com o nível de isolamento de suas "
+"transações de banco de dados. Note que graças ao <literal>Session</literal>, "
+"que também é um cache de escopo de transação, o Hibernate procura "
+"repetidamente por identificadores e consultas de entidade não consultas de "
+"relatórios que retornam valores escalares. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> "
+"syntax, a (minor) API for pessimistic locking of rows. Optimistic "
+"concurrency control and this API are discussed later in this chapter."
+msgstr ""
+"Além do versionamento para o controle automático de concorrência otimista, o "
+"Hibernate oferece também uma API (menor) para bloqueio pessimista de linhas "
+"usando a sintáxe <literal>SELECT FOR UPDATE</literal>. O controle de "
+"concorrência otimista e esta API são discutidos mais tarde neste capítulo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The discussion of concurrency control in Hibernate begins with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"Nós começamos a discussão do controle de concorrência no Hibernate com a "
+"granularidade do <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal> e <literal>Session</literal>, além de transações de base de dados e "
+"conversações longas. "
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "Sessão e escopos de transações"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object, intended to be shared by all application threads. It is created "
+"once, usually on application startup, from a <literal>Configuration</"
+"literal> instance."
+msgstr ""
+"Um <literal>SessionFactory</literal> é objeto threadsafe com um custo alto "
+"de criação, compartilhado por todas as threads da aplicação. É criado uma "
+"única vez, no início da execução da aplicação, a partir da instância de uma "
+"<literal>Configuration</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once and then discarded for: a single request, a conversation "
+"or a single unit of work. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, "
+"unless it is needed. It will not consume any resources until used."
+msgstr ""
+"Uma <literal>Session</literal> é um objeto de baixo custo de criação, não é "
+"threadsafe, deve ser usado uma vez, para uma única requisição, uma "
+"conversação, uma única unidade do trabalho e então deve ser descartado. Um "
+"<literal>Session</literal> não obterá um JDBC <literal>Connection</literal>, "
+"ou um <literal>Datasource</literal>, a menos que necessite. Isto não consome "
+"nenhum recurso até ser usado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to reduce lock contention in the database, a database transaction "
+"has to be as short as possible. Long database transactions will prevent your "
+"application from scaling to a highly concurrent load. It is not recommended "
+"that you hold a database transaction open during user think time until the "
+"unit of work is complete."
+msgstr ""
+"Uma transação precisa ser o mais curta possível, para reduzir a disputa pelo "
+"bloqueio na base de dados. Transações longas impedirão que sua aplicação "
+"escale a carga altamente concorrente. Por isso, não é bom manter uma "
+"transação de base de dados aberta durante o tempo que o usuário pensa, até "
+"que a unidade do trabalho esteja completa."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</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? These questions are addressed in the following sections."
+msgstr ""
+"Qual é o escopo de uma unidade de trabalho? Pode uma única <literal>Session</"
+"literal> do Hibernate gerenciar diversas transações ou este é um o "
+"relacionamento um-para-um dos escopos? Quando você deve abrir e fechar uma "
+"<literal>Session</literal> e como você demarca os limites da transação? "
+"Estas questões estão endereçadas nas seguintes seções."
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "Unidade de trabalho"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, let's define a unit of work. A unit of work is a design pattern "
+"described by Martin Fowler as <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation> In other words, its a series of operations we wish to carry out "
+"against the database together. Basically, it is a transaction, though "
+"fulfilling a unit of work will often span multiple physical database "
+"transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really "
+"we are talking about a more abstract notion of a transaction. The term "
+"\"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr ""
+"Primeiro, vamos definir uma unidade de trabalho. Uma unidade de trabalho é "
+"um padrão de design descrito por Martin Fowler como <quote> [maintaining] a list of objects "
+"affected by a business transaction and coordinates the writing out of "
+"changes and the resolution of concurrency problems. </quote><citation>PoEAA</"
+"citation>. Em outras palavras, é uma série de "
+"operações que desejamos cuidar junto ao banco de dados. Basicamente, é uma "
+"transação, que apesar de completar uma unidade de trabalho, sempre "
+"distribuirá transações de banco de dados físico múltiplos (consulte <xref linkend=\"transactions-basics-apptx\" />. Portanto, estamos conversando "
+"sobre uma noção mais abstrata da transação. O termo \"transação comercial\" "
+"é também usada em acúmulo na unidade de trabalho. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the <emphasis>session-per-operation</emphasis> antipattern: do "
+"not open and close a <literal>Session</literal> for every simple database "
+"call in a single thread. 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. This also means that auto-commit after "
+"every single SQL statement is useless in an application as this mode is "
+"intended for ad-hoc SQL console work. Hibernate disables, or expects the "
+"application server to disable, auto-commit mode immediately. Database "
+"transactions are never optional. All communication with a database has to "
+"occur inside a transaction. Auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also more maintainable and "
+"extensible."
+msgstr ""
+"Primeiro, não use o antipattern <emphasis>sessão-por-operação</emphasis>: "
+"isto é, não abra e feche uma <literal>Session</literal> para cada simples "
+"chamada ao banco de dados em uma única thread. Naturalmente, o mesmo se "
+"aplica às transações do banco de dados. As chamadas ao banco de dados em uma "
+"aplicação são feitas usando uma seqüência planejada, elas são agrupadas em "
+"unidades de trabalho atômicas. Veja que isso também significa que realizar "
+"um auto-commit depois de cada instrução SQL é inútil em uma aplicação, esta "
+"modalidade é ideal para o trabalho ad hoc do console do SQL. O Hibernate "
+"impede, ou espera que o servidor de aplicação impessa isso, aplique a "
+"modalidade auto-commit imediatamente. As transações de banco de dados nunca "
+"são opcionais, toda a comunicação com um banco de dados tem que ocorrer "
+"dentro de uma transação, não importa se você vai ler ou escrever dados. Como "
+"explicado, o comportamento auto-commit para leitura de dados deve ser "
+"evitado, uma vez que muitas transações pequenas são improváveis de executar "
+"melhor do que uma unidade de trabalho claramente definida. A última opção é "
+"também muito mais sustentável e expandida."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is sent to the server, where the Hibernate persistence layer runs. A "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. On completion of the work, and "
+"once the response for the client has been prepared, the session is flushed "
+"and closed. Use a single database transaction to serve the clients request, "
+"starting and committing it when you open and close the <literal>Session</"
+"literal>. The relationship between the two is one-to-one and this model is a "
+"perfect fit for many applications."
+msgstr ""
+"O modelo mais comum em uma aplicação de cliente/servidor multi-usuário  é "
+"<emphasis>sessão-por-requisição</emphasis>. Neste modelo, uma requisição do "
+"cliente é enviada ao servidor, onde a camada de persistência do Hibernate é "
+"executada. Uma <literal>Session</literal> nova do Hibernate é aberta, e "
+"todas as operações da base de dados são executadas nesta unidade do "
+"trabalho. Logo que o trabalho for completado, e a resposta para o cliente "
+"for preparada, a sessão é descarregada e fechada. Você usaria também uma "
+"única transação de base de dados para servir às requisições dos clientes, "
+"iniciando e submetendo-o ao abrir e fechar da <literal>Session</literal>. O "
+"relacionamento entre os dois é um-para-um e este modelo é um ajuste perfeito "
+"para muitas aplicações."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. Start a "
+"transaction when a server request has to be processed, and end the "
+"transaction before the response is sent to the client. Common solutions are "
+"<literal>ServletFilter</literal>, AOP interceptor with a pointcut on the "
+"service methods, or a proxy/interception container. An EJB container is a "
+"standardized way to implement cross-cutting aspects such as transaction "
+"demarcation on EJB session beans, declaratively with CMT. If you use "
+"programmatic transaction demarcation, for ease of use and code portability "
+"use the Hibernate <literal>Transaction</literal> API shown later in this "
+"chapter."
+msgstr ""
+"O desafio encontra-se na implementação. O Hibernate fornece gerenciamento "
+"integrado da \"sessão atual\" para simplificar este modelo. Tudo que você "
+"tem a fazer é iniciar uma transação quando uma requisição precisa ser "
+"processada e terminar a transação antes que a resposta seja enviada ao "
+"cliente. Você pode fazer onde quiser, soluções comuns são "
+"<literal>ServletFilter</literal>, interceptador AOP com um pointcut (ponto "
+"de corte) nos métodos de serviço ou em um recipiente de proxy/interceptação. "
+"Um recipiente de EJB é uma maneira padronizada de implementar aspectos cross-"
+"cutting, tais como a demarcação da transação em beans de sessão EJB, "
+"declarativamente com CMT. Se você se decidir usar demarcação programática de "
+"transação, dê preferência à API <literal>Transaction</literal> do Hibernate "
+"mostrada mais adiante neste capítulo, para facilidade no uso e portabilidade "
+"de código. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by calling <literal>sessionFactory.getCurrentSession()</literal>. "
+"You will always get a <literal>Session</literal> scoped to the current "
+"database transaction. This has to be configured for either resource-local or "
+"JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr ""
+"Seu código de aplicação pode acessar a \"sessão atual\" para processar a "
+"requisição fazendo uma chamada simples a <literal>sessionFactory."
+"getCurrentSession()</literal> em qualquer lugar e com a freqüência "
+"necessária. Você sempre conseguirá uma <literal>Session</literal> limitada a "
+"transação atual. Isto tem que ser configurado para recurso local ou para "
+"ambientes JTA. Veja <xref linkend=\"architecture-current-session\" />."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can extend the scope of a <literal>Session</literal> and database "
+"transaction until the \"view has been rendered\". This is especially useful "
+"in servlet applications that utilize a separate rendering phase after the "
+"request has been processed. Extending the database transaction until view "
+"rendering, is achieved by implementing your own interceptor. However, this "
+"will be difficult if you rely on EJBs with container-managed transactions. A "
+"transaction will be completed when an EJB method returns, before rendering "
+"of any view can start. See the Hibernate website and forum for tips and "
+"examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr ""
+"Ás vezes, é conveniente estender o escopo de uma <literal>Session</literal> "
+"e de uma transação do banco de dados até que a \"visão esteja renderizada\". "
+"É especialmente útil em aplicações servlet que utilizam uma fase de "
+"renderização separada depois da requisição ter sido processada. Estender a "
+"transação até que a renderização da visão esteja completa é fácil de fazer "
+"se você implementar seu próprio interceptador. Entretanto, não será fácil se "
+"você confiar em EJBs com transações gerenciadas por recipiente, porque uma "
+"transação será terminada quando um método de EJB retornar, antes que a "
+"renderização de toda visão possa começar. Veja o website e o fórum do "
+"Hibernate para dicas e exemplos em torno deste modelo de <emphasis>Sessão "
+"Aberta na Visualização</emphasis>."
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "Longas conversações"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The session-per-request pattern is not the only way of designing units of "
+"work. Many business processes require a whole series of interactions with "
+"the user that are interleaved with database accesses. In web and enterprise "
+"applications, it is not acceptable for a database transaction to span a user "
+"interaction. Consider the following example:"
+msgstr ""
+"O modelo sessão-por-requisição não é o único conceito útil que você pode "
+"usar ao projetar unidades de trabalho. Muitos processos de negócio requerem "
+"uma totalidade de séries de interações com o usuário, intercaladas com "
+"acessos a uma base de dados. Em aplicações da web e corporativas não é "
+"aceitável que uma transação atrapalhe uma interação do usuário. Considere o "
+"seguinte exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens. The data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"A primeira tela de um diálogo se abre e os dados vistos pelo usuário são "
+"carregados em uma <literal>Session</literal> e transação de banco de dados "
+"particulares. O usuário está livre para modificar os objetos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects their modifications to "
+"be made persistent. The user also expects that they were the only person "
+"editing this information and that no conflicting modification has occurred."
+msgstr ""
+"O usuário clica em \"Salvar\" após 5 minutos e espera suas modificações "
+"serem persistidas. O usuário também espera que ele seja a única pessoa que "
+"edita esta informação e que nenhuma modificação conflitante possa ocorrer."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the point of view of the user, we call this unit of work a long-running "
+"<emphasis>conversation</emphasis> or <emphasis>application transaction</"
+"emphasis>. There are many ways to implement this in your application."
+msgstr ""
+"Nós chamamos esta unidade de trabalho, do ponto da visão do usuário, uma "
+"<emphasis>conversação</emphasis> de longa duração (ou <emphasis>transação da "
+"aplicação</emphasis>). Há muitas maneiras de você implementar em sua "
+"aplicação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow "
+"the application to scale with the number of concurrent users."
+msgstr ""
+"Uma primeira implementação simples pode manter a <literal>Session</literal> "
+"e a transação aberta durante o tempo de interação do usuário, com bloqueios "
+"na base de dados para impedir a modificação concorrente e para garantir o "
+"isolamento e a atomicidade. Esse é naturalmente um anti-pattern, uma vez que "
+"a disputa do bloqueio não permitiria o escalonameneto da aplicação com o "
+"número de usuários concorrentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have to use several database transactions to implement the conversation. "
+"In this case, maintaining isolation of business processes becomes the "
+"partial responsibility of the application tier. A single conversation "
+"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 (for example, in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you utilize some of Hibernate's features:"
+msgstr ""
+"Claramente, temos que usar diversas transações para implementar a "
+"conversação. Neste caso, manter o isolamento dos processos de negócio, torna-"
+"se responsabilidade parcial da camada da aplicação. Uma única conversação "
+"geralmente usa diversas transações. Ela será atômica se somente uma destas "
+"transações (a última) armazenar os dados atualizados, todas as outras "
+"simplesmente leram os dados (por exemplo em um diálogo do estilo wizard que "
+"mede diversos ciclos de requisição/resposta). Isto é mais fácil de "
+"implementar do parece, especialmente se você usar as características do "
+"Hibernate: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic "
+"optimistic concurrency control for you. It can automatically detect if a "
+"concurrent modification occurred during user think time. Check for this at "
+"the end of the conversation."
+msgstr ""
+"<emphasis>Versionamento automático</emphasis>: o Hibernate pode fazer o "
+"controle automático de concorrência otimista para você, ele pode "
+"automaticamente detectar se uma modificação concorrente ocorreu durante o "
+"tempo de interação do usuário. Geralmente nós verificamos somente no fim da "
+"conversação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis>: if you decide to use the "
+"<emphasis>session-per-request</emphasis> pattern, all loaded instances will "
+"be in the detached state during user think time. Hibernate allows you to "
+"reattach the objects and persist the modifications. The pattern is called "
+"<emphasis>session-per-request-with-detached-objects</emphasis>. Automatic "
+"versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Objetos Desanexados</emphasis>: se você se decidir usar o já "
+"discutido pattern <emphasis>sessão-por-solicitação</emphasis>, todas as "
+"instâncias carregadas estarão no estado destacado durante o tempo em que o "
+"usuário estiver pensando. O Hibernate permite que você re-anexe os objetos e "
+"persista as modificações, esse pattern é chamado <emphasis>sessão-por-"
+"solicitação-com-objetos-desanexados</emphasis>. Utiliza-se versionamento "
+"automático para isolar as modificações concorrentes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis>: the Hibernate "
+"<literal>Session</literal> can be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed and reconnected "
+"when a new client request occurs. This pattern is known as <emphasis>session-"
+"per-conversation</emphasis> and makes even reattachment unnecessary. "
+"Automatic versioning is used to isolate concurrent modifications and the "
+"<literal>Session</literal> will not be allowed to be flushed automatically, "
+"but explicitly."
+msgstr ""
+"<emphasis>Sessão Estendida (ou Longa)</emphasis> A <literal>Session</"
+"literal> do Hibernate pode ser desligada da conexão adjacente do JDBC depois "
+"que a transação foi submetida, e ser reconectada quando uma nova requisição "
+"do cliente ocorrer. Este pattern é conhecido como <emphasis>sessão-por-"
+"conversação</emphasis> e faz o reatamento uniforme desnecessário. "
+"Versionamento automático é usado para isolar modificações concorrentes e a "
+"<emphasis>sessão-por-conversação</emphasis> geralmente pode ser nivelada "
+"automaticamente, e sim explicitamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages. These disadvantages are discussed later in this chapter in "
+"the context of optimistic concurrency control."
+msgstr ""
+"Tanto a <emphasis>sessão-por-solicitação-com-objetos-desanexados</emphasis> "
+"quanto a <emphasis>sessão-por-conversação</emphasis> possuem vantagens e "
+"desvantagens. Estas desvantagens serão discutidas mais tarde neste capítulo "
+"no contexto do controle de concorrência otimista. "
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "Considerando a identidade do objeto"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An application can concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. It "
+"is for this reason that there are two different notions of identity:"
+msgstr ""
+"Uma aplicação pode acessar concorrentemente o mesmo estado persistente em "
+"duas <literal>Session</literal>s diferentes. Entretanto, uma instância de "
+"uma classe persistente nunca é compartilhada entre duas instâncias "
+"<literal>Session</literal>. Portanto, há duas noções diferentes da "
+"identidade:  "
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "Identidade da base de dados"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "<literal>foo.getId().equals( bar.getId() )</literal>"
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "Identidade da JVM"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr "<literal>foo==bar</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For objects attached to a <emphasis>particular</emphasis> <literal>Session</"
+"literal> (i.e., in the scope of a <literal>Session</literal>), the two "
+"notions are equivalent and JVM identity for database identity is guaranteed "
+"by Hibernate. While the application might concurrently access the \"same"
+"\" (persistent identity) business object in two different sessions, the two "
+"instances will actually be \"different\" (JVM identity). Conflicts are "
+"resolved using an optimistic approach and automatic versioning at flush/"
+"commit time."
+msgstr ""
+"Então para os objetos acoplados a uma <literal>Session</literal> "
+"<emphasis>específica</emphasis> (ex.: isto está no escopo de uma "
+"<literal>Session</literal>), as duas noções são equivalentes e a identidade "
+"da JVM para a identidade da base de dados é garantida pelo Hibernate. "
+"Entretanto, embora a aplicação possa acessar concorrentemente o \"mesmo\" "
+"objeto do negócio (identidade persistente) em duas sessões diferentes, as "
+"duas instâncias serão realmente \"diferentes\" (identidade de JVM). Os "
+"conflitos são resolvidos usando (versionamento automático) no flush/commit, "
+"usando uma abordagem otimista."
+
+#. Tag: para
+#, 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 means that it does not need expensive locking or "
+"other means of synchronization. The application does not need to synchronize "
+"on any business object, as long as it maintains a single thread per "
+"<literal>Session</literal>. Within a <literal>Session</literal> the "
+"application can safely use <literal>==</literal> to compare objects."
+msgstr ""
+"Este caminho deixa o Hibernate e o banco de dados se preocuparem com a "
+"concorrência. Ele também fornece uma escalabilidade melhor, garantindo que a "
+"identidade em unidades de trabalho single-threaded não necessite de bloqueio "
+"dispendioso ou de outros meios de sincronização. A aplicação nunca necessita "
+"sincronizar qualquer objeto de negócio tão longo que transpasse uma única "
+"thread por <literal>Session</literal>. Dentro de uma <literal>Session</"
+"literal> a aplicação pode usar com segurança o <literal>==</literal> para "
+"comparar objetos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal> might produce 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). JVM identity, "
+"however, is by definition not guaranteed for instances in a detached state. "
+"The developer has to override the <literal>equals()</literal> and "
+"<literal>hashCode()</literal> methods in persistent classes and implement "
+"their own notion of object equality. There is one caveat: never use the "
+"database identifier to implement equality. Use a business key that is a "
+"combination of unique, usually immutable, attributes. The database "
+"identifier will change if a transient object is made persistent. 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 business keys do not 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. Please note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+"No entanto, uma aplicação que usa <literal>==</literal> fora de uma "
+"<literal>Session</literal>, pode ver resultados inesperados. Isto pode "
+"ocorrer mesmo em alguns lugares inesperados, por exemplo, se você colocar "
+"duas instâncias desacopladas em um mesmo <literal>Set</literal>. Ambas podem "
+"ter a mesma identidade na base de dados (ex.: elas representam a mesma "
+"linha), mas a identidade da JVM não é, por definição, garantida para "
+"instâncias em estado desacoplado. O desenvolvedor tem que substituir os "
+"métodos <literal>equals()</literal> e <literal>hashCode()</literal> em "
+"classes persistentes e implementar sua própria noção da igualdade do objeto. "
+"Advertência: nunca use o identificador da base de dados para implementar a "
+"igualdade, use atributos de negócio, uma combinação única, geralmente "
+"imutável. O identificador da base de dados mudará se um objeto transiente "
+"passar para o estado persistente. Se a instância transiente (geralmente "
+"junto com instâncias desacopladas) for inserida em um <literal>Set</"
+"literal>, a mudança do hashcode quebrará o contrato do <literal>Set</"
+"literal>. As funções para chaves de negócio não têm que ser tão estável "
+"quanto às chaves primárias da base de dados, você somente tem que garantir a "
+"estabilidade durante o tempo que os objetos estiverem no mesmo <literal>Set</"
+"literal>. Veja o website do Hibernate para uma discussão mais completa sobre "
+"o assunto. Note também que esta não é uma característica do Hibernate, mas "
+"simplesmente a maneira como a identidade e a igualdade do objeto de Java têm "
+"que ser implementadas. "
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "Edições comuns"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> "
+"or <emphasis>session-per-application</emphasis> (there are, however, rare "
+"exceptions to this rule). Some of the following issues might also arise "
+"within the recommended patterns, so ensure that you understand the "
+"implications before making a design decision:"
+msgstr ""
+"Nunca use o anti-patterns <emphasis>sessão-por-usuário-sessão</emphasis> ou "
+"<emphasis>sessão-por-aplicação</emphasis> (naturalmente, existem exceções "
+"raras para essa regra). Note que algumas das seguintes edições podem também "
+"aparecer com modelos recomendados, certifique-se que tenha compreendido as "
+"implicações antes de fazer uma decisão de projeto: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things that work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if a <literal>Session</literal> instance is shared. If "
+"you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (this is discussed later in the chapter), you "
+"should consider synchronizing access to your Http session. Otherwise, a user "
+"that clicks reload fast enough can use the same <literal>Session</literal> "
+"in two concurrently running threads."
+msgstr ""
+"Uma <literal>Session</literal> não é threadsafe. As coisas que são supostas "
+"para trabalhar concorrentemente, como requisições HTTP, beans de sessão, ou "
+"Swing, causarão condições de disputa se uma instância <literal>Session</"
+"literal> for compartilhada. Se você mantiver sua <literal>Session</literal> "
+"do Hibernate em seu <literal>HttpSession</literal> (discutido mais tarde), "
+"você deverá considerar sincronizar o acesso a sua sessão do HTTP. Caso "
+"contrário, um usuário que clica em recarga rápido demais, pode usar o mesmo "
+"<literal>Session</literal> em duas threads executando simultaneamente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (this is "
+"discussed in more detail later in the chapter). If your <literal>Session</"
+"literal> is bound to the application, you have to stop the application. "
+"Rolling back the database transaction does not put your business objects "
+"back into the state they were at the start of the transaction. This means "
+"that the database state and the business objects will be out of sync. "
+"Usually this is not a problem, because exceptions are not recoverable and "
+"you will have to start over after rollback anyway."
+msgstr ""
+"Uma exceção lançada pelo Hibernate significa que você tem que dar rollback "
+"na sua transação no banco de dados e fechar a <literal>Session</literal> "
+"imediatamente (discutido mais tarde em maiores detalhes). Se sua "
+"<literal>Session</literal> é limitada pela aplicação, você tem que parar a "
+"aplicação. Fazer o rollback na transação no banco de dados não retorna seus "
+"objetos do negócio ao estado que estavam no início da transação. Isto "
+"significa que o estado da base de dados e os objetos de negócio perdem a "
+"sincronização. Geralmente, não é um problema porque as exceções não são "
+"recuperáveis e você tem que iniciar após o rollback de qualquer maneira. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in a persistent "
+"state (watched and checked for dirty state by Hibernate). If you keep it "
+"open for a long time or simply load too much data, it will grow endlessly "
+"until you get an OutOfMemoryException. One solution is to call <literal>clear"
+"()</literal> and <literal>evict()</literal> to manage the <literal>Session</"
+"literal> cache, but you should consider a Stored Procedure if you need mass "
+"data operations. Some solutions are shown in <xref linkend=\"batch\" />. "
+"Keeping a <literal>Session</literal> open for the duration of a user session "
+"also means a higher probability of stale data."
+msgstr ""
+"A <literal>Session</literal> realiza o cache em cada objeto que se encontra o estado "
+"persistente (assistido e checado para o estado dirty do Hibernate). Isto "
+"significa o crescimento contínuo até chegar a um OutOfMemoryException, caso "
+"você mantenha isto aberto por um longo período ou simplesmente carregue "
+"muitos dados. Para resolver este problema, chame <literal>clear()</literal> "
+"e <literal>evict()</literal> para gerenciar o cache da <literal>Session</"
+"literal>, mas você ainda deve considerar a possibilidade de um Procedimento "
+"Armazenado, caso precise de operações de dados em massa. Algumas soluções "
+"poderão ser encontradas em <xref linkend=\"batch\"/>. Se você mantiver uma "
+"<literal>Session</literal> aberta durante todo o tempo da sessão do usuário, "
+"terá maior probabilidade de obter dados danificados. "
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "Demarcação de transações de bancos de dados"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Database, 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. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"Os limites de uma transação de banco de dados, ou sistema, são sempre "
+"necessários. Nenhuma comunicação com o banco de dados pode ocorrer fora de "
+"uma transação de banco de dados (isto parece confundir muitos "
+"desenvolvedores que estão acostumados ao modo auto-commit). Sempre use os "
+"limites desobstruídos da transação, até mesmo para operações somente "
+"leitura. Dependendo de seu nível de isolamento e capacidade da base de dados "
+"isto pode não ser requerido, mas não há nenhum aspecto negativo se você "
+"sempre demarcar transações explicitamente. Certamente, uma única transação "
+"será melhor executada do que muitas transações pequenas, até mesmo para "
+"dados de leitura. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e., standalone, simple "
+"Web- or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries (begin, commit, or rollback database transactions) themselves. A "
+"managed environment usually provides container-managed transactions (CMT), "
+"with the transaction assembly defined declaratively (in deployment "
+"descriptors of EJB session beans, for example). Programmatic transaction "
+"demarcation is then no longer necessary."
+msgstr ""
+"Uma aplicação do Hibernate pode funcionar em ambientes não gerenciados (isto "
+"é, aplicações standalone, Web simples ou Swing) e ambientes gerenciados "
+"J2EE. Em um ambiente não gerenciado, o Hibernate é geralmente responsável "
+"pelo seu próprio pool de conexões. O desenvolvedor, precisa ajustar "
+"manualmente os limites das transaçãos, ou seja, começar, submeter ou efetar "
+"rollback nas transações ele mesmo. Um ambiente gerenciado fornece transações "
+"gerenciadas por recipiente (CMT), com um conjunto da transações definido "
+"declarativamente em descritores de implementação de beans de sessão EJB, por "
+"exemplo. A demarcação programática é portanto, não mais necessária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, it is often desirable to keep your persistence layer portable "
+"between non-managed resource-local environments, and systems that can rely "
+"on JTA but use BMT instead of CMT. In both cases use programmatic "
+"transaction demarcation. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"Entretanto, é freqüentemente desejável manter sua camada de persistência "
+"portável entre ambientes de recurso locais não gerenciados e sistemas que "
+"podem confiar em JTA, mas use BMT ao invés de CMT. Em ambos os casos você "
+"usaria demarcação de transação programática. O Hibernate oferece uma API "
+"chamada Transaction que traduz dentro do sistema de transação nativa de seu "
+"ambiente de implementação. Esta API é realmente opcional, mas nós "
+"encorajamos fortemente seu uso a menos que você esteja em um bean de sessão "
+"CMT.  "
+
+#. Tag: para
+#, no-c-format
+msgid "Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr ""
+"Geralmente, finalizar uma <literal>Session</literal> envolve quatro fases "
+"distintas:"
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "liberar a sessão"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "submeter a transação"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "fechar a sessão"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "tratar as exceções"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We discussed Flushing the session earlier, so we will now have a closer look "
+"at transaction demarcation and exception handling in both managed and non-"
+"managed environments."
+msgstr ""
+"A liberação da sessão já foi bem discutida, agora nós daremos uma olhada na "
+"demarcação da transação e na manipulação de exceção em ambientes controlados "
+"e não controlados. "
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "Ambiente não gerenciado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e., non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"Se uma camada de persistência do Hibernate roda em um ambiente não "
+"gerenciado, as conexões do banco de dados são geralmente tratadas pelos "
+"pools de conexões simples (ex.: não DataSource) dos quais o Hibernate obtém "
+"as conexões assim que necessitar. A maneira de se manipular uma sessão/"
+"transação é mais ou menos assim:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You do not have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly: the call to <literal>commit()</literal> automatically triggers "
+"the synchronization depending on the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"Você não pode chamar <literal>flush()</literal> da <literal>Session()</"
+"literal> explicitamente. A chamada ao <literal>commit()</literal> dispara "
+"automaticamente a sincronização para a sessão, dependendo do <xref linkend="
+"\"objectstate-flushing\"/>. Uma chamada ao <literal>close()</literal> marca "
+"o fim de uma sessão. A principal implicação do <literal>close()</literal> é "
+"que a conexão JDBC será abandonada pela sessão. Este código Java é portável "
+"e funciona em ambientes não gerenciados e de JTA.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As outlined earlier, a much more flexible solution is Hibernate's built-in "
+"\"current session\" context management:"
+msgstr ""
+"Uma solução muito mais flexível é o gerenciamento de contexto \"sessão atual"
+"\" da construção interna do Hibernate, como descrito anteriormente: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will not see these code snippets in a regular application; fatal "
+"(system) exceptions should always be caught at the \"top\". In other words, "
+"the code that executes Hibernate 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. The current context management "
+"by Hibernate can significantly simplify this design by accessing a "
+"<literal>SessionFactory</literal>. Exception handling is discussed later in "
+"this chapter."
+msgstr ""
+"Você muito provavelmente nunca verá estes fragmentos de código em uma "
+"aplicação regular; as exceções fatais (do sistema) devem sempre ser pegas no "
+"\"topo\". Ou seja, o código que executa chamadas do Hibernate (na camada de "
+"persistência) e o código que trata <literal>RuntimeException</literal> (e "
+"geralmente pode somente limpar acima e na saída) estão em camadas "
+"diferentes. O gerenciamento do contexto atual feito pelo Hibernate pode "
+"significativamente simplificar este projeto, como tudo que você necessita é "
+"do acesso a um <literal>SessionFactory</literal>. A manipulação de exceção é "
+"discutida mais tarde neste capítulo. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>, which is the default, and for the second example select <literal>"
+"\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"Note que você deve selecionar <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal>, que é o padrão, e para o segundo exemplo "
+"<literal>\"thread\"</literal> como seu <literal>hibernate."
+"current_session_context_class</literal>."
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "Usando JTA"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (for example, behind "
+"EJB session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"Se sua camada de persistência funcionar em um servidor de aplicação (por "
+"exemplo, dentro dos beans de sessão EJB), cada conexão da fonte de dados "
+"obtida pelo Hibernate automaticamente fará parte da transação global de JTA. "
+"Você pode também instalar uma implementação standalone de JTA e usá-la sem "
+"EJB. O Hibernate oferece duas estratégias para a integração de JTA. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. The transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"Se você usar transações de bean gerenciado (BMT) o Hibernate dirá ao "
+"servidor de aplicação para começar e para terminar uma transação de BMT se "
+"você usar a <literal>Transaction</literal> API. Assim, o código de gerência "
+"de transação é idêntico ao ambiente não gerenciado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr ""
+"Se você quiser usar uma <literal>Session</literal> limitada por transação, "
+"isto é, a funcionalidade do <literal>getCurrentSession()</literal> para a "
+"propagação fácil do contexto, você terá que usar diretamente a API JTA "
+"<literal>UserTransaction</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With CMT, transaction demarcation is completed in session bean deployment "
+"descriptors, not programmatically. The code is reduced to:"
+msgstr ""
+"Com CMT, a demarcação da transação é feita em descritores de implementação "
+"de beans de sessão, não programaticamente, conseqüentemente, o código é "
+"reduzido a: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a CMT/EJB, even rollback happens automatically. An unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>You do "
+"not need to use the Hibernate <literal>Transaction</literal> API at all with "
+"BMT or CMT, and you get automatic propagation of the \"current\" Session "
+"bound to the transaction.</emphasis>"
+msgstr ""
+"Em um CMT/EJB, até mesmo um rollback acontece automaticamente, desde que uma "
+"exceção <literal>RuntimeException</literal> não tratável seja lançada por um "
+"método de um bean de sessão que informa ao recipiente ajustar a transação "
+"global ao rollback. <emphasis>Isto significa que você não precisa mesmo usar "
+"a API <literal>Transaction</literal> do Hibernate com BMT ou CMT e você "
+"obterá a propagação automática da Sessão \"atual\" limitada à transação.</"
+"emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When configuring Hibernate's transaction factory, choose <literal>org."
+"hibernate.transaction.JTATransactionFactory</literal> if you use JTA "
+"directly (BMT), and <literal>org.hibernate.transaction."
+"CMTTransactionFactory</literal> in a CMT session bean. Remember to also set "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that "
+"your <literal>hibernate.current_session_context_class</literal> is either "
+"unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr ""
+"Veja que você deverá escolher <literal>org.hibernate.transaction."
+"JTATransactionFactory</literal> se você usar o JTA diretamente (BMT) e "
+"<literal>org.hibernate.transaction.CMTTransactionFactory</literal> em um "
+"bean de sessão CMT, quando você configura a fábrica de transação do "
+"Hibernate. Lembre-se também de configurar o <literal>hibernate.transaction."
+"manager_lookup_class</literal>. Além disso, certifique-se que seu "
+"<literal>hibernate.current_session_context_class</literal> ou não é "
+"configurado (compatibilidade com o legado) ou está definido para <literal>"
+"\"jta\"</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. 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. Most applications can easily avoid "
+"using <literal>scroll()</literal> or <literal>iterate()</literal> from the "
+"JTA or CMT code.)"
+msgstr ""
+"A operação <literal>getCurrentSession()</literal> tem um aspecto negativo em "
+"um ambiente JTA. Há uma advertência para o uso do método liberado de conexão "
+"<literal>after_statement</literal>, o qual é usado então por padrão. Devido "
+"a uma limitação simples da especificação JTA, não é possível para o "
+"Hibernate automaticamente limpar quaisquer instâncias "
+"<literal>ScrollableResults</literal> ou <literal>Iterator</literal> abertas "
+"retornadas pelo <literal>scroll()</literal> ou <literal>iterate()</literal>. "
+"Você <emphasis>deve</emphasis> liberar o cursor subjacente da base de dados "
+"chamando <literal>ScrollableResults.close()</literal> ou <literal>Hibernate."
+"close(Iterator)</literal> explicitamente de um bloco <literal>finally</"
+"literal>. Claro que a maioria das aplicações podem facilmente evitar o uso "
+"do <literal>scroll()</literal> ou do <literal>iterate()</literal> em todo "
+"código provindo do JTA ou do CMT."
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "Tratamento de Exceção"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception, including any "
+"<literal>SQLException</literal>, immediately rollback the database "
+"transaction, call <literal>Session.close()</literal> and discard the "
+"<literal>Session</literal> instance. Certain methods of <literal>Session</"
+"literal> will <emphasis>not</emphasis> leave the session in a consistent "
+"state. No exception thrown by Hibernate can be treated as recoverable. "
+"Ensure that the <literal>Session</literal> will be closed by calling "
+"<literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"Se a <literal>Session</literal> levantar uma exceção, incluindo qualquer "
+"<literal>SQLException</literal>, você deverá imediatamente dar um rollback "
+"na transação do banco, chamando <literal>Session.close()</literal> e "
+"descartando a instância da <literal>Session</literal>. Certos métodos da "
+"<literal>Session</literal><literal>não</literal> deixarão a sessão em um "
+"estado inconsistente. Nenhuma exceção lançada pelo Hibernate pode ser "
+"recuperada. Certifique-se que a <literal>Session</literal> será fechada "
+"chamando <literal>close()</literal> no bloco <literal>finally</literal>. "
+
+#. Tag: para
+#, 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. "
+"It was not in older versions of Hibernate. In our opinion, we should not "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e., in higher layers) and "
+"either an error message is presented to the application user or some other "
+"appropriate action is taken. Note that Hibernate might also throw other "
+"unchecked exceptions that are not a <literal>HibernateException</literal>. "
+"These are not recoverable and appropriate action should be taken."
+msgstr ""
+"A exceção <literal>HibernateException</literal>, a qual envolve a maioria "
+"dos erros que podem ocorrer em uma camada de persistência do Hibernate, é "
+"uma exceção não verificada. Ela não constava em versões mais antigas de "
+"Hibernate. Em nossa opinião, nós não devemos forçar o desenvolvedor a tratar "
+"uma exceção irrecuperável em uma camada mais baixa. Na maioria dos sistemas, "
+"as exceções não verificadas e fatais são tratadas em um dos primeiros frames "
+"da pilha da chamada do método (isto é, em umas camadas mais elevadas) e uma "
+"mensagem de erro é apresentada ao usuário da aplicação (ou alguma outra ação "
+"apropriada é feita). Note que Hibernate pode também lançar outras exceções "
+"não verificadas que não sejam um <literal>HibernateException</literal>. "
+"Estas, também são, irrecuperáveis e uma ação apropriada deve ser tomada. "
+
+#. Tag: para
+#, 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 ""
+"O Hibernate envolve <literal>SQLException</literal>s lançadas ao interagir "
+"com a base de dados em um <literal>JDBCException</literal>. Na realidade, o "
+"Hibernate tentará converter a exceção em uma subclasse mais significativa da "
+"<literal>JDBCException</literal>. A <literal>SQLException</literal> "
+"subjacente está sempre disponível através de <literal>JDBCException.getCause"
+"()</literal>. O Hibernate converte a <literal>SQLException</literal> em uma "
+"subclasse <literal>JDBCException</literal> apropriada usando "
+"<literal>SQLExceptionConverter</literal> associado ao "
+"<literal>SessionFactory</literal>. Por padrão, o "
+"<literal>SQLExceptionConverter</literal> é definido pelo dialeto "
+"configurado. Entretanto, é também possível conectar em uma implementação "
+"customizada. Veja o javadoc para mais detalhes da classe "
+"<literal>SQLExceptionConverterFactory</literal>. Os subtipos padrão de "
+"<literal>JDBCException</literal> são: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal>: indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal>: indica um erro com a comunicação "
+"subjacente de JDBC."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal>: indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal>: indica um problema da gramática ou "
+"da sintáxe com o SQL emitido."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal>: indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal>: indica algum forma de "
+"violação de confinamento de integridade."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal>: indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal>: indica um erro ao adquirir um "
+"nível de bloqueio necessário para realizar a operação de requisição."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal>: a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal>: uma exceção genérica que não está "
+"inclusa em nenhuma das outras categorias."
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "Tempo de espera de Transação"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"An important feature provided by a managed environment like EJB, that is "
+"never provided for non-managed code, is transaction timeout. Transaction "
+"timeouts ensure that no misbehaving transaction can indefinitely tie up "
+"resources while returning no response to the user. Outside a managed (JTA) "
+"environment, Hibernate cannot fully provide this functionality. However, "
+"Hibernate can at least control data access operations, ensuring that "
+"database level deadlocks and queries with huge result sets are limited by a "
+"defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functionality is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"O tempo de espera de transação é uma característica extremamente importante "
+"fornecida por um ambiente gerenciado como EJB e que nunca é fornecido pelo "
+"código não gerenciado. Os tempos de espera de transação asseguram que "
+"nenhuma transação retenha indefinidamente recursos enquanto não retornar "
+"nenhuma resposta ao usuário. Fora de um ambiente controlado (JTA), o "
+"Hibernate não pode fornecer inteiramente esta funcionalidade. Entretanto, o "
+"Hibernate pode afinal controlar as operações do acesso a dados, assegurando "
+"que o nível de deadlocks e consultas do banco de dados com imensos "
+"resultados definidos sejam limitados pelo tempo de espera. Em um ambiente "
+"gerenciado, o Hibernate pode delegar o tempo de espera da transação ao JTA. "
+"Esta funcionalidade é abstraída pelo objeto <literal>Transaction</literal> "
+"do Hibernate. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>setTimeout()</literal> cannot be called in a CMT bean, where "
+"transaction timeouts must be defined declaratively."
+msgstr ""
+"Veja que <literal>setTimeout()</literal> não pode ser chamado em um bean "
+"CMT, onde o tempo de espera das transações deve ser definido declaradamente. "
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "Controle de concorrência otimista"
+
+#. Tag: para
+#, 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 three possible approaches to "
+"writing application code that uses optimistic concurrency. The use cases we "
+"discuss are in the context of long conversations, but version checking also "
+"has the benefit of preventing lost updates in single database transactions."
+msgstr ""
+"O único caminho que é consistente com a elevada concorrência e "
+"escalabilidade é o controle de concorrência otimista com versionamento. A "
+"checagem de versão usa número de versão, ou carimbo de hora (timestamp), "
+"para detectar conflitos de atualizações (e para impedir atualizações "
+"perdidas). O Hibernate fornece três caminhos possíveis para escrever "
+"aplicações que usam concorrência otimista. Os casos de uso que nós mostramos "
+"estão no contexto de conversações longas, mas a checagem de versão também "
+"tem o benefício de impedir atualizações perdidas em únicas transações. "
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "Checagem de versão da aplicação"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. The application is forced to carry out its own version "
+"checking to ensure conversation transaction isolation. This approach is the "
+"least efficient in terms of database access. It is the approach most similar "
+"to entity EJBs."
+msgstr ""
+"Em uma implementação sem muita ajuda do Hibernate, cada interação com o "
+"banco de dados ocorre em uma nova <literal>Session</literal> e o "
+"desenvolvedor é responsável por recarregar todas as instâncias persistentes "
+"da base de dados antes de manipulá-las. Este caminho força a aplicação a "
+"realizar sua própria checagem de versão para assegurar a conversação do "
+"isolamento da transação. Este caminho é menos eficiente em termos de acesso "
+"ao banco de dados. É o caminho mais similar à entidade EJBs."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>&lt;"
+"version&gt;</literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"A propriedade <literal>version</literal> é mapeada usando <literal>&lt;"
+"version&gt;</literal>, e o Hibernate vai incrementá-lá automaticamente "
+"durante a liberação se a entidade estiver alterada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you are operating in a low-data-concurrency environment, and do not "
+"require version checking, you can use this approach and skip the version "
+"check. In this case, <emphasis>last commit wins</emphasis> is the default "
+"strategy for long conversations. Be aware 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 ""
+"Claro, se você estiver operando em um ambiente de baixa concorrência de "
+"dados e não precisar da checagem de versão, você pode usar este caminho e "
+"apenas pular a checagem de versão. Nesse caso, o <emphasis>último commit "
+"realizado</emphasis> é a estratégia padrão para suas conversações longas. "
+"Tenha em mente que isto pode confundir os usuários da aplicação, como também "
+"poderão ter atualizações perdidas sem mensagens de erro ou uma possibilidade "
+"de ajustar mudanças conflitantes."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Manual version checking is only feasible in 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 an extended <literal>Session</"
+"literal> or detached instances as the design paradigm."
+msgstr ""
+"Claro que, a checagem manual da versão é somente possível em circunstâncias "
+"triviais e não para a maioria de aplicações. Freqüentemente, os "
+"gráficoscompletos de objetos modificados têm que ser verificados, não "
+"somente únicas instâncias. O Hibernate oferece checagem de versão automática "
+"com uma <literal>Session</literal> estendida ou instâncias desatachadas como "
+"o paradigma do projeto. "
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "Sessão estendida e versionamento automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"that are used for the whole conversation are known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It is up to "
+"the developer to catch and handle this exception. Common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data."
+msgstr ""
+"Uma única instância de <literal>Session</literal> e suas instâncias "
+"persistentes são usadas para a conversação inteira, isto é conhecido como "
+"<emphasis>sessão-por-conversação</emphasis>. O Hibernate verifica versões da "
+"instância no momento da liberação, lançando uma exceção se a modificação "
+"concorrente for detectada. Até o desenvolvedor pegar e tratar essa exceção. "
+"As opções comuns são a oportunidade para que o usuário intercale as mudanças "
+"ou reinicie a conversação do negócio com dados não antigos."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application does not version "
+"check or reattach detached instances, nor does it have to reload instances "
+"in every database transaction."
+msgstr ""
+"A <literal>Session</literal> é desconectada de toda a conexão JDBC adjacente "
+"enquanto espera a interação do usuário. Este caminho é o mais eficiente em "
+"termos de acesso a bancos de dados. A aplicação não precisa se preocupar com "
+"a checagem de versão ou com as instâncias destacadas reatadas, nem precisa "
+"recarregar instâncias a cada transação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object knows which <literal>Session</literal> it "
+"was loaded in. Beginning a new database transaction on an old session "
+"obtains a new connection and resumes the session. Committing a database "
+"transaction disconnects a session from the JDBC connection and returns the "
+"connection to the pool. After reconnection, to force a version check on data "
+"you are not updating, you can call <literal>Session.lock()</literal> with "
+"<literal>LockMode.READ</literal> on any objects that might have been updated "
+"by another transaction. You do not need to lock any data that you "
+"<emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode."
+"MANUAL</literal> on an extended <literal>Session</literal>, so that only the "
+"last database transaction cycle is allowed to actually persist all "
+"modifications made in this conversation. Only this last database transaction "
+"will include the <literal>flush()</literal> operation, and then "
+"<literal>close()</literal> the session to end the conversation."
+msgstr ""
+"O objeto <literal>foo</literal> sabe que a <literal>Session</literal> já foi "
+"carregada. Ao começar uma nova transação ou uma sessão velha, você obterá "
+"uma conexão nova e reiniciará a sessão. Submeter uma transação implica em "
+"desconectar uma sessão da conexão JDBC e retornar à conexão ao pool. Após a "
+"reconexão, para forçar uma checagem de versão em dados que você não esteja "
+"atualizando, você poderá chamar <literal>Session.lock()</literal> com o "
+"<literal>LockMode.READ</literal> em todos os objetos que possam ter sido "
+"atualizados por uma outra transação. Você não precisa bloquear nenhum dado "
+"que você <emphasis>está</emphasis> atualizando. Geralmente, você "
+"configuraria <literal>FlushMode.NEVER</literal> em uma <literal>Session</"
+"literal> estendida, de modo que somente o último ciclo da transação tenha "
+"permissão de persistir todas as modificações feitas nesta conversação. Por "
+"isso, somente esta última transação incluiria a operação <literal>flush()</"
+"literal> e então também iria <literal>close()</literal> a sessão para "
+"terminar a conversação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time (for example, an <literal>HttpSession</"
+"literal> should be kept as small as possible). As the <literal>Session</"
+"literal> is also the first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. Use a "
+"<literal>Session</literal> only for a single conversation as it will soon "
+"have stale data."
+msgstr ""
+"Este modelo é problemático se a <literal>Session</literal> for "
+"demasiadamente grande para ser armazenada durante o tempo de espera do "
+"usuário (por exemplo uma <literal>HttpSession</literal> deve ser mantida o "
+"menor possível). Como a <literal>Session</literal> é também cache de "
+"primeiro nível (imperativo) e contém todos os objetos carregados, nós "
+"podemos provavelmente usar esta estratégia somente para alguns ciclos de "
+"requisição/resposta. Você deve usar a <literal>Session</literal> somente "
+"para uma única conversação, porque ela logo também estará com dados velhos. "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Earlier versions of Hibernate required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect."
+msgstr ""
+"Note que versões mais atuais de Hibernate requerem a desconexão e reconexão "
+"explícitas de uma <literal>Session</literal>. Estes métodos são "
+"desatualizados, pois o início e término de uma transação têm o mesmo efeito."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Keep the disconnected <literal>Session</literal> close to the persistence "
+"layer. Use an EJB stateful session bean to hold the <literal>Session</"
+"literal> in a three-tier environment. Do not transfer it to the web layer, "
+"or even serialize it to a separate tier, to store it in the "
+"<literal>HttpSession</literal>."
+msgstr ""
+"Note também que você deve manter a <literal>Session</literal> desconectada, "
+"fechada para a camada de persistência. Ou seja, use um bean de sessão com "
+"estado EJB para prender a <literal>Session</literal> em um ambiente de três "
+"camadas. Não transfira à camada web, ou até serializá-lo para uma camada "
+"separada, para armazená-lo no <literal>HttpSession</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki "
+"for examples."
+msgstr ""
+"O modelo da sessão estendida, ou <emphasis>sessão-por-conversação</"
+"emphasis>, é mais difícil de implementar com gerenciamento automático de "
+"sessão atual. Você precisa fornecer sua própria implementação do "
+"<literal>CurrentSessionContext</literal> para isto. Veja o Hibernate Wiki "
+"para exemplos."
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "Objetos destacados e versionamento automático"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. 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 <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"Cada interação com o armazenamento persistente ocorre em uma "
+"<literal>Session</literal> nova. Entretanto, as mesmas instâncias "
+"persistentes são reusadas para cada interação com o banco de dados. A "
+"aplicação manipula o estado das instâncias desatachadas originalmente "
+"carregadas em uma outra <literal>Session</literal> e as reata então usando "
+"<literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</"
+"literal> ou <literal>Session.merge()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occurred."
+msgstr ""
+"Outra vez, o Hibernate verificará versões da instância durante a liberação, "
+"lançando uma exceção se ocorrer conflitos de atualizações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also call <literal>lock()</literal> instead of <literal>update()</"
+"literal>, and use <literal>LockMode.READ</literal> (performing a version "
+"check and bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"Você pode também chamar o <literal>lock()</literal> em vez de <literal>update"
+"()</literal> e usar <literal>LockMode.READ</literal> (executando uma "
+"checagem de versão, ignorando todos os caches) se você estiver certo de que "
+"o objeto não foi modificado. "
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "Versionamento automático customizado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"Você pode desabilitar o incremento da versão automática de Hibernate para "
+"propriedades e coleções particulares, configurando a função de mapeamento "
+"<literal>optimistic-lock</literal> para <literal>false</literal>. O "
+"Hibernate então, não incrementará mais versões se a propriedade estiver "
+"modificada. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Legacy database schemas are often static and cannot be modified. Or, other "
+"applications might access the same database and will not know how to handle "
+"version numbers or even timestamps. In both cases, versioning cannot rely on "
+"a particular column in a table. To force a version check with a comparison "
+"of the state of all fields in a row but without a version or timestamp "
+"property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal>&lt;class&gt;</literal> mapping. This conceptually only works if "
+"Hibernate can compare the old and the new state (i.e., if you use a single "
+"long <literal>Session</literal> and not session-per-request-with-detached-"
+"objects)."
+msgstr ""
+"Os esquemas da base de dados legado são freqüentemente estáticos e não podem "
+"ser modificados. Ou então, outras aplicações puderam também acessar a mesma "
+"base de dados e não sabem tratar a versão dos números ou carimbos de hora. "
+"Em ambos os casos, o versionamento não pode confiar em uma coluna particular "
+"em uma tabela. Para forçar uma checagem de versão sem uma versão ou "
+"mapeamento da propriedade do carimbo de hora com uma comparação do estado de "
+"todos os campos em uma linha, configure <literal>optimistic-lock=\"all\"</"
+"literal> no mapeamento <literal>&lt;class&gt;</literal>. Note que isto "
+"conceitualmente é somente feito em trabalhos se o Hibernate puder comparar o "
+"estado velho e novo (ex.: se você usar uma única <literal>Session</literal> "
+"longa e não uma sessão-por-solicitação-com-objetos-desanexados)."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Concurrent modification can be permitted in instances where the changes that "
+"have been made do not overlap. If you set <literal>optimistic-lock=\"dirty"
+"\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate "
+"will only compare dirty fields during flush."
+msgstr ""
+"Às vezes a modificação concorrente pode ser permitida, desde que as mudanças "
+"realizadas não se sobreponham. Se você configurar <literal>optimistic-lock="
+"\"dirty\"</literal> ao mapear o <literal>&lt;class&gt;</literal>, o "
+"Hibernate comparará somente campos modificados durante a liberação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with a full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement, with an appropriate <literal>WHERE</literal> clause, per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate may execute unnecessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did occur "
+"before updating the row."
+msgstr ""
+"Em ambos os casos, com as colunas de versão/carimbo de hora dedicados com "
+"comparação de campo cheio/sujo, o Hibernate usa uma única instrução "
+"<literal>UPDATE</literal>, com uma cláusula <literal>WHERE</literal> "
+"apropriada, por entidade para executar a checagem da versão e atualizar a "
+"informação. Se você usar a persistência transitiva para cascatear o "
+"reatamento das entidades associadas, o Hibernate pode executar atualizações "
+"desnecessárias. Isso não é geralmente um problema, mas os triggers "
+"<emphasis>em atualizações</emphasis> num banco de dados pode ser executado "
+"mesmo quando nenhuma mudança foi feita nas instâncias desanexadas. Você pode "
+"customizar este comportamento configurando <literal>selecionar-antes-de "
+"atualizar=\"verdadeiro\"</literal> no mapeamento <literal>&lt;class&gt;</"
+"literal>, forçando o Hibernate a fazer um <literal>SELECT</literal> nas "
+"instâncias para assegurar-se de que as mudanças realmente aconteceram, antes "
+"de atualizar a linha. "
+
+#. Tag: title
+#, no-c-format
+msgid "Pessimistic locking"
+msgstr "Bloqueio Pessimista "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not intended that users spend much time worrying about locking "
+"strategies. It is usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may wish to obtain exclusive pessimistic locks or re-obtain "
+"locks at the start of a new transaction."
+msgstr ""
+"Não ha intenção alguma que usuários gastem muitas horas se preocupando com "
+"suas estratégias de bloqueio. Geralmente, é o bastante especificar um nível "
+"de isolamento para as conexões JDBC e então deixar simplesmente o banco de "
+"dados fazer todo o trabalho. Entretanto, os usuários avançados podem às "
+"vezes desejar obter bloqueios pessimistas exclusivos, ou re-obter bloqueios "
+"no início de uma nova transação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database; it never "
+"lock objects in memory."
+msgstr ""
+"O Hibernate usará sempre o mecanismo de bloqueio da base de dados, nunca "
+"bloquiar objetos na memória."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"A classe <literal>LockMode</literal> define os diferentes níveis de bloqueio "
+"que o Hibernate pode adquirir. Um bloqueio é obtido pelos seguintes "
+"mecanismos: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal> é adquirido automaticamente quando o "
+"Hibernate atualiza ou insere uma linha."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal> pode ser adquirido explicitamente pelo "
+"usuário usando <literal>SELECT ... FOR UPDATE</literal> em um banco de dados "
+"que suporte essa sintáxe. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> pode ser adquirido explicitamente "
+"pelo usuário usando <literal>SELECT ... FOR UPDATE NOWAIT</literal> no "
+"Oracle. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. It can be "
+"re-acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal> é adquirido automaticamente quando o "
+"Hibernate lê dados em um nível de Leitura Repetida ou isolamento "
+"Serializável. Pode ser readquirido explicitamente pelo usuário. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal> representa a ausência do bloqueio. Todos os "
+"objetos mudam para esse estado de bloqueio no final da <literal>Transaction</"
+"literal>. Objetos associados com a sessão através do método <literal>update()"
+"</literal> ou <literal>saveOrUpdate()</literal> também são inicializados com "
+"esse modo de bloqueio."
+
+#. Tag: para
+#, no-c-format
+msgid "The \"explicit user request\" is expressed in one of the following ways:"
+msgstr "O bloqueio obtido \"explicitamente pelo usuário\" se dá nas seguintes formas:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"Uma chamada a <literal>Session.load()</literal>, especificando o "
+"<literal>LockMode</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "Uma chamada à <literal>Session.lock()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "Uma chamada à <literal>Query.setLockMode()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"Se uma <literal>Session.load()</literal> é invocada com <literal>UPGRADE</"
+"literal> ou <literal>UPGRADE_NOWAIT</literal>, e o objeto requisitado ainda "
+"não foi carregado pela sessão, o objeto é carregado usando "
+"<literal>SELECT ... FOR UPDATE</literal>. Se <literal>load()</literal> for "
+"chamado para um objeto que já foi carregado com um bloqueio menos restritivo "
+"que o novo bloqueio solicitado, o Hibernate invoca o método <literal>lock()</"
+"literal> para aquele objeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used."
+msgstr ""
+"O <literal>Session.lock()</literal> executa uma verificação no número da "
+"versão se o modo de bloqueio especificado for <literal>READ</literal>, "
+"<literal>UPGRADE</literal> ou <literal>UPGRADE_NOWAIT</literal>. No caso do "
+"<literal>UPGRADE</literal> ou <literal>UPGRADE_NOWAIT</literal>, é usado "
+"<literal>SELECT ... FOR UPDATE</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the requested lock mode is not supported by the database, Hibernate uses "
+"an appropriate alternate mode instead of throwing an exception. This ensures "
+"that applications are portable."
+msgstr ""
+"Se o banco de dados não suportar o modo de bloqueio solicitado, o Hibernate "
+"usará um modo alternativo apropriado, ao invés de lançar uma exceção. Isso "
+"garante que a aplicação seja portátil. "
+
+#. Tag: title
+#, no-c-format
+msgid "Connection release modes"
+msgstr "Modos para liberar a conexão"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One of the legacies of Hibernate 2.x JDBC connection management meant that a "
+"<literal>Session</literal> would obtain a connection when it was first "
+"required and then maintain that connection until the session was closed. "
+"Hibernate 3.x introduced the notion of connection release modes that would "
+"instruct a session how to handle its JDBC connections. The following "
+"discussion is pertinent only to connections provided through a configured "
+"<literal>ConnectionProvider</literal>. User-supplied connections are outside "
+"the breadth of this discussion. The different release modes are identified "
+"by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</"
+"literal>:"
+msgstr ""
+"O comportamento legado do Hibernate 2.x referente ao gerenciamento da "
+"conexão via JDBC era que a <literal>Session</literal> precisaria obter uma "
+"conexão quando ela precisasse pela primeira vez e depois manteria a conexão "
+"enquanto a sessão não fosse fechada. O Hibernate 3.x introduz a idéia de "
+"modos para liberar a sessão, para informar a sessão a forma como deve "
+"manusear a sua conexão JDBC. Veja que essa discussão só é pertinente para "
+"conexões fornecidas com um <literal>ConnectionProvider</literal> "
+"configurado. As conexões fornecidas pelo usuário estão fora do escopo dessa "
+"discussão. Os diferentes modos de liberação estão definidos pelos valores da "
+"enumeração <literal>org.hibernate.ConnectionReleaseMode</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal>: is the legacy behavior described above. The "
+"Hibernate session obtains a connection when it first needs to perform some "
+"JDBC access and maintains that connection until the session is closed."
+msgstr ""
+"<literal>ON_CLOSE</literal>: é o modo legado descrito acima. A sessão do "
+"Hibernate obtém a conexão quando precisar executar alguma operação JDBC pela "
+"primeira vez e mantém enquanto a conexão não for fechada."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal>: releases connections after a "
+"<literal>org.hibernate.Transaction</literal> has been completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal>: informa que a conexão deve ser "
+"liberada após a conclusão de uma <literal>org.hibernate.Transaction</"
+"literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): "
+"releases connections after every statement execution. This aggressive "
+"releasing is skipped if that statement leaves open resources associated with "
+"the given session. Currently the only situation where this occurs is through "
+"the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (também conhecida como liberação "
+"agressiva): informa que a conexão deve ser liberada após a execução de cada "
+"instrução. A liberação agressiva não ocorre se a instrução deixa pra trás "
+"algum recurso aberto associado com a sessão obtida. Atualmente, a única "
+"situação em que isto ocorre é com o uso de <literal>org.hibernate."
+"ScrollableResults</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values "
+"are as follows:"
+msgstr ""
+"O parâmetro de configuração <literal>hibernate.connection.release_mode</"
+"literal> é usado para especificar qual modo de liberação deve ser usado. "
+"Segue abaixo os valores possíveis:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>auto</literal> (the default): this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this "
+"default behavior as failures due to the value of this setting tend to "
+"indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (padrão): essa opção delega ao modo de liberação "
+"retornado pelo método <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal>. Para JTATransactionFactory, ele retorna "
+"ConnectionReleaseMode.AFTER_STATEMENT; para JDBCTransactionFactory, ele "
+"retorna ConnectionReleaseMode.AFTER_TRANSACTION. Raramente, é uma boa idéia "
+"alterar padrão, pois ao se fazer isso temos falhas que parecem bugs e/ou "
+"suposições inválidas no código do usuário. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This "
+"setting is left for backwards compatibility, but its use is discouraged."
+msgstr ""
+"<literal>on_close</literal>: indica o uso da ConnectionReleaseMode.ON_CLOSE. "
+"Essa opção foi deixada para manter a compatibilidade, mas seu uso é "
+"fortemente desencorajado. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_transaction</literal>: uses ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode, connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal>: indica o uso da ConnectionReleaseMode."
+"AFTER_TRANSACTION. Essa opção não deve ser usada com ambientes JTA. Também "
+"note que no caso da ConnectionReleaseMode.AFTER_TRANSACTION, se a sessão foi "
+"colocada no modo auto-commit a conexão vai ser liberada de forma similar ao "
+"modo AFTER_STATEMENT. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>after_statement</literal>: uses ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time you make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter if we re-establish the same connection."
+msgstr ""
+"<literal>after_statement</literal>: indica o uso ConnectionReleaseMode."
+"AFTER_STATEMENT. Além disso, o <literal>ConnectionProvider</literal> "
+"configurado é consultado para verificar se suporta essa configuração "
+"(<literal>supportsAggressiveRelease()</literal>). Se não suportar, o modo de "
+"liberação é redefinido como ConnectionRelease-Mode.AFTER_TRANSACTION. Essa "
+"configuração só é segura em ambientes onde podemos tanto readquirir a mesma "
+"conexão JDBC adjacente todas as vezes que chamarmos "
+"<literal>ConnectionProvider.getConnection()</literal> quanto em um ambiente "
+"auto-commit, onde não importa se voltamos para a mesma conexão. "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1871 @@
+# translation of tutorial.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-19 14:09+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Intended for new users, this chapter provides an step-by-step introduction "
+"to Hibernate, starting with a simple application using an in-memory "
+"database. The tutorial is based on an earlier tutorial developed by Michael "
+"Gloegl. All code is contained in the <filename>tutorials/web</filename> "
+"directory of the project source."
+msgstr ""
+"Intencionado para novos usuários, este capítulo fornece uma introdução "
+"detalhada do Hibernate, começando com um aplicativo simples usando um banco "
+"de dados em memória. O tutorial é baseado num tutorial anterior desenvolvido "
+"por Michael Gloegl. Todo o código está contido no diretório "
+"<filename>tutorials/web</filename> da fonte do projeto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial expects the user have knowledge of both Java and SQL. If you "
+"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
+"good introduction to that technology prior to attempting to learn Hibernate."
+msgstr ""
+"Este tutorial espera que o usuário tenha conhecimento de ambos Java e SQL. "
+"Caso você tenha um conhecimento limitado do JAVA ou SQL, é recomendado que "
+"você inicie com uma boa introdução àquela tecnologia, antes de tentar "
+"entender o Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The distribution contains another example application under the "
+"<filename>tutorial/eg</filename> project source directory."
+msgstr ""
+"Esta distribuição contém outro aplicativo de amostra sob o diretório de "
+"fonte do projeto <filename>tutorial/eg</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "Parte 1 – A primeira aplicação Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For this example, we will set up a small database application that can store "
+"events we want to attend and information about the host(s) of these events."
+msgstr ""
+"Vamos supor que precisemos de uma aplicação com um banco de dados pequeno "
+"que possa armazenar e atender os eventos que queremos, além das informações "
+"sobre os hosts destes eventos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Although you can use whatever database you feel comfortable using, we will "
+"use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java "
+"database) to avoid describing installation/setup of any particular database "
+"servers."
+msgstr ""
+"Mesmo que usando qualquer banco de dados do qual você se sinta confortável, "
+"nós usaremos <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (o em memória, "
+"banco de dados Java) para evitar a descrição de instalação/configuração de "
+"quaisquer servidores do banco de dados."
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr "Configuração"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first thing we need to do is to set up the development environment. We "
+"will be using the \"standard layout\" advocated by alot of build tools such "
+"as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has "
+"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
+"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
+"ulink>. As this tutorial is to be a web application, we will be creating and "
+"making use of <filename>src/main/java</filename>, <filename>src/main/"
+"resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr ""
+"O primeiro passo em que precisamos tomar é configurar o ambiente de "
+"desenvolvimento. Nós usaremos o \"layout padrão\" suportado por muitas "
+"ferramentas de construção, tais como <ulink url=\"http://maven.org\">Maven</"
+"ulink>. Maven, em particular, possui um excelente recurso de descrição disto "
+"<ulink url=\"http://maven.apache.org/guides/introduction/introduction-to-the-"
+"standard-directory-layout.html\">layout</ulink>. Assim como este tutorial "
+"deve ser um aplicativo da web, nós criaremos e faremos uso dos diretórios "
+"<filename>src/main/java</filename>, <filename>src/main/resources</filename> "
+"e <filename>src/main/webapp</filename>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will be using Maven in this tutorial, taking advantage of its transitive "
+"dependency management capabilities as well as the ability of many IDEs to "
+"automatically set up a project for us based on the maven descriptor."
+msgstr ""
+"Nós usaremos Maven neste tutorial, tirando vantagem destas capacidades de "
+"dependência transitiva assim como a habilidade de muitos IDEs de configurar "
+"automaticamente um projeto baseado no descritor maven."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is not a requirement to use Maven. If you wish to use something else to "
+"build this tutoial (such as Ant), the layout will remain the same. The only "
+"change is that you will need to manually account for all the needed "
+"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
+"ivy/\">Ivy</ulink> providing transitive dependency management you would "
+"still use the dependencies mentioned below. Otherwise, you'd need to grab "
+"<emphasis>all</emphasis> dependencies, both explicit and transitive, and add "
+"them to the project's classpath. If working from the Hibernate distribution "
+"bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts "
+"in the <filename>lib/required</filename> directory and all files from either "
+"the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/"
+"javassist</filename> directory; additionally you will need both the servlet-"
+"api jar and one of the slf4j logging backends."
+msgstr ""
+"O uso do Maven não é obrigatório. Caso você deseje usar outra tecnologia "
+"para construir este tutorial (tal como Ant), o layout continuará o mesmo. A "
+"única mudança é que você precisará contar manualmente para todas as "
+"dependências necessárias. Caso você utilize <ulink url=\"http://ant.apache."
+"org/ivy/\">Ivy</ulink> para fornecer um gerenciamento de dependência "
+"transitiva, você continuará a usar as dependências mencionadas abaixo. Do "
+"contrário, você precisará encontrar <emphasis>todas</emphasis> as dependências, ambas explícitas "
+"e transitivas, além de adicioná-las às classpath de projetos. Caso "
+"trabalhando da vinculação de distribuição Hibernate, quer dizer "
+"<filename>hibernate3.jar</filename>, todos os artefatos no diretório "
+"<filename>lib/required</filename> e todos os arquivos a partir do diretório "
+"<filename>lib/bytecode/cglib</filename> ou <filename>lib/bytecode/javassist</"
+"filename>. Adicionalmente, você precisará de ambos servlet-api jar e um dos "
+"slf4j logging backends. "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr ""
+"Salve este arquivo como <filename>pom.xml</filename> no diretório raiz do "
+"projeto."
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "A primeira Classe"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, we create a class that represents the event we want to store in the "
+"database; it is a simple JavaBean class with some properties:"
+msgstr ""
+"Agora, iremos criar uma classe que representa o evento que queremos "
+"armazenar na base de dados. Isto é uma classe JavaBean simples com algumas "
+"propriedades:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This class uses standard JavaBean naming conventions for property getter and "
+"setter methods, as well as private visibility for the fields. Although this "
+"is the recommended design, it is not required. Hibernate can also access "
+"fields directly, the benefit of accessor methods is robustness for "
+"refactoring."
+msgstr ""
+"Você pode ver que esta classe usa o padrão JavaBean para o nome convencional "
+"dos métodos de propriedade getter e setter, como também a visibilidade "
+"privada dos campos. Este é um padrão de projeto recomendado, mas não "
+"requerido. O Hibernate pode também acessar campos diretamente, o benefício "
+"para os métodos de acesso é a robustez para o refactoring. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> property holds a unique identifier value for a "
+"particular event. All persistent entity classes (there are less important "
+"dependent classes as well) will need such an identifier property if we want "
+"to use the full feature set of Hibernate. In fact, most applications, "
+"especially web applications, need to distinguish objects by identifier, so "
+"you should consider this a feature rather than a limitation. However, we "
+"usually do not manipulate the identity of an object, hence the setter method "
+"should be private. Only Hibernate will assign identifiers when an object is "
+"saved. Hibernate can access public, private, and protected accessor methods, "
+"as well as public, private and protected fields directly. The choice is up "
+"to you and you can match it to fit your application design."
+msgstr ""
+"A propriedade <literal>id</literal> mantém um único valor de identificação "
+"para um evento particular. Todas as classes persistentes da entidade (bem "
+"como aquelas classes dependentes de menos importância) precisam de uma "
+"propriedade de identificação, caso nós queiramos usar o conjunto completo de "
+"características do Hibernate. De fato, a maioria das aplicações, "
+"especialmente. aplicações web, precisam distinguir os objetos pelo "
+"identificador. Portanto, você deverá considerar esta, uma característica ao "
+"invés de uma limitação. Porém, nós normalmente não manipulamos a identidade "
+"de um objeto, conseqüentemente o método setter deverá ser privado. O "
+"Hibernate somente nomeará os identificadores quando um objeto for salvo. O "
+"Hibernate pode acessar métodos públicos, privados, e protegidos, como também "
+"campos públicos, privados, protegidos diretamente. A escolha é sua e você "
+"pode adaptar seu projeto de aplicação."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The no-argument constructor is a requirement for all persistent classes; "
+"Hibernate has to create objects for you, using Java Reflection. The "
+"constructor can be private, however package or public visibility is required "
+"for runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"O construtor sem argumentos é um requerimento para todas as classes "
+"persistentes; O Hibernate precisa criar para você os objetos usando Java "
+"Reflection. O construtor pode ser privado, porém, a visibilidade do pacote é "
+"requerida para a procuração da geração em tempo de execução e recuperação "
+"eficiente dos dados sem a instrumentação de bytecode."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</"
+"filename> directory."
+msgstr ""
+"Salve este arquivo no diretório <filename>src/main/java/org/hibernate/"
+"tutorial/domain</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "O mapeamento do arquivo"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"O Hibernate precisa saber como carregar e armazenar objetos da classe de "
+"persistência. É aqui que o mapeamento do arquivo do Hibernate entrará em "
+"jogo. O arquivo mapeado informa ao Hibernate, qual tabela no banco de dados "
+"ele deverá acessar, e quais as colunas na tabela ele deverá usar."
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "A estrutura básica de um arquivo de mapeamento é parecida com:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate DTD is sophisticated. You can use it for auto-completion of XML "
+"mapping elements and attributes in your editor or IDE. Opening up the DTD "
+"file in your text editor is the easiest way to get an overview of all "
+"elements and attributes, and to view the defaults, as well as some comments. "
+"Hibernate will not load the DTD file from the web, but first look it up from "
+"the classpath of the application. The DTD file is included in "
+"<filename>hibernate-core.jar</filename> (it is also included in the "
+"<filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr ""
+"Note que o Hibernate DTD é muito sofisticado. Você pode usar isso para auto-"
+"conclusão no mapeamento XML dos elementos e funções no seu editor ou IDE. "
+"Você também pode abrir o arquivo DTD no seu editor. Esta é a maneira mais "
+"fácil de ter uma visão geral de todos os elementos e funções e dos padrões, "
+"como também alguns comentários. Note que o Hibernate não irá carregar o "
+"arquivo DTD da web, e sim da classpath da aplicação. O arquivo DTD está "
+"incluído no <filename>hibernate-core.jar</filename> (como também no "
+"<filename>hibernate3.jar</filename>, caso usando a vinculação de "
+"distribuição."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is, of course, not optional."
+msgstr ""
+"Nós omitiremos a declaração do DTD nos exemplos futuros para encurtar o "
+"código. Isto, é claro, não é opcional. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need a mapping to a table in the SQL database:"
+msgstr ""
+"Entre as duas tags <literal>hibernate-mapping</literal>, inclua um elemento "
+"<literal>class</literal>. Todas as classes persistentes da entidade "
+"(novamente, poderá haver mais tarde, dependências sobre as classes que não "
+"são classes-primárias de entidades) necessitam do tal mapeamento, para uma "
+"tabela na base de dados SQL:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>. Each "
+"instance is now represented by a row in that table. Now we can continue by "
+"mapping the unique identifier property to the tables primary key. As we do "
+"not want to care about handling this identifier, we configure Hibernate's "
+"identifier generation strategy for a surrogate primary key column:"
+msgstr ""
+"Até agora, informamos o Hibernate sobre como fazer para persistir e carregar "
+"objetos da classe <literal>Event</literal> da tabela <literal>EVENTS</"
+"literal>, cada instância representada por uma coluna na tabela. Agora, "
+"continuaremos com o mapeamento de uma única propriedade identificadora para "
+"as chaves primárias da tabela. Além disso, como não precisamos nos preocupar "
+"em manipular este identificador, iremos configurar uma estratégia de geração "
+"de id’s do Hibernate para uma coluna de chave primária substituta: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifier "
+"property. The <literal>name=\"id\"</literal> mapping attribute declares the "
+"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
+"</literal> and <literal>setId()</literal> methods to access the property. "
+"The column attribute tells Hibernate which column of the <literal>EVENTS</"
+"literal> table holds the primary key value."
+msgstr ""
+"O elemento <literal>id</literal> é a declaração de uma propriedade do "
+"identificador. O atributo do mapeamento <literal>name=\"id\"</literal> "
+"declara que o nome da propriedade JavaBeans e informa o Hibernate a utilizar "
+"os métodos <literal>getId()</literal> and <literal>setId()</literal> para "
+"acessar a propriedade. A atributo da coluna informa o Hibernate qual coluna "
+"da tabela <literal>EVENTS</literal> mantém o valor de chave primária."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The nested <literal>generator</literal> element specifies the identifier "
+"generation strategy (aka how are identifier values generated?). In this case "
+"we choose <literal>native</literal>, which offers a level of portability "
+"depending on the configured database dialect. Hibernate supports database "
+"generated, globally unique, as well as application assigned, identifiers. "
+"Identifier value generation is also one of Hibernate's many extension points "
+"and you can plugin in your own strategy."
+msgstr ""
+"O elemento <literal>generator</literal> aninhado especifica a estratégia da "
+"geração do identificador (como os valores do identificador são gerados?). "
+"Neste caso, nós escolhemos <literal>native</literal>, do qual oferece um "
+"nível de portabilidade dependendo no dialeto do banco de dados configurado. "
+"O Hibernate suporta o banco de dados gerado, globalmente único, assim como a "
+"aplicação determinada, identificadores. A geração do valor do identificador "
+"é também um dos muitos pontos de extensão do Hibernate e você pode realizar "
+"o plugin na sua própria estratégia."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>native</literal> is no longer consider the best strategy in terms "
+"of portability. for further discussion, see <xref linkend=\"portability-idgen"
+"\" />"
+msgstr ""
+"<literal>native</literal> não é mais considerada a melhor estratégia em "
+"termos de portabilidade. Para maiores informações, consulte <xref linkend=\"portability-idgen"
+"\" />"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lastly, we need to tell Hibernate about the remaining entity class "
+"properties. By default, no properties of the class are considered persistent:"
+msgstr ""
+"Finalmente, incluiremos as declarações para as propriedades persistentes da "
+"classe no arquivo mapeado. Por padrão, nenhuma das propriedades da classe é "
+"considerada persistente:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Similar to the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. In this case, Hibernate will search for "
+"<literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle"
+"()</literal> and <literal>setTitle()</literal> methods."
+msgstr ""
+"Assim como com o elemento <literal>id</literal>, a função <literal>name</"
+"literal> do elemento <literal>property</literal> informa ao Hibernate qual "
+"método getter e setter deverá usar. Assim, neste caso, o Hibernate irá "
+"procurar pelos métodos <literal>getDate()</literal>, <literal>setDate()</"
+"literal>, <literal>getTitle()</literal> e <literal>setTitle()</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> does "
+"not? Without the <literal>column</literal> attribute, Hibernate by default "
+"uses the property name as the column name. This works for <literal>title</"
+"literal>, however, <literal>date</literal> is a reserved keyword in most "
+"databases so you will need to map it to a different name."
+msgstr ""
+"Porque fazer o mapeamento da propriedade <literal>date</literal> incluído na "
+"função <literal>column</literal>, e no <literal>title</literal> não fazer? "
+"Sem a função <literal>column</literal> o Hibernate, por padrão, utiliza o "
+"nome da propriedade como o nome da coluna. Isto funciona bem para o "
+"<literal>title</literal>. Entretanto, o <literal>date</literal> é uma "
+"palavra-chave reservada na maioria dos bancos de dados, por isso seria "
+"melhor mapeá-lo com um nome diferente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>title</literal> mapping also lacks a <literal>type</literal> "
+"attribute. The types declared and used in the mapping files are not Java "
+"data types; they are not SQL database types either. These types are called "
+"<emphasis>Hibernate mapping types</emphasis>, converters which can translate "
+"from Java to SQL data types and vice versa. Again, Hibernate will try to "
+"determine the correct conversion and mapping type itself if the "
+"<literal>type</literal> attribute is not present in the mapping. In some "
+"cases this automatic detection using Reflection on the Java class might not "
+"have the default you expect or need. This is the case with the "
+"<literal>date</literal> property. Hibernate cannot know if the property, "
+"which is of <literal>java.util.Date</literal>, should map to a SQL "
+"<literal>date</literal>, <literal>timestamp</literal>, or <literal>time</"
+"literal> column. Full date and time information is preserved by mapping the "
+"property with a <literal>timestamp</literal> converter."
+msgstr ""
+"O mapeamento do <literal>title</literal> também não possui a função "
+"<literal>type</literal>. O tipo que declaramos e utilizamos nos arquivos "
+"mapeados, não são como você esperava, ou seja, funções de dados Java. Eles "
+"também não são como os tipos de base de dados SQL. Esses tipos podem ser "
+"chamados de <emphasis>Tipos de mapeamento Hibernate</emphasis>, que são "
+"conversores que podem traduzir tipos de dados do Java para os tipos de dados "
+"SQL e vice-versa. Novamente, o Hibernate irá tentar determinar a conversão "
+"correta e mapeará o <literal>type</literal> próprio, caso o tipo da função "
+"não estiver presente no mapeamento. Em alguns casos, esta detecção "
+"automática (que usa Reflection sobre as classes Java) poderá não ter o "
+"padrão que você espera ou necessita. Este é o caso com a propriedade "
+"<literal>date</literal>. O Hibernate não sabe se a propriedade, que é do "
+"<literal>java.util.Date</literal>, pode mapear para uma coluna do tipo "
+"<literal>date</literal> do SQL, <literal>timestamp</literal> ou "
+"<literal>time</literal>. Nós preservamos as informações sobre datas e horas "
+"pelo mapeamento da propriedade com um conversor <literal>timestamp</literal>."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate makes this mapping type determination using reflection when the "
+"mapping files are processed. This can take time and resources, so if startup "
+"performance is important you should consider explicitly defining the type to "
+"use."
+msgstr ""
+"O Hibernate realiza esta determinação de tipo de mapeamento usando a "
+"reflexão quando os arquivos de mapeamentos são processados. Isto pode levar "
+"tempo e recursos, portanto se você inicializar o desempenho, será importante "
+"que você considere claramente a definição do tipo para uso."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this mapping file as <filename>src/main/resources/org/hibernate/"
+"tutorial/domain/Event.hbm.xml</filename>."
+msgstr ""
+"Salve este arquivo de mapeamento como <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Event.hbm.xml</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Configuração do Hibernate"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At this point, you should have the persistent class and its mapping file in "
+"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
+"run in \"server mode\""
+msgstr ""
+"Nestas alturas, você deve possuir a classe persistente e seu arquivo de "
+"mapeamento prontos. É o momento de configurar o Hibernate. Primeiro, vamos "
+"configurar o HSQLDB para rodar no \"modo do servidor\"."
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr "Nós realizamos isto para que aqueles dados permaneçam entre as execuções. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will utilize the Maven exec plugin to launch the HSQLDB server by "
+"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
+"it start up and bind to a TCP/IP socket; this is where our application will "
+"connect later. If you want to start with a fresh database during this "
+"tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</"
+"filename> directory, and start HSQLDB again."
+msgstr ""
+"Nós utilizaremos o Maven exec plugin para lançar o servidor HSQLDB pela "
+"execução: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
+"Dexec.args=\"-database.0 file:target/data/tutorial\"</command>. Você pode "
+"ver ele iniciando e vinculando ao soquete TCP/IP, aqui será onde nossa "
+"aplicação irá se conectar depois. Se você deseja iniciar uma nova base de "
+"dados durante este tutorial, finalize o HSQLDB, delete todos os arquivos no "
+"diretório <filename>target/data</filename>, e inicie o HSQLBD novamente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will be connecting to the database on behalf of your application, "
+"so it needs to know how to obtain connections. For this tutorial we will be "
+"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
+"DataSource</interfacename>). Hibernate comes with support for two third-"
+"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. However, we will be using the Hibernate built-in "
+"connection pool for this tutorial."
+msgstr ""
+"O Hibernate conectará ao banco de dados no lugar de sua aplicação, portanto "
+"ele precisará saber como obter as conexões. Para este tutorial nós usaremos "
+"um pool de conexão autônomo (ao invés de <interfacename>javax.sql."
+"DataSource</interfacename>). O Hibernate vem com o suporte para dois terços "
+"dos pools de conexão JDBC de código aberto: <ulink url=\"https://sourceforge."
+"net/projects/c3p0\">c3p0</ulink> e <ulink url=\"http://proxool.sourceforge."
+"net/\">proxool</ulink>. No entanto, nós usaremos o pool de conexão interna "
+"do Hibernate para este tutorial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The built-in Hibernate connection pool is in no way intended for production "
+"use. It lacks several features found on any decent connection pool."
+msgstr ""
+"O pool de conexão interna do Hibernate não é recomendado para uso de "
+"produção. Ele possui deficiência em diversos recursos encontrados em qualquer pool de conexão apropriado."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</"
+"literal> file, or even complete programmatic setup. Most users prefer the "
+"XML configuration file:"
+msgstr ""
+"Para as configurações do Hibernate, nós podemos usar um arquivo simples "
+"<literal>hibernate.properties</literal>, um arquivo mais sofisticado "
+"<literal>hibernate.cfg.xml</literal> ou até mesmo uma instalação "
+"programática completa. A maioria dos usuários prefere utilizar o arquivo de "
+"configuração XML:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr "Perceba que este arquivo de configuração especifica um DTD diferente"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory "
+"is a global factory responsible for a particular database. If you have "
+"several databases, for easier startup you should use several <literal>&lt;"
+"session-factory&gt;</literal> configurations in several configuration files."
+msgstr ""
+"Configure a <literal>SessionFactory</literal> do Hibernate. A SessionFactory "
+"é uma fábrica global responsável por uma base de dados particular. Se você "
+"tiver diversas bases de dados, use diversas configurações <literal>&lt;"
+"session-factory&gt;</literal>, geralmente em diversos arquivos de "
+"configuração, para uma inicialização mais fácil. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates."
+msgstr ""
+"Os primeiros quatro elementos <literal>property</literal> contêm a "
+"configuração necessária para a conexão JBDC. O elemento <literal>property</"
+"literal> do dialeto especifica a variante do SQL particular que o Hibernate "
+"gera."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In most cases, Hibernate is able to properly determine which dialect to use. "
+"See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr ""
+"Na maioria dos casos, o Hibernate está apto a determinar corretamente qual "
+"dialeto em uso. Consulte <xref linkend=\"portability-dialectresolver\" /> "
+"para maiores informações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate's automatic session management for persistence contexts is "
+"particularly useful in this context. The <literal>hbm2ddl.auto</literal> "
+"option turns on automatic generation of database schemas directly into the "
+"database. This can also be turned off by removing the configuration option, "
+"or redirected to a file with the help of the <literal>SchemaExport</literal> "
+"Ant task. Finally, add the mapping file(s) for persistent classes to the "
+"configuration."
+msgstr ""
+"O gerenciamento automático de sessão do Hibernate para contextos de "
+"persistência é bastante útil neste contexto. A opção <literal>hbm2ddl.auto</"
+"literal> habilita a geração automática de esquemas da base de dados, "
+"diretamente na base de dados. Isto também pode ser naturalmente desligado "
+"apenas removendo a opção de configuração ou redirecionado para um arquivo "
+"com ajuda do <literal>SchemaExport</literal> na tarefa do Ant. Finalmente, "
+"iremos adicionar os arquivos das classes de persistência mapeadas na "
+"configuração."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this file as <filename>hibernate.cfg.xml</filename> into the "
+"<filename>src/main/resources</filename> directory."
+msgstr ""
+"Salve este arquivo como <filename>hibernate.cfg.xml</filename> no diretório "
+"<filename>src/main/resources</filename>."
+
+#. Tag: title
+#, no-c-format
+msgid "Building with Maven"
+msgstr "Construindo com o Maven"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will now build the tutorial with Maven. You will need to have Maven "
+"installed; it is available from the <ulink url=\"http://maven.apache.org/"
+"download.html\">Maven download page</ulink>. Maven will read the <filename>/"
+"pom.xml</filename> file we created earlier and know how to perform some "
+"basic project tasks. First, lets run the <literal>compile</literal> goal to "
+"make sure we can compile everything so far:"
+msgstr ""
+"Nós iremos construir agora o tutorial com Maven. Você necessitará que o "
+"Maven esteja instalado; ele está disponível a partir do <ulink url=\"http://"
+"maven.apache.org/download.html\">Maven download page</ulink>. O Maven "
+"gravará o arquivo <filename>/pom.xml</filename> que criamos anteriormente, "
+"além de saber como executar algumas tarefas do projeto básico. Primeiro, "
+"vamos rodar o objetivo <literal>compile</literal> para nos certificarmos de "
+"que tudo foi compilado até agora:"
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "Inicialização e Auxiliares "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is time to load and store some <literal>Event</literal> objects, but "
+"first you have to complete the setup with some infrastructure code. You have "
+"to startup Hibernate by building a global <interfacename>org.hibernate."
+"SessionFactory</interfacename> object and storing it somewhere for easy "
+"access in application code. A <interfacename>org.hibernate.SessionFactory</"
+"interfacename> is used to obtain <interfacename>org.hibernate.Session</"
+"interfacename> instances. A <interfacename>org.hibernate.Session</"
+"interfacename> represents a single-threaded unit of work. The "
+"<interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe "
+"global object that is instantiated once."
+msgstr ""
+"É hora de carregar e armazenar alguns objetos <literal>Event</literal>, mas "
+"primeiro nós temos de completar a instalação com algum código de "
+"infraestrutura. Você precisa inicializar o Hibernate pela construção de um "
+"objeto <interfacename>org.hibernate.SessionFactory</interfacename> global e "
+"o armazenamento dele em algum lugar de fácil acesso para o código da "
+"aplicação. O <interfacename>org.hibernate.SessionFactory</interfacename> é "
+"usado para obter instâncias <interfacename>org.hibernate.Session</"
+"interfacename>. O <interfacename>org.hibernate.Session</interfacename> "
+"representa uma unidade de single-threaded de trabalho. O <interfacename>org."
+"hibernate.SessionFactory</interfacename> é um objeto global thread-safe, "
+"instanciado uma vez. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We will create a <literal>HibernateUtil</literal> helper class that takes "
+"care of startup and makes accessing the <interfacename>org.hibernate."
+"SessionFactory</interfacename> more convenient."
+msgstr ""
+"Criaremos uma classe de ajuda <literal>HibernateUtil</literal>, que cuida da "
+"inicialização e faz acesso a uma <interfacename>org.hibernate."
+"SessionFactory</interfacename> mais conveniente. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+msgstr ""
+"Salve este código como <filename>src/main/java/org/hibernate/tutorial/util/"
+"HibernateUtil.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This class not only produces the global <interfacename>org.hibernate."
+"SessionFactory</interfacename> reference in its static initializer; it also "
+"hides the fact that it uses a static singleton. We might just as well have "
+"looked up the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"reference from JNDI in an application server or any other location for that "
+"matter."
+msgstr ""
+"Esta classe não só produz uma referência <interfacename>org.hibernate."
+"SessionFactory</interfacename> global em seu inicializador estático, mas "
+"também esconde o fato de que utiliza um autônomo estático. Nós poderemos "
+"buscar pela referência <interfacename>org.hibernate.SessionFactory</"
+"interfacename> a partir do JNDI no servidor da aplicação ou qualquer outra "
+"localização para este assunto."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you give the <interfacename>org.hibernate.SessionFactory</interfacename> "
+"a name in your configuration, Hibernate will try to bind it to JNDI under "
+"that name after it has been built. Another, better option is to use a JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. Such advanced options are "
+"discussed later."
+msgstr ""
+"Se você der um nome à <literal>SessionFactory</literal> em seu arquivo de "
+"configuração, o Hibernate irá, de fato, tentar vinculá-lo ao JNDI sob aquele "
+"nome, depois que estiver construído. Outra opção melhor seria usar a "
+"implementação JMX e deixar o recipiente JMX capaz, instanciar e vincular um "
+"<literal>HibernateService</literal> ao JNDI. Essas opções avançadas são "
+"discutidas no documento de referência do Hibernate. Tais opções avançadas "
+"serão discutidas mais tarde."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You now need to configure a logging system. Hibernate uses commons logging "
+"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
+"Log4j: copy <literal>log4j.properties</literal> from the Hibernate "
+"distribution in the <literal>etc/</literal> directory to your <literal>src</"
+"literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you "
+"prefer to have more verbose output than that provided in the example "
+"configuration, you can change the settings. By default, only the Hibernate "
+"startup message is shown on stdout."
+msgstr ""
+"Você precisará agora configurar um sistema de logging. O Hibernate usa "
+"logging comuns e lhe oferece a escolha entre o Log4j e o logging do JDK "
+"1.4 . A maioria dos desenvolvedores prefere o Log4j: copie <literal>log4j."
+"properties</literal> da distribuição do Hibernate no diretório <literal>etc/"
+"</literal>, para seu diretório <literal>src</literal>, depois vá em "
+"<literal>hibernate.cfg.xml</literal>. Dê uma olhada no exemplo de "
+"configuração e mude as configurações se você quiser ter uma saída mais "
+"detalhada. Por padrão, apenas as mensagens de inicialização do Hibernate são "
+"mostradas no stdout."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The tutorial infrastructure is complete and you are now ready to do some "
+"real work with Hibernate."
+msgstr ""
+"O tutorial de infra-estrutura está completo e nós já estamos preparados para "
+"algum trabalho de verdade com o Hibernate. "
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "Carregando e salvando objetos"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We are now ready to start doing some real worjk with Hibernate. Let's start "
+"by writing an <literal>EventManager</literal> class with a <literal>main()</"
+"literal> method:"
+msgstr ""
+"Agora estamos prontos a começar a trabalhar de verdade com o Hibernate. "
+"Vamos começar escrevendo uma classe <literal>EventManager</literal> com um "
+"método <literal>main()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</"
+"literal> object and handed it over to Hibernate. At that point, Hibernate "
+"takes care of the SQL and executes an <literal>INSERT</literal> on the "
+"database."
+msgstr ""
+"Em <literal>createAndStoreEvent()</literal>, criamos um novo objeto de "
+"<literal>Event</literal>, e passamos para o Hibernate. O Hibernate sabe como "
+"tomar conta do SQL e executa <literal>INSERT</literal>s no banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> is designed to represent a "
+"single unit of work (a single atmoic piece of work to be performed). For now "
+"we will keep things simple and assume a one-to-one granularity between a "
+"Hibernate <interface>org.hibernate.Session</interface> and a database "
+"transaction. To shield our code from the actual underlying transaction "
+"system we use the Hibernate <interfacename>org.hibernate.Transaction</"
+"interfacename> API. In this particular case we are using JDBC-based "
+"transactional semantics, but it could also run with JTA."
+msgstr ""
+"O <interface>org.hibernate.Session</interface> é designado a representar uma "
+"unidade simples de trabalho (um pedaço atômico simples de trabalho a ser "
+"executado). Nesta fase manteremos tudo muito simples e consideraremos uma "
+"granularidade de um-para-um entre um <interface>org.hibernate.Session</"
+"interface> do Hibernate e uma transação de banco de dados. Para proteger "
+"nosso código do sistema subjacente de transação, usamos o Hibernate "
+"<interfacename>org.hibernate.Transaction</interfacename> API. Neste caso em "
+"particular, nós estamos usando as semânticas transacionais baseadas o JDBC, "
+"mas isto pode rodar também com o JTA."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like once you get hold of "
+"your <interfacename>org.hibernate.SessionFactory</interfacename>. The "
+"<literal>getCurrentSession()</literal> method always returns the \"current\" "
+"unit of work. Remember that we switched the configuration option for this "
+"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
+"xml</filename>? Due to that setting, the context of a current unit of work "
+"is bound to the current Java thread that executes the application."
+msgstr ""
+"O que a <literal>sessionFactory.getCurrentSession()</literal> faz? Primeiro, "
+"você pode chamar quantas vezes e de onde quiser, assim que você receber sua "
+"<interfacename>org.hibernate.SessionFactory</interfacename>. O método "
+"<literal>getCurrentSession()</literal> sempre retorna à unidade de trabalho "
+"\"atual\". Você se lembra que nós mudamos a opção de configuração desse "
+"mecanismo para \"thread\" em nosso <filename>src/main/resources/hibernate."
+"cfg.xml</filename>? Devido a esta configuração, o contexto de uma unidade de "
+"trabalho atual estará vinculada à thread Java atual que executa nossa "
+"aplicação. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate offers three methods of current session tracking. The \"thread\" "
+"based method is not intended for production use; it is merely useful for "
+"prototyping and tutorials such as this one. Current session tracking is "
+"discussed in more detail later on."
+msgstr ""
+"O Hibernate oferece três métodos da sessão atual. O método \"thread\" "
+"baseado não possui por interesse o uso de produção; ele é basicamente útil "
+"para prototyping e tutoriais tais como este. A sessão atual será discutida "
+"em mais detalhes mais tarde."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <interface>org.hibernate.Session</interface> begins when the first call to "
+"<literal>getCurrentSession()</literal> is made for the current thread. It is "
+"then bound by Hibernate to the current thread. When the transaction ends, "
+"either through commit or rollback, Hibernate automatically unbinds the "
+"<interface>org.hibernate.Session</interface> from the thread and closes it "
+"for you. If you call <literal>getCurrentSession()</literal> again, you get a "
+"new <interface>org.hibernate.Session</interface> and can start a new unit of "
+"work."
+msgstr ""
+"Um <interface>org.hibernate.Session</interface> começa quando for "
+"necessária, quando é feita a primeira chamada à <literal>getCurrentSession()"
+"</literal>. É então limitada pelo Hibernate para a thread atual. Quando a "
+"transação termina, tanto com commit quanto rollback, o Hibernate também "
+"desvincula a <literal>Session</literal> da thread e fecha isso pra você. Se "
+"você chamar <literal>getCurrentSession()</literal> novamente, você receberá "
+"uma nova <literal>Session</literal> e poderá começar uma nova unidade de "
+"trabalho. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <interface>org."
+"hibernate.Session</interface> be used to execute one or several database "
+"operations? The above example uses one <interface>org.hibernate.Session</"
+"interface> for one operation. However this is pure coincidence; the example "
+"is just not complex enough to show any other approach. The scope of a "
+"Hibernate <interface>org.hibernate.Session</interface> is flexible but you "
+"should never design your application to use a new Hibernate <interface>org."
+"hibernate.Session</interface> for <emphasis>every</emphasis> database "
+"operation. Even though it is used in the following examples, consider "
+"<emphasis>session-per-operation</emphasis> an anti-pattern. A real web "
+"application is shown later in the tutorial which will help illustrate this."
+msgstr ""
+"Em relação ao escopo da unidade de trabalho, o Hibernate <interface>org."
+"hibernate.Session</interface> deve ser utilizado para executar uma ou mais "
+"operações do banco de dados? O exemplo acima utiliza uma <literal>Session</"
+"literal> para cada operação. Isto é pura coincidência, o exemplo "
+"simplesmente não é complexo o bastante para mostrar qualquer outra "
+"abordagem. O escopo de um Hibernate <interface>org.hibernate.Session</"
+"interface> é flexível, mas você nunca deve configurar seu aplicativo para "
+"utilizar um novo Hibernate <interface>org.hibernate.Session</interface> para "
+"aoperação de banco de dados <emphasis>every</emphasis>. Portanto, mesmo que "
+"você o veja algumas vezes mais nos seguintes exemplos, considere "
+"<emphasis>session-per-operation</emphasis> como um anti-modelo. Um "
+"aplicativo  da web real será demonstrado mais adiante neste tutorial."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"See <xref linkend=\"transactions\" /> for more information about transaction "
+"handling and demarcation. The previous example also skipped any error "
+"handling and rollback."
+msgstr ""
+"Dê uma olhada no <xref linkend=\"transactions\"/> para mais informações a "
+"respeito de manipulação de transação e demarcação. Nós também pulamos "
+"qualquer manipulação de erro e rollback no exemplo anterior.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To run this, we will make use of the Maven exec plugin to call our class "
+"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
+"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr ""
+"Para rodar isto, nós faremos uso do Maven exec plugin para chamar nossa "
+"classe com a instalação do classpath necessária: <command>mvn exec:java -"
+"Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store"
+"\"</command>"
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr "Você precisa executar o <command>mvn compile</command> primeiramente."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You should see Hibernate starting up and, depending on your configuration, "
+"lots of log output. Towards the end, the following line will be displayed:"
+msgstr ""
+"Você deverá ver, após a compilação, a inicialização do Hibernate e, "
+"dependendo da sua configuração, muito log de saída. No final, você verá a "
+"seguinte linha: "
+
+#. Tag: para
+#, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr "Este é o <literal>INSERT</literal> executado pelo Hibernate."
+
+#. Tag: para
+#, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr ""
+"Adicionamos uma opção para o método principal com o objetivo de listar os "
+"eventos arquivados: "
+
+#. Tag: para
+#, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr ""
+"Nos também adicionamos um novo <literal>listEvents() method is also added</"
+"literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here, we are using a Hibernate Query Language (HQL) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr ""
+"Neste caso, nós usamos uma consulta Hibernate Query LanguageHQL (HQL), para "
+"carregar todos os objetos <literal>Event</literal> existentes no banco de "
+"dados. O Hibernate irá gerar o SQL apropriado, enviar para o banco de dados "
+"e popular objetos <literal>Event</literal> com os dados. Você pode criar "
+"consultas mais complexas com HQL. Consulte <xref linkend=\"queryhql\"/> para "
+"maiores informações.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we can call our new functionality, again using the Maven exec plugin: "
+"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
+"\" -Dexec.args=\"list\"</command>"
+msgstr ""
+"Agora podemos chamar nossa nova funcionalidade usando, novamente, o Maven "
+"exec plugin: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate."
+"tutorial.EventManager\" -Dexec.args=\"list\"</command>"
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "Parte 2 - Mapeando associações "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So far we have mapped a single persistent entity class to a table in "
+"isolation. Let's expand on that a bit and add some class associations. We "
+"will add people to the application and store a list of events in which they "
+"participate."
+msgstr ""
+"Nós mapeamos uma classe de entidade de persistência para uma tabela. Agora "
+"vamos continuar e adicionar algumas associações de classe. Primeiro iremos "
+"adicionar pessoas à nossa aplicação e armazenar os eventos em que elas "
+"participam. "
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "Mapeando a classe Person "
+
+#. Tag: para
+#, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "O primeira parte da classe <literal>Person</literal> parece-se com isto: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+msgstr ""
+"Salve isto ao arquivo nomeado <filename>src/main/java/org/hibernate/tutorial/"
+"domain/Person.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, create the new mapping file as <filename>src/main/resources/org/"
+"hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr ""
+"Após isto, crie um novo arquivo de mapeamento como <filename>src/main/"
+"resources/org/hibernate/tutorial/domain/Person.hbm.xml</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr "Finalmente, adicione o novo mapeamento à configuração do Hibernate: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Create an association between these two entities. Persons can participate in "
+"events, and events have participants. The design questions you have to deal "
+"with are: directionality, multiplicity, and collection behavior."
+msgstr ""
+"Crie agora uma associação entre estas duas entidades. As pessoas (Person) "
+"podem participar de eventos, e eventos possuem participantes. As questões de "
+"design com que teremos de lidar são: direcionalidade, multiplicidade e "
+"comportamento de coleção. "
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "Uma associação unidirecional baseada em Configuração"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By adding a collection of events to the <literal>Person</literal> class, you "
+"can easily navigate to the events for a particular person, without executing "
+"an explicit query - by calling <literal>Person#getEvents</literal>. Multi-"
+"valued associations are represented in Hibernate by one of the Java "
+"Collection Framework contracts; here we choose a <interfacename>java.util."
+"Set</interfacename> because the collection will not contain duplicate "
+"elements and the ordering is not relevant to our examples:"
+msgstr ""
+"Iremos adicionar uma coleção de eventos na classe <literal>Person</literal>. "
+"Dessa forma, poderemos navegar pelos eventos de uma pessoa em particular, "
+"sem executar uma consulta explicitamente, apenas chamando "
+"<literal>Person#getEvents</literal>. As associações de valores múltiplos são "
+"representadas no Hibernate por um dos contratos do Java Collection "
+"Framework; aqui nós escolhemos um <interfacename>java.util.Set</"
+"interfacename>, uma vez que a coleção não conterá elementos duplicados e a "
+"ordem não é relevante em nossos exemplos:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Before mapping this association, let's consider the other side. We could "
+"just keep this unidirectional or create another collection on the "
+"<literal>Event</literal>, if we wanted to be able to navigate it from both "
+"directions. This is not necessary, from a functional perspective. You can "
+"always execute an explicit query to retrieve the participants for a "
+"particular event. This is a design choice left to you, but what is clear "
+"from this discussion is the multiplicity of the association: \"many\" valued "
+"on both sides is called a <emphasis>many-to-many</emphasis> association. "
+"Hence, we use Hibernate's many-to-many mapping:"
+msgstr ""
+"Antes de mapearmos esta associação, pense no outro lado. Claramente, "
+"poderíamos apenas fazer isto de forma unidirecional. Ou poderíamos criar "
+"outra coleção no <literal>Event</literal>, se quisermos navegar de ambas "
+"direções. Isto não é necessário, de uma perspectiva funcional. Você poderá "
+"sempre executar uma consulta explícita para recuperar os participantes de um "
+"evento em particular. Esta é uma escolha de design que cabe a você, mas o "
+"que é claro nessa discussão é a multiplicidade da associação: \"muitos\" "
+"válidos em ambos os lados, nós chamamos isto de uma associação "
+"<emphasis>muitos-para-muitos</emphasis>. Daqui pra frente, usaremos o "
+"mapeamento muitos-para-muitos do Hibernate: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports a broad range of collection mappings, a <literal>set</"
+"literal> being most common. For a many-to-many association, or <emphasis>n:"
+"m</emphasis> entity relationship, an association table is required. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is decalred using the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person side, is defined with the <literal>key</literal> "
+"element, the column name for the event's side with the <literal>column</"
+"literal> attribute of the <literal>many-to-many</literal>. You also have to "
+"tell Hibernate the class of the objects in your collection (the class on the "
+"other side of the collection of references)."
+msgstr ""
+"O Hibernate suporta todo tipo de mapeamento de coleção, sendo um "
+"<literal>set</literal> mais comum. Para uma associação muitos-para-muitos ou "
+"relacionamento de entidade <emphasis>n:m</emphasis>, é necessária uma tabela "
+"de associação. Cada linha nessa tabela representa um link entre uma pessoa e "
+"um evento. O nome da tabela é configurado com a função <literal>table</"
+"literal> do elemento <literal>set</literal>. O nome da coluna identificadora "
+"na associação, pelo lado da pessoa, é definido com o elemento <literal>key</"
+"literal>, o nome da coluna pelo lado dos eventos, é definido com a função "
+"<literal>column</literal> do <literal>many-to-many</literal>. Você também "
+"precisa dizer para o Hibernate a classe dos objetos na sua coleção (a classe "
+"do outro lado das coleções de referência)."
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "O esquema de mapeamento para o banco de dados está a seguir: "
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "Trabalhando a associação "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now we will bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"Vamos reunir algumas pessoas e eventos em um novo método na classe "
+"<literal>EventManager</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. There is "
+"no explicit call to <literal>update()</literal> or <literal>save()</"
+"literal>; Hibernate automatically detects that the collection has been "
+"modified and needs to be updated. This is called <emphasis>automatic dirty "
+"checking</emphasis>. You can also try it by modifying the name or the date "
+"property of any of your objects. As long as they are in "
+"<emphasis>persistent</emphasis> state, that is, bound to a particular "
+"Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate "
+"monitors any changes and executes SQL in a write-behind fashion. The process "
+"of synchronizing the memory state with the database, usually only at the end "
+"of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the "
+"unit of work ends with a commit, or rollback, of the database transaction."
+msgstr ""
+"Após carregar um <literal>Person</literal> e um <literal>Event</literal>, "
+"simplesmente modifique a coleção usando os métodos normais de uma coleção. "
+"Como você pode ver, não há chamada explícita para <literal>update()</"
+"literal> ou <literal>save()</literal>; o Hibernate detecta automaticamente "
+"que a coleção foi modificada e que necessita ser atualizada. Isso é chamado "
+"de <emphasis>checagem suja automática</emphasis>, e você também pode usá-la "
+"modificando o nome ou a data de qualquer um dos seus objetos. Desde que eles "
+"estejam no estado <emphasis>persistent</emphasis>, ou seja, limitado por uma "
+"<literal>Session</literal> do Hibernate em particular, o Hibernate monitora "
+"qualquer alteração e executa o SQL em modo de gravação temporária. O "
+"processo de sincronização do estado da memória com o banco de dados, "
+"geralmente apenas no final de uma unidade de trabalho, normalmente apenas no "
+"final da unidade de trabalho, é chamado de <emphasis>flushing</emphasis>. No "
+"nosso código, a unidade de trabalho termina com o commit , ou rollback, da "
+"transação do banco de dados. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can load person and event in different units of work. Or you can modify "
+"an object outside of a <interfacename>org.hibernate.Session</interfacename>, "
+"when it is not in persistent state (if it was persistent before, this state "
+"is called <emphasis>detached</emphasis>). You can even modify a collection "
+"when it is detached:"
+msgstr ""
+"Você pode também querer carregar pessoas e eventos em diferentes unidades de "
+"trabalho. Ou você modifica um objeto fora de um <interfacename>org.hibernate."
+"Session</interfacename>, quando não se encontra no estado persistente (se já "
+"esteve neste estado anteriormente, chamamos esse estado de "
+"<emphasis>detached</emphasis>). Você pode até mesmo modificar uma coleção "
+"quando esta se encontrar no estado detached:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again by binding it to a new unit of work, so any modifications you made to "
+"it while detached can be saved to the database. This includes any "
+"modifications (additions/deletions) you made to a collection of that entity "
+"object."
+msgstr ""
+"A chamada <literal>update</literal> cria um objeto persistente novamente, "
+"pode-se dizer que ele liga o objeto a uma nova unidade de trabalho, assim "
+"qualquer modificação que você faça neste objeto enquanto estiver no estado "
+"desanexado pode ser salvo no banco de dados. Isso inclui qualquer "
+"modificação (adição/exclusão) que você faça em uma coleção da entidade deste "
+"objeto.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is not much use in our example, but it is an important concept you can "
+"incorporate into your own application. Complete this exercise by adding a "
+"new action to the main method of the <literal>EventManager</literal> and "
+"call it from the command line. If you need the identifiers of a person and "
+"an event - the <literal>save()</literal> method returns it (you might have "
+"to modify some of the previous methods to return that identifier):"
+msgstr ""
+"Bem, isso não é de grande utilidade na nossa situação atual, porém, é um "
+"importante conceito que você pode criar em seu próprio aplicativo. No "
+"momento, complete este exercício adicionando uma ação ao método principal da "
+"classe <literal>EventManager</literal> e chame-o pela linha de comando. Se "
+"você precisar dos identificadores de uma pessoa ou evento - o método "
+"<literal>save()</literal> retornará estes identificadores (você poderá "
+"modificar alguns dos métodos anteriores para retornar aquele identificador): "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is an example of an association between two equally important classes : "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <classname>java.lang.String</classname>. We "
+"call these classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"do not have their own identity, nor are they shared between entities. Two "
+"persons do not reference the same <literal>firstname</literal> object, even "
+"if they have the same first name. Value types cannot only be found in the "
+"JDK , but you can also write dependent classes yourself such as an "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal> class. In "
+"fact, in a Hibernate application all JDK classes are considered value types."
+msgstr ""
+"Este foi um exemplo de uma associação entre duas classes igualmente "
+"importantes: duas entidades. Como mencionado anteriormente, há outras "
+"classes e tipos dentro de um modelo típico, geralmente \"menos importante\". "
+"Alguns você já viu, como um <literal>int</literal> ou uma <literal>String</"
+"literal>. Nós chamamos essas classes de <emphasis>tipos de valores</"
+"emphasis>, e suas instâncias <emphasis>dependem</emphasis> de uma entidade "
+"particular. As instâncias desses tipos não possuem sua própria identidade, "
+"nem são compartilhados entre entidades. Duas pessoas não referenciam o mesmo "
+"objeto <literal>firstname</literal> mesmo se elas tiverem o mesmo objeto "
+"firstname. Naturalmente, os tipos de valores não são apenas encontrados "
+"dentro da JDK, mas você pode também criar suas classes como, por exemplo, "
+"<literal>Address</literal> ou <literal>MonetaryAmount</literal>. De fato, no "
+"aplicativo Hibernate todas as classes JDK são consideradas tipos de valores."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"Você também pode criar uma coleção de tipo de valores. Isso é "
+"conceitualmente muito diferente de uma coleção de referências para outras "
+"entidades, mas em Java parece ser quase a mesma coisa.  "
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "Coleção de valores "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Let's add a collection of email addresses to the <literal>Person</literal> "
+"entity. This will be represented as a <interfacename>java.util.Set</"
+"interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr ""
+"Vamos adicionar uma coleção de endereços de e-mail à entidade "
+"<literal>Person</literal>. Isto será representado como um "
+"<interfacename>java.util.Set</interfacename> das instâncias <classname>java."
+"lang.String</classname>:"
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "Segue abaixo o mapeamento deste <literal>Set</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the use of the "
+"<literal>element</literal> part which tells Hibernate that the collection "
+"does not contain references to another entity, but is rather a collection "
+"whose elements are values types, here specifically of type <literal>string</"
+"literal>. The lowercase name tells you it is a Hibernate mapping type/"
+"converter. Again the <literal>table</literal> attribute of the <literal>set</"
+"literal> element determines the table name for the collection. The "
+"<literal>key</literal> element defines the foreign-key column name in the "
+"collection table. The <literal>column</literal> attribute in the "
+"<literal>element</literal> element defines the column name where the email "
+"address values will actually be stored."
+msgstr ""
+"A diferença comparada com o mapeamento anterior se encontra na parte "
+"<literal>element</literal>, que informa ao Hibernate que a coleção não "
+"contém referências à outra entidade, mas uma coleção de elementos do tipo "
+"<literal>String</literal>. O nome da tag em minúsculo indica que se trata de "
+"um tipo/conversor de mapeamento do Hibernate. Mais uma vez, a função "
+"<literal>table</literal> do elemento <literal>set</literal> determina o nome "
+"da tabela para a coleção. O elemento <literal>key</literal> define o nome da "
+"coluna de chave estrangeira na tabela de coleção. A função <literal>column</"
+"literal> dentro do elemento <literal>element</literal> define o nome da "
+"coluna onde os valores da <literal>String</literal> serão armazenados.  "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the updated schema:"
+msgstr "Segue abaixo o esquema atualizado:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key that uses both columns. This also implies that there cannot be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"Você pode observar que a chave primária da tabela da coleção é na verdade "
+"uma chave composta, usando as duas colunas. Isso também implica que cada "
+"pessoa não pode ter endereços de e-mail duplicados, o que é exatamente a "
+"semântica que precisamos para um set em Java.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can now try to add elements to this collection, just like we did before "
+"by linking persons and events. It is the same code in Java:"
+msgstr ""
+"Você pode agora tentar adicionar elementos à essa coleção, do mesmo modo que "
+"fizemos anteriormente ligando pessoas e eventos. É o mesmo código em Java:  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This time we did not use a <emphasis>fetch</emphasis> query to initialize "
+"the collection. Monitor the SQL log and try to optimize this with an eager "
+"fetch."
+msgstr ""
+"Desta vez não utilizamos uma consulta <emphasis>fetch</emphasis> (busca) "
+"para inicializar a coleção. Monitore o log SQL e tente otimizá-lo com árdua "
+"busca. "
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "Associações bidirecionais "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next you will map a bi-directional association. You will make the "
+"association between person and event work from both sides in Java. The "
+"database schema does not change, so you will still have many-to-many "
+"multiplicity."
+msgstr ""
+"Agora iremos mapear uma associação bidirecional. Você fará uma associação "
+"entre o trabalho person e event de ambos os lados em Java. O esquema do "
+"banco de dados acima não muda, de forma que você continua possuir a "
+"multiplicidade muitos-para-muitos. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A relational database is more flexible than a network programming language, "
+"in that it does not need a navigation direction; data can be viewed and "
+"retrieved in any possible way."
+msgstr ""
+"Um banco de dados relacional é mais flexível que um linguagem de programação "
+"da rede, de maneira que ele não precisa de uma direção de navegação; os "
+"dados podem ser visualizados e restaurados de qualquer maneira."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"class:"
+msgstr ""
+"Primeiramente, adicione uma coleção de participantes à classe "
+"<literal>Event</literal>:  "
+
+#. Tag: para
+#, no-c-format
+msgid "Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr "Agora mapeie este lado da associação em <literal>Event.hbm.xml</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These are normal <literal>set</literal> mappings in both mapping documents. "
+"Notice that the column names in <literal>key</literal> and <literal>many-to-"
+"many</literal> swap in both mapping documents. The most important addition "
+"here is the <literal>inverse=\"true\"</literal> attribute in the "
+"<literal>set</literal> element of the <literal>Event</literal>'s collection "
+"mapping."
+msgstr ""
+"Como você pode ver, esses são mapeamentos <literal>set</literal> normais em "
+"ambos documentos de mapeamento. Observe que os nomes das colunas em "
+"<literal>key</literal> e <literal>many-to-many</literal> estão trocados em "
+"ambos os documentos de mapeamento. A adição mais importante feita está na "
+"função <literal>inverse=\"true\"</literal> no elemento <literal>set</"
+"literal> da coleção da classe <literal>Event</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side, the "
+"<literal>Person</literal> class, when it needs to find out information about "
+"the link between the two. This will be a lot easier to understand once you "
+"see how the bi-directional link between our two entities is created."
+msgstr ""
+"Isso significa que o Hibernate deve pegar o outro lado, a classe "
+"<literal>Person</literal>, quando precisar encontrar informação sobre a "
+"relação entre as duas entidades. Isso será muito mais fácil de entender "
+"quando você analisar como a relação bidirecional entre as entidades é "
+"criada. "
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "Trabalhando com links bidirecionais "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, keep in mind that Hibernate does not affect normal Java semantics. "
+"How did we create a link between a <literal>Person</literal> and an "
+"<literal>Event</literal> in the unidirectional example? You add an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. If you want to make this link bi-"
+"directional, you have to do the same on the other side by adding a "
+"<literal>Person</literal> reference to the collection in an <literal>Event</"
+"literal>. This process of \"setting the link on both sides\" is absolutely "
+"necessary with bi-directional links."
+msgstr ""
+"Primeiro, tenha em mente que o Hibernate não afeta a semântica normal do "
+"Java. Como foi que criamos um link entre uma <literal>Person</literal> e um "
+"<literal>Event</literal> no exemplo unidirecional? Adicionamos uma instância "
+"de <literal>Event</literal>, da coleção de referências de eventos, à uma "
+"instância de <literal>Person</literal>. Então, obviamente, se quisermos que "
+"este link funcione bidirecionalmente, devemos fazer a mesma coisa para o "
+"outro lado, adicionando uma referência de <literal>Person</literal> na "
+"coleção de um <literal>Event</literal>. Essa \"configuração de link de ambos "
+"os lados\" é absolutamente necessária e você nunca deve esquecer de fazê-la. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Many developers program defensively and create link management methods to "
+"correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr ""
+"Muitos desenvolvedores programam de maneira defensiva e criam métodos de "
+"gerenciamento de um link que ajustam-se corretamente em ambos os lados (como "
+"por exemplo, em <literal>Person</literal>): "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The get and set methods for the collection are now protected. This allows "
+"classes in the same package and subclasses to still access the methods, but "
+"prevents everybody else from altering the collections directly. Repeat the "
+"steps for the collection on the other side."
+msgstr ""
+"Observe que os métodos set e get da coleção estão protegidos. Isso permite "
+"que classes e subclasses do mesmo pacote continuem acessando os métodos, mas "
+"evita que qualquer outra classe, que não esteja no mesmo pacote, acesse a "
+"coleção diretamente. Repita os passos para a coleção do outro lado.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> mapping attribute? For you, and "
+"for Java, a bi-directional link is simply a matter of setting the references "
+"on both sides correctly. Hibernate, however, does not have enough "
+"information to correctly arrange SQL <literal>INSERT</literal> and "
+"<literal>UPDATE</literal> statements (to avoid constraint violations). "
+"Making one side of the association <literal>inverse</literal> tells "
+"Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. "
+"That is all that is necessary for Hibernate to resolve any issues that arise "
+"when transforming a directional navigation model to a SQL database schema. "
+"The rules are straightforward: all bi-directional associations need one side "
+"as <literal>inverse</literal>. In a one-to-many association it has to be the "
+"many-side, and in many-to-many association you can select either side."
+msgstr ""
+"E sobre o mapeamento da função <literal>inverse</literal>? Para você, e para "
+"o Java, um link bidirecional é simplesmente uma questão de configurar "
+"corretamente as referências de ambos os lados. O Hibernate, entretanto, não "
+"possui informação necessária para ajustar corretamente as instruções "
+"<literal>INSERT</literal> e <literal>UPDATE</literal> do SQL (para evitar "
+"violações de restrição) e precisa de ajuda para manipular as associações "
+"bidirecionais de forma apropriada. Ao fazer um lado da associação com a "
+"função <literal>inverse</literal>, você instrui o Hibernate para basicamente "
+"ignorá-lo, considerando-o uma <emphasis>cópia</emphasis> do outro lado. Isso "
+"é o necessário para o Hibernate compreender todas as possibilidades quando "
+"transformar um modelo de navegação bidirecional em esquema de banco de dados "
+"do SQL. As regras que você precisa lembrar são diretas: todas as associações "
+"bidirecionais necessitam que um lado possua a função <literal>inverse</"
+"literal>. Em uma associação de um-para-muitos, precisará ser o lado de "
+"\"muitos\", já em uma associação de muitos-para-muitos você poderá "
+"selecionar qualquer lado. "
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "EventManager um aplicativo da web"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. You can now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Um aplicativo de web do Hibernate utiliza uma <literal>Session</literal> e "
+"uma <literal>Transaction</literal> quase do mesmo modo que um aplicativo "
+"autônomo. Entretanto, alguns modelos comuns são úteis. Nós agora criaremos "
+"um <literal>EventManagerServlet</literal>. Esse servlet lista todos os "
+"eventos salvos no banco de dados, e cria um formulário HTML para entrada de "
+"novos eventos. "
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "Criando um servlet básico "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First we need create our basic processing servlet. Since our servlet only "
+"handles HTTP <literal>GET</literal> requests, we will only implement the "
+"<literal>doGet()</literal> method:"
+msgstr ""
+"Nós deveremos criar o nosso servket de processamento básico primeiramente. "
+"Uma vez que o servlet manuseia somente requisições <literal>GET</literal> do "
+"HTTP, o método que iremos implementar é <literal>doGet()</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+msgstr ""
+"Salve esse servlet como <filename>src/main/java/org/hibernate/tutorial/web/"
+"EventManagerServlet.java</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The pattern applied here is called <emphasis>session-per-request</emphasis>. "
+"When a request hits the servlet, a new Hibernate <literal>Session</literal> "
+"is opened through the first call to <literal>getCurrentSession()</literal> "
+"on the <literal>SessionFactory</literal>. A database transaction is then "
+"started. All data access occurs inside a transaction irrespective of whether "
+"the data is read or written. Do not use the auto-commit mode in applications."
+msgstr ""
+"O modelo que estamos aplicando neste código é chamado <emphasis>session-per-"
+"request</emphasis>. Quando uma solicitação chega ao servlet, uma nova "
+"<literal>Session</literal> do Hibernate é aberta através da primeira chamada "
+"para <literal>getCurrentSession()</literal> em <literal>SessionFactory</"
+"literal>. Então uma transação do banco de dados é inicializada e todo acesso "
+"a dados deve ocorrer dentro de uma transação, não importando se o dado é de "
+"leitura ou escrita. Não se deve utilizar o modo auto-commit em aplicações. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"<emphasis>Nunca</emphasis> utilize uma nova <literal>Session</literal> do "
+"Hibernate para todas as operações de banco de dados. Utilize uma "
+"<literal>Session</literal> do Hibernate que seja de interesse à todas as "
+"solicitações. Utilize <literal>getCurrentSession()</literal>, para que seja "
+"vinculado automaticamente à thread atual de Java.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We will get to that part soon."
+msgstr ""
+"Agora, as possíveis ações de uma solicitação serão processadas e uma "
+"resposta HTML será renderizada. Já chegaremos nesta parte.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering are complete. "
+"If any problems occurred during processing or rendering, an exception will "
+"be thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> pattern. Instead of the transaction "
+"demarcation code in every servlet, you could also write a servlet filter. "
+"See the Hibernate website and Wiki for more information about this pattern "
+"called <emphasis>Open Session in View</emphasis>. You will need it as soon "
+"as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"Finalmente, a unidade de trabalho termina quando o processamento e a "
+"renderização são completados. Se ocorrer algum erro durante o processamento "
+"ou a renderização, uma exceção será lançada e a transação do banco de dados "
+"revertida. Isso completa o modelo <literal>session-per-request</literal>. Em "
+"vez de usar código de demarcação de transação em todo servlet você pode "
+"também criar um filtro servlet. Dê uma olhada no website do Hibernate e do "
+"Wiki para maiores informações sobre esse modelo, chamado <emphasis>Sessão "
+"Aberta na Visualização</emphasis>. Você precisará disto assim que você "
+"considerar renderizar sua visualização no JSP, não apenas num servlet. "
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "Processando e renderizando"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now you can implement the processing of the request and the rendering of the "
+"page."
+msgstr "Vamos implementar o processamento da solicitação e renderização da página. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This coding style, with a mix of Java and HTML, would not scale in a more "
+"complex application&mdash;keep in mind that we are only illustrating basic "
+"Hibernate concepts in this tutorial. The code prints an HTML header and a "
+"footer. Inside this page, an HTML form for event entry and a list of all "
+"events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"O estilo deste código misturado com o Java e HTML, não escalariam em um "
+"aplicativo mais complexo, tenha em mente que estamos somente ilustrando os "
+"conceitos básicos do Hibernate neste tutorial. O código imprime um cabeçalho "
+"e nota de rodapé em HTML. Dentro desta página, são impressos um formulário "
+"para entrada de evento em HTML e uma lista de todos os evento no banco de "
+"dados. O primeiro método é trivial e somente produz um HTML:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"O método <literal>listEvents()</literal> utiliza a <literal>Session</"
+"literal> do Hibernate, limitado ao thread atual para executar uma consulta: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"Finalmente, a ação <literal>store</literal>, é despachada ao método "
+"<literal>createAndStoreEvent()</literal>, que também utiliza a "
+"<literal>Session</literal> da thread atual:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The servlet is now complete. A request to the servlet will be processed in a "
+"single <literal>Session</literal> and <literal>Transaction</literal>. As "
+"earlier in the standalone application, Hibernate can automatically bind "
+"these objects to the current thread of execution. This gives you the freedom "
+"to layer your code and access the <literal>SessionFactory</literal> in any "
+"way you like. Usually you would use a more sophisticated design and move the "
+"data access code into data access objects (the DAO pattern). See the "
+"Hibernate Wiki for more examples."
+msgstr ""
+"O servlet está completo agora. Uma solicitação ao servlet será processada "
+"com uma única <literal>Session</literal> e <literal>Transaction</literal>. "
+"Quanto antes estiver no aplicativo autônomo, maior a chance do Hibernate "
+"vincular automaticamente estes objetos à thread atual de execução. Isto lhe "
+"dá a liberdade para inserir seu código e acessar a <literal>SessionFactory</"
+"literal> como desejar. Geralmente, usaríamos um diagrama mais sofisticado e "
+"moveríamos o código de acesso de dados para os objetos de acesso dos dados "
+"(o modelo DAO). Veja o Hibernate Wiki para mais exemplos. "
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "Implementando e testando"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To deploy this application for testing we must create a Web ARchive (WAR). "
+"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
+"web.xml</filename>"
+msgstr ""
+"Para implementar este aplicativo em testes, nós devemos criar um Arquivo da "
+"Web (WAR). Primeiro, nós devemos definir o descritor WAR como <filename>src/"
+"main/webapp/WEB-INF/web.xml</filename>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To build and deploy call <literal>mvn package</literal> in your project "
+"directory and copy the <filename>hibernate-tutorial.war</filename> file into "
+"your Tomcat <filename>webapps</filename> directory."
+msgstr ""
+"Para construir e implementar, chame seu diretório de projeto <literal>ant "
+"war</literal> e copie o arquivo <literal>hibernate-tutorial.war</literal> "
+"para seu diretório Tomcat <literal>webapp</literal>. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you do not have Tomcat installed, download it from <ulink url=\"http://"
+"tomcat.apache.org/\" /> and follow the installation instructions. Our "
+"application requires no changes to the standard Tomcat configuration."
+msgstr ""
+"Caso você não possua o Tomcat instalado, baixe isto do <ulink url=\"http://"
+"tomcat.apache.org/\" /> e siga as instruções de instalação. Nosso "
+"aplicativo não solicita alterações à configuração Tomcat padrão.  "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
+msgstr ""
+"Uma vez implementado e com o Tomcat rodando, acesse o aplicativo em "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Tenha a certeza de observar o log do Tomcat para ver o Hibernate inicializar "
+"quando a primeira solicitação chegar em seu servlet (o inicializador "
+"estático no <literal>HibernateUtil</literal> é chamado) e para obter o "
+"resultado detalhado caso exceções aconteçam. "
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "Sumário"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application. More tutorials are available from "
+"the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr ""
+"Este tutorial cobriu itens básicos de como escrever um aplicativo Hibernate "
+"autônomo simples e um aplicativo da web pequeno. A partir do Hibernate "
+"<ulink url=\"http://hibernate.org\">website</ulink> você poderá encontrar "
+"mais tutoriais disponíveis."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,346 @@
+# translation of xml.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# translation of Collection_Mapping.po to
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2006.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# , 2007.
+# Michael H. Smith <mhideo at redhat.com>, 2007.
+# Glaucia Cintra <gcintra at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-19 14:09+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "Mapeamento XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is "
+"currently under active development. </emphasis>"
+msgstr ""
+"<emphasis> O Mapeamento XML é um recurso experimental no Hibernate 3.0 e "
+"está sob constante desenvolvimento. </emphasis> "
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "Trabalhando com dados em XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate allows you to work with persistent XML data in much the same way "
+"you work with persistent POJOs. A parsed XML tree can be thought of as "
+"another way of representing the relational data at the object level, instead "
+"of POJOs."
+msgstr ""
+"O Hibernate permite que se trabalhe com dados persistentes em XML quase da "
+"mesma maneira como você trabalha com POJOs persistentes. Uma árvore XML "
+"analisada, pode ser considerada como apenas uma maneira de representar os "
+"dados relacionais como objetos, ao invés dos POJOs. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"O Hibernate suporta a API dom4j para manipular árvores XML. Você pode "
+"escrever queries que retornem árvores dom4j do banco de dados e "
+"automaticamente sincronizar com o banco de dados qualquer modificação feita "
+"nessas árvores. Você pode até mesmo pegar um documento XML, analisá-lo "
+"usando o dom4j, e escrever as alterações no banco de dados usando quaisquer "
+"operações básicas do Hibernate: <literal>persist(), saveOrUpdate(),merge(), "
+"delete(), replicate()</literal> (a mesclagem ainda não é suportada)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"Essa funcionalidade tem várias aplicações incluindo importação/exportação de "
+"dados, externalização de dados de entidade via JMS or SOAP e relatórios "
+"usando XSLT."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A single mapping can be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it can be used to map just the XML."
+msgstr ""
+"Um mapeamento simples pode ser usado para simultaneamente mapear "
+"propriedades da classe e nós de um documento XML para um banco de dados ou, "
+"se não houver classe para mapear, pode ser usado simplesmente para mapear o "
+"XML. "
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "Especificando o mapeamento de uma classe e de um arquivo XML simultaneamente "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "Segue um exemplo de como mapear um POJO e um XML ao mesmo tempo:"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "Especificando somente um mapeamento XML"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "Segue um exemplo que não contém uma classe POJO:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs or java <literal>Map</literal>s. The property "
+"names are purely logical constructs that can be referred to in HQL queries."
+msgstr ""
+"Esse mapeamento permite que você acesse os dados como uma árvore dom4j ou um "
+"gráfico de pares de nome/valor de propriedade  ou <literal>Map</literal>s do "
+"Java. Os nomes de propriedades são somente construções lógicas que podem ser "
+"referenciadas em consultas HQL. "
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "Mapeando metadados com XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A range of Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This lets you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"Muitos elementos do mapeamento do Hibernate aceitam a função <literal>node</"
+"literal>. Através dele, você pode especificar o nome de uma função ou "
+"elemento XML que contenha a propriedade ou os dados da entidade. O formato "
+"da função <literal>node</literal> deve ser o seguinte: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr "<literal>\"element-name\"</literal>: mapeia para o elemento XML nomeado"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr ""
+"<literal>\"@attribute-name\"</literal>: mapeia para a função XML com "
+"determinado nome"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal>: mapeia para o elemento pai"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal>: map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal>: mapeia para a função "
+"nomeada com o elemento nomeado"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will not appear at all."
+msgstr ""
+"Para coleções e associações de valores simples, existe uma função adicional "
+"<literal>embed-xml</literal>. Se a função <literal>embed-xml=\"true\"</"
+"literal>, que é o valor padrão, a árvore XML para a entidade associada (ou "
+"coleção de determinado tipo de valor) será embutida diretamente na árvore "
+"XML que contém a associação. Por outro lado, se <literal>embed-xml=\"false"
+"\"</literal>, então apenas o valor do identificador referenciado irá "
+"aparecer no XML para associações simples e as coleções simplesmente não irão "
+"aparecer. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Do not leave <literal>embed-xml=\"true\"</literal> for too many "
+"associations, since XML does not deal well with circularity."
+msgstr ""
+"Você precisa tomar cuidado para não deixar o <literal>embed-xml=\"true\"</"
+"literal> para muitas associações, pois o XML não suporta bem referências "
+"circulares. "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this case, the collection of account ids is embedded, but not the actual "
+"account data. The following HQL query:"
+msgstr ""
+"Nesse caso, decidimos incorporar a coleção de ids de contas, e não os dados "
+"de contas. Segue a abaixo a consulta HQL:"
+
+#. Tag: para
+#, no-c-format
+msgid "would return datasets such as this:"
+msgstr "Retornaria um conjunto de dados como esse: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
+"many&gt;</literal> mapping, the data might look more like this:"
+msgstr ""
+"Se você ajustar <literal>embed-xml=\"true\"</literal> em um mapeamento "
+"<literal>&lt;one-to-many&gt;</literal>, os dados se pareceriam com o "
+"seguinte:"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "Manipulando dados em XML"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also re-read and update XML documents in the application. You can do "
+"this by obtaining a dom4j session:"
+msgstr ""
+"Vamos reler e atualizar documentos em XML em nossa aplicação. Nós fazemos "
+"isso obtendo uma sessão do dom4j: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When implementing XML-based data import/export, it is useful to combine this "
+"feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr ""
+"É extremamente útil combinar essa funcionalidade com a operação "
+"<literal>replicate()</literal> do Hibernate para implementar importação/"
+"exportação de dados baseados em XML."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,216 @@
+# translation of Conventions.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Conventions\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-19 15:21+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr "Convenções de Documento"
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr "Este manual usa diversas cenvenções para destacar certas palavras e frases dando atenção a pedaços específicos de informação."
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr "Nas edições em papel e em PDF, este manual usa faces de tipo retiradas do conjunto <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink>. O conjunto Liberation Fonts é tasmbém usado nas edições caso o conjunto seja instalado no seu sistema. Caso contrário, prefácios alternativos porém equivalentes serão exibidos. Nota: O Red Hat Enterprise Linux 5 e versões mais avançadas incluem o conjunto Liberation Fonts por padrão."
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr "Convenções de Tipografia"
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr "Quatro convenções de tipografia são usadas para chamar a atenção às frases e palavras específicas. Estas convenções, e circunstâncias aplicadas pelas mesmas, são as seguintes:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr "<literal>Mono-spaced Bold</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr "Usada para destacar a entrada do sistema, incluindo comandos da janela de comandos, nomes de arquivos e caminhos. Além disso, usada para destacar teclas e combinações de teclas. Por exemplo:  "
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr "Para visualizar os conteúdos do <filename>my_next_bestselling_novel</filename> de arquivo no seu diretório atual, entre o comando <command>cat my_next_bestselling_novel</command> na janela de comandos e pressione <keycap>Enter</keycap> para executar o comando."
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr "Segue acima um nome de arquivo, uma janela de comando e uma tecla, todos representados em negrito num espaço único, todos distinguíveis graças ao contexto."
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr "As combinações de teclas podem se diferenciar das teclas por um hífen conectando cada parte de uma combinação de tecla. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr "Pressione <keycap>Enter</keycap> para executar o comando."
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr "Pressione <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> para mudar para o primeiro terminal virtual. Pressione <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> para retornar à sua sessão X-Windows."
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr "O primeiro parágrafo destaca uma tecla particular a se pressionar. O segundo destaca duas combinações de tecla (cada conjunto de três teclas com cada conjunto sendo pressionado simultâneamente)."
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr "Se o código de fonte for discutido, os nomes de classe, metodos, funções, nomes de variáveis e valores retornados mencionados com um parágrafo serão representados conforme acima, num <literal>mono-spaced bold</literal>. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr "As classes de arquivo relacionado incluem <classname>filesystem</classname> para sistemas de arquivo, <classname>file</classname> para arquivos e <classname>dir</classname> para diretórios. Cada classe possui o próprio conjunto de associação de permissões."
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr "<application>Proportional Bold</application>"
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr "As frases e palavras marcadas encontradas num sistema, incluindo nomes de aplicativos, texto de caixa de diálogo, botões etiquetados, caixa de checagem e etiquetas de botão de rádio; títulos de menu e títulos de sub-menu. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr "Escolha <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice>  a partir do menu principal para lançar <application>Mouse Preferences</application>. Na aba <guilabel>Buttons</guilabel>, clique na caixa de checagem <guilabel>Left-handed mouse</guilabel> e clique <guibutton>Close</guibutton> para mudar para o botão de mouse primário da esquerda para a direita (fazendo com que o mouse seja apropriado para uso na mão esquerda)."
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr "Para inserir um caractere especial a um arquivo <application>gedit</application>, escolha <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> a partir da barra do menu principal. Depois, escolha <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> a partir da barra do menu <application>Character Map</application>, digite o nome do caractere no campo <guilabel>Search</guilabel>e clique <guibutton>Next</guibutton>. O carctere que você avistar estará destacado no <guilabel>Character Table</guilabel>. Dê dois cliques no caractere em destaque para posicioná-lo no campo <guilabel>Text to copy</guilabel> e, então, clique no botão <guibutton>Copy</guibutton>. Agora retorne para o seu documento e escolha o <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> a partir da barra do menu <application>gedit</application>."
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr "O texto acima inclue nomes de aplicativos, nomes do menu de sistema amplo e ítens, nomes do menu específico do aplicativo, botões e textos encontrados com uma interface GUI, sendo que todos apresentados em negrito proporcional e todos distingüíveis por contexto."
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> ou <application><replaceable>Proportional Bold Italic</replaceable></application>"
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr "Se é que um negrito de espaço único ou negrito proporcional, a adição de itálico indica texto variável ou de substituição. O Itálico marca o texto em que você não inseriu literalmente ou texto exibido das quais as alterações dependem das circunstâncias. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr "Para conectar uma máquina remota usando ssh, digite <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> na janela de comandos. Caso a máquina remota for <filename>example.com</filename> e se o seu nome do usuário na máquina for john, digite <command>ssh john at example.com</command>."
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr "O comando <command>mount -o remount <replaceable>file-system</replaceable></command> remonta o sistema do arquivo nomeado. Por exemplo, para remontar o sistema de arquivo, o comando é <command>mount -o remount /home</command>."
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr "Para verificar a versão de um pacote instalado, use o comando <command>rpm -q <replaceable>package</replaceable></command>. Isto retornará a um resultado como o seguinte: <command><replaceable>package-version-release</replaceable></command>."
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr "Perceba que estas palavras italicas em negrito acima &mdash; nome do usuário, domain.name, sistema-arquivo, versão e liberação. Cada palavra é uma marcação, tanto para o texto que você entrar enquanto emitindo um comando ou para o texto exibido pelo sistema."
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr "Além do uso padrão para apresentação do título de um trabalho, o itálico marca o primeiro uso de um novo e importante termo. Por exemplo:"
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr "Publican é um sistema de publicação <firstterm>DocBook</firstterm>."
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr "Convenções Pull-quote"
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr "As listagens de código e saída de terminal são configuradas fora da visão do texto ao redor."
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr "O envio de saída ao terminal é configurado no <computeroutput>mono-spaced roman</computeroutput> e apresentado conforme:"
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr "As listagens de código de fonte são também configuradas em <computeroutput>mono-spaced roman</computeroutput>, porém adicionam destaque de sintáxe conforme:"
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr "Notas e Avisos "
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr "Finalmente, nós usamos três estilos visuais para chamar atenção à informação que poderia ser de outra forma negligenciada."
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "Nota"
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr "As notas são dicas, atalhos ou abordagens alternativas à tarefa em mãos. Não há problema algum em ignorar uma nota, porém você poderá peder a chance de aprender uma forma mais fácil."
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr "Importante"
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr "As caixas importante detalham coisas que são facilmentye esquecidas: alterações de configuração que apenas aplica a sessão atual ou serviços que precisam ser reiniciados antes que uma atualização seja aplicada. Você não perderá dado algum ignorando uma caixa chamada 'Importante', mas poderá se irritar ou frustar."
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr "Aviso"
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr "Os avisos não devem ser ignorados. Você provavelmente perderá dados, caso um aviso seja ignorado."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,26 @@
+# translation of Feedback.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-19 15:22+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr "Nós queremos ouvir sua opinião!"
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr "Você poderá descrevê-la, criando o seu próprio arquivo Feedback.xml local."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,21 @@
+# translation of Legal_Notice.po to
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Legal_Notice\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-19 15:45+1000\n"
+"Last-Translator: \n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr ".Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/pt-BR/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,79 @@
+# translation of legal_notice.po to
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-19 15:44+1000\n"
+"Last-Translator: \n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: legal_notice\n"
+"Language-Team:  <en at li.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"MIME-Version: 1.0\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr "Legal Notice"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, "
+"<state>NC</state><postcode>27606-2072</postcode><country>USA</country> "
+"<phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> "
+"<fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research "
+"Triangle Park</city>, <state>NC</state><postcode>27709</"
+"postcode><country>USA</country> </address>"
+msgstr ""
+"<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, "
+"<state>NC</state><postcode>27606-2072</postcode><country>USA</country> "
+"<phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> "
+"<fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research "
+"Triangle Park</city>, <state>NC</state><postcode>27709</"
+"postcode><country>USA</country> </address>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+msgstr ""
+"Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. "
+"This copyrighted material is made available to anyone wishing to use, "
+"modify, copy, or redistribute it subject to the terms and conditions of the "
+"GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General "
+"Public License</ulink>, as published by the Free Software Foundation."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+msgstr ""
+"Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red "
+"Hat, Inc. in the United States and other countries."
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+msgstr ""
+"All other trademarks referenced herein are the property of their respective "
+"owners."
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr "The GPG fingerprint of the security at redhat.com key is:"
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+

Copied: core/branches/gradle2/hibernate-release/src/main/docbook/publican.cfg (from rev 19677, core/branches/gradle2/documentation/manual/src/main/docbook/publican.cfg)
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/publican.cfg	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/publican.cfg	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,6 @@
+# Config::Simple 4.59
+# Wed Dec  9 09:53:51 2009
+
+debug: 1
+xml_lang: en-US
+brand: jboss-community-hibernate

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Book_Info.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Book_Info.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Book_Info.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,29 @@
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-15 08:44+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Relational Persistence for Idiomatic Java"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Hibernate Reference Documentation"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&version;"
+msgstr "&version;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/HIBERNATE_-_Relational_Persistence_for_Idiomatic_Java.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,23 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+
+#~ msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+#~ msgstr "HIBERNATE - 符合Java习惯的关系数据库持久化"
+
+#~ msgid "Hibernate Reference Documentation"
+#~ msgstr "Hibernate参考文档"
+
+#~ msgid "&copyrightHolder;"
+#~ msgstr "&copyrightHolder;"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Hibernate_Reference.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Hibernate_Reference.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/Hibernate_Reference.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,30 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:14\n"
+"PO-Revision-Date: 2010-03-15 08:45+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HIBERNATE - Relational Persistence for Idiomatic Java"
+msgstr "HIBERNATE - Relational Persistence for Idiomatic Java"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Hibernate Reference Documentation"
+msgstr "Hibernate Reference Documentation"
+
+#. Tag: releaseinfo
+#, no-c-format
+msgid "&versionNumber;"
+msgstr "&versionNumber;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/author_group.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/author_group.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/author_group.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,150 @@
+# Language zh-CN translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-15 08:43+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Max"
+msgstr "Max"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Emmanuel"
+msgstr "Emmanuel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Steve"
+msgstr "Steve"
+
+#. Tag: firstname
+#, no-c-format
+msgid "James"
+msgstr "James"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cheyenne"
+msgstr "Cheyenne"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Vincent"
+msgstr "Vincent"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Sebastien"
+msgstr "Sebastien"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Michael"
+msgstr "Michael"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Baptiste"
+msgstr "Baptiste"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anthony"
+msgstr "Anthony"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Alvaro"
+msgstr "Alvaro"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Anderson"
+msgstr "Anderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Daniel Vieira"
+msgstr "Daniel Vieira"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Francisco"
+msgstr "Francisco"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gamarra"
+msgstr "Gamarra"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Luiz Carlos"
+msgstr "Luiz Carlos"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Marcel"
+msgstr "Marcel"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Paulo"
+msgstr "Paulo"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Pablo L."
+msgstr "Pablo L."
+
+#. Tag: firstname
+#, no-c-format
+msgid "Renato"
+msgstr "Renato"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Rogério"
+msgstr "Rogério"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Wanderson"
+msgstr "Wanderson"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Cao"
+msgstr "Cao"
+
+#. Tag: orgname
+#, no-c-format
+msgid "RedSaga"
+msgstr "RedSaga"
+
+#. Tag: contrib
+#, no-c-format
+msgid "Translation Lead"
+msgstr "Translation Lead"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/architecture.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/architecture.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/architecture.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,276 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:45\n"
+"PO-Revision-Date: 2010-03-15 08:47+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Architecture"
+msgstr "体系结构(Architecture)"
+
+#. Tag: title
+#, no-c-format
+msgid "Overview"
+msgstr "概况(Overview)"
+
+#. Tag: para
+#, no-c-format
+msgid "The diagram below provides a high-level view of the Hibernate architecture:"
+msgstr "下面的图表提供了 Hibernate 体系结构的高层视图:"
+
+#. Tag: para
+#, no-c-format
+msgid "We do not have the scope in this document to provide a more detailed view of all the runtime architectures available; Hibernate is flexible and supports several different approaches. We will, however, show the two extremes: \"minimal\" architecture and \"comprehensive\" architecture."
+msgstr "提供 Hibernate 所有运行时体系结构的更多细节不是本文档的范畴。由于 Hibernate 非常灵活,且支持多种应用方案, 所以我们这只描述一下两种极端的情况:“最小”和“全面解决”的体系结构方案。"
+
+#. Tag: para
+#, no-c-format
+msgid "This next diagram illustrates how Hibernate utilizes database and configuration data to provide persistence services, and persistent objects, to the application."
+msgstr "下图演示了 Hibernate 如何使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The \"minimal\" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:"
+msgstr "“最小”的体系结构方案,要求应用程序提供自己的 JDBC 连接并管理自己的事务。这种方案使用了Hibernate API 的最小子集:"
+
+#. Tag: para
+#, no-c-format
+msgid "The \"comprehensive\" architecture abstracts the application away from the underlying JDBC/JTA APIs and allows Hibernate to manage the details."
+msgstr "“全面解决”的体系结构方案,将应用层从底层的 JDBC/JTA API 中抽象出来,而让 Hibernate 来处理这些细节。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some definitions of the objects depicted in the diagrams:"
+msgstr "图中各个对象的定义如下: "
+
+#. Tag: term
+#, no-c-format
+msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "A threadsafe, immutable cache of compiled mappings for a single database. A factory for <literal>Session</literal> and a client of <literal>ConnectionProvider</literal>, <literal>SessionFactory</literal> can hold an optional (second-level) cache of data that is reusable between transactions at a process, or cluster, level."
+msgstr "针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。 作为 <literal>Session</literal> 的工厂和 <literal>ConnectionProvider</literal> 的客户。<literal>SessionFactory</literal> 可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。"
+
+#. Tag: term
+#, no-c-format
+msgid "Session (<literal>org.hibernate.Session</literal>)"
+msgstr "Session (<literal>org.hibernate.Session</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "A single-threaded, short-lived object representing a conversation between the application and the persistent store. It wraps a JDBC connection and is a factory for <literal>Transaction</literal>. <literal>Session</literal> holds a mandatory first-level cache of persistent objects that are used when navigating the object graph or looking up objects by identifier."
+msgstr "表示应用程序与持久储存层之间交互操作的一个单线程对象,此对象生存期很短。其隐藏了 JDBC 连接,也是 <literal>Transaction</literal> 的工厂。它会持有一个针对持久化对象的必选(第一级)缓存,在遍历对象图或者根据持久化标识查找对象时会用到。"
+
+#. Tag: term
+#, no-c-format
+msgid "Persistent objects and collections"
+msgstr "持久的对象及其集合"
+
+#. Tag: para
+#, no-c-format
+msgid "Short-lived, single threaded objects containing persistent state and business function. These can be ordinary JavaBeans/POJOs. They are associated with exactly one <literal>Session</literal>. Once the <literal>Session</literal> is closed, they will be detached and free to use in any application layer (for example, directly as data transfer objects to and from presentation)."
+msgstr "带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,唯一特殊的是他们正与(仅仅一个)<literal>Session</literal> 相关联。一旦这个 <literal>Session</literal> 被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用(例如,用作跟表示层打交道的数据传输对象)。"
+
+#. Tag: term
+#, no-c-format
+msgid "Transient and detached objects and collections"
+msgstr "瞬态(transient)和脱管(detached)的对象及其集合"
+
+#. Tag: para
+#, no-c-format
+msgid "Instances of persistent classes that are not currently associated with a <literal>Session</literal>. They may have been instantiated by the application and not yet persisted, or they may have been instantiated by a closed <literal>Session</literal>."
+msgstr "那些目前没有与 <literal>Session</literal>关联的持久化类实例。他们可能是在被应用程序实例化后,尚未进行持久化的对象。也可能是因为实例化他们的 <literal>Session</literal> 已经被关闭而脱离持久化的对象。"
+
+#. Tag: term
+#, no-c-format
+msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
+msgstr "事务 Transaction (<literal>org.hibernate.Transaction</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A single-threaded, short-lived object used by the application to specify atomic units of work. It abstracts the application from the underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> might span several <literal>Transaction</literal>s in some cases. However, transaction demarcation, either using the underlying API or <literal>Transaction</literal>, is never optional."
+msgstr "(可选的)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的 JDBC、JTA 以及 CORBA 事务隔离开。某些情况下,一个 <literal>Session</literal> 之内可能包含多个 <literal>Transaction</literal> 对象。尽管是否使用该对象是可选的,但无论是使用底层的 API 还是使用 <literal>Transaction</literal> 对象,事务边界的开启与关闭是必需的。 "
+
+#. Tag: term
+#, no-c-format
+msgid "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
+msgstr "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A factory for, and pool of, JDBC connections. It abstracts the application from underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. It is not exposed to application, but it can be extended and/or implemented by the developer."
+msgstr "(可选的)生成 JDBC 连接的工厂(同时也起到连接池的作用)。它通过抽象将应用从底层的 <literal>Datasource</literal> 或 <literal>DriverManager</literal> 隔离开。仅供开发者扩展/实现用,并不开放给应用程序使用。"
+
+#. Tag: term
+#, no-c-format
+msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "(Optional) A factory for <literal>Transaction</literal> instances. It is not exposed to the application, but it can be extended and/or implemented by the developer."
+msgstr "(可选的)生成 <literal>Transaction</literal> 对象实例的工厂。仅供开发者扩展/实现用,并不开发能够给应用程序使用。"
+
+#. Tag: term
+#, no-c-format
+msgid "<emphasis>Extension Interfaces</emphasis>"
+msgstr "<emphasis>扩展接口</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate offers a range of optional extension interfaces you can implement to customize the behavior of your persistence layer. See the API documentation for details."
+msgstr "Hibernate 提供了很多可选的扩展接口,你可以通过实现它们来定制你的持久层的行为。具体请参考 API 文档。"
+
+#. Tag: para
+#, no-c-format
+msgid "Given a \"minimal\" architecture, the application bypasses the <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or <literal>ConnectionProvider</literal> APIs to communicate with JTA or JDBC directly."
+msgstr "在特定“最小”的体系结构中,应用程序可能绕过  <literal>Transaction</literal>/<literal>TransactionFactory</literal> 以及 <literal>ConnectionProvider</literal> 等 API 直接跟 JTA 或 JDBC 打交道。"
+
+#. Tag: title
+#, no-c-format
+msgid "Instance states"
+msgstr "实例状态"
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of a persistent class can be in one of three different states. These states are defined in relation to a <emphasis>persistence context</emphasis>. The Hibernate <literal>Session</literal> object is the persistence context. The three different states are as follows:"
+msgstr "一个持久化类的实例可能处于三种不同状态中的某一种。这三种状态的定义则与所谓的<emphasis>持久化上下文(persistence context)</emphasis>有关。Hibernate 的 <literal>Session</literal> 对象就是这个所谓的持久化上下文。这三种不同的状态如下:"
+
+#. Tag: term
+#, no-c-format
+msgid "transient"
+msgstr "瞬态(transient)"
+
+#. Tag: para
+#, no-c-format
+msgid "The instance is not associated with any persistence context. It has no persistent identity or primary key value."
+msgstr "该实例从未与任何持久化上下文关联过。它没有持久化标识(相当于主键值)。 "
+
+#. Tag: term
+#, no-c-format
+msgid "persistent"
+msgstr "持久化(persistent)"
+
+#. Tag: para
+#, no-c-format
+msgid "The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and can have a corresponding row in the database. For a particular persistence context, Hibernate <emphasis>guarantees</emphasis> that persistent identity is equivalent to Java identity in relation to the in-memory location of the object."
+msgstr "实例目前与某个持久化上下文有关联。它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行。对于某一个特定的持久化上下文,Hibernate <emphasis>保证</emphasis> 持久化标识与 Java 标识(其值代表对象在内存中的位置)等价。 "
+
+#. Tag: term
+#, no-c-format
+msgid "detached"
+msgstr "脱管(detached)"
+
+#. Tag: para
+#, no-c-format
+msgid "The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and can have a corresponding row in the database. For detached instances, Hibernate does not guarantee the relationship between persistent identity and Java identity."
+msgstr "实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化(serialize)到另外的进程。它拥有持久化标识,并且在数据库中可能存在一个对应的行。对于脱管状态的实例,Hibernate 不保证任何持久化标识和 Java 标识的关系。 "
+
+#. Tag: title
+#, no-c-format
+msgid "JMX Integration"
+msgstr "JMX 整合"
+
+#. Tag: para
+#, no-c-format
+msgid "JMX is the J2EE standard for the management of Java components. Hibernate can be managed via a JMX standard service. AN MBean implementation is provided in the distribution: <literal>org.hibernate.jmx.HibernateService</literal>."
+msgstr "JMX 是管理 Java 组件的 J2EE 标准。Hibernate 可以通过一个 JMX 标准服务来管理。在这个发行版本中,我们提供了一个 MBean 接口的实现,即 <literal>org.hibernate.jmx.HibernateService</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For an example of how to deploy Hibernate as a JMX service on the JBoss Application Server, please see the JBoss User Guide. JBoss AS also provides these benefits if you deploy using JMX:"
+msgstr "想要看如何在 JBoss 应用服务器上将 Hibernate 部署为一个 JMX 服务的例子,您可以参考《JBoss 用户指南》。如果你使用 JMX 来部署 Hibernate,JBoss AS 也提供如下好处:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Session Management</emphasis>: the Hibernate <literal>Session</literal>'s life cycle can be automatically bound to the scope of a JTA transaction. This means that you no longer have to manually open and close the <literal>Session</literal>; this becomes the job of a JBoss EJB interceptor. You also do not have to worry about transaction demarcation in your code (if you would like to write a portable persistence layer use the optional Hibernate <literal>Transaction</literal> API for this). You call the <literal>HibernateContext</literal> to access a <literal>Session</literal>."
+msgstr "<emphasis>会话管理:</emphasis> Hibernate 的 <literal>Session</literal> 对象的生命周期可以 自动跟一个 JTA 事务边界绑定。这意味着你无需手工开关 <literal>Session</literal> 了, 这项工作会由 JBoss EJB 拦截器来完成。你再也不用担心你的代码中的事务边界了(除非你想利用 Hibernate 提供可选的 <literal>Transaction</literal> API 来自己写一个便于移植的的持久层)。你通过调用 <literal>HibernateContext</literal> 来访问 <literal>Session</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>HAR deployment</emphasis>: the Hibernate JMX service is deployed using a JBoss service deployment descriptor in an EAR and/or SAR file, as it supports all the usual configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still need to name all your mapping files in the deployment descriptor. If you use the optional HAR deployment, JBoss will automatically detect all mapping files in your HAR file."
+msgstr "<emphasis>HAR 部署:</emphasis> 通常情况下,你会使用 JBoss 的服务部署描述符(在 EAR 或/和 SAR 文件中)来部署 Hibernate JMX 服务。这种部署方式支持所有常见的 Hibernate <literal>SessionFactory</literal> 的配置选项。不过,你仍需在部署描述符中,列出你所有的映射文的名字。如果你使用 HAR 部署方式, JBoss 会自动探测出你的 HAR 文件中所有的映射文件。"
+
+#. Tag: para
+#, no-c-format
+msgid "Consult the JBoss AS user guide for more information about these options."
+msgstr "这些选项更多的描述,请参考 JBoss 应用程序用户指南。"
+
+#. Tag: para
+#, no-c-format
+msgid "Another feature available as a JMX service is runtime Hibernate statistics. See <xref linkend=\"configuration-optional-statistics\" /> for more information."
+msgstr "将 Hibernate 以部署为 JMX 服务的另一个好处是可以查看 Hibernate 的运行时统计信息。参看 <xref linkend=\"configuration-optional-statistics\"/>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "JCA Support"
+msgstr "对 JCA 的支持"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate can also be configured as a JCA connector. Please see the website for more information. Please note, however, that at this stage Hibernate JCA support is under development."
+msgstr "Hibernate 也可以被配置为一个 JCA 连接器(JCA connector)。更多信息请参看网站。请注意,Hibernate 对 JCA 的支持,仍处于实验性阶段。"
+
+#. Tag: title
+#, no-c-format
+msgid "Contextual sessions"
+msgstr "上下文相关的会话(Contextual Session)"
+
+#. Tag: para
+#, no-c-format
+msgid "Most applications using Hibernate need some form of \"contextual\" session, where a given session is in effect throughout the scope of a given context. However, across applications the definition of what constitutes a context is typically different; different contexts define different scopes to the notion of current. Applications using Hibernate prior to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized third-party frameworks, such as Spring or Pico, which provided proxy/interception-based contextual sessions."
+msgstr "使用 Hibernate 的大多数应用程序需要某种形式的“上下文相关的”会话,特定的会话在整个特定的上下文范围内始终有效。然而,对不同类型的应用程序而言,要为什么是组成这种“上下文”下一个定义通常是困难的;不同的上下文对“当前”这个概念定义了不同的范围。在 3.0 版本之前,使用 Hibernate 的程序要么采用自行编写的基于 <literal>ThreadLocal</literal> 的上下文会话,要么采用 <literal>HibernateUtil</literal> 这样的辅助类,要么采用第三方框架(比如 Spring 或 Pico),它们提供了基于代理(proxy)或者基于拦截器(interception)的上下文相关的会话。"
+
+#. Tag: para
+#, no-c-format
+msgid "Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the <literal>JTA</literal> transaction defined both the scope and context of a current session. Given the maturity of the numerous stand-alone <literal>JTA TransactionManager</literal> implementations, most, if not all, applications should be using <literal>JTA</literal> transaction management, whether or not they are deployed into a <literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-based contextual sessions are all you need to use."
+msgstr "从 3.0.1 版本开始,Hibernate 增加了 <literal>SessionFactory.getCurrentSession()</literal> 方法。一开始,它假定了采用 <literal>JTA</literal> 事务,<literal>JTA</literal> 事务定义了当前 session 的范围和上下文(scope 和 context)。因为有好几个独立的 <literal>JTA TransactionManager</literal> 实现稳定可用,不论是否被部署到一个 <literal>J2EE</literal> 容器中,大多数(假若不是所有的)应用程序都应该采用 <literal>JTA</literal> 事务管理。基于这一点,采用 <literal>JTA</literal> 的上下文相关的会话可以满足你一切需要。"
+
+#. Tag: para
+#, no-c-format
+msgid "However, as of version 3.1, the processing behind <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that end, a new extension interface, <literal>org.hibernate.context.CurrentSessionContext</literal>, and a new configuration parameter, <literal>hibernate.current_session_context_class</literal>, have been added to allow pluggability of the scope and context of defining current sessions."
+msgstr "更好的是,从 3.1 开始,<literal>SessionFactory.getCurrentSession()</literal> 的后台实现是可拔插的。因此,我们引入了新的扩展接口(<literal>org.hibernate.context.CurrentSessionContext</literal>)和新的配置参数(<literal>hibernate.current_session_context_class</literal>),以便对什么是当前会话的范围(scope)和上下文(context)的定义进行拔插。"
+
+#. Tag: para
+#, no-c-format
+msgid "See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> interface for a detailed discussion of its contract. It defines a single method, <literal>currentSession()</literal>, by which the implementation is responsible for tracking the current contextual session. Out-of-the-box, Hibernate comes with three implementations of this interface:"
+msgstr "请参阅 <literal>org.hibernate.context.CurrentSessionContext</literal> 接口的 Javadoc,那里有关于它的契约的详细讨论。它定义了单一的方法,<literal>currentSession()</literal>,特定的实现用它来负责跟踪当前的上下文相关的会话。Hibernate 内置了此接口的三种实现:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.JTASessionContext</literal>: current sessions are tracked and scoped by a <literal>JTA</literal> transaction. The processing here is exactly the same as in the older JTA-only approach. See the Javadocs for details."
+msgstr "<literal>org.hibernate.context.JTASessionContext</literal>:当前会话根据 <literal>JTA</literal> 来跟踪和界定。这和以前的仅支持 JTA 的方法是完全一样的。详情请参阅 Javadoc。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:current sessions are tracked by thread of execution. See the Javadocs for details."
+msgstr "<literal>org.hibernate.context.ThreadLocalSessionContext</literal>:当前会话通过当前执行的线程来跟踪和界定。详情也请参阅 Javadoc。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.context.ManagedSessionContext</literal>: current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <literal>Session</literal> instance with static methods on this class: it does not open, flush, or close a <literal>Session</literal>."
+msgstr "<literal>org.hibernate.context.ManagedSessionContext</literal>:当前会话通过当前执行的线程来跟踪和界定。但是,你需要负责使用这个类的静态方法将 <literal>Session</literal> 实例绑定、或者取消绑定,它并不会打开(open)、flush 或者关闭(close)任何 <literal>Session</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The first two implementations provide a \"one session - one database transaction\" programming model. This is also known and used as <emphasis>session-per-request</emphasis>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programmatic transaction demarcation in plain JSE without JTA, you are advised to use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system from your code. If you use JTA, you can utilize the JTA interfaces to demarcate transactions. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you do not need any transaction or session demarcation operations in your code. Refer to <xref linkend=\"transactions\" /> for more information and code examples."
+msgstr "前两种实现都提供了“one session - one database transaction”的编程模型,也称作 <emphasis>session-per-request</emphasis>。Hibernate session 的起始和终结由数据库事务的生存来控制。假若你在纯粹的 Java SE 之上采用自行编写代码来管理事务,而不使用 JTA,建议你使用 Hibernate <literal>Transaction</literal> API 来把底层事务实现从你的代码中隐藏掉。如果你使用 JTA,请使用 JTA 接口来对事务限界。如果你在支持 CMT 的 EJB 容器中执行代码,事务边界是声明式定义的,你不需要在代码中进行任何事务或会话管理操作。请参阅 <xref linkend=\"transactions\"/> 一节来阅读更多的内容和示例代码。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hibernate.current_session_context_class</literal> configuration parameter defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation should be used. For backwards compatibility, if this configuration parameter is not set but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. Typically, the value of this parameter would just name the implementation class to use. For the three out-of-the-box implementations, however, there are three corresponding short names: \"jta\", \"thread\", and \"managed\"."
+msgstr "<literal>hibernate.current_session_context_class</literal> 配置参数定义了应该采用哪个 <literal>org.hibernate.context.CurrentSessionContext</literal> 实现。注意,为了向下兼容,如果未配置此参数,但是存在 <literal>org.hibernate.transaction.TransactionManagerLookup</literal> 的配置,Hibernate 会采用<literal>org.hibernate.context.JTASessionContext</literal>。一般而言,此参数的值指明了要使用的实现类的全名,但那三种内置的实现可以使用简写,即 \"jta\"、\"thread\" 和 \"managed\"。 "
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/association_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/association_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/association_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1110 @@
+# translation of association_mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: association_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-11-03 11:04+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Association Mappings"
+msgstr "关联关系映射"
+
+#. Tag: title
+#, no-c-format
+msgid "Introduction"
+msgstr "介绍"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Association mappings are often the most difficult thing to implement "
+"correctly. In this section we examine some canonical cases one by one, "
+"starting with unidirectional mappings and then bidirectional cases. We will "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"关联关系映射通常情况是最难配置正确的。在这个部分中,我们从单向关系映射开始,"
+"然后考虑双向关系映射,逐步讲解典型的案例。在所有的例子中,我们都使将用 "
+"<literal>Person</literal> 和 <literal>Address</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Associations will be classified by multiplicity and whether or not they map "
+"to an intervening join table."
+msgstr ""
+"我们根据映射关系是否涉及连接表以及多样性(multiplicity)来划分关联类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered to be good practice in traditional "
+"data modelling, so our examples do not use nullable foreign keys. This is "
+"not a requirement of Hibernate, and the mappings will work if you drop the "
+"nullability constraints."
+msgstr ""
+"在传统的数据建模中,允许为 Null 值的外键被认为是一种不好的实践,因此我们所有"
+"的例子中都使用不允许为 Null 的外键。这并不是 Hibernate的 要求,即使你删除掉不"
+"允许为 Null 的约束,Hibernate 映射一样可以工作的很好。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr "单向关联(Unidirectional associations)"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "多对一(many-to-one) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr "<emphasis>单向 many-to-one 关联</emphasis>是最常见的单向关联关系。"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "一对一(One-to-one)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"<emphasis>基于外键关联的单向一对一关联</emphasis>和<emphasis>单向多对一关联</"
+"emphasis>几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约"
+"束。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator In this example, however, we "
+"have reversed the direction of the association:"
+msgstr ""
+"<emphasis>基于主键关联的单向一对一关联</emphasis>通常使用一个特定的 id 生成"
+"器,然而在这个例子中我们掉换了关联的方向:"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many"
+msgstr "一对多(one-to-many) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is an unusual case, and is not recommended."
+msgstr ""
+"<emphasis>基于外键关联的单向一对多关联</emphasis>是一种很少见的情况,我们不推"
+"荐使用它。"
+
+#. Tag: para
+#, no-c-format
+msgid "You should instead use a join table for this kind of association."
+msgstr "我们认为对于这种关联关系最好使用连接表。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Unidirectional associations with join tables"
+msgstr "使用连接表的单向关联(Unidirectional associations with join tables)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is the preferred option. Specifying <literal>unique=\"true\"</"
+"literal>, changes the multiplicity from many-to-many to one-to-many."
+msgstr ""
+"<emphasis>基于连接表的单向一对多关联</emphasis> 应该优先被采用。请注意,通过"
+"指定<literal>unique=\"true\"</literal>,我们可以把多样性从多对多改变为一对"
+"多。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is common when the association is optional. For example:"
+msgstr ""
+"<emphasis>基于连接表的单向多对一关联</emphasis>在关联关系可选的情况下应用也很"
+"普遍。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>基于连接表的单向一对一关联</emphasis>也是可行的,但非常少见。"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many"
+msgstr "多对多(many-to-many) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, here is an example of a <emphasis>unidirectional many-to-many "
+"association</emphasis>."
+msgstr "最后,这里是一个<emphasis>单向多对多关联</emphasis>的例子。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "双向关联(Bidirectional associations)"
+
+#. Tag: title
+#, no-c-format
+msgid "one-to-many / many-to-one"
+msgstr "一对多(one to many)/多对一(many to one) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. The following example illustrates the standard "
+"parent/child relationship."
+msgstr ""
+"<emphasis>双向多对一关联</emphasis> 是最常见的关联关系。下面的例子解释了这种"
+"标准的父/子关联关系。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal>, or other indexed collection, set the "
+"<literal>key</literal> column of the foreign key to <literal>not null</"
+"literal>. Hibernate will manage the association from the collections side to "
+"maintain the index of each element, making the other side virtually inverse "
+"by setting <literal>update=\"false\"</literal> and <literal>insert=\"false"
+"\"</literal>:"
+msgstr ""
+"如果你使用 <literal>List</literal>(或者其他有序集合类),你需要设置外键对应"
+"的 <literal>key</literal> 列为 <literal>not null</literal>。Hibernate 将从集"
+"合端管理关联,维护每个元素的索引,并通过设置 <literal>update=\"false\"</"
+"literal> 和 <literal>insert=\"false\"</literal> 来对另一端反向操作。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the underlying foreign key column is <literal>NOT NULL</literal>, it is "
+"important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal>&lt;key&gt;</literal> element of the collection mapping. Do not "
+"only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal>&lt;column&gt;</literal> element, but on the <literal>&lt;key&gt;</"
+"literal> element."
+msgstr ""
+"假若集合映射的 <literal>&lt;key&gt;</literal> 元素对应的底层外键字段是 "
+"<literal>NOT NULL</literal> 的,那么为这一 key 元素定义 <literal>not-null="
+"\"true\"</literal> 是很重要的。不要仅仅为可能的嵌套 <literal>&lt;column&gt;</"
+"literal>元素定义 <literal>not-null=\"true\"</literal>,<literal>&lt;key&gt;</"
+"literal> 元素也是需要的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is common:"
+msgstr "<emphasis>基于外键关联的双向一对一关联</emphasis>也很常见。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator:"
+msgstr ""
+"<emphasis>基于主键关联的一对一关联</emphasis>需要使用特定的 id 生成器:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with join tables"
+msgstr "使用连接表的双向关联(Bidirectional associations with join tables)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is an example of a <emphasis>bidirectional one-to-many "
+"association on a join table</emphasis>. The <literal>inverse=\"true\"</"
+"literal> can go on either end of the association, on the collection, or on "
+"the join."
+msgstr ""
+"下面是一个<emphasis>基于连接表的双向一对多关联</emphasis>的例子。注意 "
+"<literal>inverse=\"true\"</literal> 可以出现在关联的任意一端,即 collection "
+"端或者 join 端。"
+
+#. Tag: title
+#, no-c-format
+msgid "one to one"
+msgstr "一对一(one to one)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is possible, but extremely unusual."
+msgstr ""
+"<emphasis>基于连接表的双向一对一关联</emphasis>也是可行的,但极为罕见。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Here is an example of a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr "下面是一个<emphasis>双向多对多关联</emphasis>的例子。"
+
+#. Tag: title
+#, no-c-format
+msgid "More complex association mappings"
+msgstr "更复杂的关联映射"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate handles more complex situations by using SQL fragments embedded in "
+"the mapping document. For example, if a table with historical account "
+"information data defines <literal>accountNumber</literal>, "
+"<literal>effectiveEndDate</literal> and <literal>effectiveStartDate</"
+"literal>columns, it would be mapped as follows:"
+msgstr ""
+"更复杂的关联连接<emphasis>极为</emphasis>罕见。通过在映射文档中嵌入 SQL 片"
+"断,Hibernate 也可以处理更为复杂的情况。比如,假若包含历史帐户数据的表定义了 "
+"<literal>accountNumber</literal>、<literal>effectiveEndDate</literal> 和 "
+"<literal>effectiveStartDate</literal> 字段,按照下面映射:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can then map an association to the <emphasis>current</emphasis> "
+"instance, the one with null <literal>effectiveEndDate</literal>, by using:"
+msgstr ""
+"那么我们可以对<emphasis>目前(current)</emphasis>实例(其 "
+"<literal>effectiveEndDate</literal> 为 null)使用这样的关联映射: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. An association to the employee's <emphasis>most recent</"
+"emphasis> employer, the one with the most recent <literal>startDate</"
+"literal>, could be mapped in the following way:"
+msgstr ""
+"在更复杂的例子中,假想 <literal>Employee</literal> 和 <literal>Organization</"
+"literal> 之间的关联是通过一个 <literal>Employment</literal> 中间表维护的,而"
+"中间表中填充了很多历史雇员数据。那“雇员的<emphasis>最新</emphasis>雇主”这个关"
+"联(最新雇主就是具有最新的 <literal>startDate</literal> 的那个)可以这样映"
+"射:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This functionality allows a degree of creativity and flexibility, but it is "
+"more practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"使用这一功能时可以充满创意和灵活性,但通常更加实用的是用 HQL 或条件查询来处理"
+"这些情况。"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key, addressId "
+#~ "bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( personId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key, personId "
+#~ "bigint not null )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId not null, addressId bigint not null "
+#~ "primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null primary key, "
+#~ "addressId bigint not null unique )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null, primary key (personId, addressId) )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <one-to-many class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <many-to-one name=\"address\"\n"
+#~ "      column=\"addressId\"\n"
+#~ "      not-null=\"true\"\n"
+#~ "      insert=\"false\"\n"
+#~ "      update=\"false\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "   <id name=\"id\"/>\n"
+#~ "   ...\n"
+#~ "   <list name=\"people\">\n"
+#~ "      <key column=\"addressId\" not-null=\"true\"/>\n"
+#~ "      <list-index column=\"peopleIdx\"/>\n"
+#~ "      <one-to-many class=\"Person\"/>\n"
+#~ "   </list>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <many-to-one name=\"address\" \n"
+#~ "        column=\"addressId\" \n"
+#~ "        unique=\"true\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "   <one-to-one name=\"person\" \n"
+#~ "        property-ref=\"address\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"address\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">person</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    <one-to-one name=\"person\" \n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            unique=\"true\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        inverse=\"true\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "create table Person ( personId bigint not null primary key )\n"
+#~ "create table PersonAddress ( personId bigint not null, addressId bigint "
+#~ "not null primary key )\n"
+#~ "create table Address ( addressId bigint not null primary key )\n"
+#~ "        ]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\">\n"
+#~ "        <key column=\"personId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"address\"\n"
+#~ "            column=\"addressId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <join table=\"PersonAddress\" \n"
+#~ "        optional=\"true\"\n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"addressId\" \n"
+#~ "            unique=\"true\"/>\n"
+#~ "        <many-to-one name=\"person\"\n"
+#~ "            column=\"personId\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "    </join>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\" column=\"personId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"addresses\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"personId\"/>\n"
+#~ "        <many-to-many column=\"addressId\"\n"
+#~ "            class=\"Address\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "    <id name=\"id\" column=\"addressId\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+#~ "        <key column=\"addressId\"/>\n"
+#~ "        <many-to-many column=\"personId\"\n"
+#~ "            class=\"Person\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<properties name=\"currentAccountKey\">\n"
+#~ "    <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+#~ "    <property name=\"currentAccount\" type=\"boolean\">\n"
+#~ "        <formula>case when effectiveEndDate is null then 1 else 0 end</"
+#~ "formula>\n"
+#~ "    </property>\n"
+#~ "</properties>\n"
+#~ "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+#~ "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+#~ "        property-ref=\"currentAccountKey\"\n"
+#~ "        class=\"AccountInfo\">\n"
+#~ "    <column name=\"accountNumber\"/>\n"
+#~ "    <formula>'1'</formula>\n"
+#~ "</many-to-one>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<join>\n"
+#~ "    <key column=\"employeeId\"/>\n"
+#~ "    <subselect>\n"
+#~ "        select employeeId, orgId \n"
+#~ "        from Employments \n"
+#~ "        group by orgId \n"
+#~ "        having startDate = max(startDate)\n"
+#~ "    </subselect>\n"
+#~ "    <many-to-one name=\"mostRecentEmployer\" \n"
+#~ "            class=\"Organization\" \n"
+#~ "            column=\"orgId\"/>\n"
+#~ "</join>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/basic_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/basic_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/basic_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,3656 @@
+# translation of basic_mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: basic_mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 08:56+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Basic O/R Mapping"
+msgstr "对象/关系数据库映射基础(Basic O/R Mapping)"
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping declaration"
+msgstr "映射定义(Mapping declaration)"
+
+#. Tag: para
+#, no-c-format
+msgid "Object/relational mappings are usually defined in an XML document. The mapping document is designed to be readable and hand-editable. The mapping language is Java-centric, meaning that mappings are constructed around persistent class declarations and not table declarations."
+msgstr "对象和关系数据库之间的映射通常是用一个 XML 文档来定义的。这个映射文档被设计为易读的,并且可以手工修改。映射语言是以 Java 为中心,这意味着映射文档是按照持久化类的定义来创建的,而非表的定义。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that even though many Hibernate users choose to write the XML by hand, a number of tools exist to generate the mapping document. These include XDoclet, Middlegen and AndroMDA."
+msgstr "请注意,虽然很多 Hibernate 用户选择手写 XML 映射文档,但也有一些工具可以用来生成映射文档,包括 XDoclet、Middlegen 和 AndroMDA。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example mapping:"
+msgstr "下面是一个映射的例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "We will now discuss the content of the mapping document. We will only describe, however, the document elements and attributes that are used by Hibernate at runtime. The mapping document also contains some extra optional attributes and elements that affect the database schemas exported by the schema export tool (for example, the <literal> not-null</literal> attribute)."
+msgstr "我们现在开始讨论映射文档的内容。我们只描述 Hibernate 在运行时用到的文档元素和属性。映射文档还包括一些额外的可选属性和元素,它们在使用 schema 导出工具的时候会影响导出的数据库 schema 结果(比如,<literal>not-null</literal> 属性)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Doctype"
+msgstr "Doctype"
+
+#. Tag: para
+#, no-c-format
+msgid "All XML mappings should declare the doctype shown. The actual DTD can be found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/hibernate </literal>, or in <literal>hibernate3.jar</literal>. Hibernate will always look for the DTD in its classpath first. If you experience lookups of the DTD using an Internet connection, check the DTD declaration against the contents of your classpath."
+msgstr "所有的 XML 映射都需要定义如上所示的 doctype。DTD 可以从上述 URL 中获取,也可以从 <literal>hibernate-x.x.x/src/org/hibernate </literal> 目录中、或 <literal>hibernate.jar</literal> 文件中找到。Hibernate 总是会首先在它的 classptah 中搜索 DTD 文件。如果你发现它是通过连接 Internet 查找 DTD 文件,就对照你的 classpath 目录检查 XML 文件里的 DTD 声明。"
+
+#. Tag: title
+#, no-c-format
+msgid "EntityResolver"
+msgstr "EntityResolver"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will first attempt to resolve DTDs in its classpath. It does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal> implementation with the SAXReader it uses to read in the xml files. This custom <literal>EntityResolver</literal> recognizes two different systemId namespaces:"
+msgstr "Hibernate 首先试图在其 classpath 中解析 DTD。这是依靠在系统中注册的 <literal>org.xml.sax.EntityResolver</literal> 的一个具体实现,SAXReader 依靠它来读取 xml 文件。这个自定义的 <literal>EntityResolver</literal> 能辨认两种不同的 systenId 命名空间:"
+
+#. Tag: para
+#, no-c-format
+msgid "a <literal>hibernate namespace</literal> is recognized whenever the resolver encounters a systemId starting with <literal>http://hibernate.sourceforge.net/</literal>. The resolver attempts to resolve these entities via the classloader which loaded the Hibernate classes."
+msgstr "若 resolver 遇到了一个以 <literal>http://hibernate.sourceforge.net/</literal> 为开头的 systemId,它会辨认出是 <literal>hibernate namespace</literal>,resolver 就试图通过加载 Hibernate 类的 classloader 来查找这些实体。 "
+
+#. Tag: para
+#, no-c-format
+msgid "a <literal>user namespace</literal> is recognized whenever the resolver encounters a systemId using a <literal>classpath://</literal> URL protocol. The resolver will attempt to resolve these entities via (1) the current thread context classloader and (2) the classloader which loaded the Hibernate classes."
+msgstr "若 resolver 遇到了一个使用 <literal>classpath://</literal> URL 协议的 systemId,它会辨认出这是 <literal>user namespace</literal>,resolver 试图通过(1) 当前线程上下文的 classloader 和(2) 加载 Hibernate class 的 classloader 来查找这些实体。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of utilizing user namespacing:"
+msgstr "下面是一个使用用户命名空间(user namespace)的例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal> package and contains a custom <link linkend=\"mapping-types-custom\">typedef</link>."
+msgstr "这里的 <literal>types.xml</literal> 是 <literal>your.domain</literal> 包中的一个资源,它包含了一个自定义的 <link linkend=\"mapping-types-custom\">typedef</link>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate-mapping"
+msgstr "Hibernate-mapping"
+
+#. Tag: para
+#, no-c-format
+msgid "This element has several optional attributes. The <literal>schema</literal> and <literal>catalog</literal> attributes specify that tables referred to in this mapping belong to the named schema and/or catalog. If they are specified, tablenames will be qualified by the given schema and catalog names. If they are missing, tablenames will be unqualified. The <literal>default-cascade</literal> attribute specifies what cascade style should be assumed for properties and collections that do not specify a <literal>cascade</literal> attribute. By default, the <literal>auto-import</literal> attribute allows you to use unqualified class names in the query language."
+msgstr "这个元素包括一些可选的属性。<literal>schema</literal> 和 <literal>catalog</literal> 属性, 指明了这个映射所连接(refer)的表所在的 schema 和/或 catalog 名称。假若指定了这个属性,表名会加上所指定的 schema 和 catalog 的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。<literal>default-cascade</literal> 指定了未明确注明 <literal>cascade</literal> 属性的 Java 属性和 集合类 Hibernate 会采取什么样的默认级联风格。<literal>auto-import</literal> 属性默认让我们在查询语言中可以使用非全限定名的类名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a database schema."
+msgstr "<literal>schema</literal>(可选):数据库 schema 的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): the name of a database catalog."
+msgstr "<literal>catalog</literal>(可选):数据库 catalog 的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-cascade</literal> (optional - defaults to <literal>none</literal>): a default cascade style."
+msgstr "<literal>default-cascade</literal>(可选 — 默认为 <literal>none</literal>):默认的级联风格。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate should use for accessing all properties. It can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr "<literal>default-access</literal>(可选 — 默认为 <literal>property</literal>):Hibernate 用来访问所有属性的策略。可以通过实现 <literal>PropertyAccessor</literal> 接口自定义。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>default-lazy</literal> (optional - defaults to <literal>true</literal>): the default value for unspecified <literal>lazy</literal> attributes of class and collection mappings."
+msgstr "<literal>default-lazy</literal>(可选 — 默认为 <literal>true</literal>):指定了未明确注明 <literal>lazy</literal> 属性的 Java 属性和集合类,Hibernate 会采取什么样的默认加载风格。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>auto-import</literal> (optional - defaults to <literal>true</literal>): specifies whether we can use unqualified class names of classes in this mapping in the query language."
+msgstr "<literal>auto-import</literal>(可选 — 默认为 <literal>true</literal>):指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>package</literal> (optional): specifies a package prefix to use for unqualified class names in the mapping document."
+msgstr "<literal>package</literal>(可选):指定一个包前缀,如果在映射文档中没有指定全限定的类名,就使用这个作为包名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you have two persistent classes with the same unqualified name, you should set <literal>auto-import=\"false\"</literal>. An exception will result if you attempt to assign two classes to the same \"imported\" name."
+msgstr "假若你有两个持久化类,它们的非全限定名是一样的(就是两个类的名字一样,所在的包不一样 — 译者注),你应该设置 <literal>auto-import=\"false\"</literal>。如果你把一个“导入过”的名字同时对应两个类,Hibernate 会抛出一个异常。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hibernate-mapping</literal> element allows you to nest several persistent <literal>&lt;class&gt;</literal> mappings, as shown above. It is, however, good practice (and expected by some tools) to map only a single persistent class, or a single class hierarchy, in one mapping file and name it after the persistent superclass. For example, <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, <literal>Animal.hbm.xml</literal>."
+msgstr "注意 <literal>hibernate-mapping</literal> 元素允许你嵌套多个如上所示的 <literal>&lt;class&gt;</literal> 映射。但是最好的做法(也许一些工具需要的)是一个持久化类(或一个类的继承层次)对应一个映射文件,并以持久化的超类名称命名,例如:<literal>Cat.hbm.xml</literal>、<literal>Dog.hbm.xml</literal>,或者如果使用继承,<literal>Animal.hbm.xml</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Class"
+msgstr "ç±»"
+
+#. Tag: para
+#, no-c-format
+msgid "You can declare a persistent class using the <literal>class</literal> element. For example:"
+msgstr "你可以使用 <literal>class</literal> 元素来定义一个持久化类。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the fully qualified Java class name of the persistent class or interface. If this attribute is missing, it is assumed that the mapping is for a non-POJO entity."
+msgstr "<literal>name</literal>(可选):持久化类(或者接口)的 Java 全限定名。 如果这个属性不存在,Hibernate 将假定这是一个非 POJO 的实体映射。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal> (optional - defaults to the unqualified class name): the name of its database table."
+msgstr "<literal>table</literal>(可选 — 默认是类的非全限定名):对应的数据库表名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): a value that distinguishes individual subclasses that is used for polymorphic behavior. Acceptable values include <literal>null</literal> and <literal>not null</literal>."
+msgstr "<literal>discriminator-value</literal>(可选 — 默认和类名一样):一个用于区分不同的子类的值,在多态行为时使用。它可以接受的值包括 <literal>null</literal> 和 <literal>not null</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): specifies that instances of the class are (not) mutable."
+msgstr "<literal>mutable</literal>(可选,默认值为 <literal>true</literal>):表明该类的实例是可变的或者不可变的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): overrides the schema name specified by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr "<literal>schema</literal>(可选):覆盖在根 <literal>&lt;hibernate-mapping&gt;</literal> 元素中指定的 schema 名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>catalog</literal> (optional): overrides the catalog name specified by the root <literal>&lt;hibernate-mapping&gt;</literal> element."
+msgstr "<literal>catalog</literal>(可选):覆盖在根 <literal>&lt;hibernate-mapping&gt;</literal> 元素中指定的 catalog 名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies an interface to use for lazy initializing proxies. You can specify the name of the class itself."
+msgstr "<literal>proxy</literal>(可选):指定一个接口,在延迟装载时作为代理使用。你可以在这里使用该类自己的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-update</literal> (optional - defaults to <literal>false</literal>): specifies that <literal>UPDATE</literal> SQL should be generated at runtime and can contain only those columns whose values have changed."
+msgstr "<literal>dynamic-update</literal>(可选,默认为 <literal>false</literal>):指定用于 <literal>UPDATE</literal> 的 SQL 将会在运行时动态生成,并且只更新那些改变过的字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-insert</literal> (optional - defaults to <literal>false</literal>): specifies that <literal>INSERT</literal> SQL should be generated at runtime and contain only the columns whose values are not null."
+msgstr "<literal>dynamic-insert</literal>(可选,默认为 <literal>false</literal>):指定用于 <literal>INSERT</literal> 的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>select-before-update</literal> (optional - defaults to <literal>false</literal>): specifies that Hibernate should <emphasis>never</emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that an object is actually modified. Only when a transient object has been associated with a new session using <literal>update()</literal>, will Hibernate perform an extra SQL <literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is actually required."
+msgstr "<literal>select-before-update</literal>(可选,默认为 <literal>false</literal>):指定 Hibernate 除非确定对象真正被修改了(如果该值为 true — 译注),否则<emphasis>不会</emphasis>执行 SQL <literal>UPDATE</literal> 操作。在特定场合(实际上,它只在一个瞬时对象(transient object)关联到一个新的 session 中时执行的 update() 中生效),这说明 Hibernate 会在 <literal>UPDATE</literal> 之前执行一次额外的 SQL <literal>SELECT</literal> 操作来决定是否确实需要执行 <literal>UPDATE</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>polymorphism</literal> (optional - defaults to <literal>implicit</literal>): determines whether implicit or explicit query polymorphism is used."
+msgstr "<literal>polymorphism(多态)</literal>(可选,默认值为 <literal>implicit (隐式)</literal>):界定是隐式还是显式的使用多态查询(这只在 Hibernate 的具体表继承策略中用到 — 译注)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>where</literal> (optional): specifies an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving objects of this class."
+msgstr "<literal>where</literal>(可选)指定一个附加的 SQL <literal>WHERE</literal> 条件,在抓取这个类的对象时会一直增加这个条件。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>persister</literal> (optional): specifies a custom <literal>ClassPersister</literal>."
+msgstr "<literal>persister</literal>(可选):指定一个定制的 <literal>ClassPersister</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>batch-size</literal> (optional - defaults to <literal>1</literal>): specifies a \"batch size\" for fetching instances of this class by identifier."
+msgstr "<literal>batch-size</literal>(可选,默认是 <literal>1</literal>)指定一个用于 根据标识符(identifier)抓取实例时使用的 \"batch size\"(批次抓取数量)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>version</literal>): determines the optimistic locking strategy."
+msgstr "<literal>optimistic-lock(乐观锁定)</literal>(可选,默认是 <literal>version</literal>):决定乐观锁定的策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional): lazy fetching can be disabled by setting <literal>lazy=\"false\"</literal>."
+msgstr "<literal>lazy</literal>(可选):通过设置 <literal>lazy=\"false\"</literal>,所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional - defaults to the class name): Hibernate3 allows a class to be mapped multiple times, potentially to different tables. It also allows entity mappings that are represented by Maps or XML at the Java level. In these cases, you should provide an explicit arbitrary name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\" /> and <xref linkend=\"xml\" /> for more information."
+msgstr "<literal>entity-name</literal>(可选,默认为类名):Hibernate3 允许一个类进行多次映射(前提是映射到不同的表),并且允许使用 Maps 或 XML 代替 Java 层次的实体映射(也就是实现动态领域模型,不用写持久化类-译注)。更多信息请看 <xref linkend=\"persistent-classes-dynamicmodels\"/> 和 <xref linkend=\"xml\"/>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>check</literal> (optional): an SQL expression used to generate a multi-row <emphasis>check</emphasis> constraint for automatic schema generation."
+msgstr "<literal>check</literal>(可选):这是一个 SQL 表达式, 用于为自动生成的 schema 添加多行(multi-row)约束<emphasis>检查</emphasis>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>rowid</literal> (optional): Hibernate can use ROWIDs on databases. On Oracle, for example, Hibernate can use the <literal>rowid</literal> extra column for fast updates once this option has been set to <literal>rowid</literal>. A ROWID is an implementation detail and represents the physical location of a stored tuple."
+msgstr "<literal>rowid</literal>(可选):Hibernate 可以使用数据库支持的所谓的 ROWIDs,例如:Oracle 数据库,如果你设置这个可选的 <literal>rowid</literal>,Hibernate 可以使用额外的字段 <literal>rowid</literal> 实现快速更新。ROWID 是这个功能实现的重点,它代表了一个存储元组(tuple)的物理位置。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>subselect</literal> (optional): maps an immutable and read-only entity to a database subselect. This is useful if you want to have a view instead of a base table. See below for more information."
+msgstr "<literal>subselect</literal>(可选):它将一个不可变(immutable)并且只读的实体映射到一个数据库的子查询中。当你想用视图代替一张基本表的时候,这是有用的,但最好不要这样做。更多的介绍请看下面内容。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>abstract</literal> (optional): is used to mark abstract superclasses in <literal>&lt;union-subclass&gt;</literal> hierarchies."
+msgstr "<literal>abstract</literal>(可选):用于在 <literal>&lt;union-subclass&gt;</literal> 的层次结构(hierarchies)中标识抽象超类。"
+
+#. Tag: para
+#, no-c-format
+msgid "It is acceptable for the named persistent class to be an interface. You can declare implementing classes of that interface using the <literal>&lt;subclass&gt;</literal> element. You can persist any <emphasis>static</emphasis> inner class. Specify the class name using the standard form i.e. <literal>e.g.Foo$Bar</literal>."
+msgstr "若指明的持久化类实际上是一个接口,这也是完全可以接受的。之后你可以用元素 <literal>&lt;subclass&gt;</literal> 来指定该接口的实际实现类。你可以持久化任何 <emphasis>static</emphasis>(静态的)内部类。你应该使用标准的类名格式来指定类名,比如:<literal>Foo$Bar</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Immutable classes, <literal>mutable=\"false\"</literal>, cannot be updated or deleted by the application. This allows Hibernate to make some minor performance optimizations."
+msgstr "不可变类,<literal>mutable=\"false\"</literal> 不可以被应用程序更新或者删除。这允许 Hibernate 实现一些小小的性能优化。"
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>proxy</literal> attribute enables lazy initialization of persistent instances of the class. Hibernate will initially return CGLIB proxies that implement the named interface. The persistent object will load when a method of the proxy is invoked. See \"Initializing collections and proxies\" below."
+msgstr "可选的 <literal>proxy</literal> 属性允许延迟加载类的持久化实例。Hibernate 开始会返回实现了这个命名接口的 CGLIB 代理。当代理的某个方法被实际调用的时候,真实的持久化对象才会被装载。参见下面的“用于延迟装载的代理”。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Implicit</emphasis> polymorphism means that instances of the class will be returned by a query that names any superclass or implemented interface or class, and that instances of any subclass of the class will be returned by a query that names the class itself. <emphasis>Explicit</emphasis> polymorphism means that class instances will be returned only by queries that explicitly name that class. Queries that name the class will return only instances of subclasses mapped inside this <literal>&lt;class&gt;</literal> declaration as a <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</literal>. For most purposes, the default <literal>polymorphism=\"implicit\"</literal> is appropriate. Explicit polymorphism is useful when two different classes are mapped to the same table This allows a \"lightweight\" class that contains a subset of the table columns."
+msgstr "<emphasis>Implicit</emphasis>(隐式)的多态是指,如果查询时给出的是任何超类、该类实现的接口或者该类的名字,都会返回这个类的实例;如果查询中给出的是子类的名字,则会返回子类的实例。<emphasis>Explicit</emphasis>(显式)的多态是指,只有在查询时给出明确的该类名字时才会返回这个类的实例; 同时只有在这个 <literal>&lt;class&gt;</literal> 的定义中作为 <literal>&lt;subclass&gt;</literal> 或者 <literal>&lt;joined-subclass&gt;</literal> 出现的子类,才会可能返回。在大多数情况下,默认的 <literal>polymorphism=\"implicit\"</literal> 都是合适的。显式的多态在有两个不同的类映射到同一个表的时候很有用。(允许一个“轻量级”的类,只包含部分表字段)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>persister</literal> attribute lets you customize the persistence strategy used for the class. You can, for example, specify your own subclass of <literal>org.hibernate.persister.EntityPersister</literal>, or you can even provide a completely new implementation of the interface <literal>org.hibernate.persister.ClassPersister</literal> that implements, for example, persistence via stored procedure calls, serialization to flat files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for a simple example of \"persistence\" to a <literal>Hashtable</literal>."
+msgstr "<literal>persister</literal> 属性可以让你定制这个类使用的持久化策略。你可以指定你自己实现 <literal>org.hibernate.persister.EntityPersister</literal> 的子类,你甚至可以完全从头开始编写一个 <literal>org.hibernate.persister.ClassPersister</literal> 接口的实现,比如是用储存过程调用、序列化到文件或者 LDAP 数据库来实现。参阅 <literal>org.hibernate.test.CustomPersister</literal>,这是持久化到 <literal>Hashtable</literal> 的一个简单例子。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> settings are not inherited by subclasses, so they can also be specified on the <literal>&lt;subclass&gt;</literal> or <literal>&lt;joined-subclass&gt;</literal> elements. Although these settings can increase performance in some cases, they can actually decrease performance in others."
+msgstr "请注意 <literal>dynamic-update</literal> 和 <literal>dynamic-insert</literal> 的设置并不会继承到子类,所以在 <literal>&lt;subclass&gt;</literal> 或者 <literal>&lt;joined-subclass&gt;</literal> 元素中可能需要再次设置。这些设置在某些情况下能够提高效率,而其他情况下则反而可能降低性能。"
+
+#. Tag: para
+#, no-c-format
+msgid "Use of <literal>select-before-update</literal> will usually decrease performance. It is useful to prevent a database update trigger being called unnecessarily if you reattach a graph of detached instances to a <literal>Session</literal>."
+msgstr "使用 <literal>select-before-update</literal> 通常会降低性能。如果你重新连接一个脱管(detached)对象实例 到一个 <literal>Session</literal> 中时,它可以防止数据库不必要的触发 update。这就很有用了。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you enable <literal>dynamic-update</literal>, you will have a choice of optimistic locking strategies:"
+msgstr "如果你打开了<literal>dynamic-update</literal>,你可以选择几种乐观锁定的策略:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>version</literal>: check the version/timestamp columns"
+msgstr "<literal>version(版本检查)</literal>:检查 version/timestamp 字段"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>all</literal>: check all columns"
+msgstr "<literal>all(全部)</literal>:检查全部字段"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dirty</literal>: check the changed columns, allowing some concurrent updates"
+msgstr "<literal>dirty(脏检查)</literal>:只检察修改过的字段,允许某些并行更新"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal>: do not use optimistic locking"
+msgstr "<literal>none(不检查)</literal>:不使用乐观锁定"
+
+#. Tag: para
+#, no-c-format
+msgid "It is <emphasis>strongly</emphasis> recommended that you use version/timestamp columns for optimistic locking with Hibernate. This strategy optimizes performance and correctly handles modifications made to detached instances (i.e. when <literal>Session.merge()</literal> is used)."
+msgstr "我们<emphasis>强烈</emphasis>建议你在 Hibernate 中使用 version/timestamp 字段来进行乐观锁定。这个选择可以优化性能,且能够处理对脱管实例的修改(例如:在使用 <literal>Session.merge()</literal> 的时候)。"
+
+#. Tag: para
+#, no-c-format
+msgid "There is no difference between a view and a base table for a Hibernate mapping. This is transparent at the database level, although some DBMS do not support views properly, especially with updates. Sometimes you want to use a view, but you cannot create one in the database (i.e. with a legacy schema). In this case, you can map an immutable and read-only entity to a given SQL subselect expression:"
+msgstr "对 Hibernate 映射来说视图和表是没有区别的,这是因为它们在数据层都是透明的( 注意:一些数据库不支持视图属性,特别是更新的时候)。有时你想使用视图,但却不能在数据库中创建它(例如:在遗留的 schema 中)。这样的话,你可以映射一个不可变的(immutable)并且是 只读的实体到一个给定的 SQL 子查询表达式: "
+
+#. Tag: para
+#, no-c-format
+msgid "Declare the tables to synchronize this entity with, ensuring that auto-flush happens correctly and that queries against the derived entity do not return stale data. The <literal>&lt;subselect&gt;</literal> is available both as an attribute and a nested mapping element."
+msgstr "定义这个实体用到的表为同步(synchronize),确保自动刷新(auto-flush)正确执行,并且依赖原实体的查询不会返回过期数据。在属性元素和嵌套映射元素中都可使用 <literal>&lt;subselect&gt;</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "id"
+msgstr "id"
+
+#. Tag: para
+#, no-c-format
+msgid "Mapped classes <emphasis>must</emphasis> declare the primary key column of the database table. Most classes will also have a JavaBeans-style property holding the unique identifier of an instance. The <literal>&lt;id&gt;</literal> element defines the mapping from that property to the primary key column."
+msgstr "被映射的类<emphasis>必须</emphasis>定义对应数据库表主键字段。大多数类有一个 JavaBeans 风格的属性, 为每一个实例包含唯一的标识。<literal>&lt;id&gt;</literal> 元素定义了该属性到数据库表主键字段的映射。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional): the name of the identifier property."
+msgstr "<literal>name</literal>(可选):标识属性的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr "<literal>type</literal>(可选):一个 Hibernate 类型的名字。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the primary key column."
+msgstr "<literal>column</literal>(可选 — 默认为属性名):主键字段的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" value): an identifier property value that indicates an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session."
+msgstr "<literal>unsaved-value</literal>(可选 — 默认为一个切合实际(sensible)的值):一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。这可以把这种实例和从以前的 session 中装载过(可能又做过修改--译者注)但未再次持久化的实例区分开来。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate should use for accessing the property value."
+msgstr "<literal>access</literal>(可选 — 默认为 <literal>property</literal>):Hibernate 用来访问属性值的策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>name</literal> attribute is missing, it is assumed that the class has no identifier property."
+msgstr "如果 <literal>name</literal> 属性不存在,会认为这个类没有标识属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>unsaved-value</literal> attribute is almost never needed in Hibernate3."
+msgstr "<literal>unsaved-value</literal> 属性在 Hibernate3 中几乎不再需要。"
+
+#. Tag: para
+#, no-c-format
+msgid "There is an alternative <literal>&lt;composite-id&gt;</literal> declaration that allows access to legacy data with composite keys. Its use is strongly discouraged for anything else."
+msgstr "还有一个另外的 <literal>&lt;composite-id&gt;</literal> 定义可以访问旧式的多主键数据。我们非常不鼓励使用这种方式。"
+
+#. Tag: title
+#, no-c-format
+msgid "Generator"
+msgstr "Generator"
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>&lt;generator&gt;</literal> child element names a Java class used to generate unique identifiers for instances of the persistent class. If any parameters are required to configure or initialize the generator instance, they are passed using the <literal>&lt;param&gt;</literal> element."
+msgstr "可选的 <literal>&lt;generator&gt;</literal> 子元素是一个 Java 类的名字,用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数,用 <literal>&lt;param&gt;</literal> 元素来传递。"
+
+#. Tag: para
+#, no-c-format
+msgid "All generators implement the interface <literal>org.hibernate.id.IdentifierGenerator</literal>. This is a very simple interface. Some applications can choose to provide their own specialized implementations, however, Hibernate provides a range of built-in implementations. The shortcut names for the built-in generators are as follows:"
+msgstr "所有的生成器都实现 <literal>org.hibernate.id.IdentifierGenerator</literal> 接口。这是一个非常简单的接口;某些应用程序可以选择提供他们自己特定的实现。当然,Hibernate 提供了很多内置的实现。下面是一些内置生成器的快捷名字:  "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>increment</literal>"
+msgstr "<literal>increment</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "generates identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal> that are unique only when no other process is inserting data into the same table. <emphasis>Do not use in a cluster.</emphasis>"
+msgstr "用于为 <literal>long</literal>, <literal>short</literal> 或者 <literal>int</literal> 类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。<emphasis>在集群下不要使用。</emphasis>"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>identity</literal>"
+msgstr "<literal>identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>."
+msgstr "对 DB2,MySQL,MS SQL Server,Sybase 和 HypersonicSQL 的内置标识字段提供支持。返回的标识符是 <literal>long</literal>,<literal>short</literal> 或者 <literal>int</literal> 类型的。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence</literal>"
+msgstr "<literal>sequence</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>"
+msgstr "在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence), 而在 Interbase 中使用生成器(generator)。返回的标识符是 <literal>long</literal>,<literal>short</literal> 或者 <literal>int</literal> 类型的。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>hilo</literal>"
+msgstr "<literal>hilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a table and column (by default <literal>hibernate_unique_key</literal> and <literal>next_hi</literal> respectively) as a source of hi values. The hi/lo algorithm generates identifiers that are unique only for a particular database."
+msgstr "使用一个高/低位算法高效的生成 <literal>long</literal>,<literal>short</literal> 或者 <literal>int</literal> 类型的标识符。给定一个表和字段(默认分别是 <literal>hibernate_unique_key</literal> 和 <literal>next_hi</literal>)作为高位值的来源。高/低位算法生成的标识符只在一个特定的数据库中是唯一的。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>seqhilo</literal>"
+msgstr "<literal>seqhilo</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a named database sequence."
+msgstr "使用一个高/低位算法来高效的生成 <literal>long</literal>,<literal>short</literal> 或者 <literal>int</literal> 类型的标识符,给定一个数据库序列(sequence)的名字。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>uuid</literal>"
+msgstr "<literal>uuid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a 128-bit UUID algorithm to generate identifiers of type string that are unique within a network (the IP address is used). The UUID is encoded as a string of 32 hexadecimal digits in length."
+msgstr "用一个 128-bit 的 UUID 算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了 IP 地址)。UUID 被编码为一个 32 位 16 进制数字的字符串。 "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>guid</literal>"
+msgstr "<literal>guid</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
+msgstr "在 MS SQL Server 和 MySQL 中使用数据库生成的 GUID 字符串。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>native</literal>"
+msgstr "<literal>native</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "selects <literal>identity</literal>, <literal>sequence</literal> or <literal>hilo</literal> depending upon the capabilities of the underlying database."
+msgstr "根据底层数据库的能力选择 <literal>identity</literal>、<literal>sequence</literal> 或者 <literal>hilo</literal> 中的一个。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>assigned</literal>"
+msgstr "<literal>assigned</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "lets the application assign an identifier to the object before <literal>save()</literal> is called. This is the default strategy if no <literal>&lt;generator&gt;</literal> element is specified."
+msgstr "让应用程序在调用 <literal>save()</literal> 之前为对象分配一个标识符。这是 <literal>&lt;generator&gt;</literal> 元素没有指定时的默认生成策略。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>select</literal>"
+msgstr "<literal>select</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieves a primary key, assigned by a database trigger, by selecting the row by some unique key and retrieving the primary key value."
+msgstr "通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。 "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>foreign</literal>"
+msgstr "<literal>foreign</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "uses the identifier of another associated object. It is usually used in conjunction with a <literal>&lt;one-to-one&gt;</literal> primary key association."
+msgstr "使用另外一个相关联的对象的标识符。它通常和 <literal>&lt;one-to-one&gt;</literal> 联合起来使用。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>sequence-identity</literal>"
+msgstr "<literal>sequence-identity</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "a specialized sequence generation strategy that utilizes a database sequence for the actual value generation, but combines this with JDBC3 getGeneratedKeys to return the generated identifier value as part of the insert statement execution. This strategy is only supported on Oracle 10g drivers targeted for JDK 1.4. Comments on these insert statements are disabled due to a bug in the Oracle drivers."
+msgstr "一种特别的序列生成策略,它使用数据库序列来生成实际值,但将它和 JDBC3 的 getGeneratedKeys 结合在一起,使得在插入语句执行的时候就返回生成的值。目前为止只有面向 JDK 1.4 的 Oracle 10g 驱动支持这一策略。由于 Oracle 驱动程序的一个 bug,这些插入语句的注释被关闭了。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hi/lo algorithm"
+msgstr "高/低位算法(Hi/Lo Algorithm)"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>hilo</literal> and <literal>seqhilo</literal> generators provide two alternate implementations of the hi/lo algorithm. The first implementation requires a \"special\" database table to hold the next available \"hi\" value. Where supported, the second uses an Oracle-style sequence."
+msgstr "<literal>hilo</literal> 和 <literal>seqhilo</literal> 生成器给出了两种 hi/lo 算法的实现, 这是一种很令人满意的标识符生成算法。第一种实现需要一个“特殊”的数据库表来保存下一个可用的“hi”值。 第二种实现使用一个 Oracle 风格的序列(在被支持的情况下)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Unfortunately, you cannot use <literal>hilo</literal> when supplying your own <literal>Connection</literal> to Hibernate. When Hibernate uses an application server datasource to obtain connections enlisted with JTA, you must configure the <literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr "可惜的是,你在为 Hibernate 自行提供 <literal>Connection</literal> 时无法使用 <literal>hilo</literal>。 当 Hibernate 使用 JTA 获取应用服务器的数据源连接时,你必须正确地配置 <literal>hibernate.transaction.manager_lookup_class</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "UUID algorithm"
+msgstr "UUID 算法(UUID Algorithm )"
+
+#. Tag: para
+#, no-c-format
+msgid "The UUID contains: IP address, startup time of the JVM that is accurate to a quarter second, system time and a counter value that is unique within the JVM. It is not possible to obtain a MAC address or memory address from Java code, so this is the best option without using JNI."
+msgstr "UUID 包含:IP 地址、JVM 的启动时间(精确到 1/4 秒)、系统时间和一个计数器值(在 JVM 中唯一)。 在 Java 代码中不可能获得 MAC 地址或者内存地址,所以这已经是我们在不使用 JNI 的前提下的能做的最好实现了。"
+
+#. Tag: title
+#, no-c-format
+msgid "Identity columns and sequences"
+msgstr "标识字段和序列(Identity columns and Sequences)"
+
+#. Tag: para
+#, no-c-format
+msgid "For databases that support identity columns (DB2, MySQL, Sybase, MS SQL), you can use <literal>identity</literal> key generation. For databases that support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you can use <literal>sequence</literal> style key generation. Both of these strategies require two SQL queries to insert a new object. For example:"
+msgstr "对于内部支持标识字段的数据库(DB2、MySQL、Sybase 和 MS SQL),你可以使用 <literal>identity</literal> 关键字生成。对于内部支持序列的数据库(DB2、Oracle、PostgreSQL、Interbase、McKoi 和 SAP DB),你可以使用 <literal>sequence</literal> 风格的关键字生成。这两种方式对于插入一个新的对象都需要两次 SQL 查询。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "For cross-platform development, the <literal>native</literal> strategy will, depending on the capabilities of the underlying database, choose from the <literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</literal> strategies."
+msgstr "对于跨平台开发,<literal>native</literal> 策略会从 <literal>identity</literal>、<literal>sequence</literal> 和 <literal>hilo</literal> 中进行选择,选择哪一个,这取决于底层数据库的支持能力。"
+
+#. Tag: title
+#, no-c-format
+msgid "Assigned identifiers"
+msgstr "程序分配的标识符(Assigned Identifiers)"
+
+#. Tag: para
+#, no-c-format
+msgid "If you want the application to assign identifiers, as opposed to having Hibernate generate them, you can use the <literal>assigned</literal> generator. This special generator uses the identifier value already assigned to the object's identifier property. The generator is used when the primary key is a natural key instead of a surrogate key. This is the default behavior if you do not specify a <literal>&lt;generator&gt;</literal> element."
+msgstr "如果你需要应用程序分配一个标示符(而非 Hibernate 来生成),你可以使用 <literal>assigned</literal> 生成器。这种特殊的生成器会使用已经分配给对象的标识符属性的标识符值。 这个生成器使用一个自然键(natural key,有商业意义的列-译注)作为主键,而不是使用一个代理键( surrogate key,没有商业意义的列-译注)。这是没有指定 <literal>&lt;generator&gt;</literal> 元素时的默认行为。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>assigned</literal> generator makes Hibernate use <literal>unsaved-value=\"undefined\"</literal>. This forces Hibernate to go to the database to determine if an instance is transient or detached, unless there is a version or timestamp property, or you define <literal>Interceptor.isUnsaved()</literal>."
+msgstr "当选择 <literal>assigned</literal> 生成器时,除非有一个 version 或 timestamp 属性,或者你定义了 <literal>Interceptor.isUnsaved()</literal>,否则需要让 Hiberante 使用 <literal>unsaved-value=\"undefined\"</literal>,强制 Hibernatet 查询数据库来确定一个实例是瞬时的(transient) 还是脱管的(detached)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Primary keys assigned by triggers"
+msgstr "触发器实现的主键生成器(Primary keys assigned by triggers)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not generate DDL with triggers. It is for legacy schemas only."
+msgstr "仅仅用于遗留的 schema 中(Hibernate 不能用触发器生成 DDL)。"
+
+#. Tag: para
+#, no-c-format
+msgid "In the above example, there is a unique valued property named <literal>socialSecurityNumber</literal>. It is defined by the class, as a natural key and a surrogate key named <literal>person_id</literal>, whose value is generated by a trigger."
+msgstr "在上面的例子中,类定义了一个命名为 <literal>socialSecurityNumber</literal> 的具有唯一值的属性,它是一个自然键(natural key),命名为 <literal>person_id</literal> 的代理键(surrogate key)的值由触发器生成。"
+
+#. Tag: title
+#, no-c-format
+msgid "Enhanced identifier generators"
+msgstr "增强的标识符生成器"
+
+#. Tag: para
+#, no-c-format
+msgid "Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different aspects of identifier generation. The first aspect is database portability; the second is optimization Optimization means that you do not have to query the database for every request for a new identifier value. These two new generators are intended to take the place of some of the named generators described above, starting in 3.3.x. However, they are included in the current releases and can be referenced by FQN."
+msgstr "从 3.2.3 版本开始,有两个代表不同标识符生成概念的新的生成器。第一个概念是数据库移植性;第二个是优化。优化表示你不需对每个新标识符的请求都查询数据库。从 3.3.x 开始,这两个新的生成器都是用来取代上面所述的生成器的。然而,它们也包括在当前版本里且可以由 FQN 进行引用。"
+
+#. Tag: para
+#, no-c-format
+msgid "The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> which is intended, firstly, as a replacement for the <literal>sequence</literal> generator and, secondly, as a better portability generator than <literal>native</literal>. This is because <literal>native</literal> generally chooses between <literal>identity</literal> and <literal>sequence</literal> which have largely different semantics that can cause subtle issues in applications eyeing portability. <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>, however, achieves portability in a different manner. It chooses between a table or a sequence in the database to store its incrementing values, depending on the capabilities of the dialect being used. The difference between this and <literal>native</literal> is that table-based and sequence-based storage have the same exact semantic. In fact, sequences are exactly what Hibernate tries to emulate with!
  its table-based generators. This generator has a number of configuration parameters:"
+msgstr "这些生成器的第一个是 <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>,首先,它是作为 <literal>sequence</literal> 生成器的替代物,其次,它是比 <literal>native</literal> 具有更好移植性的生成器。这是因为 <literal>native</literal> 通常在 <literal>identity</literal> 和 <literal>sequence</literal> 之间选择,它有差别很大的 semantic,在移植时会导致潜在的问题。然而,<literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> 以不同的方式实现移植性。它根据所使用的方言的能力,在数据库表或序列之间选择以存储其增量。这和 <literal>native</literal> 的区别是基于表或序列的存储具有恰好相同的 semantic。实际上,序列就是 Hibernate 试图用基于表的生成器来模拟的。这个生成器有如下的配置参数:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>): the name of the sequence or table to be used."
+msgstr "<literal>sequence_name</literal>(可选 — 默认为 <literal>hibernate_sequence</literal>):序列或表的名字"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): the initial value to be retrieved from the sequence/table. In sequence creation terms, this is analogous to the clause typically named \"STARTS WITH\"."
+msgstr "<literal>initial_value</literal>(可选,默认为 <literal>1</literal>):从序列/表里获取的初始值。按照序列创建的术语,这等同于子句 \"STARTS WITH\"。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>increment_size</literal> (optional - defaults to <literal>1</literal>): the value by which subsequent calls to the sequence/table should differ. In sequence creation terms, this is analogous to the clause typically named \"INCREMENT BY\"."
+msgstr "<literal>increment_size</literal>(可选 - 缺省为 <literal>1</literal>):对序列/表的调用应该区分的值。按照序列创建的术语,这等同于子句 \"INCREMENT BY\"。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>force_table_use</literal> (optional - defaults to <literal>false</literal>): should we force the use of a table as the backing structure even though the dialect might support sequence?"
+msgstr "<literal>force_table_use</literal>(可选 - 缺省为 <literal>false</literal>):即使方言可能支持序列,是否也应该强制把表用作后台结构。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>value_column</literal> (optional - defaults to <literal>next_val</literal>): only relevant for table structures, it is the name of the column on the table which is used to hold the value."
+msgstr "<literal>value_column</literal>(可选 - 缺省为 <literal>next_val</literal>):只和表结构相关,它是用于保存值的字段的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimizer</literal> (optional - defaults to <literal>none</literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr "<literal>optimizer</literal>(可选 — 默认是<literal>none</literal>):请参考 <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />。"
+
+#. Tag: para
+#, no-c-format
+msgid "The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal>, which is intended, firstly, as a replacement for the <literal>table</literal> generator, even though it actually functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>, and secondly, as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> that utilizes the notion of pluggable optimizers. Essentially this generator defines a table capable of holding a number of different increment values simultaneously by using multiple distinctly keyed rows. This generator has a number of configuration parameters:"
+msgstr "新生成器的第二个是 <literal>org.hibernate.id.enhanced.TableGenerator</literal>,它的目的首先是替代 <literal>table</literal> 生成器,即使它实际上比 <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> 功能要强得多;其次,作为利用可插拔 optimizer 的 <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> 的替代品。基本上这个生成器定义了一个可以利用多个不同的键值记录存储大量不同增量值的表。这个生成器有如下的配置参数:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table_name</literal> (optional - defaults to <literal>hibernate_sequences</literal>): the name of the table to be used."
+msgstr "<literal>table_name</literal>(可选 — 默认是 <literal>hibernate_sequences</literal>):所用的表的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>value_column_name</literal> (optional - defaults to <literal>next_val</literal>): the name of the column on the table that is used to hold the value."
+msgstr "<literal>value_column_name</literal>(可选 — 默认为 <literal>next_val</literal>):用于存储这些值的表的字段的名字。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_column_name</literal> (optional - defaults to <literal>sequence_name</literal>): the name of the column on the table that is used to hold the \"segment key\". This is the value which identifies which increment value to use."
+msgstr "<literal>segment_column_name</literal>(可选,默认为 <literal>sequence_name</literal>):用于保存 \"segment key\" 的字段的名称。这是标识使用哪个增量值的值。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_value</literal> (optional - defaults to <literal>default</literal>): The \"segment key\" value for the segment from which we want to pull increment values for this generator."
+msgstr "<literal>segment_value</literal>(可选,默认为 <literal>default</literal>):我们为这个生成器获取增量值的 segment 的 \"segment key\"。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>segment_value_length</literal> (optional - defaults to <literal>255</literal>): Used for schema generation; the column size to create this segment key column."
+msgstr "<literal>segment_value_length</literal>(可选 — 默认为 <literal>255</literal>):用于 schema 生成;创建 Segment Key 字段的字段大小。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>initial_value</literal> (optional - defaults to <literal>1</literal>): The initial value to be retrieved from the table."
+msgstr "<literal>initial_value</literal>(可选 — 默认是 <literal>1</literal>):从表里获取的初始值。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>increment_size</literal> (optional - defaults to <literal>1</literal>): The value by which subsequent calls to the table should differ."
+msgstr "<literal>increment_size</literal>(可选 — 默认是 <literal>1</literal>):对表随后的调用应该区分的值。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimizer</literal> (optional - defaults to <literal></literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />"
+msgstr "<literal>optimizer</literal>(可选 — 默认是 <literal> </literal>):请参考 <xref linkend=\"mapping-declaration-id-enhanced-optimizers\" />。"
+
+#. Tag: title
+#, no-c-format
+msgid "Identifier generator optimization"
+msgstr "标识符生成器的优化"
+
+#. Tag: para
+#, no-c-format
+msgid "For identifier generators that store values in the database, it is inefficient for them to hit the database on each and every call to generate a new identifier value. Instead, you can group a bunch of them in memory and only hit the database when you have exhausted your in-memory value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\" /> support this operation."
+msgstr "对于在数据库里存储值的标识符生成器,生成新标识符时的每次调用都访问数据库是低效的。因此,你可以把它们在内存里分组并只有在快用光内存时才访问数据库。这是可插拔 optimizer 的任务。目前只有两个增强型的生成器支持这个操作(<xref linkend=\"mapping-declaration-id-enhanced\"/>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>none</literal> (generally this is the default if no optimizer was specified): this will not perform any optimizations and hit the database for each and every request."
+msgstr "<literal>none</literal>(如果没有指定 optimizer,通常这是缺省配置):这不会执行任何优化,在每次请求时都访问数据库。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The values from the database for this optimizer are expected to be sequential. The values retrieved from the database structure for this optimizer indicates the \"group number\". The <literal>increment_size</literal> is multiplied by that value in memory to define a group \"hi value\"."
+msgstr "<literal>hilo</literal>:对从数据库获取的值应用 hi/lo 算法。用于这个 optimizer 的从数据库获取的值应该是有序的。它们表明“组编号”。<literal>increment_size</literal> 将乘以内存里的值来定义组的“hi 值”。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>pooled</literal>: as with the case of <literal>hilo</literal>, this optimizer attempts to minimize the number of hits to the database. Here, however, we simply store the starting value for the \"next group\" into the database structure rather than a sequential value in combination with an in-memory grouping algorithm. Here, <literal>increment_size</literal> refers to the values coming from the database."
+msgstr "<literal>pooled</literal>:和 <literal>hilo</literal> 一样,这个 optimizer 试图最小化对数据库的访问。然而,我们只是简单地把“下一组”的起始值而不是把序列值和分组算法的组合存入到数据库结构里。在这里,<literal>increment_size</literal> 表示数据库里的值。"
+
+#. Tag: title
+#, no-c-format
+msgid "composite-id"
+msgstr "composite-id"
+
+#. Tag: para
+#, no-c-format
+msgid "A table with a composite key can be mapped with multiple properties of the class as identifier properties. The <literal>&lt;composite-id&gt;</literal> element accepts <literal>&lt;key-property&gt;</literal> property mappings and <literal>&lt;key-many-to-one&gt;</literal> mappings as child elements."
+msgstr "如果表使用联合主键,你可以映射类的多个属性为标识符属性。<literal>&lt;composite-id&gt;</literal> 元素接受 <literal>&lt;key-property&gt;</literal> 属性映射和 <literal>&lt;key-many-to-one&gt;</literal> 属性映射作为子元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The persistent class <emphasis>must</emphasis> override <literal>equals()</literal> and <literal>hashCode()</literal> to implement composite identifier equality. It must also implement <literal>Serializable</literal>."
+msgstr "你的持久化类<emphasis>必须</emphasis>覆盖 <literal>equals()</literal> 和 <literal>hashCode()</literal> 方法,来实现组合的标识符的相等判断。实现 <literal>Serializable</literal> 接口也是必须的。"
+
+#. Tag: para
+#, no-c-format
+msgid "Unfortunately, this approach means that a persistent object is its own identifier. There is no convenient \"handle\" other than the object itself. You must instantiate an instance of the persistent class itself and populate its identifier properties before you can <literal>load()</literal> the persistent state associated with a composite key. We call this approach an <emphasis>embedded</emphasis> composite identifier, and discourage it for serious applications."
+msgstr "不幸的是,这种组合关键字的方法意味着一个持久化类是它自己的标识。除了对象自己之外,没有什么方便的“把手”可用。你必须初始化持久化类的实例,填充它的标识符属性,再 <literal>load()</literal> 组合关键字关联的持久状态。我们把这种方法称为 <emphasis>embedded(嵌入式)</emphasis>的组合标识符,在重要的应用中不鼓励使用这种用法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A second approach is what we call a <emphasis>mapped</emphasis> composite identifier, where the identifier properties named inside the <literal>&lt;composite-id&gt;</literal> element are duplicated on both the persistent class and a separate identifier class."
+msgstr "第二种方法我们称为 <emphasis>mapped(映射式)</emphasis>组合标识符(mapped composite identifier),<literal>&lt;composite-id&gt;</literal> 元素中列出的标识属性不但在持久化类出现,还形成一个独立的标识符类。"
+
+#. Tag: para
+#, no-c-format
+msgid "In this example, both the composite identifier class, <literal>MedicareId</literal>, and the entity class itself have properties named <literal>medicareNumber</literal> and <literal>dependent</literal>. The identifier class must override <literal>equals()</literal> and <literal>hashCode()</literal> and implement <literal>Serializable</literal>. The main disadvantage of this approach is code duplication."
+msgstr "在这个例子中,组合标识符类 <literal>MedicareId</literal> 和实体类都含有 <literal>medicareNumber</literal> 和 <literal>dependent</literal> 属性。标识符类必须重载 <literal>equals()</literal> 和 <literal>hashCode()</literal> 并且实现 <literal>Serializable</literal> 接口。这种方法的缺点是出现了明显的代码重复。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following attributes are used to specify a mapped composite identifier:"
+msgstr "下面列出的属性是用来指定一个映射式组合标识符的:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mapped</literal> (optional - defaults to <literal>false</literal>): indicates that a mapped composite identifier is used, and that the contained property mappings refer to both the entity class and the composite identifier class."
+msgstr "<literal>mapped</literal>(可选,默认为 <literal>false</literal>):指明使用一个映射式组合标识符,其包含的属性映射同时在实体类和组合标识符类中出现。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - but required for a mapped composite identifier): the class used as a composite identifier."
+msgstr "<literal>class</literal>(可选,但对映射式组合标识符必须指定):作为组合标识符类使用的类名。"
+
+#. Tag: para
+#, no-c-format
+msgid "We will describe a third, even more convenient approach, where the composite identifier is implemented as a component class in <xref linkend=\"components-compositeid\" />. The attributes described below apply only to this alternative approach:"
+msgstr "在 <xref linkend=\"components-compositeid\"/> 一节中,我们会描述第三种方式,那就是把组合标识符实现为一个组件(component)类,这是更方便的方法。下面的属性仅对第三种方法有效: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal> (optional - required for this approach): a property of component type that holds the composite identifier. Please see chapter 9 for more information."
+msgstr "<literal>name</literal>(可选,但对这种方法而言必须):包含此组件标识符的组件类型的名字(参阅第 9 章)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses for accessing the property value."
+msgstr "<literal>access</literal>(可选 — 默认为 <literal>property</literal>):Hibernate 用来访问属性值的策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the component class used as a composite identifier. Please see the next section for more information."
+msgstr "<literal>class</literal>(可选 — 默认会用反射来自动判定属性类型 ):用来作为组合标识符的组件类的类名(参阅下一节)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The third approach, an <emphasis>identifier component</emphasis>, is recommended for almost all applications."
+msgstr "第三种方式,被称为 <emphasis>identifier component(标识符组件)</emphasis>是我们对几乎所有应用都推荐使用的方式。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Discriminator"
+msgstr "鉴别器(discriminator) "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;discriminator&gt;</literal> element is required for polymorphic persistence using the table-per-class-hierarchy mapping strategy. It declares a discriminator column of the table. The discriminator column contains marker values that tell the persistence layer what subclass to instantiate for a particular row. A restricted set of types can be used: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
+msgstr "在\"一棵对象继承树对应一个表\"的策略中,<literal>&lt;discriminator&gt;</literal> 元素是必需的,它定义了表的鉴别器字段。鉴别器字段包含标志值,用于告知持久化层应该为某个特定的行创建哪一个子类的实例。如下这些受到限制的类型可以使用:<literal>string</literal>、<literal>character</literal>、<literal>integer</literal>、<literal>byte</literal>、<literal>short</literal>、<literal>boolean</literal>、<literal>yes_no</literal>、<literal>true_false</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to <literal>class</literal>): the name of the discriminator column."
+msgstr "<literal>column</literal>(可选 — 默认为 <literal>class</literal>)discriminator 器字段的名字。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional - defaults to <literal>string</literal>): a name that indicates the Hibernate type"
+msgstr "<literal>type</literal>(可选 — 默认为 <literal>string</literal>)一个 Hibernate 字段类型的名字 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>force</literal> (optional - defaults to <literal>false</literal>): \"forces\" Hibernate to specify the allowed discriminator values, even when retrieving all instances of the root class."
+msgstr "<literal>force(强制)</literal>(可选 — 默认为 <literal>false</literal>)\"强制\" Hibernate 指定允许的鉴别器值,即使当取得的所有实例都是根类的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): set this to <literal>false</literal> if your discriminator column is also part of a mapped composite identifier. It tells Hibernate not to include the column in SQL <literal>INSERTs</literal>."
+msgstr "<literal>insert</literal>(可选 - 默认为<literal>true</literal>)如果你的鉴别器字段也是映射为复合标识(composite identifier)的一部分,则需将这个值设为 <literal>false</literal>。(告诉 Hibernate 在做 SQL <literal>INSERT</literal> 时不包含该列) "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an arbitrary SQL expression that is executed when a type has to be evaluated. It allows content-based discrimination."
+msgstr "<literal>formula</literal>(可选)一个 SQL 表达式,在类型判断(判断是父类还是具体子类 — 译注)时执行。可用于基于内容的鉴别器。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Actual values of the discriminator column are specified by the <literal>discriminator-value</literal> attribute of the <literal>&lt;class&gt;</literal> and <literal>&lt;subclass&gt;</literal> elements."
+msgstr "鉴别器字段的实际值是根据 <literal>&lt;class&gt;</literal> 和 <literal>&lt;subclass&gt;</literal> 元素中的 <literal>discriminator-value</literal> 属性得来的。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>force</literal> attribute is only useful if the table contains rows with \"extra\" discriminator values that are not mapped to a persistent class. This will not usually be the case."
+msgstr "<literal>force</literal> 属性仅仅在这种情况下有用的:表中包含没有被映射到持久化类的附加辨别器值。这种情况不会经常遇到。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>formula</literal> attribute allows you to declare an arbitrary SQL expression that will be used to evaluate the type of a row. For example:"
+msgstr "使用 <literal>formula</literal> 属性你可以定义一个 SQL 表达式,用来判断一行数据的类型。"
+
+#. Tag: title
+#, no-c-format
+msgid "Version (optional)"
+msgstr "版本(version)(可选) "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;version&gt;</literal> element is optional and indicates that the table contains versioned data. This is particularly useful if you plan to use <emphasis>long transactions</emphasis>. See below for more information:"
+msgstr "<literal>&lt;version&gt;</literal> 元素是可选的,表明表中包含附带版本信息的数据。这在你准备使用<emphasis> 长事务(long transactions)</emphasis>的时候特别有用。下面是更多信息:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the column holding the version number."
+msgstr "<literal>column</literal>(可选 — 默认为属性名):指定持有版本号的字段名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a property of the persistent class."
+msgstr "<literal>name</literal>:持久化类的属性名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (optional - defaults to <literal>integer</literal>): the type of the version number."
+msgstr "<literal>type</literal>(可选 — 默认是 <literal>integer</literal>):版本号的类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses to access the property value."
+msgstr "<literal>access</literal>(可选 — 默认为 <literal>property</literal>):Hibernate 用来访问属性值的策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</literal>): a version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. <literal>Undefined</literal> specifies that the identifier property value should be used."
+msgstr "<literal>unsaved-value</literal>(可选 — 默认是 <literal>undefined</literal>):用于标明某个实例时刚刚被实例化的(尚未保存)版本属性值,依靠这个值就可以把这种情况 和已经在先前的 session 中保存或装载的脱管(detached)实例区分开来。(<literal>undefined</literal> 指明应被使用的标识属性值。) "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this version property value is generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr "<literal>generated</literal>(可选 — 默认是 <literal>never</literal>):表明此版本属性值是否实际上是由数据库生成的。请参阅  <link linkend=\"mapping-generated\">generated properties</link> 部分的讨论。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): specifies whether the version column should be included in SQL insert statements. It can be set to <literal>false</literal> if the database column is defined with a default value of <literal>0</literal>."
+msgstr "<literal>insert</literal>(可选 — 默认是 <literal>true</literal>):表明此版本列应该包含在 SQL 插入语句中。只有当数据库字段有默认值 <literal>0</literal> 的时候,才可以设置为 <literal>false</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Version numbers can be of Hibernate type <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> or <literal>calendar</literal>."
+msgstr "版本号必须是以下类型:<literal>long</literal>、<literal>integer</literal>、<literal>short</literal>、<literal>timestamp</literal> 或者 <literal>calendar</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "A version or timestamp property should never be null for a detached instance. Hibernate will detect any instance with a null version or timestamp as transient, irrespective of what other <literal>unsaved-value</literal> strategies are specified. <emphasis>Declaring a nullable version or timestamp property is an easy way to avoid problems with transitive reattachment in Hibernate. It is especially useful for people using assigned identifiers or composite keys</emphasis>."
+msgstr "一个脱管(detached)实例的 version 或 timestamp 属性不能为空(null),因为 Hibernate 不管  <literal>unsaved-value</literal> 被指定为何种策略,它将任何属性为空的 version 或 timestamp 实例看作为瞬时(transient)实例。 <emphasis>避免 Hibernate 中的传递重附(transitive reattachment)问题的一个简单方法是 定义一个不能为空的 version 或 timestamp 属性,特别是在人们使用程序分配的标识符(assigned identifiers) 或复合主键时非常有用</emphasis>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Timestamp (optional)"
+msgstr "timestamp(可选) "
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>&lt;timestamp&gt;</literal> element indicates that the table contains timestamped data. This provides an alternative to versioning. Timestamps are a less safe implementation of optimistic locking. However, sometimes the application might use the timestamps in other ways."
+msgstr "可选的 <literal>&lt;timestamp&gt;</literal> 元素指明了表中包含时间戳数据。这用来作为版本的替代。时间戳本质上是一种对乐观锁定的一种不是特别安全的实现。当然,有时候应用程序可能在其他方面使用时间戳。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of a column holding the timestamp."
+msgstr "<literal>column</literal>(可选 — 默认为属性名):存有时间戳的字段名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of a JavaBeans style property of Java type <literal>Date</literal> or <literal>Timestamp</literal> of the persistent class."
+msgstr "<literal>name</literal>:在持久化类中的 JavaBeans 风格的属性名,其 Java 类型是 <literal>Date</literal> 或者 <literal>Timestamp</literal> 的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>null</literal>): a version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. <literal>Undefined</literal> specifies that the identifier property value should be used."
+msgstr "<literal>unsaved-value</literal>(可选 — 默认是 <literal>null</literal>):用于标明某个实例时刚刚被实例化的(尚未保存)版本属性值,依靠这个值就可以把这种情况和已经在先前的 session 中保存或装载的脱管(detached)实例区分开来。(<literal>undefined</literal> 指明使用标识属性值进行这种判断。) "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>source</literal> (optional - defaults to <literal>vm</literal>): Where should Hibernate retrieve the timestamp value from? From the database, or from the current JVM? Database-based timestamps incur an overhead because Hibernate must hit the database in order to determine the \"next value\". It is safer to use in clustered environments. Not all <literal>Dialects</literal> are known to support the retrieval of the database's current timestamp. Others may also be unsafe for usage in locking due to lack of precision (Oracle 8, for example)."
+msgstr "<literal>source</literal>(可选 — 默认是 <literal>vm</literal>):Hibernate 如何才能获取到时间戳的值呢?从数据库,还是当前 JVM?从数据库获取会带来一些负担,因为 Hibernate 必须访问数据库来获得“下一个值”,但是在集群环境中会更安全些。还要注意,并不是所有的 <literal>Dialect(方言)</literal>都支持获得数据库的当前时间戳的,而支持的数据库中又有一部分因为精度不足,用于锁定是不安全的(例如 Oracle 8)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this timestamp property value is actually generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr "<literal>generated</literal>(可选 - 默认是 <literal>never</literal>):指出时间戳值是否实际上是由数据库生成的。请参阅 <link linkend=\"mapping-generated\">generated properties</link> 的讨论。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>&lt;Timestamp&gt;</literal> is equivalent to <literal>&lt;version type=\"timestamp\"&gt;</literal>. And <literal>&lt;timestamp source=\"db\"&gt;</literal> is equivalent to <literal>&lt;version type=\"dbtimestamp\"&gt;</literal>"
+msgstr "注意,<literal>&lt;timestamp&gt;</literal> 和 <literal>&lt;version type=\"timestamp\"&gt;</literal> 是等价的。并且 <literal>&lt;timestamp source=\"db\"&gt;</literal> 和 <literal>&lt;version type=\"dbtimestamp\"&gt;</literal> 是等价的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Property"
+msgstr "Property"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;property&gt;</literal> element declares a persistent JavaBean style property of the class."
+msgstr "<literal>&lt;property&gt;</literal> 元素为类定义了一个持久化的、JavaBean 风格的属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property, with an initial lowercase letter."
+msgstr "<literal>name</literal>:属性的名字,以小写字母开头。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional - defaults to the property name): the name of the mapped database table column. This can also be specified by nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr "<literal>column</literal>(可选 — 默认为属性名字):对应的数据库字段名。 也可以通过嵌套的 <literal>&lt;column&gt;</literal> 元素指定。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>): specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" property whose value is initialized from some other property that maps to the same column(s), or by a trigger or other application."
+msgstr "<literal>update, insert</literal>(可选 — 默认为 <literal>true</literal>): 表明用于 <literal>UPDATE</literal> 和/或 <literal>INSERT</literal> 的 SQL 语句中是否包含这个被映射了的字段。这二者如果都设置为 <literal>false</literal> 则表明这是一个“外源性(derived)”的属性,它的值来源于映射到同一个(或多个) 字段的某些其他属性,或者通过一个 trigger(触发器)或其他程序生成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> property. Computed properties do not have a column mapping of their own."
+msgstr "<literal>formula</literal>(可选):一个 SQL 表达式,定义了这个<emphasis>计算 (computed)</emphasis> 属性的值。计算属性没有和它对应的数据库字段。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): specifies that this property should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr "<literal>lazy</literal>(可选 — 默认为 <literal>false</literal>):指定 指定实例变量第一次被访问时,这个属性是否延迟抓取(fetched lazily)( 需要运行时字节码增强)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the columns. Also, allow this to be the target of a <literal>property-ref</literal>."
+msgstr "<literal>unique</literal>(可选):使用 DDL 为该字段添加唯一的约束。同样,允许它作为 <literal>property-ref</literal> 引用的目标。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): enables the DDL generation of a nullability constraint for the columns."
+msgstr "<literal>not-null</literal>(可选):使用 DDL 为该字段添加可否为空(nullability)的约束。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, it determines if a version increment should occur when this property is dirty."
+msgstr "<literal>optimistic-lock</literal>(可选 — 默认为 <literal>true</literal>):指定这个属性在做更新时是否需要获得乐观锁定(optimistic lock)。换句话说,它决定这个属性发生脏数据时版本(version)的值是否增长。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): specifies that this property value is actually generated by the database. See the discussion of <link linkend=\"mapping-generated\">generated properties</link> for more information."
+msgstr "<literal>generated</literal>(可选 — 默认为 <literal>never</literal>):表明此属性值是否实际上是由数据库生成的。请参阅 <link linkend=\"mapping-generated\">generated properties</link> 的讨论。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>typename</emphasis> could be:"
+msgstr "<emphasis>typename</emphasis> 可以是如下几种:"
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a Hibernate basic type: <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal> etc."
+msgstr "Hibernate 基本类型名(比如:<literal>integer, string, character,date, timestamp, float, binary, serializable, object, blob</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a Java class with a default basic type: <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> etc."
+msgstr "一个 Java 类的名字,这个类属于一种默认基础类型(比如:<literal>int, float,char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The name of a serializable Java class."
+msgstr "一个可以序列化的 Java 类的名字。"
+
+#. Tag: para
+#, no-c-format
+msgid "The class name of a custom type: <literal>com.illflow.type.MyCustomType</literal> etc."
+msgstr "一个自定义类型的类的名字。(比如:<literal>com.illflow.type.MyCustomType</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not specify a type, Hibernate will use reflection upon the named property and guess the correct Hibernate type. Hibernate will attempt to interpret the name of the return class of the property getter using, in order, rules 2, 3, and 4. In certain cases you will need the <literal>type</literal> attribute. For example, to distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a custom type."
+msgstr "如果你没有指定类型,Hibernarte 会使用反射来得到这个名字的属性,以此来猜测正确的 Hibernate 类型。Hibernate 会按照规则 2,3,4 的顺序对属性读取器(getter方法)的返回类进行解释。然而,这还不够。 在某些情况下你仍然需要 <literal>type</literal> 属性。(比如,为了区别<literal>Hibernate.DATE</literal> 和<literal>Hibernate.TIMESTAMP</literal>,或者为了指定一个自定义类型。) "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>access</literal> attribute allows you to control how Hibernate accesses the property at runtime. By default, Hibernate will call the property get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate will bypass the get/set pair and access the field directly using reflection. You can specify your own strategy for property access by naming a class that implements the interface <literal>org.hibernate.property.PropertyAccessor</literal>."
+msgstr "<literal>access</literal> 属性用来让你控制 Hibernate 如何在运行时访问属性。在默认情况下,Hibernate 会使用属性的 get/set 方法对(pair)。如果你指明 <literal>access=\"field\"</literal>,Hibernate 会忽略 get/set 方法对,直接使用反射来访问成员变量。你也可以指定你自己的策略,这就需要你自己实现 <literal>org.hibernate.property.PropertyAccessor</literal> 接口,再在 access 中设置你自定义策略类的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A powerful feature is derived properties. These properties are by definition read-only. The property value is computed at load time. You declare the computation as an SQL expression. This then translates to a <literal>SELECT</literal> clause subquery in the SQL query that loads an instance:"
+msgstr "衍生属性(derive propertie)是一个特别强大的特征。这些属性应该定义为只读,属性值在装载时计算生成。 你用一个 SQL 表达式生成计算的结果,它会在这个实例转载时翻译成一个 SQL 查询的 <literal>SELECT</literal> 子查询语句。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can reference the entity table by not declaring an alias on a particular column. This would be <literal>customerId</literal> in the given example. You can also use the nested <literal>&lt;formula&gt;</literal> mapping element if you do not want to use the attribute."
+msgstr "注意,你可以使用实体自己的表,而不用为这个特别的列定义别名(上面例子中的 <literal>customerId</literal>)。同时注意,如果你不喜欢使用属性, 你可以使用嵌套的 <literal>&lt;formula&gt;</literal> 映射元素。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-one"
+msgstr "多对一(many-to-one) "
+
+#. Tag: para
+#, no-c-format
+msgid "An ordinary association to another persistent class is declared using a <literal>many-to-one</literal> element. The relational model is a many-to-one association; a foreign key in one table is referencing the primary key column(s) of the target table."
+msgstr "通过 <literal>many-to-one</literal> 元素,可以定义一种常见的与另一个持久化类的关联。这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的一个外键引用目标表的主键字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the name of the property."
+msgstr "<literal>name</literal>:属性名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the foreign key column. This can also be specified by nested <literal>&lt;column&gt;</literal> element(s)."
+msgstr "<literal>column</literal>(可选):外键字段的名称。也可以通过嵌套的  <literal>&lt;column&gt;</literal> 指定。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the name of the associated class."
+msgstr "<literal>class</literal>(可选 — 默认是通过反射得到的属性类型):被关联的类的名字。  "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional): specifies which operations should be cascaded from the parent object to the associated object."
+msgstr "<literal>cascade(级联)</literal>(可选)表明操作是否从父对象级联到被关联的对象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>select</literal>): chooses between outer-join fetching or sequential select fetching."
+msgstr "<literal>fetch</literal>(可选 — 默认为 <literal>select</literal>):在外连接抓取(outer-join fetching)和序列选择抓取(sequential select fetching)两者中选择其一。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>): specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" association whose value is initialized from another property that maps to the same column(s), or by a trigger or other application."
+msgstr "<literal>update, insert</literal>(可选 — 默认为 <literal>true</literal>)指定对应的字段是否包含在用于 <literal>UPDATE</literal> 和/或 <literal>INSERT</literal> 的 SQL 语句中。如果二者都是<literal>false</literal>,则这是一个纯粹的 “外源性(derived)”关联,它的值是通过映射到同一个(或多个)字段的某些其他属性得到 或者通过 trigger(触发器)、或其他程序生成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
+msgstr "<literal>property-ref</literal>:(可选)被关联到此外键的类中的对应属性的名字。如果没有指定,被关联类的主键将被使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the foreign-key column. By allowing this to be the target of a <literal>property-ref</literal>, you can make the association multiplicity one-to-one."
+msgstr "<literal>unique</literal>(可选):使用 DDL 为外键字段生成一个唯一约束。此外, 这也可以用作 <literal>property-ref</literal> 的目标属性。这使关联同时具有一对一的效果。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): enables the DDL generation of a nullability constraint for the foreign key columns."
+msgstr "<literal>not-null</literal>(可选):使用 DDL 为外键字段生成一个非空约束。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): by default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed. This requires build-time bytecode instrumentation. <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched."
+msgstr "<literal>lazy</literal>(可选 — 默认为 <literal>proxy</literal>):默认情况下,单点关联是经过代理的。<literal>lazy=\"no-proxy\"</literal> 指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。<literal>lazy=\"false\"</literal> 指定此关联总是被预先抓取。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how foreign keys that reference missing rows will be handled. <literal>ignore</literal> will treat a missing row as a null association."
+msgstr "<literal>not-found</literal>(可选 - 默认为<literal>exception</literal>):指定如何处理引用缺失行的外键:<literal>ignore</literal> 会把缺失的行作为一个空关联处理。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional): the entity name of the associated class."
+msgstr "<literal>entity-name</literal>(可选):被关联的类的实体名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> foreign key."
+msgstr "<literal>formula</literal>(可选):SQL 表达式,用于定义 <emphasis>computed(计算出的)</emphasis>外键值。"
+
+#. Tag: para
+#, no-c-format
+msgid "Setting a value of the <literal>cascade</literal> attribute to any meaningful value other than <literal>none</literal> will propagate certain operations to the associated object. The meaningful values are divided into three categories. First, basic operations, which include: <literal>persist, merge, delete, save-update, evict, replicate, lock and refresh</literal>; second, special values: <literal>delete-orphan</literal>; and third,<literal>all</literal> comma-separated combinations of operation names: <literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\" /> for a full explanation. Note that single valued, many-to-one and one-to-one, associations do not support orphan delete."
+msgstr "<literal>cascade</literal> 属性设置为除了<literal>none</literal> 以外任何有意义的值,它将把特定的操作传递到关联对象中。这个值就代表着 Hibernate 基本操作的名称,<literal>persist, merge, delete, save-update, evict, replicate, lock, refresh</literal>,以及特别的值 <literal>delete-orphan</literal> 和 <literal>all</literal>,并且可以用逗号分隔符来组合这些操作,例如,<literal>cascade=\"persist,merge,evict\"</literal> 或  <literal>cascade=\"all,delete-orphan\"</literal>。更全面的解释请参考 <xref linkend=\"objectstate-transitive\"/>。注意,单值关联(many-to-one 和 one-to-one 关联)不支持删除孤儿(orphan delete,删除不再被引用的值)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a typical <literal>many-to-one</literal> declaration:"
+msgstr "一个典型的简单 <literal>many-to-one</literal> 定义例子: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>property-ref</literal> attribute should only be used for mapping legacy data where a foreign key refers to a unique key of the associated table other than the primary key. This is a complicated and confusing relational model. For example, if the <literal>Product</literal> class had a unique serial number that is not the primary key. The <literal>unique</literal> attribute controls Hibernate's DDL generation with the SchemaExport tool."
+msgstr "<literal>property-ref</literal> 属性只应该用来对付遗留下来的数据库系统,可能有外键指向对方关联表的是个非主键字段(但是应该是一个惟一关键字)的情况下。这是一种十分丑陋的关系模型。比如说,假设 <literal>Product</literal> 类有一个惟一的序列号,它并不是主键。(<literal>unique</literal> 属性控制 Hibernate 通过 SchemaExport 工具进行的 DDL 生成。) "
+
+#. Tag: para
+#, no-c-format
+msgid "Then the mapping for <literal>OrderItem</literal> might use:"
+msgstr "那么关于 <literal>OrderItem</literal> 的映射可能是:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not encouraged, however."
+msgstr "当然,我们决不鼓励这种用法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the referenced unique key comprises multiple properties of the associated entity, you should map the referenced properties inside a named <literal>&lt;properties&gt;</literal> element."
+msgstr "如果被引用的唯一主键由关联实体的多个属性组成,你应该在名称为 <literal>&lt;properties&gt;</literal> 的元素 里面映射所有关联的属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "If the referenced unique key is the property of a component, you can specify a property path:"
+msgstr "假若被引用的唯一主键是组件的属性,你可以指定属性路径: "
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-one"
+msgstr "一对一 "
+
+#. Tag: para
+#, no-c-format
+msgid "A one-to-one association to another persistent class is declared using a <literal>one-to-one</literal> element."
+msgstr "持久化对象之间一对一的关联关系是通过 <literal>one-to-one</literal> 元素定义的。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>constrained</literal> (optional): specifies that a foreign key constraint on the primary key of the mapped table and references the table of the associated class. This option affects the order in which <literal>save()</literal> and <literal>delete()</literal> are cascaded, and determines whether the association can be proxied. It is also used by the schema export tool."
+msgstr "<literal>constrained(约束)</literal>(可选)表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间,通过一个外键引用对主键进行约束。这个选项影响 <literal>save()</literal> 和 <literal>delete()</literal> 在级联执行时的先后顺序以及决定该关联能否被委托(也在 schema export tool 中被使用)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to the primary key of this class. If not specified, the primary key of the associated class is used."
+msgstr "<literal>property-ref</literal>:(可选)指定关联类的属性名,这个属性将会和本类的主键相对应。如果没有指定,会使用对方关联类的主键。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): almost all one-to-one associations map to the primary key of the owning entity. If this is not the case, you can specify another column, columns or expression to join on using an SQL formula. See <literal>org.hibernate.test.onetooneformula</literal> for an example."
+msgstr "<literal>formula </literal>(可选):绝大多数一对一的关联都指向其实体的主键。在一些少见的情况中,你可能会指向其他的一个或多个字段,或者是一个表达式,这些情况下,你可以用一个 SQL 公式来表示。(可以在 org.hibernate.test.onetooneformula 找到例子) "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): by default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation. <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched. <emphasis>Note that if <literal>constrained=\"false\"</literal>, proxying is impossible and Hibernate will eagerly fetch the association</emphasis>."
+msgstr "<literal>lazy</literal>(可选 — 默认为 <literal>proxy</literal>):默认情况下,单点关联是经过代理的。<literal>lazy=\"no-proxy\"</literal>指定此属性应该在实例变量第一次被访问时应该延迟抓取(fetche lazily)(需要运行时字节码的增强)。 <literal>lazy=\"false\"</literal>指定此关联总是被预先抓取。<emphasis>注意,如果<literal>constrained=\"false\"</literal>, 不可能使用代理,Hibernate会采取预先抓取</emphasis>。"
+
+#. Tag: para
+#, no-c-format
+msgid "There are two varieties of one-to-one associations:"
+msgstr "有两种不同的一对一关联: "
+
+#. Tag: para
+#, no-c-format
+msgid "primary key associations"
+msgstr "主键关联"
+
+#. Tag: para
+#, no-c-format
+msgid "unique foreign key associations"
+msgstr "惟一外键关联"
+
+#. Tag: para
+#, no-c-format
+msgid "Primary key associations do not need an extra table column. If two rows are related by the association, then the two table rows share the same primary key value. To relate two objects by a primary key association, ensure that they are assigned the same identifier value."
+msgstr "主键关联不需要额外的表字段;如果两行是通过这种一对一关系相关联的,那么这两行就共享同样的主关键字值。所以如果你希望两个对象通过主键一对一关联,你必须确认它们被赋予同样的标识值。"
+
+#. Tag: para
+#, no-c-format
+msgid "For a primary key association, add the following mappings to <literal>Employee</literal> and <literal>Person</literal> respectively:"
+msgstr "比如说,对下面的 <literal>Employee</literal> 和 <literal>Person</literal> 进行主键一对一关联:"
+
+#. Tag: para
+#, no-c-format
+msgid "Ensure that the primary keys of the related rows in the PERSON and EMPLOYEE tables are equal. You use a special Hibernate identifier generation strategy called <literal>foreign</literal>:"
+msgstr "现在我们必须确保 PERSON 和 EMPLOYEE 中相关的字段是相等的。我们使用一个被成为 <literal>foreign</literal> 的特殊的 hibernate 标识符生成策略: "
+
+#. Tag: para
+#, no-c-format
+msgid "A newly saved instance of <literal>Person</literal> is assigned the same primary key value as the <literal>Employee</literal> instance referred with the <literal>employee</literal> property of that <literal>Person</literal>."
+msgstr "一个刚刚保存的 <literal>Person</literal> 实例被赋予和该 <literal>Person</literal> 的 <literal>employee</literal> 属性所指向的 <literal>Employee</literal> 实例同样的关键字值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, a foreign key with a unique constraint, from <literal>Employee</literal> to <literal>Person</literal>, can be expressed as:"
+msgstr "另一种方式是一个外键和一个惟一关键字对应,上面的 <literal>Employee</literal> 和  <literal>Person</literal> 的例子,如果使用这种关联方式,可以表达成: "
+
+#. Tag: para
+#, no-c-format
+msgid "This association can be made bidirectional by adding the following to the <literal>Person</literal> mapping:"
+msgstr "如果在 <literal>Person</literal> 的映射加入下面几句,这种关联就是双向的: "
+
+#. Tag: title
+#, no-c-format
+msgid "Natural-id"
+msgstr "自然 ID(natural-id) "
+
+#. Tag: para
+#, no-c-format
+msgid "Although we recommend the use of surrogate keys as primary keys, you should try to identify natural keys for all entities. A natural key is a property or combination of properties that is unique and non-null. It is also immutable. Map the properties of the natural key inside the <literal>&lt;natural-id&gt;</literal> element. Hibernate will generate the necessary unique key and nullability constraints and, as a result, your mapping will be more self-documenting."
+msgstr "我们建议使用代用键(键值不具备实际意义)作为主键,我们仍然应该尝试为所有的实体采用自然的键值作为(附加——译者注)标示。自然键(natural key)是单个或组合属性,他们必须唯一且非空。如果它还是不可变的那就更理想了。在 <literal>&lt;natural-id&gt;</literal> 元素中列出自然键的属性。Hibernate 会帮你生成必须的唯一键值和非空约束,你的映射会更加的明显易懂(原文是 self-documenting,自我注解)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the natural key properties of the entity."
+msgstr "我们强烈建议你实现 <literal>equals()</literal> 和 <literal>hashCode()</literal> 方法,来比较实体的自然键属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This mapping is not intended for use with entities that have natural primary keys."
+msgstr "这一映射不是为了把自然键作为主键而准备的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>false</literal>): by default, natural identifier properties are assumed to be immutable (constant)."
+msgstr "<literal>mutable</literal>(可选,默认为 <literal>false</literal>):默认情况下,自然标识属性被假定为不可变的(常量)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Component and dynamic-component"
+msgstr "组件(component)和动态组件(dynamic-component) "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element maps properties of a child object to columns of the table of a parent class. Components can, in turn, declare their own properties, components or collections. See the \"Component\" examples below:"
+msgstr "<literal>&lt;component&gt;</literal> 元素把子对象的一些元素与父类对应的表的一些字段映射起来。然后组件可以定义它们自己的属性、组件或者集合。参见后面的“Components”一章。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): the name of the component (child) class."
+msgstr "<literal>class</literal>(可选 — 默认为通过反射得到的属性类型):组件(子)类的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal>: do the mapped columns appear in SQL <literal>INSERTs</literal>?"
+msgstr "<literal>insert</literal>:被映射的字段是否出现在 SQL 的 <literal>INSERT</literal> 语句中? "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update</literal>: do the mapped columns appear in SQL <literal>UPDATEs</literal>?"
+msgstr "<literal>update</literal>:被映射的字段是否出现在 SQL 的 <literal>UPDATE</literal> 语句中? "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): specifies that this component should be fetched lazily when the instance variable is first accessed. It requires build-time bytecode instrumentation."
+msgstr "<literal>lazy</literal>(可选 — 默认是 <literal>false</literal>):表明此组件应在实例变量第一次被访问的时候延迟加载(需要编译时字节码装置器)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this component either do or do not require acquisition of the optimistic lock. It determines if a version increment should occur when this property is dirty."
+msgstr "<literal>optimistic-lock</literal>(可选 — 默认是 <literal>true</literal>):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional - defaults to <literal>false</literal>): specifies that a unique constraint exists upon all mapped columns of the component."
+msgstr "<literal>unique</literal>(可选 — 默认是 <literal>false</literal>):表明组件映射的所有字段上都有唯一性约束。"
+
+#. Tag: para
+#, no-c-format
+msgid "The child <literal>&lt;property&gt;</literal> tags map properties of the child class to table columns."
+msgstr "其 <literal>&lt;property&gt;</literal> 子标签为子类的一些属性与表字段之间建立映射。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;parent&gt;</literal> subelement that maps a property of the component class as a reference back to the containing entity."
+msgstr "<literal>&lt;component&gt;</literal> 元素允许加入一个 <literal>&lt;parent&gt;</literal> 子元素,在组件类内部就可以有一个指向其容器的实体的反向引用。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;dynamic-component&gt;</literal> element allows a <literal>Map</literal> to be mapped as a component, where the property names refer to keys of the map. See <xref linkend=\"components-dynamic\" /> for more information."
+msgstr "<literal>&lt;dynamic-component&gt;</literal> 元素允许把一个 <literal>Map</literal> 映射为组件,其属性名对应 map 的键值。参见 <xref linkend=\"components-dynamic\"/>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "属性(Properties)"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;properties&gt;</literal> element allows the definition of a named, logical grouping of the properties of a class. The most important use of the construct is that it allows a combination of properties to be the target of a <literal>property-ref</literal>. It is also a convenient way to define a multi-column unique constraint. For example:"
+msgstr "<literal>&lt;properties&gt;</literal> 元素允许定义一个命名的逻辑分组(grouping)包含一个类中的多个属性。这个元素最重要的用处是允许多个属性的组合作为 <literal>property-ref</literal> 的目标(target)。这也是定义多字段唯一约束的一种方便途径。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the logical name of the grouping. It is <emphasis>not</emphasis> an actual property name."
+msgstr "<literal>name</literal>:分组的逻辑名称 — <emphasis>不是</emphasis> 实际属性的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to these properties either do or do not require acquisition of the optimistic lock. It determines if a version increment should occur when these properties are dirty."
+msgstr "<literal>optimistic-lock</literal>(可选 — 默认是 <literal>true</literal>):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version)。"
+
+#. Tag: para
+#, no-c-format
+msgid "For example, if we have the following <literal>&lt;properties&gt;</literal> mapping:"
+msgstr "例如,如果我们有如下的 <literal>&lt;properties&gt;</literal> 映射:"
+
+#. Tag: para
+#, no-c-format
+msgid "You might have some legacy data association that refers to this unique key of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr "然后,我们可能有一些遗留的数据关联,引用 <literal>Person</literal> 表的这个唯一键,而不是主键:"
+
+#. Tag: para
+#, no-c-format
+msgid "The use of this outside the context of mapping legacy data is not recommended."
+msgstr "我们并不推荐这样使用,除非在映射遗留数据的情况下。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Subclass"
+msgstr "子类(subclass) "
+
+#. Tag: para
+#, no-c-format
+msgid "Polymorphic persistence requires the declaration of each subclass of the root persistent class. For the table-per-class-hierarchy mapping strategy, the <literal>&lt;subclass&gt;</literal> declaration is used. For example:"
+msgstr "最后,多态持久化需要为父类的每个子类都进行定义。对于“每一棵类继承树对应一个表”的策略来说,就需要使用 <literal>&lt;subclass&gt;</literal> 定义。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the fully qualified class name of the subclass."
+msgstr "<literal>name</literal>:子类的全限定名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): a value that distinguishes individual subclasses."
+msgstr "<literal>discriminator-value(辨别标志)</literal>(可选 — 默认为类名):一个用于区分每个独立的子类的值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies a class or interface used for lazy initializing proxies."
+msgstr "<literal>proxy</literal>(可选):指定一个类或者接口,在延迟装载时作为代理使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>): setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr "<literal>lazy</literal>(可选,默认是 <literal>true</literal>):设置为 <literal>lazy=\"false\"</literal> 禁止使用延迟装载。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Each subclass declares its own persistent properties and subclasses. <literal>&lt;version&gt;</literal> and <literal>&lt;id&gt;</literal> properties are assumed to be inherited from the root class. Each subclass in a hierarchy must define a unique <literal>discriminator-value</literal>. If this is not specified, the fully qualified Java class name is used."
+msgstr "每个子类都应该定义它自己的持久化属性和子类。<literal>&lt;version&gt;</literal> 和 <literal>&lt;id&gt;</literal> 属性可以从根父类继承下来。在一棵继承树上的每个子类都必须定义一个唯一的 <literal>discriminator-value</literal>。如果没有指定,就会使用 Java 类的全限定名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For information about inheritance mappings see <xref linkend=\"inheritance\" />."
+msgstr "更多关于继承映射的信息,参考 <xref linkend=\"inheritance\"/>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Joined-subclass"
+msgstr "连接的子类(joined-subclass) "
+
+#. Tag: para
+#, no-c-format
+msgid "Each subclass can also be mapped to its own table. This is called the table-per-subclass mapping strategy. An inherited state is retrieved by joining with the table of the superclass. To do this you use the <literal>&lt;joined-subclass&gt;</literal> element. For example:"
+msgstr "此外,每个子类可能被映射到他自己的表中(每个子类一个表的策略)。被继承的状态通过和超类的表关联得到。我们使用 <literal>&lt;joined-subclass&gt;</literal> 元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the subclass table."
+msgstr "<literal>table</literal>:子类的表名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>proxy</literal> (optional): specifies a class or interface to use for lazy initializing proxies."
+msgstr "<literal>proxy</literal>(可选):指定一个类或者接口,在延迟装载时作为代理使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional, defaults to <literal>true</literal>): setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr "<literal>lazy</literal>(可选,默认是 <literal>true</literal>):设置为 <literal>lazy=\"false\"</literal> 禁止使用延迟装载。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A discriminator column is not required for this mapping strategy. Each subclass must, however, declare a table column holding the object identifier using the <literal>&lt;key&gt;</literal> element. The mapping at the start of the chapter would then be re-written as:"
+msgstr "这种映射策略不需要指定辨别标志(discriminator)字段。但是,每一个子类都必须使用 <literal>&lt;key&gt;</literal> 元素指定一个表字段来持有对象的标识符。本章开始的映射可以被用如下方式重写: "
+
+#. Tag: title
+#, no-c-format
+msgid "Union-subclass"
+msgstr "联合子类(union-subclass) "
+
+#. Tag: para
+#, no-c-format
+msgid "A third option is to map only the concrete classes of an inheritance hierarchy to tables. This is called the table-per-concrete-class strategy. Each table defines all persistent states of the class, including the inherited state. In Hibernate, it is not necessary to explicitly map such inheritance hierarchies. You can map each class with a separate <literal>&lt;class&gt;</literal> declaration. However, if you wish use polymorphic associations (e.g. an association to the superclass of your hierarchy), you need to use the <literal>&lt;union-subclass&gt;</literal> mapping. For example:"
+msgstr "第三种选择是仅仅映射类继承树中具体类部分到表中(每个具体类一张表的策略)。其中,每张表定义了类的所有持久化状态,包括继承的状态。在 Hibernate 中,并不需要完全显式地映射这样的继承树。你可以简单地使用单独的 <literal>&lt;class&gt;</literal> 定义映射每个类。然而,如果你想使用多态关联(例如,一个对类继承树中超类的关联),你需要使用 <literal>&lt;union-subclass&gt;</literal> 映射。 "
+
+#. Tag: para
+#, no-c-format
+msgid "No discriminator column or key column is required for this mapping strategy."
+msgstr "这种映射策略不需要指定辨别标志(discriminator)字段。"
+
+#. Tag: title
+#, no-c-format
+msgid "Join"
+msgstr "连接(join) "
+
+#. Tag: para
+#, no-c-format
+msgid "Using the <literal>&lt;join&gt;</literal> element, it is possible to map properties of one class to several tables that have a one-to-one relationship. For example:"
+msgstr "使用 <literal>&lt;join&gt;</literal> 元素,假若在表之间存在一对一关联,可以将一个类的属性映射到多张表中。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal>: the name of the joined table."
+msgstr "<literal>table</literal>:被连接表的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): if set to <literal>join</literal>, the default, Hibernate will use an inner join to retrieve a <literal>&lt;join&gt;</literal> defined by a class or its superclasses. It will use an outer join for a <literal>&lt;join&gt;</literal> defined by a subclass. If set to <literal>select</literal> then Hibernate will use a sequential select for a <literal>&lt;join&gt;</literal> defined on a subclass. This will be issued only if a row represents an instance of the subclass. Inner joins will still be used to retrieve a <literal>&lt;join&gt;</literal> defined by the class and its superclasses."
+msgstr "<literal>fetch</literal>(可选 — 默认是 <literal>join</literal>):如果设置为默认值 <literal>join</literal>,Hibernate 将使用一个内连接来得到这个类或其超类定义的 <literal>&lt;join&gt;</literal>,而使用一个外连接来得到其子类定义的 <literal>&lt;join&gt;</literal>。如果设置为 <literal>select</literal>,则 Hibernate 将为子类定义的 <literal>&lt;join&gt;</literal> 使用顺序选择。这仅在一行数据表示一个子类的对象的时候才会发生。对这个类和其超类定义的 <literal>&lt;join&gt;</literal>,依然会使用内连接得到。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): if enabled, Hibernate will not insert or update the properties defined by this join."
+msgstr "<literal>inverse</literal>(可选 — 默认是 <literal>false</literal>):如果打开,Hibernate 不会插入或者更新此连接定义的属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optional</literal> (optional - defaults to <literal>false</literal>): if enabled, Hibernate will insert a row only if the properties defined by this join are non-null. It will always use an outer join to retrieve the properties."
+msgstr "<literal>optional</literal>(可选 — 默认是 <literal>false</literal>):如果打开,Hibernate 只会在此连接定义的属性非空时插入一行数据,并且总是使用一个外连接来得到这些属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For example, address information for a person can be mapped to a separate table while preserving value type semantics for all properties:"
+msgstr "例如,一个人(person)的地址(address)信息可以被映射到单独的表中(并保留所有属性的值类型语义): "
+
+#. Tag: para
+#, no-c-format
+msgid "This feature is often only useful for legacy data models. We recommend fewer tables than classes and a fine-grained domain model. However, it is useful for switching between inheritance mapping strategies in a single hierarchy, as explained later."
+msgstr "此特性常常对遗留数据模型有用,我们推荐表个数比类个数少,以及细粒度的领域模型。然而,在单独的继承树上切换继承映射策略是有用的,后面会解释这点。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Key"
+msgstr "Key"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;key&gt;</literal> element has featured a few times within this guide. It appears anywhere the parent mapping element defines a join to a new table that references the primary key of the original table. It also defines the foreign key in the joined table:"
+msgstr "我们目前已经见到过 <literal>&lt;key&gt;</literal> 元素多次了。这个元素在父映射元素定义了对新表的连接,并且在被连接表中定义了一个外键引用原表的主键的情况下经常使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>on-delete</literal> (optional - defaults to <literal>noaction</literal>): specifies whether the foreign key constraint has database-level cascade delete enabled."
+msgstr "<literal>on-delete</literal>(可选,默认是 <literal>noaction</literal>):表明外键关联是否打开数据库级别的级联删除。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): specifies that the foreign key refers to columns that are not the primary key of the original table. It is provided for legacy data."
+msgstr "<literal>property-ref</literal>(可选):表明外键引用的字段不是原表的主键(提供给遗留数据)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-null</literal> (optional): specifies that the foreign key columns are not nullable. This is implied whenever the foreign key is also part of the primary key."
+msgstr "<literal>not-null</literal>(可选):表明外键的字段不可为空(这意味着无论何时外键都是主键的一部分)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>update</literal> (optional): specifies that the foreign key should never be updated. This is implied whenever the foreign key is also part of the primary key."
+msgstr "<literal>update</literal>(可选):表明外键决不应该被更新(这意味着无论何时外键都是主键的一部分)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): specifies that the foreign key should have a unique constraint. This is implied whenever the foreign key is also the primary key."
+msgstr "<literal>unique</literal>(可选):表明外键应有唯一性约束(这意味着无论何时外键都是主键的一部分)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For systems where delete performance is important, we recommend that all keys should be defined <literal>on-delete=\"cascade\"</literal>. Hibernate uses a database-level <literal>ON CASCADE DELETE</literal> constraint, instead of many individual <literal>DELETE</literal> statements. Be aware that this feature bypasses Hibernate's usual optimistic locking strategy for versioned data."
+msgstr "对那些看重删除性能的系统,我们推荐所有的键都应该定义为 <literal>on-delete=\"cascade\"</literal>,这样 Hibernate 将使用数据库级的 <literal>ON CASCADE DELETE</literal> 约束,而不是多个 <literal>DELETE</literal> 语句。注意,这个特性会绕过 Hibernate 通常对版本数据(versioned data)采用的乐观锁策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>not-null</literal> and <literal>update</literal> attributes are useful when mapping a unidirectional one-to-many association. If you map a unidirectional one-to-many association to a non-nullable foreign key, you <emphasis>must</emphasis> declare the key column using <literal>&lt;key not-null=\"true\"&gt;</literal>."
+msgstr "<literal>not-null</literal> 和 <literal>update</literal> 属性在映射单向一对多关联的时候有用。如果你映射一个单向一对多关联到非空的(non-nullable)外键,你<emphasis>必须</emphasis> 用 <literal>&lt;key not-null=\"true\"&gt;</literal> 定义此键字段。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Column and formula elements"
+msgstr "字段和规则元素(column and formula elements) "
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping elements which accept a <literal>column</literal> attribute will alternatively accept a <literal>&lt;column&gt;</literal> subelement. Likewise, <literal>&lt;formula&gt;</literal> is an alternative to the <literal>formula</literal> attribute. For example:"
+msgstr "任何接受 <literal>column</literal> 属性的映射元素都可以选择接受 <literal>&lt;column&gt;</literal> 子元素。同样的,<literal>formula</literal> 子元素也可以替换 <literal>&lt;formula&gt;</literal> 属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Most of the attributes on <literal>column</literal> provide a means of tailoring the DDL during automatic schema generation. The <literal>read</literal> and <literal>write</literal> attributes allow you to specify custom SQL that Hibernate will use to access the column's value. For more on this, see the discussion of <link linkend=\"mapping-column-read-and-write\">column read and write expressions</link>."
+msgstr "<literal>column</literal> 上的大多数属性都提供了在自动模式生成过程中对 DDL 进行裁剪的方法。<literal>read</literal> 和 <literal>write</literal> 属性允许你指定 Hibernate 用于访问字段值的自定义的 SQL。关于更多的内容,请参考 <link linkend=\"mapping-column-read-and-write\">column read and write expressions</link>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>column</literal> and <literal>formula</literal> elements can even be combined within the same property or association mapping to express, for example, exotic join conditions."
+msgstr "<literal>column</literal> 和 <literal>formula</literal> 属性甚至可以在同一个属性或关联映射中被合并来表达,例如,一些奇异的连接条件。"
+
+#. Tag: title
+#, no-c-format
+msgid "Import"
+msgstr "引用(import) "
+
+#. Tag: para
+#, no-c-format
+msgid "If your application has two persistent classes with the same name, and you do not want to specify the fully qualified package name in Hibernate queries, classes can be \"imported\" explicitly, rather than relying upon <literal>auto-import=\"true\"</literal>. You can also import classes and interfaces that are not explicitly mapped:"
+msgstr "假设你的应用程序有两个同样名字的持久化类,但是你不想在 Hibernate 查询中使用他们的全限定名。除了依赖 <literal>auto-import=\"true\"</literal> 以外,类也可以被显式地“import(引用)”。你甚至可以引用没有被明确映射的类和接口。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal>: the fully qualified class name of any Java class."
+msgstr "<literal>class</literal>:任何 Java 类的全限定名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>rename</literal> (optional - defaults to the unqualified class name): a name that can be used in the query language."
+msgstr "<literal>rename</literal>(可选 — 默认为类的全限定名):在查询语句中可以使用的名字。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Any"
+msgstr "Any"
+
+#. Tag: para
+#, no-c-format
+msgid "There is one more type of property mapping. The <literal>&lt;any&gt;</literal> mapping element defines a polymorphic association to classes from multiple tables. This type of mapping requires more than one column. The first column contains the type of the associated entity. The remaining columns contain the identifier. It is impossible to specify a foreign key constraint for this kind of association. This is not the usual way of mapping polymorphic associations and you should use this only in special cases. For example, for audit logs, user session data, etc."
+msgstr "这是属性映射的又一种类型。<literal>&lt;any&gt;</literal> 映射元素定义了一种从多个表到类的多态关联。这种类型的映射常常需要多于一个字段。第一个字段持有被关联实体的类型,其他的字段持有标识符。对这种类型的关联来说,不可能指定一个外键约束,所以这当然不是映射(多态)关联的通常的方式。你只应该在非常特殊的情况下使用它(比如,审计 log,用户会话数据等等)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>meta-type</literal> attribute allows the application to specify a custom type that maps database column values to persistent classes that have identifier properties of the type specified by <literal>id-type</literal>. You must specify the mapping from values of the meta-type to class names."
+msgstr "<literal>meta-type</literal> 属性使得应用程序能指定一个将数据库字段的值映射到持久化类的自定义类型。这个持久化类包含有用 <literal>id-type</literal> 指定的标识符属性。你必须指定从 meta-type 的值到类名的映射。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the property name."
+msgstr "<literal>name</literal>:属性名"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>id-type</literal>: the identifier type."
+msgstr "<literal>id-type</literal>:标识符类型"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>meta-type</literal> (optional - defaults to <literal>string</literal>): any type that is allowed for a discriminator mapping."
+msgstr "<literal>meta-type</literal>(可选 -默认是 <literal>string</literal>):允许辨别标志(discriminator)映射的任何类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional- defaults to <literal>none</literal>): the cascade style."
+msgstr "<literal>cascade</literal>(可选 — 默认是<literal>none</literal>):级联的类型。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that updates to this property either do or do not require acquisition of the optimistic lock. It defines whether a version increment should occur if this property is dirty."
+msgstr "<literal>optimistic-lock</literal>(可选 — 默认是 <literal>true</literal>):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate types"
+msgstr "Hibernate 的类型 "
+
+#. Tag: title
+#, no-c-format
+msgid "Entities and values"
+msgstr "实体(Entities)和值(values)"
+
+#. Tag: para
+#, no-c-format
+msgid "In relation to the persistence service, Java language-level objects are classified into two groups:"
+msgstr "和持久化服务相比,Java 级别的对象分为两个组别:"
+
+#. Tag: para
+#, no-c-format
+msgid "An <emphasis>entity</emphasis> exists independently of any other objects holding references to the entity. Contrast this with the usual Java model, where an unreferenced object is garbage collected. Entities must be explicitly saved and deleted. Saves and deletions, however, can be <emphasis>cascaded</emphasis> from a parent entity to its children. This is different from the ODMG model of object persistence by reachability and corresponds more closely to how application objects are usually used in large systems. Entities support circular and shared references. They can also be versioned."
+msgstr "<emphasis>实体entity</emphasis> 独立于任何持有实体引用的对象。与通常的 Java 模型相比,不再被引用的对象会被当作垃圾收集掉。实体必须被显式的保存和删除(除非保存和删除是从父实体向子实体引发的<emphasis>级联</emphasis>)。这和 ODMG 模型中关于对象通过可触及保持持久性有一些不同 — 比较起来更加接近应用程序对象通常在一个大系统中的使用方法。实体支持循环引用和交叉引用,它们也可以加上版本信息。 "
+
+#. Tag: para
+#, no-c-format
+msgid "An entity's persistent state consists of references to other entities and instances of <emphasis>value</emphasis> types. Values are primitives: collections (not what is inside a collection), components and certain immutable objects. Unlike entities, values in particular collections and components, <emphasis>are</emphasis> persisted and deleted by reachability. Since value objects and primitives are persisted and deleted along with their containing entity, they cannot be independently versioned. Values have no independent identity, so they cannot be shared by two entities or collections."
+msgstr "一个实体的持久状态包含指向其他实体和<emphasis>值</emphasis>类型实例的引用。值可以是原始类型,集合(不是集合中的对象),组件或者特定的不可变对象。与实体不同,值(特别是集合和组件)是通过可触及性来进行持久化和删除的。因为值对象(和原始类型数据)是随着包含他们的实体而被持久化和删除的,他们不能被独立的加上版本信息。值没有独立的标识,所以他们不能被两个实体或者集合共享。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Until now, we have been using the term \"persistent class\" to refer to entities. We will continue to do that. Not all user-defined classes with a persistent state, however, are entities. A <emphasis>component</emphasis> is a user-defined class with value semantics. A Java property of type <literal>java.lang.String</literal> also has value semantics. Given this definition, all types (classes) provided by the JDK have value type semantics in Java, while user-defined types can be mapped with entity or value type semantics. This decision is up to the application developer. An entity class in a domain model will normally have shared references to a single instance of that class, while composition or aggregation usually translates to a value type."
+msgstr "直到现在,我们都一直使用术语“持久类”(persistent class)来代表实体。我们仍然会这么做。然而严格说来,不是所有的用户自定义的,带有持久化状态的类都是实体。<emphasis>组件</emphasis>就是用户自定义类,却是值语义的。<literal>java.lang.String</literal> 类型的 java 属性也是值语义的。给了这个定义以后,我们可以说所有 JDK 提供的类型(类)都是值类型的语义,而用于自定义类型可能被映射为实体类型或值类型语义。采用哪种类型的语义取决于开发人员。在领域模型中,寻找实体类的一个好线索是共享引用指向这个类的单一实例,而组合或聚合通常被转化为值类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We will revisit both concepts throughout this reference guide."
+msgstr "我们会在本文档中重复碰到这两个概念。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The challenge is to map the Java type system, and the developers' definition of entities and value types, to the SQL/database type system. The bridge between both systems is provided by Hibernate. For entities, <literal>&lt;class&gt;</literal>, <literal>&lt;subclass&gt;</literal> and so on are used. For value types we use <literal>&lt;property&gt;</literal>, <literal>&lt;component&gt;</literal>etc., that usually have a <literal>type</literal> attribute. The value of this attribute is the name of a Hibernate <emphasis>mapping type</emphasis>. Hibernate provides a range of mappings for standard JDK value types out of the box. You can write your own mapping types and implement your own custom conversion strategies."
+msgstr "挑战在于将 java 类型系统(和开发者定义的实体和值类型)映射到 SQL/数据库类型系统。Hibernate 提供了连接两个系统之间的桥梁:对于实体类型,我们使用 <literal>&lt;class&gt;</literal>,<literal>&lt;subclass&gt;</literal> 等等。对于值类型,我们使用 <literal>&lt;property&gt;</literal>,<literal>&lt;component&gt;</literal> 及其他,通常跟随着 <literal>type</literal> 属性。这个属性的值是Hibernate 的<emphasis>映射类型</emphasis>的名字。Hibernate 提供了许多现成的映射(标准的 JDK 值类型)。你也可以编写自己的映射类型并实现自定义的变换策略,随后我们会看到这点。 "
+
+#. Tag: para
+#, no-c-format
+msgid "With the exception of collections, all built-in Hibernate types support null semantics."
+msgstr "所有的 Hibernate 内建类型,除了 collections 以外,都支持空(null)语义。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Basic value types"
+msgstr "基本值类型"
+
+#. Tag: para
+#, no-c-format
+msgid "The built-in <emphasis>basic mapping types</emphasis> can be roughly categorized into the following:"
+msgstr "内置的 <emphasis>basic mapping types</emphasis> 可以大致地分类为:"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>integer, long, short, float, double, character, byte, boolean, yes_no, true_false</literal>"
+msgstr "<literal>integer, long, short, float, double, character, byte, boolean, yes_no, true_false</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from Java primitives or wrapper classes to appropriate (vendor-specific) SQL column types. <literal>boolean, yes_no</literal> and <literal>true_false</literal> are all alternative encodings for a Java <literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr "这些类型都对应 Java 的原始类型或者其封装类,来符合(特定厂商的)SQL 字段类型。<literal>boolean, yes_no</literal> 和 <literal>true_false</literal> 都是 Java 中 <literal>boolean</literal> 或者 <literal>java.lang.Boolean</literal> 的另外说法。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>string</literal>"
+msgstr "<literal>string</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr "从 <literal>java.lang.String</literal> 到 <literal>VARCHAR</literal>(或者 Oracle 的 <literal>VARCHAR2</literal>)的映射。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>date, time, timestamp</literal>"
+msgstr "<literal>date, time, timestamp</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Date</literal> and its subclasses to SQL types <literal>DATE</literal>, <literal>TIME</literal> and <literal>TIMESTAMP</literal> (or equivalent)."
+msgstr "从 <literal>java.util.Date</literal> 和其子类到 SQL 类型 <literal>DATE</literal>,<literal>TIME</literal> 和 <literal>TIMESTAMP</literal>(或等价类型)的映射。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>calendar, calendar_date</literal>"
+msgstr "<literal>calendar, calendar_date</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Calendar</literal> to SQL types <literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr "从 <literal>java.util.Calendar</literal> 到 SQL 类型 <literal>TIMESTAMP</literal> 和 <literal>DATE</literal>(或等价类型)的映射。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>big_decimal, big_integer</literal>"
+msgstr "<literal>big_decimal, big_integer</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java.math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle <literal>NUMBER</literal>)."
+msgstr "从 <literal>java.math.BigDecimal</literal> 和 <literal>java.math.BigInteger</literal> 到 <literal>NUMERIC</literal>(或者 Oracle 的 <literal>NUMBER</literal>类型)的映射。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>locale, timezone, currency</literal>"
+msgstr "<literal>locale, timezone, currency</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings from <literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal> and <literal>java.util.Currency</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). Instances of <literal>Locale</literal> and <literal>Currency</literal> are mapped to their ISO codes. Instances of <literal>TimeZone</literal> are mapped to their <literal>ID</literal>."
+msgstr "从 <literal>java.util.Locale</literal>,<literal>java.util.TimeZone</literal>  和 <literal>java.util.Currency</literal> 到 <literal>VARCHAR</literal>(或者 Oracle 的 <literal>VARCHAR2</literal> 类型)的映射。<literal>Locale</literal> 和 <literal>Currency</literal> 的实例被映射为它们的 ISO 代码。<literal>TimeZone</literal> 的实例被影射为它的 <literal>ID</literal>。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>class</literal>"
+msgstr "<literal>class</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> is mapped to its fully qualified name."
+msgstr "从 <literal>java.lang.Class</literal> 到 <literal>VARCHAR</literal>(或者 Oracle 的 <literal>VARCHAR2</literal> 类型)的映射。<literal>Class</literal> 被映射为它的全限定名。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>binary</literal>"
+msgstr "<literal>binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps byte arrays to an appropriate SQL binary type."
+msgstr "把字节数组(byte arrays)映射为对应的 SQL 二进制类型。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>text</literal>"
+msgstr "<literal>text</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</literal> type."
+msgstr "把长 Java 字符串映射为 SQL 的 <literal>CLOB</literal> 或者 <literal>TEXT</literal> 类型。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>serializable</literal>"
+msgstr "<literal>serializable</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Maps serializable Java types to an appropriate SQL binary type. You can also indicate the Hibernate type <literal>serializable</literal> with the name of a serializable Java class or interface that does not default to a basic type."
+msgstr "把可序列化的 Java 类型映射到对应的 SQL 二进制类型。你也可以为一个并非默认为基本类型的可序列化 Java 类或者接口指定 Hibernate 类型 <literal>serializable</literal>。 "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>clob, blob</literal>"
+msgstr "<literal>clob, blob</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and <literal>java.sql.Blob</literal>. These types can be inconvenient for some applications, since the blob or clob object cannot be reused outside of a transaction. Driver support is patchy and inconsistent."
+msgstr "JDBC 类 <literal>java.sql.Clob</literal> 和 <literal>java.sql.Blob</literal>的映射。某些程序可能不适合使用这个类型,因为 blob 和 clob 对象可能在一个事务之外是无法重用的。(而且, 驱动程序对这种类型的支持充满着补丁和前后矛盾。) "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary</literal>"
+msgstr "<literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Type mappings for what are considered mutable Java types. This is where Hibernate makes certain optimizations appropriate only for immutable Java types, and the application treats the object as immutable. For example, you should not call <literal>Date.setTime()</literal> for an instance mapped as <literal>imm_timestamp</literal>. To change the value of the property, and have that change made persistent, the application must assign a new, nonidentical, object to the property."
+msgstr "一般来说,映射类型被假定为是可变的 Java 类型,只有对不可变 Java 类型,Hibernate 会采取特定的优化措施,应用程序会把这些对象作为不可变对象处理。比如,你不应该对作为 <literal>imm_timestamp</literal> 映射的 Date 执行 <literal>Date.setTime()</literal>。要改变属性的值,并且保存这一改变,应用程序必须对这一属性重新设置一个新的(不一样的)对象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Unique identifiers of entities and collections can be of any basic type except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</literal>. Composite identifiers are also allowed. See below for more information."
+msgstr "实体及其集合的唯一标识可以是除了 <literal>binary</literal>、 <literal>blob</literal> 和 <literal>clob</literal> 之外的任何基础类型。(联合标识也是允许的,后面会说到。)"
+
+#. Tag: para
+#, no-c-format
+msgid "The basic value types have corresponding <literal>Type</literal> constants defined on <literal>org.hibernate.Hibernate</literal>. For example, <literal>Hibernate.STRING</literal> represents the <literal>string</literal> type."
+msgstr "在 <literal>org.hibernate.Hibernate</literal> 中,定义了基础类型对应的 <literal>Type</literal> 常量。比如,<literal>Hibernate.STRING</literal> 代表 <literal>string</literal> 类型。"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom value types"
+msgstr "自定义值类型"
+
+#. Tag: para
+#, no-c-format
+msgid "It is relatively easy for developers to create their own value types. For example, you might want to persist properties of type <literal>java.lang.BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does not provide a built-in type for this. Custom types are not limited to mapping a property, or collection element, to a single table column. So, for example, you might have a Java property <literal>getName()</literal>/<literal>setName()</literal> of type <literal>java.lang.String</literal> that is persisted to the columns <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr "开发者创建属于他们自己的值类型也是很容易的。比如说,你可能希望持久化 <literal>java.lang.BigInteger</literal> 类型的属性,持久化成为 <literal>VARCHAR</literal> 字段。Hibernate没有内置这样一种类型。自定义类型能够映射一个属性(或集合元素)到不止一个数据库表字段。比如说,你可能有这样的 Java 属性:<literal>getName()</literal>/<literal>setName()</literal>,这是 <literal>java.lang.String</literal> 类型的,对应的持久化到三个字段:<literal>FIRST_NAME</literal>,<literal>INITIAL</literal>,<literal>SURNAME</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To implement a custom type, implement either <literal>org.hibernate.UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and declare properties using the fully qualified classname of the type. View <literal>org.hibernate.test.DoubleStringType</literal> to see the kind of things that are possible."
+msgstr "要实现一个自定义类型,可以实现 <literal>org.hibernate.UserType</literal> 或 <literal>org.hibernate.CompositeUserType</literal> 中的任一个,并且使用类型的 Java 全限定类名来定义属性。请查看 <literal>org.hibernate.test.DoubleStringType</literal> 这个例子,看看它是怎么做的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the use of <literal>&lt;column&gt;</literal> tags to map a property to multiple columns."
+msgstr "注意使用 <literal>&lt;column&gt;</literal> 标签来把一个属性映射到多个字段的做法。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, and <literal>UserVersionType</literal> interfaces provide support for more specialized uses."
+msgstr "<literal>CompositeUserType</literal>,<literal>EnhancedUserType</literal>,<literal>UserCollectionType</literal> 和 <literal>UserVersionType</literal> 接口为更特殊的使用方式提供支持。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even supply parameters to a <literal>UserType</literal> in the mapping file. To do this, your <literal>UserType</literal> must implement the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. To supply parameters to your custom type, you can use the <literal>&lt;type&gt;</literal> element in your mapping files."
+msgstr "你甚至可以在一个映射文件中提供参数给一个 <literal>UserType</literal>。 为了这样做,你的 <literal>UserType</literal> 必须实现 <literal>org.hibernate.usertype.ParameterizedType</literal> 接口。为了给自定义类型提供参数,你可以在映射文件中使用 <literal>&lt;type&gt;</literal> 元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>UserType</literal> can now retrieve the value for the parameter named <literal>default</literal> from the <literal>Properties</literal> object passed to it."
+msgstr "现在,<literal>UserType</literal> 可以从传入的 <literal>Properties</literal> 对象中得到 <literal>default</literal> 参数的值。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you regularly use a certain <literal>UserType</literal>, it is useful to define a shorter name for it. You can do this using the <literal>&lt;typedef&gt;</literal> element. Typedefs assign a name to a custom type, and can also contain a list of default parameter values if the type is parameterized."
+msgstr "如果你非常频繁地使用某一 <literal>UserType</literal>,可以为他定义一个简称。这可以通过使用 <literal>&lt;typedef&gt;</literal> 元素来实现。Typedefs 为一自定义类型赋予一个名称,并且如果此类型是参数化的,还可以包含一系列默认的参数值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is also possible to override the parameters supplied in a typedef on a case-by-case basis by using type parameters on the property mapping."
+msgstr "也可以根据具体案例通过属性映射中的类型参数覆盖在 typedef 中提供的参数。"
+
+#. Tag: para
+#, no-c-format
+msgid "Even though Hibernate's rich range of built-in types and support for components means you will rarely need to use a custom type, it is considered good practice to use custom types for non-entity classes that occur frequently in your application. For example, a <literal>MonetaryAmount</literal> class is a good candidate for a <literal>CompositeUserType</literal>, even though it could be mapped as a component. One reason for this is abstraction. With a custom type, your mapping documents would be protected against changes to the way monetary values are represented."
+msgstr "尽管 Hibernate 内建的丰富的类型和对组件的支持意味着你可能很少 <emphasis>需要</emphasis>使用自定义类型。不过,为那些在你的应用中经常出现的(非实体)类使用自定义类型也是一个好方法。例如,一个 <literal>MonetaryAmount</literal> 类使用 <literal>CompositeUserType</literal> 来映射是不错的选择,虽然他可以很容易地被映射成组件。这样做的动机之一是抽象。使用自定义类型,以后假若你改变表示金额的方法时,它可以保证映射文件不需要修改。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping a class more than once"
+msgstr "多次映射同一个类"
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to provide more than one mapping for a particular persistent class. In this case, you must specify an <emphasis>entity name</emphasis> to disambiguate between instances of the two mapped entities. By default, the entity name is the same as the class name. Hibernate lets you specify the entity name when working with persistent objects, when writing queries, or when mapping associations to the named entity."
+msgstr "对特定的持久化类,映射多次是允许的。这种情形下,你必须指定 <emphasis>entity name</emphasis> 来区别不同映射实体的对象实例。(默认情况下,实体名字和类名是相同的。) Hibernate 在操作持久化对象、编写查询条件,或者把关联映射到指定实体时,允许你指定这个 entity name(实体名字)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Associations are now specified using <literal>entity-name</literal> instead of <literal>class</literal>."
+msgstr "注意这里关联是如何用 <literal>entity-name</literal> 来代替 <literal>class</literal> 的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "SQL quoted identifiers"
+msgstr "SQL 中引号包围的标识符"
+
+#. Tag: para
+#, no-c-format
+msgid "You can force Hibernate to quote an identifier in the generated SQL by enclosing the table or column name in backticks in the mapping document. Hibernate will use the correct quotation style for the SQL <literal>Dialect</literal>. This is usually double quotes, but the SQL Server uses brackets and MySQL uses backticks."
+msgstr "你可通过在映射文档中使用反向引号(`)把表名或者字段名包围起来,以强制 Hibernate 在生成的 SQL 中把标识符用引号包围起来。Hibernate 会使用相应的 SQL<literal>Dialect</literal>(方言)来使用正确的引号风格(通常是双引号,但是在 SQL Server 中是括号,MySQL 中是反向引号)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Metadata alternatives"
+msgstr "其他元数据(Metadata)"
+
+#. Tag: para
+#, no-c-format
+msgid "XML does not suit all users so there are some alternative ways to define O/R mapping metadata in Hibernate."
+msgstr "XML 并不适用于所有人, 因此有其他定义 Hibernate O/R 映射元数据(metadata)的方法。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Using XDoclet markup"
+msgstr "使用 XDoclet 标记"
+
+#. Tag: para
+#, no-c-format
+msgid "Many Hibernate users prefer to embed mapping information directly in sourcecode using XDoclet <literal>@hibernate.tags</literal>. We do not cover this approach in this reference guide since it is considered part of XDoclet. However, we include the following example of the <literal>Cat</literal> class with XDoclet mappings:"
+msgstr "很多 Hibernate 使用者更喜欢使用 XDoclet<literal>@hibernate.tags</literal> 将映射信息直接嵌入到源代码中。我们不会在本文档中涉及这个方法,因为严格说来,这属于 XDoclet 的一部分。然而,我们包含了如下使用 XDoclet 映射的 <literal>Cat</literal> 类的例子。 "
+
+#. Tag: para
+#, no-c-format
+msgid "See the Hibernate website for more examples of XDoclet and Hibernate."
+msgstr "参考 Hibernate 网站更多的 Xdoclet 和 Hibernate 的例子。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using JDK 5.0 Annotations"
+msgstr "使用 JDK 5.0 的注解(Annotation)"
+
+#. Tag: para
+#, no-c-format
+msgid "JDK 5.0 introduced XDoclet-style annotations at the language level that are type-safe and checked at compile time. This mechanism is more powerful than XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, for example, supports auto-completion and syntax highlighting of JDK 5.0 annotations. The new revision of the EJB specification (JSR-220) uses JDK 5.0 annotations as the primary metadata mechanism for entity beans. Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the persistence API). Support for mapping metadata is available via the <emphasis>Hibernate Annotations</emphasis> package as a separate download. Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+msgstr "JDK 5.0 在语言级别引入了 XDoclet 风格的标注,并且是类型安全的,在编译期进行检查。这一机制比 XDoclet 的注解更为强大,有更好的工具和 IDE 支持。例如,IntelliJ IDEA,支持 JDK 5.0 注解的自动完成和语法高亮 。EJB 规范的新修订版 (JSR-220) 使用 JDK 5.0 的注解作为entity beans的主要元数据(metadata)机制。Hibernate 3 实现了JSR-220(the persistence API) 的 <literal>EntityManager</literal>,支持通过 <emphasis>Hibernate Annotations</emphasis> 包定义映射元数据。这个包作为单独的部分下载,支持 EJB3(JSR-220) 和 Hibernate3 的元数据。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of a POJO class annotated as an EJB entity bean:"
+msgstr "这是一个被注解为 EJB entity bean 的 POJO 类的例子"
+
+#. Tag: para
+#, no-c-format
+msgid "Support for JDK 5.0 Annotations (and JSR-220) is currently under development. Please refer to the Hibernate Annotations module for more details."
+msgstr "注意:对 JDK 5.0 注解(和 JSR-220)支持的工作仍然在进行中,并未完成。更多细节请参阅 Hibernate Annotations 模块。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Generated properties"
+msgstr "数据库生成属性(Generated Properties) "
+
+#. Tag: para
+#, no-c-format
+msgid "Generated properties are properties that have their values generated by the database. Typically, Hibernate applications needed to <literal>refresh</literal> objects that contain any properties for which the database was generating values. Marking properties as generated, however, lets the application delegate this responsibility to Hibernate. When Hibernate issues an SQL INSERT or UPDATE for an entity that has defined generated properties, it immediately issues a select afterwards to retrieve the generated values."
+msgstr "Generated properties 指的是其值由数据库生成的属性。一般来说,如果对象有任何属性由数据库生成值,Hibernate 应用程序需要进行<literal>刷新(refresh)</literal>。但如果把属性标明为 generated,就可以转由 Hibernate 来负责这个动作。实际上。对定义了 generated properties 的实体,每当 Hibernate 执行一条 SQL INSERT 或者 UPDATE 语句,会立刻执行一条 select 来获得生成的值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Properties marked as generated must additionally be non-insertable and non-updateable. Only <link linkend=\"mapping-declaration-version\">versions</link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, and <link linkend=\"mapping-declaration-property\">simple properties</link>, can be marked as generated."
+msgstr "被标明为 generated 的属性还必须是 non-insertable 和 non-updateable 的。只有 <link linkend=\"mapping-declaration-version\">versions</link>、<link linkend=\"mapping-declaration-timestamp\">timestamps</link> 和 <link linkend=\"mapping-declaration-property\">simple properties</link> 可以被标明为 generated。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>never</literal> (the default): the given property value is not generated within the database."
+msgstr "<literal>never</literal>(默认)标明此属性值不是从数据库中生成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>insert</literal>: the given property value is generated on insert, but is not regenerated on subsequent updates. Properties like created-date fall into this category. Even though <link linkend=\"mapping-declaration-version\">version</link> and <link linkend=\"mapping-declaration-timestamp\">timestamp</link> properties can be marked as generated, this option is not available."
+msgstr "<literal>insert</literal> — 标明此属性值在 insert 的时候生成,但是不会在随后的 update 时重新生成。比如说创建日期就归属于这类。注意虽然 <link linkend=\"mapping-declaration-version\">version</link> 和 <link linkend=\"mapping-declaration-timestamp\">timestamp</link> 属性可以被标注为 generated,但是不适用这个选项。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>always</literal>: the property value is generated both on insert and on update."
+msgstr "<literal>always</literal> — 标明此属性值在 insert 和 update 时都会被生成。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Column read and write expressions"
+msgstr "字段的读写表达式"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows you to customize the SQL it uses to read and write the values of columns mapped to <link linkend=\"mapping-declaration-property\">simple properties</link>. For example, if your database provides a set of data encryption functions, you can invoke them for individual columns like this: <programlisting role=\"XML\">&lt;property name=\"creditCardNumber\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+msgstr "Hibernate 允许你自定义 SQL 以读写映射<link linkend=\"mapping-declaration-property\">简单属性</link>的字段值。例如,如果你的数据库提供了一套数据加密方法,你可以在单个字段上调用它们:<programlisting role=\"XML\">&lt;property name=\"creditCardNumber\"&gt; &lt;column name=\"credit_card_num\" read=\"decrypt(credit_card_num)\" write=\"encrypt(?)\"/&gt; &lt;/property&gt;</programlisting>"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate applies the custom expressions automatically whenever the property is referenced in a query. This functionality is similar to a derived-property <literal>formula</literal> with two differences:"
+msgstr "每当属性在查询里被引用时,Hibernate 都自动应用自定义的表达式。这种功能和 derived-property <literal>formula</literal> 相似,但有两个不同的地方:"
+
+#. Tag: para
+#, no-c-format
+msgid "The property is backed by one or more columns that are exported as part of automatic schema generation."
+msgstr "属性由一个或多个属性组成,它作为自动模式生成的一部分导出。"
+
+#. Tag: para
+#, no-c-format
+msgid "The property is read-write, not read-only."
+msgstr "属性是可读写的,非只读的。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>write</literal> expression, if specified, must contain exactly one '?' placeholder for the value."
+msgstr "如果指定了 <literal>write</literal> 表达式,它必须只包含一个“?”占位符。"
+
+#. Tag: title
+#, no-c-format
+msgid "Auxiliary database objects"
+msgstr "辅助数据库对象(Auxiliary Database Objects) "
+
+#. Tag: para
+#, no-c-format
+msgid "Auxiliary database objects allow for the CREATE and DROP of arbitrary database objects. In conjunction with Hibernate's schema evolution tools, they have the ability to fully define a user schema within the Hibernate mapping files. Although designed specifically for creating and dropping things like triggers or stored procedures, any SQL command that can be run via a <literal>java.sql.Statement.execute()</literal> method is valid (for example, ALTERs, INSERTS, etc.). There are essentially two modes for defining auxiliary database objects:"
+msgstr "允许 CREATE 和 DROP 任意数据库对象,与 Hibernate 的 schema 交互工具组合起来,可以提供在 Hibernate 映射文件中完全定义用户 schema 的能力。虽然这是为创建和销毁 trigger(触发器)或stored procedure(存储过程)等特别设计的,实际上任何可以在 <literal>java.sql.Statement.execute()</literal> 方法中执行的 SQL 命令都可以在此使用(比如ALTER, INSERT,等等)。本质上有两种模式来定义辅助数据库对象... "
+
+#. Tag: para
+#, no-c-format
+msgid "The first mode is to explicitly list the CREATE and DROP commands in the mapping file:"
+msgstr "第一种模式是在映射文件中显式声明 CREATE 和 DROP 命令: "
+
+#. Tag: para
+#, no-c-format
+msgid "The second mode is to supply a custom class that constructs the CREATE and DROP commands. This custom class must implement the <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
+msgstr "第二种模式是提供一个类,这个类知道如何组织 CREATE 和 DROP 命令。这个特别类必须实现 <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> 接口。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally, these database objects can be optionally scoped so that they only apply when certain dialects are used."
+msgstr "还有,这些数据库对象可以特别指定为仅在特定的方言中才使用。 "
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\"\n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\">\n"
+#~ "\n"
+#~ "                <id name=\"id\">\n"
+#~ "                        <generator class=\"native\"/>\n"
+#~ "                </id>\n"
+#~ "\n"
+#~ "                <discriminator column=\"subclass\"\n"
+#~ "                     type=\"character\"/>\n"
+#~ "\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "\n"
+#~ "                <property name=\"birthdate\"\n"
+#~ "                    type=\"date\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"sex\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\">\n"
+#~ "                        <key column=\"mother_id\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "\n"
+#~ "                <subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\">\n"
+#~ "\n"
+#~ "                        <property name=\"name\"\n"
+#~ "                            type=\"string\"/>\n"
+#~ "\n"
+#~ "                </subclass>\n"
+#~ "\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "      \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "          \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\"\n"
+#~ "            table=\"cats\"\n"
+#~ "            discriminator-value=\"C\">\n"
+#~ "\n"
+#~ "                <id name=\"id\">\n"
+#~ "                        <generator class=\"native\"/>\n"
+#~ "                </id>\n"
+#~ "\n"
+#~ "                <discriminator column=\"subclass\"\n"
+#~ "                     type=\"character\"/>\n"
+#~ "\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "\n"
+#~ "                <property name=\"birthdate\"\n"
+#~ "                    type=\"date\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"color\"\n"
+#~ "                    type=\"eg.types.ColorUserType\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"sex\"\n"
+#~ "                    not-null=\"true\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <property name=\"litterId\"\n"
+#~ "                    column=\"litterId\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <many-to-one name=\"mother\"\n"
+#~ "                    column=\"mother_id\"\n"
+#~ "                    update=\"false\"/>\n"
+#~ "\n"
+#~ "                <set name=\"kittens\"\n"
+#~ "                    inverse=\"true\"\n"
+#~ "                    order-by=\"litter_id\">\n"
+#~ "                        <key column=\"mother_id\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "\n"
+#~ "                <subclass name=\"DomesticCat\"\n"
+#~ "                    discriminator-value=\"D\">\n"
+#~ "\n"
+#~ "                        <property name=\"name\"\n"
+#~ "                            type=\"string\"/>\n"
+#~ "\n"
+#~ "                </subclass>\n"
+#~ "\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+#~ "    <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+#~ "]>\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"your.domain\">\n"
+#~ "    <class name=\"MyEntity\">\n"
+#~ "        <id name=\"id\" type=\"my-custom-id-type\">\n"
+#~ "            ...\n"
+#~ "        </id>\n"
+#~ "    <class>\n"
+#~ "    &types;\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+#~ "    <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+#~ "]>\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"your.domain\">\n"
+#~ "    <class name=\"MyEntity\">\n"
+#~ "        <id name=\"id\" type=\"my-custom-id-type\">\n"
+#~ "            ...\n"
+#~ "        </id>\n"
+#~ "    <class>\n"
+#~ "    &types;\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " />]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping\n"
+#~ "         schema=\"schemaName\"\n"
+#~ "         catalog=\"catalogName\"\n"
+#~ "         default-cascade=\"cascade_style\"\n"
+#~ "         default-access=\"field|property|ClassName\"\n"
+#~ "         default-lazy=\"true|false\"\n"
+#~ "         auto-import=\"true|false\"\n"
+#~ "         package=\"package.name\"\n"
+#~ " />]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tableName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        mutable=\"true|false\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        select-before-update=\"true|false\"\n"
+#~ "        polymorphism=\"implicit|explicit\"\n"
+#~ "        where=\"arbitrary sql where condition\"\n"
+#~ "        persister=\"PersisterClass\"\n"
+#~ "        batch-size=\"N\"\n"
+#~ "        optimistic-lock=\"none|version|dirty|all\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        check=\"arbitrary sql check condition\"\n"
+#~ "        rowid=\"rowid\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Summary\">\n"
+#~ "    <subselect>\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    </subselect>\n"
+#~ "    <synchronize table=\"item\"/>\n"
+#~ "    <synchronize table=\"bid\"/>\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Summary\">\n"
+#~ "    <subselect>\n"
+#~ "        select item.name, max(bid.amount), count(*)\n"
+#~ "        from item\n"
+#~ "        join bid on bid.item_id = item.id\n"
+#~ "        group by item.name\n"
+#~ "    </subselect>\n"
+#~ "    <synchronize table=\"item\"/>\n"
+#~ "    <synchronize table=\"bid\"/>\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        <generator class=\"generatorClass\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        unsaved-value=\"null|any|none|undefined|id_value\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "\n"
+#~ "        <generator class=\"generatorClass\"/>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+#~ "                <param name=\"table\">uid_table</param>\n"
+#~ "                <param name=\"column\">next_hi_value_column</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+#~ "                <param name=\"table\">uid_table</param>\n"
+#~ "                <param name=\"column\">next_hi_value_column</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+
+#~ msgid "increment"
+#~ msgstr "increment"
+
+#~ msgid "identity"
+#~ msgstr "identity"
+
+#~ msgid "sequence"
+#~ msgstr "sequence"
+
+#~ msgid "hilo"
+#~ msgstr "hilo"
+
+#~ msgid "seqhilo"
+#~ msgstr "seqhilo"
+
+#~ msgid "guid"
+#~ msgstr "guid"
+
+#~ msgid "native"
+#~ msgstr "native"
+
+#~ msgid "assigned"
+#~ msgstr "assigned"
+
+#~ msgid "select"
+#~ msgstr "select"
+
+#~ msgid "foreign"
+#~ msgstr "foreign"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"hilo\">\n"
+#~ "                <param name=\"table\">hi_value</param>\n"
+#~ "                <param name=\"column\">next_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"hilo\">\n"
+#~ "                <param name=\"table\">hi_value</param>\n"
+#~ "                <param name=\"column\">next_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"seqhilo\">\n"
+#~ "                <param name=\"sequence\">hi_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+#~ "        <generator class=\"seqhilo\">\n"
+#~ "                <param name=\"sequence\">hi_value</param>\n"
+#~ "                <param name=\"max_lo\">100</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">person_id_sequence</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">person_id_sequence</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value="
+#~ "\"0\">\n"
+#~ "        <generator class=\"identity\"/>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value="
+#~ "\"0\">\n"
+#~ "        <generator class=\"identity\"/>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"select\">\n"
+#~ "                <param name=\"key\">socialSecurityNumber</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+#~ "        <generator class=\"select\">\n"
+#~ "                <param name=\"key\">socialSecurityNumber</param>\n"
+#~ "        </generator>\n"
+#~ "</id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        <key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/>\n"
+#~ "        <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+#~ "\"column_name\"/>\n"
+#~ "        ......\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<composite-id\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        mapped=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\">\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "\n"
+#~ "        <key-property name=\"propertyName\" type=\"typename\" column="
+#~ "\"column_name\"/>\n"
+#~ "        <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+#~ "\"column_name\"/>\n"
+#~ "        ......\n"
+#~ "</composite-id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<composite-id>\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<composite-id>\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+#~ "        <key-property name=\"medicareNumber\"/>\n"
+#~ "        <key-property name=\"dependent\"/>\n"
+#~ "</composite-id>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<discriminator\n"
+#~ "        column=\"discriminator_column\"\n"
+#~ "        type=\"discriminator_type\"\n"
+#~ "        force=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary sql expression\"\n"
+#~ "/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<discriminator\n"
+#~ "    formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+#~ "\"\n"
+#~ "    type=\"integer\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<version\n"
+#~ "        column=\"version_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|negative|undefined\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<timestamp\n"
+#~ "        column=\"timestamp_column\"\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unsaved-value=\"null|undefined\"\n"
+#~ "        source=\"vm|db\"\n"
+#~ "        generated=\"never|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<property\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        generated=\"never|insert|always\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "/>]]>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"totalPrice\"\n"
+#~ "    formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, "
+#~ "Product p\n"
+#~ "                WHERE li.productId = p.productId\n"
+#~ "                AND li.customerId = customerId\n"
+#~ "                AND li.orderNumber = orderNumber )\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        column=\"column_name\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        formula=\"arbitrary SQL expression\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        unique_key=\"unique_key_id\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column="
+#~ "\"PRODUCT_ID\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" "
+#~ "column=\"SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"serialNumber\" unique=\"true\" type=\"string\" column="
+#~ "\"SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" "
+#~ "column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"product\" property-ref=\"serialNumber\" column="
+#~ "\"PRODUCT_SERIAL_NUMBER\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+#~ "\"OWNER_SSN\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        constrained=\"true|false\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        lazy=\"proxy|no-proxy|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name|@attribute-name|element/@attribute|.\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "        foreign-key=\"foreign_key_name\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
+#~ msgstr "&lt;one-to-one name=\"person\" class=\"Person\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained="
+#~ "\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"foreign\">\n"
+#~ "            <param name=\"property\">employee</param>\n"
+#~ "        </generator>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"foreign\"&gt;\n"
+#~ "            &lt;param name=\"property\"&gt;employee&lt;/param&gt;\n"
+#~ "        &lt;/generator&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;one-to-one name=\"employee\"\n"
+#~ "        class=\"Employee\"\n"
+#~ "        constrained=\"true\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID"
+#~ "\" unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref="
+#~ "\"person\"/>]]>"
+#~ msgstr ""
+#~ "&lt;one-to-one name\"employee\" class=\"Employee\" property-ref=\"person"
+#~ "\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
+#~ "        <property ... />\n"
+#~ "        <many-to-one ... />\n"
+#~ "        ......\n"
+#~ "</natural-id>]]>"
+#~ msgstr ""
+#~ "&lt;natural-id mutable=\"true|false\"/&gt;\n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        &lt;many-to-one ... /&gt;\n"
+#~ "        ......\n"
+#~ "&lt;/natural-id&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<component\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</component>]]>"
+#~ msgstr ""
+#~ "&lt;component \n"
+#~ "        name=\"propertyName\" \n"
+#~ "        class=\"className\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name|.\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/component&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<properties\n"
+#~ "        name=\"logicalName\"\n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "        <property ...../>\n"
+#~ "        <many-to-one .... />\n"
+#~ "        ........\n"
+#~ "</properties>]]>"
+#~ msgstr ""
+#~ "&lt;properties \n"
+#~ "        name=\"logicalName\" \n"
+#~ "        insert=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ...../&gt;\n"
+#~ "        &lt;many-to-one .... /&gt;\n"
+#~ "        ........\n"
+#~ "&lt;/properties&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"personNumber\"/>\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    <properties name=\"name\"\n"
+#~ "            unique=\"true\" update=\"false\">\n"
+#~ "        <property name=\"firstName\"/>\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"lastName\"/>\n"
+#~ "    </properties>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"personNumber\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;properties name=\"name\" \n"
+#~ "            unique=\"true\" update=\"false\"&gt;\n"
+#~ "        &lt;property name=\"firstName\"/&gt;\n"
+#~ "        &lt;property name=\"initial\"/&gt;\n"
+#~ "        &lt;property name=\"lastName\"/&gt;\n"
+#~ "    &lt;/properties&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"person\"\n"
+#~ "         class=\"Person\" property-ref=\"name\">\n"
+#~ "    <column name=\"firstName\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "    <column name=\"lastName\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"person\" \n"
+#~ "         class=\"Person\" property-ref=\"name\"&gt;\n"
+#~ "    &lt;column name=\"firstName\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "    &lt;column name=\"lastName\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</subclass>]]>"
+#~ msgstr ""
+#~ "&lt;subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        discriminator-value=\"discriminator_value\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        extends=\"SuperclassName\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <key .... >\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</joined-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;joined-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;key .... &gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/joined-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "        <class name=\"Cat\" table=\"CATS\">\n"
+#~ "                <id name=\"id\" column=\"uid\" type=\"long\">\n"
+#~ "                        <generator class=\"hilo\"/>\n"
+#~ "                </id>\n"
+#~ "                <property name=\"birthdate\" type=\"date\"/>\n"
+#~ "                <property name=\"color\" not-null=\"true\"/>\n"
+#~ "                <property name=\"sex\" not-null=\"true\"/>\n"
+#~ "                <property name=\"weight\"/>\n"
+#~ "                <many-to-one name=\"mate\"/>\n"
+#~ "                <set name=\"kittens\">\n"
+#~ "                        <key column=\"MOTHER\"/>\n"
+#~ "                        <one-to-many class=\"Cat\"/>\n"
+#~ "                </set>\n"
+#~ "                <joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\">\n"
+#~ "                    <key column=\"CAT\"/>\n"
+#~ "                    <property name=\"name\" type=\"string\"/>\n"
+#~ "                </joined-subclass>\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "        <class name=\"eg.Dog\">\n"
+#~ "                <!-- mapping for Dog could go here -->\n"
+#~ "        </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\"?&gt;\n"
+#~ "&lt;!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
+#~ "\"&gt;\n"
+#~ "\n"
+#~ "&lt;hibernate-mapping package=\"eg\"&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"Cat\" table=\"CATS\"&gt;\n"
+#~ "                &lt;id name=\"id\" column=\"uid\" type=\"long\"&gt;\n"
+#~ "                        &lt;generator class=\"hilo\"/&gt;\n"
+#~ "                &lt;/id&gt;\n"
+#~ "                &lt;property name=\"birthdate\" type=\"date\"/&gt;\n"
+#~ "                &lt;property name=\"color\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"sex\" not-null=\"true\"/&gt;\n"
+#~ "                &lt;property name=\"weight\"/&gt;\n"
+#~ "                &lt;many-to-one name=\"mate\"/&gt;\n"
+#~ "                &lt;set name=\"kittens\"&gt;\n"
+#~ "                        &lt;key column=\"MOTHER\"/&gt;\n"
+#~ "                        &lt;one-to-many class=\"Cat\"/&gt;\n"
+#~ "                &lt;/set&gt;\n"
+#~ "                &lt;joined-subclass name=\"DomesticCat\" table="
+#~ "\"DOMESTIC_CATS\"&gt;\n"
+#~ "                    &lt;key column=\"CAT\"/&gt;\n"
+#~ "                    &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "                &lt;/joined-subclass&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "        &lt;class name=\"eg.Dog\"&gt;\n"
+#~ "                &lt;!-- mapping for Dog could go here --&gt;\n"
+#~ "        &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\">\n"
+#~ "\n"
+#~ "        <property .... />\n"
+#~ "        .....\n"
+#~ "</union-subclass>]]>"
+#~ msgstr ""
+#~ "&lt;union-subclass\n"
+#~ "        name=\"ClassName\"\n"
+#~ "        table=\"tablename\"\n"
+#~ "        proxy=\"ProxyInterface\"\n"
+#~ "        lazy=\"true|false\"\n"
+#~ "        dynamic-update=\"true|false\"\n"
+#~ "        dynamic-insert=\"true|false\"\n"
+#~ "        schema=\"schema\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        extends=\"SuperclassName\"\n"
+#~ "        abstract=\"true|false\"\n"
+#~ "        persister=\"ClassName\"\n"
+#~ "        subselect=\"SQL expression\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"&gt;\n"
+#~ "\n"
+#~ "        &lt;property .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/union-subclass&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\">\n"
+#~ "\n"
+#~ "        <key ... />\n"
+#~ "\n"
+#~ "        <property ... />\n"
+#~ "        ...\n"
+#~ "</join>]]>"
+#~ msgstr ""
+#~ "&lt;join\n"
+#~ "        table=\"tablename\"\n"
+#~ "        schema=\"owner\"\n"
+#~ "        catalog=\"catalog\"\n"
+#~ "        fetch=\"join|select\"\n"
+#~ "        inverse=\"true|false\"\n"
+#~ "        optional=\"true|false\"&gt;\n"
+#~ "        \n"
+#~ "        &lt;key ... /&gt;\n"
+#~ "        \n"
+#~ "        &lt;property ... /&gt;\n"
+#~ "        ...\n"
+#~ "&lt;/join&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    table=\"PERSON\">\n"
+#~ "\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
+#~ "\n"
+#~ "    <join table=\"ADDRESS\">\n"
+#~ "        <key column=\"ADDRESS_ID\"/>\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </join>\n"
+#~ "    ...]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"\n"
+#~ "    table=\"PERSON\"&gt;\n"
+#~ "\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;...&lt;/id&gt;\n"
+#~ "\n"
+#~ "    &lt;join table=\"ADDRESS\"&gt;\n"
+#~ "        &lt;key column=\"ADDRESS_ID\"/&gt;\n"
+#~ "        &lt;property name=\"address\"/&gt;\n"
+#~ "        &lt;property name=\"zip\"/&gt;\n"
+#~ "        &lt;property name=\"country\"/&gt;\n"
+#~ "    &lt;/join&gt;\n"
+#~ "    ..."
+
+#, fuzzy
+#~ msgid "<title>Key</title>"
+#~ msgstr "<title>键(key)</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;key\n"
+#~ "        column=\"columnname\"\n"
+#~ "        on-delete=\"noaction|cascade\"\n"
+#~ "        property-ref=\"propertyName\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        update=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/>]]>"
+#~ msgstr ""
+#~ "&lt;column\n"
+#~ "        name=\"column_name\"\n"
+#~ "        length=\"N\"\n"
+#~ "        precision=\"N\"\n"
+#~ "        scale=\"N\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        unique-key=\"multicolumn_unique_key_name\"\n"
+#~ "        index=\"index_name\"\n"
+#~ "        sql-type=\"sql_type_name\"\n"
+#~ "        check=\"SQL expression\"\n"
+#~ "        default=\"SQL expression\"/&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<formula>SQL expression</formula>]]>"
+#~ msgstr "&lt;formula&gt;SQL expression&lt;/formula&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\">\n"
+#~ "    <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
+#~ "    <formula>'MAILING'</formula>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"homeAddress\" class=\"Address\"\n"
+#~ "        insert=\"false\" update=\"false\"&gt;\n"
+#~ "    &lt;column name=\"person_id\" not-null=\"true\" length=\"10\"/&gt;\n"
+#~ "    &lt;formula&gt;'MAILING'&lt;/formula&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
+#~ msgstr "&lt;import class=\"java.lang.Object\" rename=\"Universe\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "&lt;import\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        rename=\"ShortName\"\n"
+#~ "/&gt;"
+
+#, fuzzy
+#~ msgid "<title>Any</title>"
+#~ msgstr "<title>any</title>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
+#~ "    <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
+#~ "    <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
+#~ "    <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
+#~ "    <column name=\"table_name\"/>\n"
+#~ "    <column name=\"id\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"being\" id-type=\"long\" meta-type=\"string\"&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_HUMAN\" class=\"Human\"/&gt;\n"
+#~ "    &lt;meta-value value=\"TBL_ALIEN\" class=\"Alien\"/&gt;\n"
+#~ "    &lt;column name=\"table_name\"/&gt;\n"
+#~ "    &lt;column name=\"id\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ ">\n"
+#~ "        <meta-value ... />\n"
+#~ "        <meta-value ... />\n"
+#~ "        .....\n"
+#~ "        <column .... />\n"
+#~ "        <column .... />\n"
+#~ "        .....\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any\n"
+#~ "        name=\"propertyName\"\n"
+#~ "        id-type=\"idtypename\"\n"
+#~ "        meta-type=\"metatypename\"\n"
+#~ "        cascade=\"cascade_style\"\n"
+#~ "        access=\"field|property|ClassName\"\n"
+#~ "        optimistic-lock=\"true|false\"\n"
+#~ "&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        &lt;meta-value ... /&gt;\n"
+#~ "        .....\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        &lt;column .... /&gt;\n"
+#~ "        .....\n"
+#~ "&lt;/any&gt;"
+
+#~ msgid "string"
+#~ msgstr "string"
+
+#, fuzzy
+#~ msgid "class"
+#~ msgstr "子类(subclass)"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "text"
+#~ msgstr "text"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "clob, blob"
+#~ msgstr "clob, blob"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\">\n"
+#~ "    <column name=\"first_string\"/>\n"
+#~ "    <column name=\"second_string\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"twoStrings\" type=\"org.hibernate.test."
+#~ "DoubleStringType\"&gt;\n"
+#~ "    &lt;column name=\"first_string\"/&gt;\n"
+#~ "    &lt;column name=\"second_string\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"priority\">\n"
+#~ "    <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
+#~ "        <param name=\"default\">0</param>\n"
+#~ "    </type>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"priority\"&gt;\n"
+#~ "    &lt;type name=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\"&gt;\n"
+#~ "        &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "    &lt;/type&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType"
+#~ "\" name=\"default_zero\">\n"
+#~ "    <param name=\"default\">0</param>\n"
+#~ "</typedef>]]>"
+#~ msgstr ""
+#~ "&lt;typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" "
+#~ "name=\"default_zero\"&gt;\n"
+#~ "    &lt;param name=\"default\"&gt;0&lt;/param&gt;\n"
+#~ "&lt;/typedef&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
+#~ msgstr "&lt;property name=\"priority\" type=\"default_zero\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
+#~ "        entity-name=\"CurrentContract\">\n"
+#~ "    ...\n"
+#~ "    <set name=\"history\" inverse=\"true\"\n"
+#~ "            order-by=\"effectiveEndDate desc\">\n"
+#~ "        <key column=\"currentContractId\"/>\n"
+#~ "        <one-to-many entity-name=\"HistoricalContract\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Contract\" table=\"ContractHistory\"\n"
+#~ "        entity-name=\"HistoricalContract\">\n"
+#~ "    ...\n"
+#~ "    <many-to-one name=\"currentContract\"\n"
+#~ "            column=\"currentContractId\"\n"
+#~ "            entity-name=\"CurrentContract\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Contract\" table=\"Contracts\" \n"
+#~ "        entity-name=\"CurrentContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;set name=\"history\" inverse=\"true\" \n"
+#~ "            order-by=\"effectiveEndDate desc\"&gt;\n"
+#~ "        &lt;key column=\"currentContractId\"/&gt;\n"
+#~ "        &lt;one-to-many entity-name=\"HistoricalContract\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"Contract\" table=\"ContractHistory\" \n"
+#~ "        entity-name=\"HistoricalContract\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;many-to-one name=\"currentContract\" \n"
+#~ "            column=\"currentContractId\" \n"
+#~ "            entity-name=\"CurrentContract\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
+#~ "    <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/"
+#~ "></id>\n"
+#~ "    <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"LineItem\" table=\"`Line Item`\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"`Item Id`\"/&gt;&lt;generator class="
+#~ "\"assigned\"/&gt;&lt;/id&gt;\n"
+#~ "    &lt;property name=\"itemNumber\" column=\"`Item #`\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * @hibernate.class\n"
+#~ " *  table=\"CATS\"\n"
+#~ " */\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "\n"
+#~ "    /*\n"
+#~ "     * @hibernate.id\n"
+#~ "     *  generator-class=\"native\"\n"
+#~ "     *  column=\"CAT_ID\"\n"
+#~ "     */\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.many-to-one\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     */\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"BIRTH_DATE\"\n"
+#~ "     */\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"WEIGHT\"\n"
+#~ "     */\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"COLOR\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     */\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "    /**\n"
+#~ "     * @hibernate.set\n"
+#~ "     *  inverse=\"true\"\n"
+#~ "     *  order-by=\"BIRTH_DATE\"\n"
+#~ "     * @hibernate.collection-key\n"
+#~ "     *  column=\"PARENT_ID\"\n"
+#~ "     * @hibernate.collection-one-to-many\n"
+#~ "     */\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    /**\n"
+#~ "     * @hibernate.property\n"
+#~ "     *  column=\"SEX\"\n"
+#~ "     *  not-null=\"true\"\n"
+#~ "     *  update=\"false\"\n"
+#~ "     */\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set<Order> orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "@Entity(access = AccessType.FIELD)\n"
+#~ "public class Customer implements Serializable {\n"
+#~ "\n"
+#~ "    @Id;\n"
+#~ "    Long id;\n"
+#~ "\n"
+#~ "    String firstName;\n"
+#~ "    String lastName;\n"
+#~ "    Date birthday;\n"
+#~ "\n"
+#~ "    @Transient\n"
+#~ "    Integer age;\n"
+#~ "\n"
+#~ "    @Embedded\n"
+#~ "    private Address homeAddress;\n"
+#~ "\n"
+#~ "    @OneToMany(cascade=CascadeType.ALL)\n"
+#~ "    @JoinColumn(name=\"CUSTOMER_ID\")\n"
+#~ "    Set&lt;Order&gt; orders;\n"
+#~ "\n"
+#~ "    // Getter/setter and business methods\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <create>CREATE TRIGGER my_trigger ...</create>\n"
+#~ "        <drop>DROP TRIGGER my_trigger</drop>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;create&gt;CREATE TRIGGER my_trigger ...&lt;/create&gt;\n"
+#~ "        &lt;drop&gt;DROP TRIGGER my_trigger&lt;/drop&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    ...\n"
+#~ "    <database-object>\n"
+#~ "        <definition class=\"MyTriggerDefinition\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle9iDialect\"/>\n"
+#~ "        <dialect-scope name=\"org.hibernate.dialect.Oracle10gDialect\"/>\n"
+#~ "    </database-object>\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;database-object&gt;\n"
+#~ "        &lt;definition class=\"MyTriggerDefinition\"/&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/"
+#~ "&gt;\n"
+#~ "        &lt;dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/"
+#~ "&gt;\n"
+#~ "    &lt;/database-object&gt;\n"
+#~ "&lt;/hibernate-mapping&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/batch.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/batch.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/batch.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,416 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 08:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch processing"
+msgstr "批量处理(Batch processing)"
+
+#. Tag: para
+#, no-c-format
+msgid "A naive approach to inserting 100,000 rows in the database using Hibernate might look like this:"
+msgstr "使用 Hibernate 将 100,000 条记录插入到数据库的一个很天真的做法可能是这样的:"
+
+#. Tag: para
+#, no-c-format
+msgid "This would fall over with an <literal>OutOfMemoryException</literal> somewhere around the 50,000th row. That is because Hibernate caches all the newly inserted <literal>Customer</literal> instances in the session-level cache. In this chapter we will show you how to avoid this problem."
+msgstr "这段程序大概运行到 50,000 条记录左右会失败并抛出<literal>内存溢出异常(OutOfMemoryException)</literal> 。这是因为 Hibernate 把所有新插入的<literal>客户(Customer)</literal>实例在 session 级别的缓存区进行了缓存的缘故。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you are undertaking batch processing you will need to enable the use of JDBC batching. This is absolutely essential if you want to achieve optimal performance. Set the JDBC batch size to a reasonable number (10-50, for example):"
+msgstr "我们会在本章告诉你如何避免此类问题。首先,如果你要执行批量处理并且想要达到一个理想的性能,那么使用 JDBC 的批量(batching)功能是至关重要。将 JDBC 的批量抓取数量(batch size)参数设置到一个合适值(比如,10 - 50 之间):"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate disables insert batching at the JDBC level transparently if you use an <literal>identity</literal> identifier generator."
+msgstr "注意,假若你使用了 <literal>identiy</literal> 标识符生成器,Hibernate 在 JDBC 级别透明的关闭插入语句的批量执行。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can also do this kind of work in a process where interaction with the second-level cache is completely disabled:"
+msgstr "你也可能想在执行批量处理时完全关闭二级缓存:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not absolutely necessary, since we can explicitly set the <literal>CacheMode</literal> to disable interaction with the second-level cache."
+msgstr "但是,这不是绝对必须的,因为我们可以显式设置 <literal>CacheMode</literal> 来关闭与二级缓存的交互。"
+
+#. Tag: title
+#, no-c-format
+msgid "Batch inserts"
+msgstr "批量插入(Batch inserts)"
+
+#. Tag: para
+#, no-c-format
+msgid "When making new objects persistent <literal>flush()</literal> and then <literal>clear()</literal> the session regularly in order to control the size of the first-level cache."
+msgstr "如果要将很多对象持久化,你必须通过经常的调用 <literal>flush()</literal> 以及稍后调用  <literal>clear()</literal> 来控制第一级缓存的大小。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Batch updates"
+msgstr "批量更新(Batch updates)"
+
+#. Tag: para
+#, no-c-format
+msgid "For retrieving and updating data, the same ideas apply. In addition, you need to use <literal>scroll()</literal> to take advantage of server-side cursors for queries that return many rows of data."
+msgstr "此方法同样适用于检索和更新数据。此外,在进行会返回很多行数据的查询时,你需要使用 <literal>scroll()</literal> 方法以便充分利用服务器端游标所带来的好处。 "
+
+#. Tag: title
+#, no-c-format
+msgid "The StatelessSession interface"
+msgstr "StatelessSession(无状态 session)接口"
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, Hibernate provides a command-oriented API that can be used for streaming data to and from the database in the form of detached objects. A <literal>StatelessSession</literal> has no persistence context associated with it and does not provide many of the higher-level life cycle semantics. In particular, a stateless session does not implement a first-level cache nor interact with any second-level or query cache. It does not implement transactional write-behind or automatic dirty checking. Operations performed using a stateless session never cascade to associated instances. Collections are ignored by a stateless session. Operations performed via a stateless session bypass Hibernate's event model and interceptors. Due to the lack of a first-level cache, Stateless sessions are vulnerable to data aliasing effects. A stateless session is a lower-level abstraction that is much closer to the underlying JDBC."
+msgstr "作为选择,Hibernate 提供了基于命令的 API,可以用 detached object 的形式把数据以流的方法加入到数据库,或从数据库输出。<literal>StatelessSession</literal> 没有持久化上下文,也不提供多少高层的生命周期语义。特别是,无状态 session 不实现第一级 cache,也不和第二级缓存,或者查询缓存交互。它不实现事务化写,也不实现脏数据检查。用 stateless session 进行的操作甚至不级联到关联实例。stateless session 忽略集合类(Collections)。通过 stateless session 进行的操作不触发 Hibernate 的事件模型和拦截器。无状态 session 对数据的混淆现象免疫,因为它没有第一级缓存。无状态 session 是低层的抽象,和低层 JDBC 相当接近。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In this code example, the <literal>Customer</literal> instances returned by the query are immediately detached. They are never associated with any persistence context."
+msgstr "注意在上面的例子中,查询返回的 <literal>Customer</literal> 实例立即被脱管(detach)。它们与任何持久化上下文都没有关系。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>insert(), update()</literal> and <literal>delete()</literal> operations defined by the <literal>StatelessSession</literal> interface are considered to be direct database row-level operations. They result in the immediate execution of a SQL <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. They have different semantics to the <literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> operations defined by the <literal>Session</literal> interface."
+msgstr "<literal>StatelessSession</literal> 接口定义的 <literal>insert(), update()</literal> 和 <literal>delete()</literal> 操作是直接的数据库行级别操作,其结果是立刻执行一条 <literal>INSERT, UPDATE</literal> 或 <literal>DELETE</literal> 语句。因此,它们的语义和 <literal>Session</literal> 接口定义的 <literal>save(), saveOrUpdate()</literal> 和<literal>delete()</literal> 操作有很大的不同。 "
+
+#. Tag: title
+#, no-c-format
+msgid "DML-style operations"
+msgstr "DML(数据操作语言)风格的操作(DML-style operations)"
+
+#. Tag: para
+#, no-c-format
+msgid "As already discussed, automatic and transparent object/relational mapping is concerned with the management of the object state. The object state is available in memory. This means that manipulating data directly in the database (using the SQL <literal>Data Manipulation Language</literal> (DML) the statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>) will not affect in-memory state. However, Hibernate provides methods for bulk SQL-style DML statement execution that is performed through the Hibernate Query Language (<link linkend=\"queryhql\">HQL</link>)."
+msgstr "就像已经讨论的那样,自动和透明的对象/关系映射(object/relational mapping)关注于管理对象的状态。这就意味着对象的状态存在于内存,因此直接操作(使用 SQL <literal>Data Manipulation Language</literal>(DML,数据操作语言)语句 :<literal>INSERT</literal> ,<literal>UPDATE</literal> 和 <literal>DELETE</literal>) 数据库中的数据将不会影响内存中的对象状态和对象数据。不过,Hibernate 提供通过 Hibernate 查询语言(<link linkend=\"queryhql\">HQL</link>)来执行大批量 SQL 风格的 DML 语句的方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>."
+msgstr "<literal>UPDATE</literal> 和 <literal>DELETE</literal> 语句的伪语法为:<literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Some points to note:"
+msgstr "要注意的事项:"
+
+#. Tag: para
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional"
+msgstr "在 FROM 子句(from-clause)中,FROM 关键字是可选的"
+
+#. Tag: para
+#, no-c-format
+msgid "There can only be a single entity named in the from-clause. It can, however, be aliased. If the entity name is aliased, then any property references must be qualified using that alias. If the entity name is not aliased, then it is illegal for any property references to be qualified."
+msgstr "在 FROM 子句(from-clause)中只能有一个实体名,它可以是别名。如果实体名是别名,那么任何被引用的属性都必须加上此别名的前缀;如果不是别名,那么任何有前缀的属性引用都是非法的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "No <link linkend=\"queryhql-joins-forms\">joins</link>, either implicit or explicit, can be specified in a bulk HQL query. Sub-queries can be used in the where-clause, where the subqueries themselves may contain joins."
+msgstr "不能在大批量 HQL 语句中使用 <link linkend=\"queryhql-joins-forms\">joins</link> 连接(显式或者隐式的都不行)。不过在 WHERE 子句中可以使用子查询。可以在 where 子句中使用子查询,子查询本身可以包含 join。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr "整个 WHERE 子句是可选的。"
+
+#. Tag: para
+#, no-c-format
+msgid "As an example, to execute an HQL <literal>UPDATE</literal>, use the <literal>Query.executeUpdate()</literal> method. The method is named for those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>:"
+msgstr "举个例子,使用 <literal>Query.executeUpdate()</literal> 方法执行一个 HQL <literal>UPDATE</literal>语句(方法命名是来源于 JDBC 的 <literal>PreparedStatement.executeUpdate()</literal>): "
+
+#. Tag: para
+#, no-c-format
+msgid "In keeping with the EJB3 specification, HQL <literal>UPDATE</literal> statements, by default, do not effect the <link linkend=\"mapping-declaration-version\">version</link> or the <link linkend=\"mapping-declaration-timestamp\">timestamp</link> property values for the affected entities. However, you can force Hibernate to reset the <literal>version</literal> or <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>. This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> keyword."
+msgstr "HQL <literal>UPDATE</literal> 语句,默认不会影响更新实体的 <link linkend=\"mapping-declaration-version\">version</link> 或 the <link linkend=\"mapping-declaration-timestamp\">timestamp</link> 属性值。这和 EJB3 规范是一致的。但是,通过使用 <literal>versioned update</literal>,你可以强制 Hibernate 正确的重置<literal>version</literal> 或者 <literal>timestamp</literal> 属性值。这通过在 <literal>UPDATE</literal> 关键字后面增加 <literal>VERSIONED</literal> 关键字来实现的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Custom version types, <literal>org.hibernate.usertype.UserVersionType</literal>, are not allowed in conjunction with a <literal>update versioned</literal> statement."
+msgstr "注意,自定义的版本类型(<literal>org.hibernate.usertype.UserVersionType</literal>)不允许和 <literal>update versioned</literal> 语句联用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To execute an HQL <literal>DELETE</literal>, use the same <literal>Query.executeUpdate()</literal> method:"
+msgstr "执行一个 HQL <literal>DELETE</literal>,同样使用 <literal>Query.executeUpdate()</literal> 方法:"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>int</literal> value returned by the <literal>Query.executeUpdate()</literal> method indicates the number of entities effected by the operation. This may or may not correlate to the number of rows effected in the database. An HQL 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 "由 <literal>Query.executeUpdate()</literal> 方法返回的<literal>整型</literal>值表明了受此操作影响的记录数量。注意这个数值可能与数据库中被(最后一条 SQL 语句)影响了的“行”数有关,也可能没有。一个大批量 HQL 操作可能导致多条实际的SQL语句被执行,举个例子,对 joined-subclass 映射方式的类进行的此类操作。这个返回值代表了实际被语句影响了的记录数量。在那个 joined-subclass 的例子中, 对一个子类的删除实际上可能不仅仅会删除子类映射到的表而且会影响“根”表,还有可能影响与之有继承关系的 joined-subclass 映射方式的子类的表。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The pseudo-syntax for <literal>INSERT</literal> statements is: <literal>INSERT INTO EntityName properties_list select_statement</literal>. Some points to note:"
+msgstr "<literal>INSERT</literal> 语句的伪码是:<literal>INSERT INTO EntityName properties_list select_statement</literal>。要注意的是:"
+
+#. Tag: para
+#, no-c-format
+msgid "Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form."
+msgstr "只支持 INSERT INTO ... SELECT ... 形式,不支持 INSERT INTO ... VALUES ... 形式。"
+
+#. Tag: para
+#, no-c-format
+msgid "The properties_list is analogous to the <literal>column specification</literal> in the SQL <literal>INSERT</literal> statement. For entities involved in mapped inheritance, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed and subclass properties do not make sense. In other words, <literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr "properties_list 和 SQL <literal>INSERT</literal> 语句中的<literal>字段定义(column speficiation)</literal>类似。对参与继承树映射的实体而言,只有直接定义在给定的类级别的属性才能直接在 properties_list 中使用。超类的属性不被支持;子类的属性无意义。换句话说,<literal>INSERT</literal> 天生不支持多态性。"
+
+#. Tag: para
+#, no-c-format
+msgid "select_statement can be any valid HQL select query, with the caveat that the return types must match the types expected by the insert. Currently, this is checked during query compilation rather than allowing the check to relegate to the database. This might, however, cause problems between Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> as opposed to <emphasis>equal</emphasis>. This might cause issues with mismatches between a property defined as a <literal>org.hibernate.type.DateType</literal> and a property defined as a <literal>org.hibernate.type.TimestampType</literal>, even though the database might not make a distinction or might be able to handle the conversion."
+msgstr "select_statement 可以是任何合法的 HQL 选择查询,不过要保证返回类型必须和要插入的类型完全匹配。目前,这一检查是在查询编译的时候进行的,而不是把它交给数据库。注意,在Hibernate<literal>Type</literal> 间如果只是<emphasis>等价(equivalent)</emphasis>而非<emphasis>相等(equal)</emphasis>,会导致问题。定义为 <literal>org.hibernate.type.DateType</literal> 和 <literal>org.hibernate.type.TimestampType</literal> 的两个属性可能会产生类型不匹配错误,虽然数据库级可能不加区分或者可以处理这种转换。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For the id property, the insert statement gives you two options. You can either explicitly specify the id property in the properties_list, in which case its value is taken from the corresponding select expression, or omit it from the properties_list, in which case a generated value is used. This latter option is only available when using id generators that operate in the database; attempting to use this option with any \"in memory\" type generators will cause an exception during parsing. For the purposes of this discussion, in-database generators are considered to be <literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) and any implementers of <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. The most notable exception here is <literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used because it does not expose a selectable way to get its values."
+msgstr "对 id 属性来说,insert 语句给你两个选择。你可以明确地在 properties_list 表中指定 id 属性(这样它的值是从对应的 select 表达式中获得),或者在 properties_list 中省略它(此时使用生成指)。后一种选择只有当使用在数据库中生成值的 id 产生器时才能使用;如果是“内存”中计算的类型生成器,在解析时会抛出一个异常。注意,为了说明这一问题,数据库产生值的生成器是 <literal>org.hibernate.id.SequenceGenerator</literal>(和它的子类),以及任何 <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal> 接口的实现。这儿最值得注意的意外是 <literal>org.hibernate.id.TableHiLoGenerator</literal>,它不能在此使用,因为它没有得到其值的途径。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For properties mapped as either <literal>version</literal> or <literal>timestamp</literal>, the insert statement gives you two options. You can either specify the property in the properties_list, in which case its value is taken from the corresponding select expressions, or omit it from the properties_list, in which case the <literal>seed value</literal> defined by the <literal>org.hibernate.type.VersionType</literal> is used."
+msgstr "对映射为 <literal>version</literal> 或 <literal>timestamp</literal> 的属性来说,insert 语句也给你两个选择,你可以在 properties_list 表中指定(此时其值从对应的 select 表达式中获得),或者在 properties_list 中省略它(此时,使用在 <literal>org.hibernate.type.VersionType</literal> 中定义的 <literal>seed value(种子值)</literal>)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example of an HQL <literal>INSERT</literal> statement execution:"
+msgstr "下面是一个执行 HQL <literal>INSERT</literal> 语句的例子:"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "}\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+#~ msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+
+#~ msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+#~ msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "for ( int i=0; i<100000; i++ ) {\n"
+#~ "    Customer customer = new Customer(.....);\n"
+#~ "    session.save(customer);\n"
+#~ "    if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+#~ "        //flush a batch of inserts and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .setCacheMode(CacheMode.IGNORE)\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "int count=0;\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    if ( ++count % 20 == 0 ) {\n"
+#~ "        //flush a batch of updates and release memory:\n"
+#~ "        session.flush();\n"
+#~ "        session.clear();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession"
+#~ "();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "   \n"
+#~ "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+#~ "    .scroll(ScrollMode.FORWARD_ONLY);\n"
+#~ "while ( customers.next() ) {\n"
+#~ "    Customer customer = (Customer) customers.get(0);\n"
+#~ "    customer.updateStuff(...);\n"
+#~ "    session.update(customer);\n"
+#~ "}\n"
+#~ "   \n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlUpdate = \"update Customer c set c.name = :newName where c.name "
+#~ "= :oldName\";\n"
+#~ "// or String hqlUpdate = \"update Customer set name = :newName where name "
+#~ "= :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "String hqlVersionedUpdate = \"update versioned Customer set name = :"
+#~ "newName where name = :oldName\";\n"
+#~ "int updatedEntities = s.createQuery( hqlUpdate )\n"
+#~ "        .setString( \"newName\", newName )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+#~ "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+#~ "int deletedEntities = s.createQuery( hqlDelete )\n"
+#~ "        .setString( \"oldName\", oldName )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessionFactory.openSession();\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "String hqlInsert = \"insert into DelinquentAccount (id, name) select c."
+#~ "id, c.name from Customer c where ...\";\n"
+#~ "int createdEntities = s.createQuery( hqlInsert )\n"
+#~ "        .executeUpdate();\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/best_practices.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/best_practices.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/best_practices.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,211 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 10:01+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Best Practices"
+msgstr "最佳实践(Best Practices)"
+
+#. Tag: term
+#, no-c-format
+msgid "Write fine-grained classes and map them using <literal>&lt;component&gt;</literal>:"
+msgstr "设计细颗粒度的持久类并且使用 <literal>&lt;component&gt;</literal> 来实现映射:"
+
+#. Tag: para
+#, no-c-format
+msgid "Use an <literal>Address</literal> class to encapsulate <literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>. This encourages code reuse and simplifies refactoring."
+msgstr "使用一个 <literal>Address</literal> 持久类来封装 <literal>street</literal>,<literal>suburb</literal>,<literal>state</literal>,<literal>postcode</literal>。 这将有利于代码重用和简化代码重构(refactoring)的工作。"
+
+#. Tag: term
+#, no-c-format
+msgid "Declare identifier properties on persistent classes:"
+msgstr "对持久类声明标识符属性(identifier properties):"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate makes identifier properties optional. There are a range of reasons why you should use them. We recommend that identifiers be 'synthetic', that is, generated with no business meaning."
+msgstr "Hibernate 中标识符属性是可选的,不过有很多原因来说明你应该使用标识符属性。我们建议标识符应该是“人造”的(自动生成,不涉及业务含义)。 "
+
+#. Tag: term
+#, no-c-format
+msgid "Identify natural keys:"
+msgstr "使用自然键(natural keys)标识:"
+
+#. Tag: para
+#, no-c-format
+msgid "Identify natural keys for all entities, and map them using <literal>&lt;natural-id&gt;</literal>. Implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the properties that make up the natural key."
+msgstr "对所有的实体都标识出自然键,用 <literal>&lt;natural-id&gt;</literal> 进行映射。实现 <literal>equals()</literal> 和 <literal>hashCode()</literal>,在其中用组成自然键的属性进行比较。"
+
+#. Tag: term
+#, no-c-format
+msgid "Place each class mapping in its own file:"
+msgstr "为每个持久类写一个映射文件:"
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use a single monolithic mapping document. Map <literal>com.eg.Foo</literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes sense, particularly in a team environment."
+msgstr "不要把所有的持久类映射都写到一个大文件中。把 <literal>com.eg.Foo</literal> 映射到 <literal>com/eg/Foo.hbm.xml</literal> 中。在团队开发环境中,这一点尤其重要。"
+
+#. Tag: term
+#, no-c-format
+msgid "Load mappings as resources:"
+msgstr "把映射文件作为资源加载:"
+
+#. Tag: para
+#, no-c-format
+msgid "Deploy the mappings along with the classes they map."
+msgstr "把映射文件和他们的映射类放在一起进行部署。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider externalizing query strings:"
+msgstr "考虑把查询字符串放在程序外面:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is recommended if your queries call non-ANSI-standard SQL functions. Externalizing the query strings to mapping files will make the application more portable."
+msgstr "如果你的查询中调用了非 ANSI 标准的 SQL 函数,那么这条实践经验对你适用。把查询字符串放在映射文件中可以让程序具有更好的可移植性。 "
+
+#. Tag: term
+#, no-c-format
+msgid "Use bind variables."
+msgstr "使用绑定变量"
+
+#. Tag: para
+#, no-c-format
+msgid "As in JDBC, always replace non-constant values by \"?\". Do not use string manipulation to bind a non-constant value in a query. You should also consider using named parameters in queries."
+msgstr "就像在 JDBC 编程中一样,应该总是用占位符 \"?\" 来替换非常量值,不要在查询中用字符串值来构造非常量值。你也应该考虑在查询中使用命名参数。"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not manage your own JDBC connections:"
+msgstr "不要自己来管理 JDBC 连接:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows the application to manage JDBC connections, but his approach should be considered a last-resort. If you cannot use the built-in connection providers, consider providing your own implementation of <literal>org.hibernate.connection.ConnectionProvider</literal>."
+msgstr "Hibernate 允许应用程序自己来管理 JDBC 连接,但是应该作为最后没有办法的办法。如果你不能使用 Hibernate 内建的 connections providers,那么考虑实现自己来实现 <literal>org.hibernate.connection.ConnectionProvider</literal>。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider using a custom type:"
+msgstr "考虑使用用户自定义类型(custom type):"
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose you have a Java type from a library that needs to be persisted but does not provide the accessors needed to map it as a component. You should consider implementing <literal>org.hibernate.UserType</literal>. This approach frees the application code from implementing transformations to/from a Hibernate type."
+msgstr "假设你有一个 Java 类型,来自某些类库,需要被持久化,但是该类没有提供映射操作需要的存取方法。那么你应该考虑实现 <literal>org.hibernate.UserType</literal> 接口。这种办法使程序代码写起来更加自如,不再需要考虑类与 Hibernate type 之间的相互转换。 "
+
+#. Tag: term
+#, no-c-format
+msgid "Use hand-coded JDBC in bottlenecks:"
+msgstr "在性能瓶颈的地方使用硬编码的 JDBC:"
+
+#. Tag: para
+#, no-c-format
+msgid "In performance-critical areas of the system, some kinds of operations might benefit from direct JDBC. Do not assume, however, that JDBC is necessarily faster. Please wait until you <emphasis>know</emphasis> something is a bottleneck. If you need to use direct JDBC, you can open a Hibernate <literal>Session</literal>, wrap your JDBC operation as a <literal>org.hibernate.jdbc.Work</literal> object and using that JDBC connection. This way you can still use the same transaction strategy and underlying connection provider."
+msgstr "在系统中对性能要求很严格的一些部分,某些操作也许直接使用 JDBC 会更好。但是请先<emphasis>确认</emphasis>这的确是一个瓶颈,并且不要想当然认为 JDBC 一定会更快。如果确实需要直接使用 JDBC,那么最好打开一个 Hibernate <literal>Session</literal> 然后将 JDBC 操作包裹为 <literal>org.hibernate.jdbc.Work</literal> 并使用 JDBC 连接。按照这种办法你仍然可以使用同样的 transaction 策略和底层的 connection provider。 "
+
+#. Tag: term
+#, no-c-format
+msgid "Understand <literal>Session</literal> flushing:"
+msgstr "理解 <literal>Session</literal> 冲刷(flushing):"
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes the Session synchronizes its persistent state with the database. Performance will be affected if this process occurs too often. You can sometimes minimize unnecessary flushing by disabling automatic flushing, or even by changing the order of queries and other operations within a particular transaction."
+msgstr "Session 会不时的向数据库同步持久化状态,如果这种操作进行的过于频繁,性能会受到一定的影响。有时候你可以通过禁止自动 flushing,尽量最小化非必要的 flushing 操作,或者更进一步,在一个特定的 transaction 中改变查询和其它操作的顺序。 "
+
+#. Tag: term
+#, no-c-format
+msgid "In a three tiered architecture, consider using detached objects:"
+msgstr "在三层结构中,考虑使用脱管对象(detached object):"
+
+#. Tag: para
+#, no-c-format
+msgid "When using a servlet/session bean architecture, you can pass persistent objects loaded in the session bean to and from the servlet/JSP layer. Use a new session to service each request. Use <literal>Session.merge()</literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the database."
+msgstr "当使用一个 servlet / session bean 类型的架构的时候, 你可以把已加载的持久对象在 session bean 层和 servlet / JSP 层之间来回传递。使用新的 session 来为每个请求服务,使用 <literal>Session.merge()</literal> 或者 <literal>Session.saveOrUpdate()</literal> 来与数据库同步。 "
+
+#. Tag: term
+#, no-c-format
+msgid "In a two tiered architecture, consider using long persistence contexts:"
+msgstr "在两层结构中,考虑使用长持久上下文(long persistence contexts):"
+
+#. Tag: para
+#, no-c-format
+msgid "Database Transactions have to be as short as possible for best scalability. However, it is often necessary to implement long running <emphasis>application transactions</emphasis>, a single unit-of-work from the point of view of a user. An application transaction might span several client request/response cycles. It is common to use detached objects to implement application transactions. An appropriate alternative in a two tiered architecture, is to maintain a single open persistence contact session for the whole life cycle of the application transaction. Then simply disconnect from the JDBC connection at the end of each request and reconnect at the beginning of the subsequent request. Never share a single session across more than one application transaction or you will be working with stale data."
+msgstr "为了得到最佳的可伸缩性,数据库事务(Database Transaction)应该尽可能的短。但是,程序常常需要实现长时间运行的<emphasis>“应用程序事务(Application Transaction)”</emphasis>,包含一个从用户的观点来看的原子操作。这个应用程序事务可能跨越多次从用户请求到得到反馈的循环。用脱管对象(与 session 脱离的对象)来实现应用程序事务是常见的。或者,尤其在两层结构中,把 Hibernate Session 从 JDBC 连接中脱离开,下次需要用的时候再连接上。绝不要把一个 Session 用在多个应用程序事务(Application Transaction)中,否则你的数据可能会过期失效。"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not treat exceptions as recoverable:"
+msgstr "不要把异常看成可恢复的:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is more of a necessary practice than a \"best\" practice. When an exception occurs, roll back the <literal>Transaction</literal> and close the <literal>Session</literal>. If you do not do this, Hibernate cannot guarantee that in-memory state accurately represents the persistent state. For example, do not use <literal>Session.load()</literal> to determine if an instance with the given identifier exists on the database; use <literal>Session.get()</literal> or a query instead."
+msgstr "这一点甚至比“最佳实践”还要重要,这是“必备常识”。当异常发生的时候,必须要回滚 <literal>Transaction</literal> ,关闭 <literal>Session</literal>。如果你不这样做的话,Hibernate 无法保证内存状态精确的反应持久状态。尤其不要使用 <literal>Session.load()</literal> 来判断一个给定标识符的对象实例在数据库中是否存在,应该使用 <literal>Session.get()</literal> 或者进行一次查询。"
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer lazy fetching for associations:"
+msgstr "对于关联优先考虑 lazy fetching:"
+
+#. Tag: para
+#, no-c-format
+msgid "Use eager fetching sparingly. Use proxies and lazy collections for most associations to classes that are not likely to be completely held in the second-level cache. For associations to cached classes, where there is an a extremely high probability of a cache hit, explicitly disable eager fetching using <literal>lazy=\"false\"</literal>. When join fetching is appropriate to a particular use case, use a query with a <literal>left join fetch</literal>."
+msgstr "谨慎的使用主动抓取(eager fetching)。对于关联来说,若其目标是无法在第二级缓存中完全缓存所有实例的类,应该使用代理(proxies)与/或具有延迟加载属性的集合(lazy collections)。若目标是可以被缓存的,尤其是缓存的命中率非常高的情况下,应该使用 <literal>lazy=\"false\"</literal>,明确的禁止掉 eager fetching。如果那些特殊的确实适合使用 join fetch 的场合,请在查询中使用 <literal>left join fetch</literal>。 "
+
+#. Tag: term
+#, no-c-format
+msgid "Use the <emphasis>open session in view</emphasis> pattern, or a disciplined <emphasis>assembly phase</emphasis> to avoid problems with unfetched data:"
+msgstr "使用 <emphasis>open session in view</emphasis> 模式,或者执行严格的<emphasis>装配期(assembly phase)</emphasis>策略来避免再次抓取数据带来的问题:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate frees the developer from writing tedious <emphasis>Data Transfer Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual purposes: first, they work around the problem that entity beans are not serializable; second, they implicitly define an assembly phase where all data to be used by the view is fetched and marshalled into the DTOs before returning control to the presentation tier. Hibernate eliminates the first purpose. Unless you are prepared to hold the persistence context (the session) open across the view rendering process, you will still need an assembly phase. Think of your business methods as having a strict contract with the presentation tier about what data is available in the detached objects. This is not a limitation of Hibernate. It is a fundamental requirement of safe transactional data access."
+msgstr "Hibernate 让开发者们摆脱了繁琐的 <emphasis>Data Transfer Objects</emphasis>(DTO)。在传统的 EJB 结构中,DTO 有双重作用:首先,他们解决了 entity bean 无法序列化的问题;其次,他们隐含地定义了一个装配期,在此期间,所有在 view 层需要用到的数据,都被抓取、集中到了 DTO 中,然后控制才被装到表示层。Hibernate 终结了第一个作用。然而,除非你做好了在整个渲染过程中都维护一个打开的持久化上下文(session)的准备,你仍然需要一个装配期(想象一下,你的业务方法与你的表示层有严格的契约,数据总是被放置到脱管对象中)。这并非是 Hibernate 的限制,这是实现安全的事务化数据访问的基本需求。"
+
+#. Tag: term
+#, no-c-format
+msgid "Consider abstracting your business logic from Hibernate:"
+msgstr "考虑把 Hibernate 代码从业务逻辑代码中抽象出来:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hide Hibernate data-access code behind an interface. Combine the <emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> patterns. You can even have some classes persisted by handcoded JDBC associated to Hibernate via a <literal>UserType</literal>. This advice is, however, intended for \"sufficiently large\" applications. It is not appropriate for an application with five tables."
+msgstr "把 Hibernate 的数据存取代码隐藏到接口(interface)的后面,组合使用 <emphasis>DAO</emphasis> 和 <emphasis>Thread Local Session</emphasis> 模式。通过 Hibernate 的<literal>UserType</literal>,你甚至可以用硬编码的 JDBC 来持久化那些本该被 Hibernate 持久化的类。然而,该建议更适用于规模足够大应用软件中,对于那些只有 5 张表的应用程序并不适合。"
+
+#. Tag: term
+#, no-c-format
+msgid "Do not use exotic association mappings:"
+msgstr "不要用怪异的连接映射:"
+
+#. Tag: para
+#, no-c-format
+msgid "Practical test cases for real many-to-many associations are rare. Most of the time you need additional information stored in the \"link table\". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, most associations are one-to-many and many-to-one. For this reason, you should proceed cautiously when using any other association style."
+msgstr "多对多连接用得好的例子实际上相当少见。大多数时候你在“连接表”中需要保存额外的信息。这种情况下,用两个指向中介类的一对多的连接比较好。实际上,我们认为绝大多数的连接是一对多和多对一的。i因此,你应该谨慎使用其它连接风格。"
+
+#. Tag: term
+#, no-c-format
+msgid "Prefer bidirectional associations:"
+msgstr "偏爱双向关联:"
+
+#. Tag: para
+#, no-c-format
+msgid "Unidirectional associations are more difficult to query. In a large application, almost all associations must be navigable in both directions in queries."
+msgstr "单向关联更加难于查询。在大型应用中,几乎所有的关联必须在查询中可以双向导航。"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/bibliography.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/bibliography.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/bibliography.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,50 @@
+# Language zh-CN translations for PACKAGE package.
+# Automatically generated, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:21\n"
+"PO-Revision-Date: 2010-03-15 08:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "References"
+msgstr "参考资料"
+
+#. Tag: title
+#, no-c-format
+msgid "Patterns of Enterprise Application Architecture"
+msgstr "Patterns of Enterprise Application Architecture"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Martin"
+msgstr "Martin"
+
+#. Tag: title
+#, no-c-format
+msgid "Java Persistence with Hibernate"
+msgstr "Java Persistence with Hibernate"
+
+#. Tag: subtitle
+#, no-c-format
+msgid "Second Edition of Hibernate in Action"
+msgstr "Second Edition of Hibernate in Action"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Christian"
+msgstr "Christian"
+
+#. Tag: firstname
+#, no-c-format
+msgid "Gavin"
+msgstr "Gavin"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/collection_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/collection_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/collection_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1631 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2010-03-15 08:59+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mapping"
+msgstr "集合映射(Collection mappings)"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent collections"
+msgstr "持久化集合类(Persistent collections)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate requires that persistent collection-valued fields be declared as an interface type. For example:"
+msgstr "(译者注:在阅读本章的时候,以后整个手册的阅读过程中,我们都会面临一个名词方面的问题,那就是“集合”。\"Collections\" 和 \"Set\" 在中文里对应都被翻译为“集合”,但是他们的含义很不一样。Collections 是一个超集,Set 是其中的一种。大部分情况下,本译稿中泛指的未加英文注明的“集合”,都应当理解为“Collections”。在有些二者同时出现,可能造成混淆的地方,我们用“集合类”来特指“Collecions”,“集合(Set)”来指 \"Set\",一般都会在后面的括号中给出英文。希望大家在阅读时联系上下文理解,不要造成误解。 与此同时,“元素”一词对应的英文“element”,也有两个不同的含义。其一为集合的元素,是内存中的一个变量;另一含义则是 XML 文档中的一个标签所代表的元素。也请注意区别。本章中,特别是后半部分是!
 需要反复阅读才能理解清楚的。如果遇到任何疑问,请记住,英文版本的 reference 是惟一标准的参考资料。) Hibernate 要求持久化集合值字段必须声明为接口,例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "The actual interface might be <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> or anything you like (\"anything you like\" means you will have to write an implementation of <literal>org.hibernate.usertype.UserCollectionType</literal>.)"
+msgstr "实际的接口可能是 <literal>java.util.Set</literal>、<literal>java.util.Collection</literal>、<literal>java.util.List</literal>、<literal>java.util.Map</literal>、<literal>java.util.SortedSet</literal>、<literal>java.util.SortedMap</literal> 或者任何你喜欢的类型(\"任何你喜欢的类型\" 代表你需要编写 <literal>org.hibernate.usertype.UserCollectionType</literal> 的实现)。"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice how the instance variable was initialized with an instance of <literal>HashSet</literal>. This is the best way to initialize collection valued properties of newly instantiated (non-persistent) instances. When you make the instance persistent, by calling <literal>persist()</literal> for example, Hibernate will actually replace the <literal>HashSet</literal> with an instance of Hibernate's own implementation of <literal>Set</literal>. Be aware of the following errors:"
+msgstr "注意我们是如何用一个 <literal>HashSet</literal> 实例来初始化实例变量的。这是用于初始化新创建(尚未持久化)的类实例中集合值属性的最佳方法。当你持久化这个实例时 — 比如通过调用 <literal>persist()</literal> — Hibernate 会自动把 <literal>HashSet</literal> 替换为 Hibernate 自己的 <literal>Set</literal> 实现。注意下面的错误:"
+
+#. Tag: para
+#, no-c-format
+msgid "The persistent collections injected by Hibernate behave like <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, depending on the interface type."
+msgstr "根据不同的接口类型,被 Hibernate 注射的持久化集合类的表现类似 <literal>HashMap</literal>、<literal>HashSet</literal>、<literal>TreeMap</literal>、<literal>TreeSet</literal> 或 <literal>ArrayList</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Collections instances have the usual behavior of value types. They are automatically persisted when referenced by a persistent object and are automatically deleted when unreferenced. If a collection is passed from one persistent object to another, its elements might be moved from one table to another. Two entities cannot share a reference to the same collection instance. Due to the underlying relational model, collection-valued properties do not support null value semantics. Hibernate does not distinguish between a null collection reference and an empty collection."
+msgstr "集合类实例具有值类型的通常行为。当被持久化对象引用后,他们会自动被持久化,当不再被引用后,自动被删除。假若实例被从一个持久化对象传递到另一个,它的元素可能从一个表转移到另一个表。两个实体不能共享同一个集合类实例的引用。因为底层关系数据库模型的原因,集合值属性无法支持空值语义;Hibernate 对空的集合引用和空集合不加区别。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Use persistent collections the same way you use ordinary Java collections. However, please ensure you understand the semantics of bidirectional associations (these are discussed later)."
+msgstr "你不需要过多的为此担心。就如同你平时使用普通的 Java 集合类一样来使用持久化集合类。只是要确认你理解了双向关联的语义(后文将进行讨论)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection mappings"
+msgstr "集合映射( Collection mappings )"
+
+#. Tag: para
+#, no-c-format
+msgid "There are quite a range of mappings that can be generated for collections that cover many common relational models. We suggest you experiment with the schema generation tool so that you understand how various mapping declarations translate to database tables."
+msgstr "从集合类可以产生很大一部分映射,覆盖了很多常见的关系模型。我们建议你试验 schema 生成工具,来体会一下不同的映射声明是如何被翻译为数据库表的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The Hibernate mapping element used for mapping a collection depends upon the type of interface. For example, a <literal>&lt;set&gt;</literal> element is used for mapping properties of type <literal>Set</literal>."
+msgstr "用于映射集合类的 Hibernate 映射元素取决于接口的类型。比如,<literal>&lt;set&gt;</literal> 元素用来映射 <literal>Set</literal> 类型的属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Apart from <literal>&lt;set&gt;</literal>, there is also <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal>, <literal>&lt;array&gt;</literal> and <literal>&lt;primitive-array&gt;</literal> mapping elements. The <literal>&lt;map&gt;</literal> element is representative:"
+msgstr "除了 <literal>&lt;set&gt;</literal>,还有<literal>&lt;list&gt;</literal>,<literal>&lt;map&gt;</literal>,<literal>&lt;bag&gt;</literal>,<literal>&lt;array&gt;</literal> 和 <literal>&lt;primitive-array&gt;</literal> 映射元素。<literal>&lt;map&gt;</literal> 具有代表性:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>name</literal>: the collection property name"
+msgstr "<literal>name</literal>:集合属性的名称"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>table</literal> (optional - defaults to property name): the name of the collection table. It is not used for one-to-many associations."
+msgstr "<literal>table</literal>(可选——默认为属性的名称)这个集合表的名称(不能在一对多的关联关系中使用)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>schema</literal> (optional): the name of a table schema to override the schema declared on the root element"
+msgstr "<literal>schema</literal>(可选):表的 schema 的名称,他将覆盖在根元素中定义的 schema"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>): disables lazy fetching and specifies that the association is always eagerly fetched. It can also be used to enable \"extra-lazy\" fetching where most operations do not initialize the collection. This is suitable for large collections."
+msgstr "<literal>lazy</literal>(可选--默认为 true)可以用来关闭延迟加载(false):指定一直使用预先抓取,或者打开 \"extra-lazy\" 抓取,此时大多数操作不会初始化集合类(适用于非常大的集合)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): marks this collection as the \"inverse\" end of a bidirectional association."
+msgstr "<literal>inverse</literal>(可选 — 默认为 <literal>false</literal>)标记这个集合作为双向关联关系中的方向一端。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>cascade</literal> (optional - defaults to <literal>none</literal>): enables operations to cascade to child entities."
+msgstr "<literal>cascade</literal>(可选 — 默认为 <literal>none</literal>)让操作级联到子实体。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>sort</literal> (optional): specifies a sorted collection with <literal>natural</literal> sort order or a given comparator class."
+msgstr "<literal>sort</literal>(可选)指定集合的排序顺序,其可以为自然的(<literal>natural</literal>)或者给定一个用来比较的类。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>order-by</literal> (optional, JDK1.4 only): specifies a table column or columns that define the iteration order of the <literal>Map</literal>, <literal>Set</literal> or bag, together with an optional <literal>asc</literal> or <literal>desc</literal>."
+msgstr "<literal>order-by</literal>(可选,仅用于 jdk1.4):指定表的字段(一个或几个)再加上 asc 或者 desc(可选),定义 Map、Set 和 Bag 的迭代顺序。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>where</literal> (optional): specifies an arbitrary SQL <literal>WHERE</literal> condition that is used when retrieving or removing the collection. This is useful if the collection needs to contain only a subset of the available data."
+msgstr "<literal>where</literal>(可选):指定任意的 SQL where 条件,该条件将在重新载入或者删除这个集合时使用(当集合中的数据仅仅是所有可用数据的一个子集时这个条件非常有用)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional, defaults to <literal>select</literal>): chooses between outer-join fetching, fetching by sequential select, and fetching by sequential subselect."
+msgstr "<literal>fetch</literal>(可选,默认为 <literal>select</literal>):用于在外连接抓取、通过后续 select 抓取和通过后续 subselect 抓取之间选择。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>): specifies a \"batch size\" for lazily fetching instances of this collection."
+msgstr "<literal>batch-size</literal>(可选,默认为 <literal>1</literal>):指定通过延迟加载取得集合实例的批处理块大小(\"batch size\")。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): the strategy Hibernate uses for accessing the collection property value."
+msgstr "<literal>access</literal>(可选-默认为属性 property):Hibernate 取得集合属性值时使用的策略。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): specifies that changes to the state of the collection results in increments of the owning entity's version. For one-to-many associations you may want to disable this setting."
+msgstr "<literal>乐观锁</literal>(可选 - 默认为 <literal>true</literal>):对集合的状态的改变会是否导致其所属的实体的版本增长(对一对多关联来说,关闭这个属性常常是有理的)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): a value of <literal>false</literal> specifies that the elements of the collection never change. This allows for minor performance optimization in some cases."
+msgstr "<literal>mutable(可变)</literal>(可选 — 默认为 <literal>true</literal>):若值为 <literal>false</literal>,表明集合中的元素不会改变(在某些情况下可以进行一些小的性能优化)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Collection foreign keys"
+msgstr "集合外键(Collection foreign keys)"
+
+#. Tag: para
+#, no-c-format
+msgid "Collection instances are distinguished in the database by the foreign key of the entity that owns the collection. This foreign key is referred to as the <emphasis>collection key column</emphasis>, or columns, of the collection table. The collection key column is mapped by the <literal>&lt;key&gt;</literal> element."
+msgstr "集合实例在数据库中依靠持有集合的实体的外键加以辨别。此外键作为<emphasis>集合关键字段(collection key column)</emphasis>(或多个字段)加以引用。集合关键字段通过 <literal>&lt;key&gt;</literal> 元素映射。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There can be a nullability constraint on the foreign key column. For most collections, this is implied. For unidirectional one-to-many associations, the foreign key column is nullable by default, so you may need to specify <literal>not-null=\"true\"</literal>."
+msgstr "在外键字段上可能具有非空约束。对于大多数集合来说,这是隐含的。对单向一对多关联来说,外键字段默认是可以为空的,因此你可能需要指明 <literal>not-null=\"true\"</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The foreign key constraint can use <literal>ON DELETE CASCADE</literal>."
+msgstr "外键约束可以使用 <literal>ON DELETE CASCADE</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "See the previous chapter for a full definition of the <literal>&lt;key&gt;</literal> element."
+msgstr "对 <literal>&lt;key&gt;</literal> 元素的完整定义,请参阅前面的章节。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection elements"
+msgstr "集合元素(Collection elements)"
+
+#. Tag: para
+#, no-c-format
+msgid "Collections can contain almost any other Hibernate type, including: basic types, custom types, components and references to other entities. This is an important distinction. An object in a collection might be handled with \"value\" semantics (its life cycle fully depends on the collection owner), or it might be a reference to another entity with its own life cycle. In the latter case, only the \"link\" between the two objects is considered to be a state held by the collection."
+msgstr "集合几乎可以包含任何其他的 Hibernate 类型,包括所有的基本类型、自定义类型、组件,当然还有对其他实体的引用。存在一个重要的区别:位于集合中的对象可能是根据“值”语义来操作(其声明周期完全依赖于集合持有者),或者它可能是指向另一个实体的引用,具有其自己的生命周期。在后者的情况下,被作为集合持有的状态考虑的,只有两个对象之间的“连接”。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The contained type is referred to as the <emphasis>collection element type</emphasis>. Collection elements are mapped by <literal>&lt;element&gt;</literal> or <literal>&lt;composite-element&gt;</literal>, or in the case of entity references, with <literal>&lt;one-to-many&gt;</literal> or <literal>&lt;many-to-many&gt;</literal>. The first two map elements with value semantics, the next two are used to map entity associations."
+msgstr "被包容的类型被称为<emphasis>集合元素类型(collection element type)</emphasis>。集合元素通过 <literal>&lt;element&gt;</literal> 或 <literal>&lt;composite-element&gt;</literal> 映射,或在其是实体引用的时候,通过  <literal>&lt;one-to-many&gt;</literal> 或 <literal>&lt;many-to-many&gt;</literal> 映射。前两种用于使用值语义映射元素,后两种用于映射实体关联。"
+
+#. Tag: title
+#, no-c-format
+msgid "Indexed collections"
+msgstr "索引集合类(Indexed collections)"
+
+#. Tag: para
+#, no-c-format
+msgid "All collection mappings, except those with set and bag semantics, need an <emphasis>index column</emphasis> in the collection table. An index column is a column that maps to an array index, or <literal>List</literal> index, or <literal>Map</literal> key. The index of a <literal>Map</literal> may be of any basic type, mapped with <literal>&lt;map-key&gt;</literal>. It can be an entity reference mapped with <literal>&lt;map-key-many-to-many&gt;</literal>, or it can be a composite type mapped with <literal>&lt;composite-map-key&gt;</literal>. The index of an array or list is always of type <literal>integer</literal> and is mapped using the <literal>&lt;list-index&gt;</literal> element. The mapped column contains sequential integers that are numbered from zero by default."
+msgstr "所有的集合映射,除了 set 和 bag 语义的以外,都需要指定一个集合表的<emphasis>索引字段(index column)</emphasis> — 用于对应到数组索引,或者 <literal>List</literal> 的索引,或者 <literal>Map</literal> 的关键字。通过 <literal>&lt;map-key&gt;</literal>,<literal>Map</literal> 的索引可以是任何基础类型;若通过 <literal>&lt;map-key-many-to-many&gt;</literal>,它也可以是一个实体引用;若通过 <literal>&lt;composite-map-key&gt;</literal>,它还可以是一个组合类型。数组或列表的索引必须是 <literal>integer</literal> 类型,并且使用 <literal>&lt;list-index&gt;</literal> 元素定义映射。被映射的字段包含有顺序排列的整数(默认从 0 开始)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column_name</literal> (required): the name of the column holding the collection index values."
+msgstr "<literal>column_name</literal>(必需):持有集合索引值的字段的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>base</literal> (optional - defaults to <literal>0</literal>): the value of the index column that corresponds to the first element of the list or array."
+msgstr "<literal>base</literal>(可选 — 默认为 <literal>0</literal>)对应列表或队列的第一个元素的索引字段的值。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the column holding the collection index values."
+msgstr "<literal>column</literal>(可选):持有集合索引值的字段的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): a SQL formula used to evaluate the key of the map."
+msgstr "<literal>formula</literal>(可选):用于对表键求值的 SQL 公式。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the map keys."
+msgstr "<literal>type</literal>(必需):映射键的类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the foreign key column for the collection index values."
+msgstr "<literal>column</literal>(可选):用于集合索引值的外键字段的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): a SQ formula used to evaluate the foreign key of the map key."
+msgstr "<literal>formula</literal>(可选):用于对映射键的外键求值的 SQL 公式。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the entity class used as the map key."
+msgstr "<literal>class</literal>(必需):用作映射键的实体类的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If your table does not have an index column, and you still wish to use <literal>List</literal> as the property type, you can map the property as a Hibernate <emphasis>&lt;bag&gt;</emphasis>. A bag does not retain its order when it is retrieved from the database, but it can be optionally sorted or ordered."
+msgstr "假若你的表没有一个索引字段,当你仍然希望使用 <literal>List</literal> 作为属性类型,你应该把此属性映射为 Hibernate <emphasis>&lt;bag&gt;</emphasis>。从数据库中获取的时候,bag 不维护其顺序,但也可选择性的进行排序。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of values and many-to-many associations"
+msgstr "值集合于多对多关联(Collections of values and many-to-many associations)"
+
+#. Tag: para
+#, no-c-format
+msgid "Any collection of values or many-to-many associations requires a dedicated <emphasis>collection table</emphasis> with a foreign key column or columns, <emphasis>collection element column</emphasis> or columns, and possibly an index column or columns."
+msgstr "任何值集合或者多对多关联需要专用的具有一个或多个外键字段的 <emphasis>collection table</emphasis>、一个或多个 <emphasis>collection element column</emphasis>,以及还可能有一个或多个索引字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For a collection of values use the <literal>&lt;element&gt;</literal> tag. For example:"
+msgstr "对于一个值集合,我们使用 <literal>&lt;element&gt;</literal> 标签。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the column holding the collection element values."
+msgstr "<literal>column</literal>(可选):持有集合元素值的字段的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL formula used to evaluate the element."
+msgstr "<literal>formula</literal>(可选):用于对元素求值的 SQL 公式。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>type</literal> (required): the type of the collection element."
+msgstr "<literal>type</literal>(必需):集合元素的类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>many-to-many association</emphasis> is specified using the <literal>&lt;many-to-many&gt;</literal> element."
+msgstr "用 <literal>&lt;many-to-many&gt;</literal> 元素指定 <emphasis>many-to-many association</emphasis>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>column</literal> (optional): the name of the element foreign key column."
+msgstr "<literal>column</literal>(必需):元素外键字段的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>formula</literal> (optional): an SQL formula used to evaluate the element foreign key value."
+msgstr "<literal>formula</literal>(可选):用于对元素外键值求值的 SQL 公式。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>class</literal> (required): the name of the associated class."
+msgstr "<literal>class</literal>(必需):被关联类的名称。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): enables outer-join or sequential select fetching for this association. This is a special case; for full eager fetching in a single <literal>SELECT</literal> of an entity and its many-to-many relationships to other entities, you would enable <literal>join</literal> fetching,not only of the collection itself, but also with this attribute on the <literal>&lt;many-to-many&gt;</literal> nested element."
+msgstr "<literal>fetch</literal>(可选 - 缺省为 <literal>join</literal>): 为这个关联启用外连接或序列性选择抓取。这是一个特例。对于在单个 <literal>SELECT</literal> 里进行完全的 eager fetching 以及使 <literal>&lt;many-to-many&gt;</literal> n用多对多关联,你可以启用 <literal>join</literal> fetching,这不仅是对于集合本身,也对 <literal>&lt;many-to-many&gt;</literal> 嵌套元素的属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>unique</literal> (optional): enables the DDL generation of a unique constraint for the foreign-key column. This makes the association multiplicity effectively one-to-many."
+msgstr "<literal>unique</literal>(可选):未外键字段启用唯一约束的 DDL 生成。这使得关联一对多的多样性更为有效。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
+msgstr "<literal>not-found</literal>(可选 - 默认为 <literal>exception</literal>):指明若缓存的标示值关联的行缺失,该如何处理:<literal>ignore</literal> 会把缺失的行作为一个空关联处理。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>entity-name</literal> (optional): the entity name of the associated class, as an alternative to <literal>class</literal>."
+msgstr "<literal>entity-name</literal>(可选):被关联的类的实体名,作为 <literal>class</literal> 的替代。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>property-ref</literal> (optional): the name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
+msgstr "<literal>property-ref</literal>(可选):连接至这个外键的关联类的属性名称。如果未指定,关联类的主键将被使用。"
+
+#. Tag: para
+#, no-c-format
+msgid "Here are some examples."
+msgstr "下面是一些例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "A set of strings:"
+msgstr "一系列字符串:"
+
+#. Tag: para
+#, no-c-format
+msgid "A bag containing integers with an iteration order determined by the <literal>order-by</literal> attribute:"
+msgstr "包含一组整数的 bag(还设置了 <literal>order-by</literal> 参数指定了迭代的顺序): "
+
+#. Tag: para
+#, no-c-format
+msgid "An array of entities, in this case, a many-to-many association:"
+msgstr "一个实体数组,在这个案例中是一个多对多的关联(注意这里的实体是自动管理生命周期的对象(lifecycle objects),<literal>cascade=\"all\"</literal>): "
+
+#. Tag: para
+#, no-c-format
+msgid "A map from string indices to dates:"
+msgstr "一个 map,通过字符串的索引来指明日期:"
+
+#. Tag: para
+#, no-c-format
+msgid "A list of components (this is discussed in the next chapter):"
+msgstr "一个组件的列表:(将在下一章讨论)"
+
+#. Tag: title
+#, no-c-format
+msgid "One-to-many associations"
+msgstr "一对多关联(One-to-many Associations)"
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>one-to-many association</emphasis> links the tables of two classes via a foreign key with no intervening collection table. This mapping loses certain semantics of normal Java collections:"
+msgstr "<emphasis>一对多关联</emphasis><emphasis>通过外键</emphasis>连接两个类对应的表,而没有中间集合表。 这个关系模型失去了一些 Java 集合的语义:"
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of the contained entity class cannot belong to more than one instance of the collection."
+msgstr "一个被包含的实体的实例只能被包含在一个集合的实例中。"
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of the contained entity class cannot appear at more than one value of the collection index."
+msgstr "一个被包含的实体的实例只能对应于集合索引的一个值中。"
+
+#. Tag: para
+#, no-c-format
+msgid "An association from <literal>Product</literal> to <literal>Part</literal> requires the existence of a foreign key column and possibly an index column to the <literal>Part</literal> table. A <literal>&lt;one-to-many&gt;</literal> tag indicates that this is a one-to-many association."
+msgstr "一个从 <literal>Product</literal> 到 <literal>Part</literal> 的关联需要关键字字段,可能还有一个索引字段指向 <literal>Part</literal> 所对应的表。<literal>&lt;one-to-many&gt;</literal> 标记指明了一个一对多的关联。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): specifies how cached identifiers that reference missing rows will be handled. <literal>ignore</literal> will treat a missing row as a null association."
+msgstr "<literal>not-found</literal>(可选 - 默认为<literal>exception</literal>):指明若缓存的标示值关联的行缺失,该如何处理:<literal>ignore</literal> 会把缺失的行作为一个空关联处理。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element does not need to declare any columns. Nor is it necessary to specify the <literal>table</literal> name anywhere."
+msgstr "注意:<literal>&lt;one-to-many&gt;</literal> 元素不需要定义任何字段。也不需要指定表名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the foreign key column of a <literal>&lt;one-to-many&gt;</literal> association is declared <literal>NOT NULL</literal>, you must declare the <literal>&lt;key&gt;</literal> mapping <literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional association</emphasis> with the collection mapping marked <literal>inverse=\"true\"</literal>. See the discussion of bidirectional associations later in this chapter for more information."
+msgstr "<emphasis>重要提示</emphasis>:如果<literal>一对多</literal>关联中的外键字段定义成 <literal>NOT NULL</literal>,你必须把 <literal>&lt;key&gt;</literal> 映射声明为 <literal>not-null=\"true\"</literal>,或者使用<emphasis>双向关联</emphasis>,并且标明 <literal>inverse=\"true\"</literal>。参阅本章后面关于双向关联的讨论。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following example shows a map of <literal>Part</literal> entities by name, where <literal>partName</literal> is a persistent property of <literal>Part</literal>. Notice the use of a formula-based index:"
+msgstr "下面的例子展示一个 <literal>Part</literal> 实体的 map,把 name 作为关键字。( <literal>partName</literal> 是 <literal>Part</literal> 的持久化属性)。注意其中的基于公式的索引的用法。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Advanced collection mappings"
+msgstr "高级集合映射(Advanced collection mappings)"
+
+#. Tag: title
+#, no-c-format
+msgid "Sorted collections"
+msgstr "有序集合(Sorted collections)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports collections implementing <literal>java.util.SortedMap</literal> and <literal>java.util.SortedSet</literal>. You must specify a comparator in the mapping file:"
+msgstr "Hibernate 支持实现 <literal>java.util.SortedMap</literal> 和 <literal>java.util.SortedSet</literal> 的集合。你必须在映射文件中指定一个比较器:"
+
+#. Tag: para
+#, no-c-format
+msgid "Allowed values of the <literal>sort</literal> attribute are <literal>unsorted</literal>, <literal>natural</literal> and the name of a class implementing <literal>java.util.Comparator</literal>."
+msgstr "<literal>sort</literal> 属性中允许的值包括 <literal>unsorted</literal>,<literal>natural</literal> 和某个实现了 <literal>java.util.Comparator</literal> 的类的名称。"
+
+#. Tag: para
+#, no-c-format
+msgid "Sorted collections actually behave like <literal>java.util.TreeSet</literal> or <literal>java.util.TreeMap</literal>."
+msgstr "分类集合的行为事实上象 <literal>java.util.TreeSet</literal> 或者 <literal>java.util.TreeMap</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you want the database itself to order the collection elements, use the <literal>order-by</literal> attribute of <literal>set</literal>, <literal>bag</literal> or <literal>map</literal> mappings. This solution is only available under JDK 1.4 or higher and is implemented using <literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>. This performs the ordering in the SQL query and not in the memory."
+msgstr "如果你希望数据库自己对集合元素排序,可以利用 <literal>set</literal>,<literal>bag</literal> 或者 <literal>map</literal> 映射中的 <literal>order-by</literal> 属性。这个解决方案只能在 jdk1.4 或者更高的 jdk 版本中才可以实现(通过 LinkedHashSet 或者 LinkedHashMap 实现)。它是在 SQL 查询中完成排序,而不是在内存中。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "The value of the <literal>order-by</literal> attribute is an SQL ordering, not an HQL ordering."
+msgstr "注意:这个 <literal>order-by</literal> 属性的值是一个 SQL 排序子句而不是 HQL 的。"
+
+#. Tag: para
+#, no-c-format
+msgid "Associations can even be sorted by arbitrary criteria at runtime using a collection <literal>filter()</literal>:"
+msgstr "关联还可以在运行时使用集合 <literal>filter()</literal> 根据任意的条件来排序:"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr "双向关联(Bidirectional associations)"
+
+#. Tag: para
+#, no-c-format
+msgid "A <emphasis>bidirectional association</emphasis> allows navigation from both \"ends\" of the association. Two kinds of bidirectional association are supported:"
+msgstr "<emphasis>双向关联</emphasis>允许通过关联的任一端访问另外一端。在 Hibernate 中,支持两种类型的双向关联: "
+
+#. Tag: term
+#, no-c-format
+msgid "one-to-many"
+msgstr "一对多(one-to-many)"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at one end and single-valued at the other"
+msgstr "Set 或者 bag 值在一端,单独值(非集合)在另外一端 "
+
+#. Tag: term
+#, no-c-format
+msgid "many-to-many"
+msgstr "多对多(many-to-many)"
+
+#. Tag: para
+#, no-c-format
+msgid "set or bag valued at both ends"
+msgstr "两端都是 set 或 bag 值"
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify a bidirectional many-to-many association by mapping two many-to-many associations to the same database table and declaring one end as <emphasis>inverse</emphasis>. You cannot select an indexed collection."
+msgstr "要建立一个双向的多对多关联,只需要映射两个 many-to-many 关联到同一个数据库表中,并再定义其中的一端为 <emphasis>inverse</emphasis>(使用哪一端要根据你的选择,但它不能是一个索引集合)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of a bidirectional many-to-many association that illustrates how each category can have many items and each item can be in many categories:"
+msgstr "这里有一个 many-to-many 的双向关联的例子;每一个 category 都可以有很多 items,每一个 items 可以属于很多 categories: "
+
+#. Tag: para
+#, no-c-format
+msgid "Changes made only to the inverse end of the association are <emphasis>not</emphasis> persisted. This means that Hibernate has two representations in memory for every bidirectional association: one link from A to B and another link from B to A. This is easier to understand if you think about the Java object model and how a many-to-many relationship in Javais created:"
+msgstr "如果只对关联的反向端进行了改变,这个改变<emphasis>不会</emphasis>被持久化。 这表示 Hibernate 为每个双向关联在内存中存在两次表现,一个从 A 连接到 B,另一个从 B 连接到 A。如果你回想一下 Java 对象模型,我们是如何在 Java 中创建多对多关系的,这可以让你更容易理解: "
+
+#. Tag: para
+#, no-c-format
+msgid "The non-inverse side is used to save the in-memory representation to the database."
+msgstr "非反向端用于把内存中的表示保存到数据库中。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can define a bidirectional one-to-many association by mapping a one-to-many association to the same table column(s) as a many-to-one association and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr "要建立一个一对多的双向关联,你可以通过把一个一对多关联,作为一个多对一关联映射到到同一张表的字段上,并且在\"多\"的那一端定义 <literal>inverse=\"true\"</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping one end of an association with <literal>inverse=\"true\"</literal> does not affect the operation of cascades as these are orthogonal concepts."
+msgstr "在“一”这一端定义 <literal>inverse=\"true\"</literal> 不会影响级联操作,二者是正交的概念。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional associations with indexed collections"
+msgstr "双向关联,涉及有序集合类"
+
+#. Tag: para
+#, no-c-format
+msgid "A bidirectional association where one end is represented as a <literal>&lt;list&gt;</literal> or <literal>&lt;map&gt;</literal>, requires special consideration. If there is a property of the child class that maps to the index column you can use <literal>inverse=\"true\"</literal> on the collection mapping:"
+msgstr "对于有一端是 <literal>&lt;list&gt;</literal> 或者 <literal>&lt;map&gt;</literal> 的双向关联,需要加以特别考虑。假若子类中的一个属性映射到索引字段,没问题,我们仍然可以在集合类映射上使用 <literal>inverse=\"true\"</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid "If there is no such property on the child class, the association cannot be considered truly bidirectional. That is, there is information available at one end of the association that is not available at the other end. In this case, you cannot map the collection <literal>inverse=\"true\"</literal>. Instead, you could use the following mapping:"
+msgstr "但是,假若子类中没有这样的属性存在,我们不能认为这个关联是真正的双向关联(信息不对称,在关联的一端有一些另外一端没有的信息)。在这种情况下,我们不能使用 <literal>inverse=\"true\"</literal>。我们需要这样用: "
+
+#. Tag: para
+#, no-c-format
+msgid "Note that in this mapping, the collection-valued end of the association is responsible for updates to the foreign key."
+msgstr "注意在这个映射中,关联中集合类\"值\"一端负责来更新外键。"
+
+#. Tag: title
+#, no-c-format
+msgid "Ternary associations"
+msgstr "三重关联(Ternary associations)"
+
+#. Tag: para
+#, no-c-format
+msgid "There are three possible approaches to mapping a ternary association. One approach is to use a <literal>Map</literal> with an association as its index:"
+msgstr "有三种可能的途径来映射一个三重关联。第一种是使用一个 <literal>Map</literal>,把一个关联作为其索引: "
+
+#. Tag: para
+#, no-c-format
+msgid "A second approach is to remodel the association as an entity class. This is the most common approach."
+msgstr "第二种方法是简单的把关联重新建模为一个实体类。这使我们最经常使用的方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A final alternative is to use composite elements, which will be discussed later."
+msgstr "最后一种选择是使用复合元素,我们会在后面讨论。"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>Using an &lt;idbag&gt;</literal>"
+msgstr "<literal>使用 an &lt;idbag&gt;</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "The majority of the many-to-many associations and collections of values shown previously all map to tables with composite keys, even though it has been have suggested that entities should have synthetic identifiers (surrogate keys). A pure association table does not seem to benefit much from a surrogate key, although a collection of composite values <emphasis>might</emphasis>. It is for this reason that Hibernate provides a feature that allows you to map many-to-many associations and collections of values to a table with a surrogate key."
+msgstr "如果你完全信奉我们对于“联合主键(composite keys)是个坏东西”,和“实体应该使用(无机的)自己生成的代用标识符(surrogate keys)”的观点,也许你会感到有一些奇怪,我们目前为止展示的多对多关联和值集合都是映射成为带有联合主键的表的!现在,这一点非常值得争辩;看上去一个单纯的关联表并不能从代用标识符中获得什么好处(虽然使用组合值的集合<emphasis>可能</emphasis>会获得一点好处)。不过,Hibernate 提供了一个(一点点试验性质的)功能,让你把多对多关联和值集合应得到一个使用代用标识符的表去。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;idbag&gt;</literal> element lets you map a <literal>List</literal> (or <literal>Collection</literal>) with bag semantics. For example:"
+msgstr "<literal>&lt;idbag&gt;</literal> 属性让你使用 bag 语义来映射一个 <literal>List</literal> (或 <literal>Collection</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "An <literal>&lt;idbag&gt;</literal> has a synthetic id generator, just like an entity class. A different surrogate key is assigned to each collection row. Hibernate does not, however, provide any mechanism for discovering the surrogate key value of a particular row."
+msgstr "你可以理解,<literal>&lt;idbag&gt;</literal> 人工的 id 生成器,就好像是实体类一样!集合的每一行都有一个不同的人造关键字。但是,Hibernate 没有提供任何机制来让你取得某个特定行的人造关键字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The update performance of an <literal>&lt;idbag&gt;</literal> supersedes a regular <literal>&lt;bag&gt;</literal>. Hibernate can locate individual rows efficiently and update or delete them individually, similar to a list, map or set."
+msgstr "注意 <literal>&lt;idbag&gt;</literal> 的更新性能要比普通的 <literal>&lt;bag&gt;</literal> 高得多!Hibernate 可以有效的定位到不同的行,分别进行更新或删除工作,就如同处理一个 list,map 或者 set 一样。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In the current implementation, the <literal>native</literal> identifier generation strategy is not supported for <literal>&lt;idbag&gt;</literal> collection identifiers."
+msgstr "在目前的实现中,还不支持使用 <literal>identity</literal> 标识符生成器策略来生成 <literal>&lt;idbag&gt;</literal> 集合的标识符。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collection examples"
+msgstr "集合例子(Collection example)"
+
+#. Tag: para
+#, no-c-format
+msgid "This section covers collection examples."
+msgstr "集合例子(Collection example)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following class has a collection of <literal>Child</literal> instances:"
+msgstr "下面的代码是用来添加一个新的 <literal>Child</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "If each child has, at most, one parent, the most natural mapping is a one-to-many association:"
+msgstr "这个类有一个 <literal>Child</literal> 的实例集合。如果每一个子实例至多有一个父实例,那么最自然的映射是一个 one-to-many 的关联关系: "
+
+#. Tag: para
+#, no-c-format
+msgid "This maps to the following table definitions:"
+msgstr "在以下的表定义中反应了这个映射关系:"
+
+#. Tag: para
+#, no-c-format
+msgid "If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-many association:"
+msgstr "如果父亲是<emphasis>必须</emphasis>的,那么就可以使用双向 one-to-many 的关联了:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "请注意 <literal>NOT NULL</literal> 的约束:"
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, if this association must be unidirectional you can declare the <literal>NOT NULL</literal> constraint on the <literal>&lt;key&gt;</literal> mapping:"
+msgstr "另外,如果你绝对坚持这个关联应该是单向的,你可以对 <literal>&lt;key&gt;</literal> 映射声明 <literal>NOT NULL</literal> 约束: "
+
+#. Tag: para
+#, no-c-format
+msgid "On the other hand, if a child has multiple parents, a many-to-many association is appropriate:"
+msgstr "另外一方面,如果一个子实例可能有多个父实例,那么就应该使用 many-to-many 关联: "
+
+#. Tag: para
+#, no-c-format
+msgid "Table definitions:"
+msgstr "表定义:"
+
+#. Tag: para
+#, no-c-format
+msgid "For more examples and a complete explanation of a parent/child relationship mapping, see <xref linkend=\"example-parentchild\" /> for more information."
+msgstr "更多的例子,以及一个完整的父/子关系映射的排练,请参阅 <xref linkend=\"example-parentchild\" />。  "
+
+#. Tag: para
+#, no-c-format
+msgid "Even more complex association mappings are covered in the next chapter."
+msgstr "甚至可能出现更加复杂的关联映射,我们会在下一章中列出所有可能性。 "
+
+#~ msgid ""
+#~ "<![CDATA[public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class Product {\n"
+#~ "    private String serialNumber;\n"
+#~ "    private Set parts = new HashSet();\n"
+#~ "    \n"
+#~ "    public Set getParts() { return parts; }\n"
+#~ "    void setParts(Set parts) { this.parts = parts; }\n"
+#~ "    public String getSerialNumber() { return serialNumber; }\n"
+#~ "    void setSerialNumber(String sn) { serialNumber = sn; }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "Cat kitten = new DomesticCat();\n"
+#~ "....\n"
+#~ "Set kittens = new HashSet();\n"
+#~ "kittens.add(kitten);\n"
+#~ "cat.setKittens(kittens);\n"
+#~ "session.persist(cat);\n"
+#~ "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+#~ "(HashSet) cat.getKittens(); // Error!]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Product\">\n"
+#~ "    <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+#~ "    <set name=\"parts\">\n"
+#~ "        <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Part\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Product\">\n"
+#~ "    <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+#~ "    <set name=\"parts\">\n"
+#~ "        <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+#~ "        <one-to-many class=\"Part\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "    <key .... />\n"
+#~ "    <map-key .... />\n"
+#~ "    <element .... />\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<map\n"
+#~ "    name=\"propertyName\"\n"
+#~ "    table=\"table_name\"\n"
+#~ "    schema=\"schema_name\"\n"
+#~ "    lazy=\"true|extra|false\"\n"
+#~ "    inverse=\"true|false\"\n"
+#~ "    cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan"
+#~ "\"\n"
+#~ "    sort=\"unsorted|natural|comparatorClass\"\n"
+#~ "    order-by=\"column_name asc|desc\"\n"
+#~ "    where=\"arbitrary sql where condition\"\n"
+#~ "    fetch=\"join|select|subselect\"\n"
+#~ "    batch-size=\"N\"\n"
+#~ "    access=\"field|property|ClassName\"\n"
+#~ "    optimistic-lock=\"true|false\"\n"
+#~ "    mutable=\"true|false\"\n"
+#~ "    node=\"element-name|.\"\n"
+#~ "    embed-xml=\"true|false\"\n"
+#~ ">\n"
+#~ "\n"
+#~ "    <key .... />\n"
+#~ "    <map-key .... />\n"
+#~ "    <element .... />\n"
+#~ "</map>]]>"
+
+#~ msgid "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+#~ msgstr "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+
+#~ msgid ""
+#~ "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area "
+#~ "id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA"
+#~ "[<list-index \n"
+#~ "        column=\"column_name\"\n"
+#~ "        base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout "
+#~ "arearefs=\"index1\"> <para> <literal>column_name</literal> (required): "
+#~ "the name of the column holding the collection index values. </para> </"
+#~ "callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> "
+#~ "(optional - defaults to <literal>0</literal>): the value of the index "
+#~ "column that corresponds to the first element of the list or array. </"
+#~ "para> </callout> </calloutlist> </programlistingco> <programlistingco> "
+#~ "<areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" "
+#~ "coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> "
+#~ "<programlisting><![CDATA[<map-key \n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        type=\"type_name\"\n"
+#~ "        node=\"@attribute-name\"\n"
+#~ "        length=\"N\"/>]]></programlisting> <calloutlist> <callout "
+#~ "arearefs=\"mapkey1\"> <para> <literal>column</literal> (optional): the "
+#~ "name of the column holding the collection index values. </para> </"
+#~ "callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> "
+#~ "(optional): a SQL formula used to evaluate the key of the map. </para> </"
+#~ "callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> "
+#~ "(required): the type of the map keys. </para> </callout> </calloutlist> </"
+#~ "programlistingco> <programlistingco> <areaspec> <area id="
+#~ "\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" "
+#~ "coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </"
+#~ "areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1"
+#~ "\"> <para> <literal>column</literal> (optional): the name of the foreign "
+#~ "key column for the collection index values. </para> </callout> <callout "
+#~ "arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> "
+#~ "(optional): a SQ formula used to evaluate the foreign key of the map key. "
+#~ "</para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> "
+#~ "<literal>class</literal> (required): the entity class used as the map "
+#~ "key. </para> </callout> </calloutlist> </programlistingco>"
+#~ msgstr ""
+#~ "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area "
+#~ "id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA"
+#~ "[<list-index \n"
+#~ "        column=\"column_name\"\n"
+#~ "        base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout "
+#~ "arearefs=\"index1\"> <para> <literal>column_name</literal> (required): "
+#~ "the name of the column holding the collection index values. </para> </"
+#~ "callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> "
+#~ "(optional - defaults to <literal>0</literal>): the value of the index "
+#~ "column that corresponds to the first element of the list or array. </"
+#~ "para> </callout> </calloutlist> </programlistingco> <programlistingco> "
+#~ "<areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" "
+#~ "coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> "
+#~ "<programlisting><![CDATA[<map-key \n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        type=\"type_name\"\n"
+#~ "        node=\"@attribute-name\"\n"
+#~ "        length=\"N\"/>]]></programlisting> <calloutlist> <callout "
+#~ "arearefs=\"mapkey1\"> <para> <literal>column</literal> (optional): the "
+#~ "name of the column holding the collection index values. </para> </"
+#~ "callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> "
+#~ "(optional): a SQL formula used to evaluate the key of the map. </para> </"
+#~ "callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> "
+#~ "(required): the type of the map keys. </para> </callout> </calloutlist> </"
+#~ "programlistingco> <programlistingco> <areaspec> <area id="
+#~ "\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" "
+#~ "coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </"
+#~ "areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1"
+#~ "\"> <para> <literal>column</literal> (optional): the name of the foreign "
+#~ "key column for the collection index values. </para> </callout> <callout "
+#~ "arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> "
+#~ "(optional): a SQ formula used to evaluate the foreign key of the map key. "
+#~ "</para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> "
+#~ "<literal>class</literal> (required): the entity class used as the map "
+#~ "key. </para> </callout> </calloutlist> </programlistingco>"
+
+#~ msgid ""
+#~ "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> "
+#~ "<area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords="
+#~ "\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> "
+#~ "<para> <literal>column</literal> (optional): the name of the column "
+#~ "holding the collection element values. </para> </callout> <callout "
+#~ "arearefs=\"element2b\"> <para> <literal>formula</literal> (optional): an "
+#~ "SQL formula used to evaluate the element. </para> </callout> <callout "
+#~ "arearefs=\"element3b\"> <para> <literal>type</literal> (required): the "
+#~ "type of the collection element. </para> </callout> </calloutlist> </"
+#~ "programlistingco> <para> A <emphasis>many-to-many association</emphasis> "
+#~ "is specified using the <literal>&lt;many-to-many&gt;</literal> element. </"
+#~ "para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60"
+#~ "\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" "
+#~ "coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id="
+#~ "\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60"
+#~ "\"/> <area id=\"manytomany7\" coords=\"8 60\"/> <area id=\"manytomany8\" "
+#~ "coords=\"9 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        fetch=\"select|join\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1"
+#~ "\"> <para> <literal>column</literal> (optional): the name of the element "
+#~ "foreign key column. </para> </callout> <callout arearefs=\"manytomany2\"> "
+#~ "<para> <literal>formula</literal> (optional): an SQL formula used to "
+#~ "evaluate the element foreign key value. </para> </callout> <callout "
+#~ "arearefs=\"manytomany3\"> <para> <literal>class</literal> (required): the "
+#~ "name of the associated class. </para> </callout> <callout arearefs="
+#~ "\"manytomany4\"> <para> <literal>fetch</literal> (optional - defaults to "
+#~ "<literal>join</literal>): enables outer-join or sequential select "
+#~ "fetching for this association. This is a special case; for full eager "
+#~ "fetching in a single <literal>SELECT</literal> of an entity and its many-"
+#~ "to-many relationships to other entities, you would enable <literal>join</"
+#~ "literal> fetching,not only of the collection itself, but also with this "
+#~ "attribute on the <literal>&lt;many-to-many&gt;</literal> nested element. "
+#~ "</para> </callout> <callout arearefs=\"manytomany5\"> <para> "
+#~ "<literal>unique</literal> (optional): enables the DDL generation of a "
+#~ "unique constraint for the foreign-key column. This makes the association "
+#~ "multiplicity effectively one-to-many. </para> </callout> <callout "
+#~ "arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (optional - "
+#~ "defaults to <literal>exception</literal>): specifies how foreign keys "
+#~ "that reference missing rows will be handled: <literal>ignore</literal> "
+#~ "will treat a missing row as a null association. </para> </callout> "
+#~ "<callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> "
+#~ "(optional): the entity name of the associated class, as an alternative to "
+#~ "<literal>class</literal>. </para> </callout> <callout arearefs="
+#~ "\"manytomany8\"> <para> <literal>property-ref</literal> (optional): the "
+#~ "name of a property of the associated class that is joined to this foreign "
+#~ "key. If not specified, the primary key of the associated class is used. </"
+#~ "para> </callout> </calloutlist> </programlistingco>"
+#~ msgstr ""
+#~ "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> "
+#~ "<area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords="
+#~ "\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        type=\"typename\"\n"
+#~ "        length=\"L\"\n"
+#~ "        precision=\"P\"\n"
+#~ "        scale=\"S\"\n"
+#~ "        not-null=\"true|false\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> "
+#~ "<para> <literal>column</literal> (optional): the name of the column "
+#~ "holding the collection element values. </para> </callout> <callout "
+#~ "arearefs=\"element2b\"> <para> <literal>formula</literal> (optional): an "
+#~ "SQL formula used to evaluate the element. </para> </callout> <callout "
+#~ "arearefs=\"element3b\"> <para> <literal>type</literal> (required): the "
+#~ "type of the collection element. </para> </callout> </calloutlist> </"
+#~ "programlistingco> <para> A <emphasis>many-to-many association</emphasis> "
+#~ "is specified using the <literal>&lt;many-to-many&gt;</literal> element. </"
+#~ "para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60"
+#~ "\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" "
+#~ "coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id="
+#~ "\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60"
+#~ "\"/> <area id=\"manytomany7\" coords=\"8 60\"/> <area id=\"manytomany8\" "
+#~ "coords=\"9 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
+#~ "        column=\"column_name\"\n"
+#~ "        formula=\"any SQL expression\"\n"
+#~ "        class=\"ClassName\"\n"
+#~ "        fetch=\"select|join\"\n"
+#~ "        unique=\"true|false\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        property-ref=\"propertyNameFromAssociatedClass\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1"
+#~ "\"> <para> <literal>column</literal> (optional): the name of the element "
+#~ "foreign key column. </para> </callout> <callout arearefs=\"manytomany2\"> "
+#~ "<para> <literal>formula</literal> (optional): an SQL formula used to "
+#~ "evaluate the element foreign key value. </para> </callout> <callout "
+#~ "arearefs=\"manytomany3\"> <para> <literal>class</literal> (required): the "
+#~ "name of the associated class. </para> </callout> <callout arearefs="
+#~ "\"manytomany4\"> <para> <literal>fetch</literal> (optional - defaults to "
+#~ "<literal>join</literal>): enables outer-join or sequential select "
+#~ "fetching for this association. This is a special case; for full eager "
+#~ "fetching in a single <literal>SELECT</literal> of an entity and its many-"
+#~ "to-many relationships to other entities, you would enable <literal>join</"
+#~ "literal> fetching,not only of the collection itself, but also with this "
+#~ "attribute on the <literal>&lt;many-to-many&gt;</literal> nested element. "
+#~ "</para> </callout> <callout arearefs=\"manytomany5\"> <para> "
+#~ "<literal>unique</literal> (optional): enables the DDL generation of a "
+#~ "unique constraint for the foreign-key column. This makes the association "
+#~ "multiplicity effectively one-to-many. </para> </callout> <callout "
+#~ "arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (optional - "
+#~ "defaults to <literal>exception</literal>): specifies how foreign keys "
+#~ "that reference missing rows will be handled: <literal>ignore</literal> "
+#~ "will treat a missing row as a null association. </para> </callout> "
+#~ "<callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> "
+#~ "(optional): the entity name of the associated class, as an alternative to "
+#~ "<literal>class</literal>. </para> </callout> <callout arearefs="
+#~ "\"manytomany8\"> <para> <literal>property-ref</literal> (optional): the "
+#~ "name of a property of the associated class that is joined to this foreign "
+#~ "key. If not specified, the primary key of the associated class is used. </"
+#~ "para> </callout> </calloutlist> </programlistingco>"
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+#~ "    <key column=\"person_id\"/>\n"
+#~ "    <element column=\"person_name\" type=\"string\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+#~ "    <key column=\"person_id\"/>\n"
+#~ "    <element column=\"person_name\" type=\"string\"/>\n"
+#~ "</set>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\">\n"
+#~ "    <key column=\"item_id\"/>\n"
+#~ "    <element column=\"size\" type=\"integer\"/>\n"
+#~ "</bag>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<bag name=\"sizes\" \n"
+#~ "        table=\"item_sizes\" \n"
+#~ "        order-by=\"size asc\">\n"
+#~ "    <key column=\"item_id\"/>\n"
+#~ "    <element column=\"size\" type=\"integer\"/>\n"
+#~ "</bag>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\">\n"
+#~ "    <key column=\"personId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+#~ "</array>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<array name=\"addresses\" \n"
+#~ "        table=\"PersonAddress\" \n"
+#~ "        cascade=\"persist\">\n"
+#~ "    <key column=\"personId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+#~ "</array>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<map name=\"holidays\" \n"
+#~ "        table=\"holidays\" \n"
+#~ "        schema=\"dbo\" \n"
+#~ "        order-by=\"hol_name asc\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\">\n"
+#~ "    <key column=\"carId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <composite-element class=\"CarComponent\">\n"
+#~ "        <property name=\"price\"/>\n"
+#~ "        <property name=\"type\"/>\n"
+#~ "        <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</list>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<list name=\"carComponents\" \n"
+#~ "        table=\"CarComponents\">\n"
+#~ "    <key column=\"carId\"/>\n"
+#~ "    <list-index column=\"sortOrder\"/>\n"
+#~ "    <composite-element class=\"CarComponent\">\n"
+#~ "        <property name=\"price\"/>\n"
+#~ "        <property name=\"type\"/>\n"
+#~ "        <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</list>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]>"
+#~ msgstr ""
+#~ "<![CDATA[<one-to-many \n"
+#~ "        class=\"ClassName\"\n"
+#~ "        not-found=\"ignore|exception\"\n"
+#~ "        entity-name=\"EntityName\"\n"
+#~ "        node=\"element-name\"\n"
+#~ "        embed-xml=\"true|false\"\n"
+#~ "    />]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<map name=\"parts\"\n"
+#~ "        cascade=\"all\">\n"
+#~ "    <key column=\"productId\" not-null=\"true\"/>\n"
+#~ "    <map-key formula=\"partName\"/>\n"
+#~ "    <one-to-many class=\"Part\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<map name=\"parts\"\n"
+#~ "        cascade=\"all\">\n"
+#~ "    <key column=\"productId\" not-null=\"true\"/>\n"
+#~ "    <map-key formula=\"partName\"/>\n"
+#~ "    <one-to-many class=\"Part\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"aliases\" \n"
+#~ "            table=\"person_aliases\" \n"
+#~ "            sort=\"natural\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date\" type=\"date\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+#~ "(name) asc\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date type=\"date\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+#~ "(name) asc\">\n"
+#~ "    <key column=\"person\"/>\n"
+#~ "    <element column=\"name\" type=\"string\"/>\n"
+#~ "</set>\n"
+#~ "\n"
+#~ "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+#~ "    <key column=\"year_id\"/>\n"
+#~ "    <map-key column=\"hol_name\" type=\"string\"/>\n"
+#~ "    <element column=\"hol_date type=\"date\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this."
+#~ "name\" ).list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this."
+#~ "name\" ).list();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Category\">\n"
+#~ "    <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+#~ "    ...\n"
+#~ "    <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+#~ "        <key column=\"CATEGORY_ID\"/>\n"
+#~ "        <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Item\">\n"
+#~ "    <id name=\"id\" column=\"ITEM_ID\"/>\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    <!-- inverse end -->\n"
+#~ "    <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+#~ "        <key column=\"ITEM_ID\"/>\n"
+#~ "        <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Category\">\n"
+#~ "    <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+#~ "    ...\n"
+#~ "    <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+#~ "        <key column=\"CATEGORY_ID\"/>\n"
+#~ "        <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Item\">\n"
+#~ "    <id name=\"id\" column=\"ITEM_ID\"/>\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    <!-- inverse end -->\n"
+#~ "    <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+#~ "        <key column=\"ITEM_ID\"/>\n"
+#~ "        <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+#~ "    </bag>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be "
+#~ "saved]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "category.getItems().add(item);          // The category now \"knows\" "
+#~ "about the relationship\n"
+#~ "item.getCategories().add(category);     // The item now \"knows\" about "
+#~ "the relationship\n"
+#~ "\n"
+#~ "session.persist(item);                   // The relationship won't be "
+#~ "saved!\n"
+#~ "session.persist(category);               // The relationship will be "
+#~ "saved]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"/>\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\" inverse=\"true\">\n"
+#~ "        <key column=\"parent_id\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"/>\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\">\n"
+#~ "        <key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Parent\">\n"
+#~ "    <id name=\"id\" column=\"parent_id\"/>\n"
+#~ "    ....\n"
+#~ "    <map name=\"children\">\n"
+#~ "        <key column=\"parent_id\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        <map-key column=\"name\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "        <one-to-many class=\"Child\"/>\n"
+#~ "    </map>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Child\">\n"
+#~ "    <id name=\"id\" column=\"child_id\"/>\n"
+#~ "    ....\n"
+#~ "    <many-to-one name=\"parent\" \n"
+#~ "        class=\"Parent\" \n"
+#~ "        column=\"parent_id\"\n"
+#~ "        insert=\"false\"\n"
+#~ "        update=\"false\"\n"
+#~ "        not-null=\"true\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<map name=\"contracts\">\n"
+#~ "    <key column=\"employer_id\" not-null=\"true\"/>\n"
+#~ "    <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+#~ "    <one-to-many class=\"Contract\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<map name=\"contracts\">\n"
+#~ "    <key column=\"employer_id\" not-null=\"true\"/>\n"
+#~ "    <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+#~ "    <one-to-many class=\"Contract\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<map name=\"connections\">\n"
+#~ "    <key column=\"incoming_node_id\"/>\n"
+#~ "    <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+#~ "    <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+#~ "</map>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<map name=\"connections\">\n"
+#~ "    <key column=\"incoming_node_id\"/>\n"
+#~ "    <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+#~ "    <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+#~ "</map>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+#~ "    <collection-id column=\"ID\" type=\"long\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </collection-id>\n"
+#~ "    <key column=\"PERSON1\"/>\n"
+#~ "    <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+#~ "</idbag>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+#~ "    <collection-id column=\"ID\" type=\"long\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </collection-id>\n"
+#~ "    <key column=\"PERSON1\"/>\n"
+#~ "    <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+#~ "</idbag>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "\n"
+#~ "public class Parent {\n"
+#~ "    private long id;\n"
+#~ "    private Set children;\n"
+#~ "\n"
+#~ "    public long getId() { return id; }\n"
+#~ "    private void setId(long id) { this.id=id; }\n"
+#~ "\n"
+#~ "    private Set getChildren() { return children; }\n"
+#~ "    private void setChildren(Set children) { this.children=children; }\n"
+#~ "\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255), "
+#~ "parent_id bigint )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" inverse=\"true\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id"
+#~ "\" not-null=\"true\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" inverse=\"true\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id"
+#~ "\" not-null=\"true\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null\n"
+#~ "                     primary key,\n"
+#~ "                     name varchar(255),\n"
+#~ "                     parent_id bigint not null )\n"
+#~ "alter table child add constraint childfk0 (parent_id) references parent]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\">\n"
+#~ "            <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "            <one-to-many class=\"Child\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" table=\"childset\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Parent\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <set name=\"children\" table=\"childset\">\n"
+#~ "            <key column=\"parent_id\"/>\n"
+#~ "            <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Child\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table parent ( id bigint not null primary key )\n"
+#~ "create table child ( id bigint not null primary key, name varchar(255) )\n"
+#~ "create table childset ( parent_id bigint not null,\n"
+#~ "                        child_id bigint not null,\n"
+#~ "                        primary key ( parent_id, child_id ) )\n"
+#~ "alter table childset add constraint childsetfk0 (parent_id) references "
+#~ "parent\n"
+#~ "alter table childset add constraint childsetfk1 (child_id) references "
+#~ "child]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/component_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/component_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/component_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,584 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 09:01+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Component Mapping"
+msgstr "组件(Component)映射"
+
+#. Tag: para
+#, no-c-format
+msgid "The notion of a <emphasis>component</emphasis> is re-used in several different contexts and purposes throughout Hibernate."
+msgstr "<emphasis>组件(Component)</emphasis>这个概念在 Hibernate 中几处不同的地方为了不同的目的被重复使用。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dependent objects"
+msgstr "依赖对象(Dependent objects)"
+
+#. Tag: para
+#, no-c-format
+msgid "A component is a contained object that is persisted as a value type and not an entity reference. The term \"component\" refers to the object-oriented notion of composition and not to architecture-level components. For example, you can model a person like this:"
+msgstr "组件(Component)是一个被包含的对象,在持久化的过程中,它被当作值类型,而并非一个实体的引用。在这篇文档中,组件这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。举个例子,你对人(Person)这个概念可以像下面这样来建模: "
+
+#. Tag: para
+#, no-c-format
+msgid "Now <literal>Name</literal> can be persisted as a component of <literal>Person</literal>. <literal>Name</literal> defines getter and setter methods for its persistent properties, but it does not need to declare any interfaces or identifier properties."
+msgstr "在持久化的过程中,<literal>姓名(Name)</literal>可以作为<literal>人(Person)</literal>的一个组件。需要注意的是:你应该为<literal>姓名</literal>的持久化属性定义 getter 和 setter 方法,但是你不需要实现任何的接口或申明标识符字段。  "
+
+#. Tag: para
+#, no-c-format
+msgid "Our Hibernate mapping would look like this:"
+msgstr "以下是这个例子的 Hibernate 映射文件: "
+
+#. Tag: para
+#, no-c-format
+msgid "The person table would have the columns <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal> and <literal>last</literal>."
+msgstr "人员(Person)表中将包括 <literal>pid</literal>,<literal>birthday</literal>,<literal>initial</literal>,<literal>first</literal>和 <literal>last</literal> 等字段。"
+
+#. Tag: para
+#, no-c-format
+msgid "Like value types, components do not support shared references. In other words, two persons could have the same name, but the two person objects would contain two independent name objects that were only \"the same\" by value. The null value semantics of a component are <emphasis>ad hoc</emphasis>. When reloading the containing object, Hibernate will assume that if all component columns are null, then the entire component is null. This is suitable for most purposes."
+msgstr "就像所有的值类型一样,组件不支持共享引用。换句话说,两个人可能重名,但是两个 Person 对象应该包含两个独立的 Name 对象,只不过这两个 Name 对象具有“同样”的值。组件的值可以为空,其定义如下。 每当 Hibernate 重新加载一个包含组件的对象,如果该组件的所有字段为空,Hibernate 将假定整个组件为空。在大多数情况下,这样假定应该是没有问题的。"
+
+#. Tag: para
+#, no-c-format
+msgid "The properties of a component can be of any Hibernate type (collections, many-to-one associations, other components, etc). Nested components should <emphasis>not</emphasis> be considered an exotic usage. Hibernate is intended to support a fine-grained object model."
+msgstr "组件的属性可以是任意一种 Hibernate 类型(包括集合,多对多关联,以及其它组件等等)。嵌套组件不应该被当作一种特殊的应用(Nested components should not be considered an exotic usage)。Hibernate 倾向于支持细颗粒度的(fine-grained)对象模型。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;parent&gt;</literal> subelement that maps a property of the component class as a reference back to the containing entity."
+msgstr "<literal>&lt;component&gt;</literal> 元素允许加入一个 <literal>&lt;parent&gt;</literal> 子元素,在组件类内部就可以有一个指向其容器的实体的反向引用。"
+
+#. Tag: title
+#, no-c-format
+msgid "Collections of dependent objects"
+msgstr "在集合中出现的依赖对象(Collections of dependent objects)"
+
+#. Tag: para
+#, no-c-format
+msgid "Collections of components are supported (e.g. an array of type <literal>Name</literal>). Declare your component collection by replacing the <literal>&lt;element&gt;</literal> tag with a <literal>&lt;composite-element&gt;</literal> tag:"
+msgstr "Hibernate 支持组件的集合(例如:一个元素是姓名 <literal>Name</literal> 这种类型的数组)。你可以使用 <literal>&lt;composite-element&gt;</literal> 标签替代 <literal>&lt;element&gt;</literal> 标签来定义你的组件集合。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you define a <literal>Set</literal> of composite elements, it is important to implement <literal>equals()</literal> and <literal>hashCode()</literal> correctly."
+msgstr "注意,如果你定义的 Set 包含组合元素(composite-element),正确地实现 <literal>equals()</literal> 和 <literal>hashCode()</literal> 是非常重要的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Composite elements can contain components but not collections. If your composite element contains components, use the <literal>&lt;nested-composite-element&gt;</literal> tag. This case is a collection of components which themselves have components. You may want to consider if a one-to-many association is more appropriate. Remodel the composite element as an entity, but be aware that even though the Java model is the same, the relational model and persistence semantics are still slightly different."
+msgstr "组合元素可以包含组件,但是不能包含集合。如果你的组合元素自身包含组件,你必须使用 <literal>&lt;nested-composite-element&gt;</literal> 标签。这是一个相当特殊的案例 — 在一个组件的集合里,那些组件本身又可以包含其他的组件。这个时候你就应该考虑一下使用 one-to-many 关联是否会更恰当。尝试对这个组合元素重新建模为一个实体 — 但是需要注意的是,虽然 Java 模型和重新建模前是一样的,关系模型和持久性语义会有细微的变化。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A composite element mapping does not support null-able properties if you are using a <literal>&lt;set&gt;</literal>. There is no separate primary key column in the composite element table. Hibernate uses each column's value to identify a record when deleting objects, which is not possible with null values. You have to either use only not-null properties in a composite-element or choose a <literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal> or <literal>&lt;idbag&gt;</literal>."
+msgstr "请注意如果你使用 <literal>&lt;set&gt;</literal> 标签,一个组合元素的映射不支持可能为空的属性. 当删除对象时,Hibernate 必须使用每一个字段的值来确定一条记录(在组合元素表中,没有单独的关键字段),如果有为 null 的字段,这样做就不可能了。你必须作出一个选择,要么在组合元素中使用不能为空的属性,要么选择使用 <literal>&lt;list&gt;</literal>,<literal>&lt;map&gt;</literal>,<literal>&lt;bag&gt;</literal> 或者 <literal>&lt;idbag&gt;</literal> 而不是 <literal>&lt;set&gt;</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A special case of a composite element is a composite element with a nested <literal>&lt;many-to-one&gt;</literal> element. This mapping allows you to map extra columns of a many-to-many association table to the composite element class. The following is a many-to-many association from <literal>Order</literal> to <literal>Item</literal>, where <literal>purchaseDate</literal>, <literal>price</literal> and <literal>quantity</literal> are properties of the association:"
+msgstr "组合元素有个特别的用法是它可以包含一个<literal>&lt;many-to-one&gt;</literal>元素。类似这样的映射允许你将一个 many-to-many 关联表的额外字段映射为组合元素类。接下来的的例子是从 <literal>Order</literal> 到 <literal>Item</literal> 的一个多对多的关联关系,关联属性是 <literal>purchaseDate</literal>,<literal>price</literal> 和 <literal>quantity</literal> 。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There cannot be a reference to the purchase on the other side for bidirectional association navigation. Components are value types and do not allow shared references. A single <literal>Purchase</literal> can be in the set of an <literal>Order</literal>, but it cannot be referenced by the <literal>Item</literal> at the same time."
+msgstr "当然,当你定义 Item 时,你无法引用这些 purchase,因此你无法实现双向关联查询。记住组件是值类型,并且不允许共享引用。某一个特定的 <literal>Purchase</literal> 可以放在 <literal>Order</literal> 的集合中,但它不能同时被 <literal>Item</literal> 所引用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Even ternary (or quaternary, etc) associations are possible:"
+msgstr "其实组合元素的这个用法可以扩展到三重或多重关联:"
+
+#. Tag: para
+#, no-c-format
+msgid "Composite elements can appear in queries using the same syntax as associations to other entities."
+msgstr "在查询中,表达组合元素的语法和关联到其他实体的语法是一样的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Components as Map indices"
+msgstr "组件作为 Map 的索引(Components as Map indices )"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;composite-map-key&gt;</literal> element allows you to map a component class as the key of a <literal>Map</literal>. Ensure that you override <literal>hashCode()</literal> and <literal>equals()</literal> correctly on the component class."
+msgstr "<literal>&lt;composite-map-key&gt;</literal> 元素允许你映射一个组件类作为一个 <literal>Map</literal> 的 key,前提是你必须正确的在这个类中重写了 <literal>hashCode()</literal> 和 <literal>equals()</literal> 方法。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Components as composite identifiers"
+msgstr "组件作为联合标识符(Components as composite identifiers)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can use a component as an identifier of an entity class. Your component class must satisfy certain requirements:"
+msgstr "你可以使用一个组件作为一个实体类的标识符。你的组件类必须满足以下要求: "
+
+#. Tag: para
+#, no-c-format
+msgid "It must implement <literal>java.io.Serializable</literal>."
+msgstr "它必须实现 <literal>java.io.Serializable</literal> 接口"
+
+#. Tag: para
+#, no-c-format
+msgid "It must re-implement <literal>equals()</literal> and <literal>hashCode()</literal> consistently with the database's notion of composite key equality."
+msgstr "它必须重新实现 <literal>equals()</literal> 和 <literal>hashCode()</literal> 方法,始终和组合关键字在数据库中的概念保持一致 "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "In Hibernate3, although the second requirement is not an absolutely hard requirement of Hibernate, it is recommended."
+msgstr "注意:在 Hibernate3 中,第二个要求并非是 Hibernate 强制必须的。但最好这样做。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You cannot use an <literal>IdentifierGenerator</literal> to generate composite keys. Instead the application must assign its own identifiers."
+msgstr "你不能使用一个 <literal>IdentifierGenerator</literal> 产生组合关键字。一个应用程序必须分配它自己的标识符。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Use the <literal>&lt;composite-id&gt;</literal> tag, with nested <literal>&lt;key-property&gt;</literal> elements, in place of the usual <literal>&lt;id&gt;</literal> declaration. For example, the <literal>OrderLine</literal> class has a primary key that depends upon the (composite) primary key of <literal>Order</literal>."
+msgstr "使用 <literal>&lt;composite-id&gt;</literal> 标签(并且内嵌 <literal>&lt;key-property&gt;</literal> 元素)代替通常的 <literal>&lt;id&gt;</literal> 标签。比如,<literal>OrderLine</literal> 类具有一个主键,这个主键依赖于 <literal>Order</literal> 的(联合)主键。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Any foreign keys referencing the <literal>OrderLine</literal> table are now composite. Declare this in your mappings for other classes. An association to <literal>OrderLine</literal> is mapped like this:"
+msgstr "现在,任何指向 <literal>OrderLine</literal> 的外键都是复合的。在你的映射文件中,必须为其他类也这样声明。例如,一个指向 <literal>OrderLine</literal> 的关联可能被这样映射: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>column</literal> element is an alternative to the <literal>column</literal> attribute everywhere. Using the <literal>column</literal> element just gives more declaration options, which are mostly useful when utilizing <literal>hbm2ddl</literal>"
+msgstr "注意在各个地方 <literal>column</literal> 标签都是 <literal>column</literal> 属性的替代写法。使用 <literal>column</literal> 元素只是给出一个更详细的选项,在使用 <literal>hbm2ddl</literal> 时会更有用。"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>many-to-many</literal> association to <literal>OrderLine</literal> also uses the composite foreign key:"
+msgstr "指向 <literal>OrderLine</literal> 的<literal>多对多</literal>关联也使用联合外键:"
+
+#. Tag: para
+#, no-c-format
+msgid "The collection of <literal>OrderLine</literal>s in <literal>Order</literal> would use:"
+msgstr "在 <literal>Order</literal> 中,<literal>OrderLine</literal> 的集合则是这样: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;one-to-many&gt;</literal> element declares no columns."
+msgstr "与通常一样,<literal>&lt;one-to-many&gt;</literal> 元素不声明任何列。"
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>OrderLine</literal> itself owns a collection, it also has a composite foreign key."
+msgstr "假若 <literal>OrderLine</literal> 本身拥有一个集合,它也具有组合外键。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic components"
+msgstr "动态组件(Dynamic components)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also map a property of type <literal>Map</literal>:"
+msgstr "你甚至可以映射 <literal>Map</literal> 类型的属性: "
+
+#. Tag: para
+#, no-c-format
+msgid "The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are identical to <literal>&lt;component&gt;</literal>. The advantage of this kind of mapping is the ability to determine the actual properties of the bean at deployment time just by editing the mapping document. Runtime manipulation of the mapping document is also possible, using a DOM parser. You can also access, and change, Hibernate's configuration-time metamodel via the <literal>Configuration</literal> object."
+msgstr "从 <literal>&lt;dynamic-component&gt;</literal> 映射的语义上来讲,它和 <literal>&lt;component&gt;</literal> 是相同的。这种映射类型的优点在于通过修改映射文件,就可以具有在部署时检测真实属性的能力。利用一个 DOM 解析器,也可以在程序运行时操作映射文件。更好的是,你可以通过 <literal>Configuration</literal> 对象来访问(或者修改)Hibernate 的运行时元模型。 "
+
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class Person {\n"
+#~ "    private java.util.Date birthday;\n"
+#~ "    private Name name;\n"
+#~ "    private String key;\n"
+#~ "    public String getKey() {\n"
+#~ "        return key;\n"
+#~ "    }\n"
+#~ "    private void setKey(String key) {\n"
+#~ "        this.key=key;\n"
+#~ "    }\n"
+#~ "    public java.util.Date getBirthday() {\n"
+#~ "        return birthday;\n"
+#~ "    }\n"
+#~ "    public void setBirthday(java.util.Date birthday) {\n"
+#~ "        this.birthday = birthday;\n"
+#~ "    }\n"
+#~ "    public Name getName() {\n"
+#~ "        return name;\n"
+#~ "    }\n"
+#~ "    public void setName(Name name) {\n"
+#~ "        this.name = name;\n"
+#~ "    }\n"
+#~ "    ......\n"
+#~ "    ......\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class Name {\n"
+#~ "    char initial;\n"
+#~ "    String first;\n"
+#~ "    String last;\n"
+#~ "    public String getFirst() {\n"
+#~ "        return first;\n"
+#~ "    }\n"
+#~ "    void setFirst(String first) {\n"
+#~ "        this.first = first;\n"
+#~ "    }\n"
+#~ "    public String getLast() {\n"
+#~ "        return last;\n"
+#~ "    }\n"
+#~ "    void setLast(String last) {\n"
+#~ "        this.last = last;\n"
+#~ "    }\n"
+#~ "    public char getInitial() {\n"
+#~ "        return initial;\n"
+#~ "    }\n"
+#~ "    void setInitial(char initial) {\n"
+#~ "        this.initial = initial;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+#~ "optional -->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+#~ "optional -->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+#~ "        <parent name=\"namedPerson\"/> <!-- reference back to the Person "
+#~ "-->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+#~ "    <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"birthday\" type=\"date\"/>\n"
+#~ "    <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+#~ "        <parent name=\"namedPerson\"/> <!-- reference back to the Person "
+#~ "-->\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </component>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <composite-element class=\"eg.Name\"> <!-- class attribute required --"
+#~ ">\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+#~ "    <key column=\"id\"/>\n"
+#~ "    <composite-element class=\"eg.Name\"> <!-- class attribute required --"
+#~ ">\n"
+#~ "        <property name=\"initial\"/>\n"
+#~ "        <property name=\"first\"/>\n"
+#~ "        <property name=\"last\"/>\n"
+#~ "    </composite-element>\n"
+#~ "</set>]]>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.Purchase\">\n"
+#~ "            <property name=\"purchaseDate\"/>\n"
+#~ "            <property name=\"price\"/>\n"
+#~ "            <property name=\"quantity\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class "
+#~ "attribute is optional -->\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.Purchase\"&gt;\n"
+#~ "            &lt;property name=\"purchaseDate\"/&gt;\n"
+#~ "            &lt;property name=\"price\"/&gt;\n"
+#~ "            &lt;property name=\"quantity\"/&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt; &lt;!-- "
+#~ "class attribute is optional --&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Order\" .... >\n"
+#~ "    ....\n"
+#~ "    <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+#~ "        <key column=\"order_id\">\n"
+#~ "        <composite-element class=\"eg.OrderLine\">\n"
+#~ "            <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
+#~ "            <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"eg.Order\" .... &gt;\n"
+#~ "    ....\n"
+#~ "    &lt;set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"order_id\"&gt;\n"
+#~ "        &lt;composite-element class=\"eg.OrderLine\"&gt;\n"
+#~ "            &lt;many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/"
+#~ "&gt;\n"
+#~ "            &lt;many-to-one name=\"item\" class=\"eg.Item\"/&gt;\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" class=\"OrderLineId\">\n"
+#~ "        <key-property name=\"lineId\"/>\n"
+#~ "        <key-property name=\"orderId\"/>\n"
+#~ "        <key-property name=\"customerId\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\">\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    \n"
+#~ "    &lt;composite-id name=\"id\" class=\"OrderLineId\"&gt;\n"
+#~ "        &lt;key-property name=\"lineId\"/&gt;\n"
+#~ "        &lt;key-property name=\"orderId\"/&gt;\n"
+#~ "        &lt;key-property name=\"customerId\"/&gt;\n"
+#~ "    &lt;/composite-id&gt;\n"
+#~ "    \n"
+#~ "    &lt;property name=\"name\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;many-to-one name=\"order\" class=\"Order\"\n"
+#~ "            insert=\"false\" update=\"false\"&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-one&gt;\n"
+#~ "    ....\n"
+#~ "    \n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
+#~ "<!-- the \"class\" attribute is optional, as usual -->\n"
+#~ "    <column name=\"lineId\"/>\n"
+#~ "    <column name=\"orderId\"/>\n"
+#~ "    <column name=\"customerId\"/>\n"
+#~ "</many-to-one>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"orderLine\" class=\"OrderLine\"&gt;\n"
+#~ "&lt;!-- the \"class\" attribute is optional, as usual --&gt;\n"
+#~ "    &lt;column name=\"lineId\"/&gt;\n"
+#~ "    &lt;column name=\"orderId\"/&gt;\n"
+#~ "    &lt;column name=\"customerId\"/&gt;\n"
+#~ "&lt;/many-to-one&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
+#~ "    <key column name=\"warehouseId\"/>\n"
+#~ "    <many-to-many class=\"OrderLine\">\n"
+#~ "        <column name=\"lineId\"/>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </many-to-many>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"undeliveredOrderLines\"&gt;\n"
+#~ "    &lt;key column name=\"warehouseId\"/&gt;\n"
+#~ "    &lt;many-to-many class=\"OrderLine\"&gt;\n"
+#~ "        &lt;column name=\"lineId\"/&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/many-to-many&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
+#~ "    <key>\n"
+#~ "        <column name=\"orderId\"/>\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "    </key>\n"
+#~ "    <one-to-many class=\"OrderLine\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"orderLines\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key&gt;\n"
+#~ "        &lt;column name=\"orderId\"/&gt;\n"
+#~ "        &lt;column name=\"customerId\"/&gt;\n"
+#~ "    &lt;/key&gt;\n"
+#~ "    &lt;one-to-many class=\"OrderLine\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"OrderLine\">\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    <list name=\"deliveryAttempts\">\n"
+#~ "        <key>   <!-- a collection inherits the composite key type -->\n"
+#~ "            <column name=\"lineId\"/>\n"
+#~ "            <column name=\"orderId\"/>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "        </key>\n"
+#~ "        <list-index column=\"attemptId\" base=\"1\"/>\n"
+#~ "        <composite-element class=\"DeliveryAttempt\">\n"
+#~ "            ...\n"
+#~ "        </composite-element>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"OrderLine\"&gt;\n"
+#~ "    ....\n"
+#~ "    ....\n"
+#~ "    &lt;list name=\"deliveryAttempts\"&gt;\n"
+#~ "        &lt;key&gt;   &lt;!-- a collection inherits the composite key "
+#~ "type --&gt;\n"
+#~ "            &lt;column name=\"lineId\"/&gt;\n"
+#~ "            &lt;column name=\"orderId\"/&gt;\n"
+#~ "            &lt;column name=\"customerId\"/&gt;\n"
+#~ "        &lt;/key&gt;\n"
+#~ "        &lt;list-index column=\"attemptId\" base=\"1\"/&gt;\n"
+#~ "        &lt;composite-element class=\"DeliveryAttempt\"&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/composite-element&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
+#~ "    <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
+#~ "    <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
+#~ "    <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
+#~ "</dynamic-component>]]>"
+#~ msgstr ""
+#~ "&lt;dynamic-component name=\"userAttributes\"&gt;\n"
+#~ "    &lt;property name=\"foo\" column=\"FOO\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"bar\" column=\"BAR\" type=\"integer\"/&gt;\n"
+#~ "    &lt;many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/&gt;\n"
+#~ "&lt;/dynamic-component&gt;"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/configuration.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/configuration.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/configuration.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1979 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 09:03+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is designed to operate in many different environments and, as such, there is a broad range of configuration parameters. Fortunately, most have sensible default values and Hibernate is distributed with an example <literal>hibernate.properties</literal> file in <literal>etc/</literal> that displays the various options. Simply put the example file in your classpath and customize it to suit your needs."
+msgstr "由于 Hibernate 是为了能在各种不同环境下工作而设计的,因此存在着大量的配置参数。幸运的是多数配置参数都有比较直观的默认值,并有随 Hibernate 一同分发的配置样例 <literal>hibernate.properties</literal>(位于 <literal>etc/</literal>)来展示各种配置选项。所需做的仅仅是将这个样例文件复制到类路径(classpath)下并进行定制。"
+
+#. Tag: title
+#, no-c-format
+msgid "Programmatic configuration"
+msgstr "可编程的配置方式"
+
+#. Tag: para
+#, no-c-format
+msgid "An instance of <classname>org.hibernate.cfg.Configuration</classname> represents an entire set of mappings of an application's Java types to an SQL database. The <classname>org.hibernate.cfg.Configuration</classname> is used to build an immutable <interfacename>org.hibernate.SessionFactory</interfacename>. The mappings are compiled from various XML mapping files."
+msgstr "<literal>org.hibernate.cfg.Configuration</literal> 实例代表了一个应用程序中 Java 类型到SQL数据库映射的完整集合。<classname>org.hibernate.cfg.Configuration</classname> 被用来构建一个(不可变的(immutable))<interfacename>org.hibernate.SessionFactory</interfacename>。映射定义则由不同的 XML 映射定义文件编译而来。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can obtain a <classname>org.hibernate.cfg.Configuration</classname> instance by instantiating it directly and specifying XML mapping documents. If the mapping files are in the classpath, use <literal>addResource()</literal>. For example:"
+msgstr "你可以直接实例化 <classname>org.hibernate.cfg.Configuration</classname> 来获取一个实例,并为它指定 XML 映射定义文件。如果映射定义文件在类路径(classpath)中,请使用 <literal>addResource()</literal>。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative way is to specify the mapped class and allow Hibernate to find the mapping document for you:"
+msgstr "一个替代方法(有时是更好的选择)是,指定被映射的类,让 Hibernate 帮你寻找映射定义文件: "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will then search for mapping files named <filename>/org/hibernate/auction/Item.hbm.xml</filename> and <filename>/org/hibernate/auction/Bid.hbm.xml</filename> in the classpath. This approach eliminates any hardcoded filenames."
+msgstr "Hibernate 将会在类路径(classpath)中寻找名字为 <filename>/org/hibernate/auction/Item.hbm.xml</filename> 和 <filename>/org/hibernate/auction/Bid.hbm.xml</filename> 映射定义文件。这种方式消除了任何对文件名的硬编码(hardcoded)。"
+
+#. Tag: para
+#, no-c-format
+msgid "A <classname>org.hibernate.cfg.Configuration</classname> also allows you to specify configuration properties. For example:"
+msgstr "<classname>org.hibernate.cfg.Configuration</classname>> 也允许你指定配置属性。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not the only way to pass configuration properties to Hibernate. Some alternative options include:"
+msgstr "当然这不是唯一的传递 Hibernate 配置属性的方式,其他可选方式还包括: "
+
+#. Tag: para
+#, no-c-format
+msgid "Pass an instance of <classname>java.util.Properties</classname> to <literal>Configuration.setProperties()</literal>."
+msgstr "传一个 <classname>java.util.Properties</classname> 实例给 <literal>Configuration.setProperties()</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Place a file named <filename>hibernate.properties</filename> in a root directory of the classpath."
+msgstr "将 <filename>hibernate.properties</filename> 放置在类路径(classpath)的根目录下(root directory)。"
+
+#. Tag: para
+#, no-c-format
+msgid "Set <literal>System</literal> properties using <literal>java -Dproperty=value</literal>."
+msgstr "通过 <literal>java -Dproperty=value</literal> 来设置系统(<literal>System</literal>)属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "Include <literal>&lt;property&gt;</literal> elements in <literal>hibernate.cfg.xml</literal> (this is discussed later)."
+msgstr "在 <literal>hibernate.cfg.xml</literal> 中加入元素 <literal>&lt;property&gt;</literal>(稍后讨论)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to get started quickly<filename>hibernate.properties</filename> is the easiest approach."
+msgstr "如果你想快速上路,<filename>hibernate.properties</filename> 就是最容易的途径。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <classname>org.hibernate.cfg.Configuration</classname> is intended as a startup-time object that will be discarded once a <literal>SessionFactory</literal> is created."
+msgstr "<classname>org.hibernate.cfg.Configuration</classname> 实例被设计成启动期间(startup-time)对象,一旦 <literal>SessionFactory</literal> 创建完成它就被丢弃了。"
+
+#. Tag: title
+#, no-c-format
+msgid "Obtaining a SessionFactory"
+msgstr "获得 SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid "When all mappings have been parsed by the <classname>org.hibernate.cfg.Configuration</classname>, the application must obtain a factory for <interfacename>org.hibernate.Session</interfacename> instances. This factory is intended to be shared by all application threads:"
+msgstr "当所有映射定义被 <classname>org.hibernate.cfg.Configuration</classname> 解析后,应用程序必须获得一个用于构造 <interfacename>org.hibernate.Session</interfacename> 实例的工厂。这个工厂将被应用程序的所有线程共享:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does allow your application to instantiate more than one <interfacename>org.hibernate.SessionFactory</interfacename>. This is useful if you are using more than one database."
+msgstr "Hibernate 允许你的应用程序创建多个 <interfacename>org.hibernate.SessionFactory</interfacename> 实例。这对 使用多个数据库的应用来说很有用。"
+
+#. Tag: title
+#, no-c-format
+msgid "JDBC connections"
+msgstr "JDBC 连接"
+
+#. Tag: para
+#, no-c-format
+msgid "It is advisable to have the <interfacename>org.hibernate.SessionFactory</interfacename> create and pool JDBC connections for you. If you take this approach, opening a <interfacename>org.hibernate.Session</interfacename> is as simple as:"
+msgstr "通常你希望  <interfacename>org.hibernate.SessionFactory</interfacename> 来为你创建和缓存(pool)JDBC 连接。如果你采用这种方式,只需要如下例所示那样,打开一个 <interfacename>org.hibernate.Session</interfacename>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Once you start a task that requires access to the database, a JDBC connection will be obtained from the pool."
+msgstr "一旦你需要进行数据访问时,就会从连接池(connection pool)获得一个 JDBC 连接。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Before you can do this, you first need to pass some JDBC connection properties to Hibernate. All Hibernate property names and semantics are defined on the class <classname>org.hibernate.cfg.Environment</classname>. The most important settings for JDBC connection configuration are outlined below."
+msgstr "为了使这种方式工作起来,我们需要向 Hibernate 传递一些 JDBC 连接的属性。所有 Hibernate 属性的名字和语义都在 <classname>org.hibernate.cfg.Environment</classname> 中定义。我们现在将描述 JDBC 连接配置中最重要的设置。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will obtain and pool connections using <classname>java.sql.DriverManager</classname> if you set the following properties:"
+msgstr "如果你设置如下属性,Hibernate 将使用 <classname>java.sql.DriverManager</classname> 来获得(和缓存)JDBC 连接:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC Properties"
+msgstr "Hibernate JDBC 属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property name"
+msgstr "属性名"
+
+#. Tag: entry
+#, no-c-format
+msgid "Purpose"
+msgstr "用途"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.driver_class</property>"
+msgstr "<property>hibernate.connection.driver_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC driver class</emphasis>"
+msgstr "<emphasis>JDBC 驱动类</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.url</property>"
+msgstr "<property>hibernate.connection.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>JDBC URL</emphasis>"
+msgstr "<emphasis>JDBC URL</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.username</property>"
+msgstr "<property>hibernate.connection.username</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis>"
+msgstr "<emphasis>数据库用户</emphasis>(可选) "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.password</property>"
+msgstr "<property>hibernate.connection.password</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis>"
+msgstr "<emphasis>数据库密码</emphasis>(可选) "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.pool_size</property>"
+msgstr "<property>hibernate.connection.pool_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>maximum number of pooled connections</emphasis>"
+msgstr "<emphasis>连接池容量上限数目</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's own connection pooling algorithm is, however, quite rudimentary. It is intended to help you get started and is <emphasis>not intended for use in a production system</emphasis>, or even for performance testing. You should use a third party pool for best performance and stability. Just replace the <property>hibernate.connection.pool_size</property> property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might like to use c3p0."
+msgstr "但 Hibernate 自带的连接池算法相当不成熟。它只是为了让你快些上手<emphasis>,并不适合用于产品系统</emphasis>或性能测试中。 出于最佳性能和稳定性考虑你应该使用第三方的连接池。只需要用特定连接池的设置替换 <literal>hibernate.connection.pool_size</literal> 即可。这将关闭 Hibernate 自带的连接池。例如,你可能会想用 C3P0。  "
+
+#. Tag: para
+#, no-c-format
+msgid "C3P0 is an open source JDBC connection pool distributed along with Hibernate in the <filename>lib</filename> directory. Hibernate will use its <classname>org.hibernate.connection.C3P0ConnectionProvider</classname> for connection pooling if you set <property>hibernate.c3p0.*</property> properties. If you would like to use Proxool, refer to the packaged <filename>hibernate.properties</filename> and the Hibernate web site for more information."
+msgstr "C3P0 是一个随 Hibernate 一同分发的开源的 JDBC 连接池,它位于 <literal>lib</literal>目录下。 如果你设置了 <literal>hibernate.c3p0.*</literal> 相关的属性,Hibernate将使用 <literal>C3P0ConnectionProvider</literal> 来缓存 JDBC 连接。如果你更原意使用 Proxool,请参考发行包中的 <literal>hibernate.properties</literal> 并到 Hibernate 网站获取更多的信息。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following is an example <filename>hibernate.properties</filename> file for c3p0:"
+msgstr "这是一个使用 C3P0 的 <literal>hibernate.properties</literal> 样例文件: "
+
+#. Tag: para
+#, no-c-format
+msgid "For use inside an application server, you should almost always configure Hibernate to obtain connections from an application server <interfacename>javax.sql.Datasource</interfacename> registered in JNDI. You will need to set at least one of the following properties:"
+msgstr "为了能在应用程序服务器(application server)中使用 Hibernate,应当总是将 Hibernate 配置成从注册在 JNDI 中的 <literal>Datasource</literal> 处获得连接,你至少需要设置下列属性中的一个: "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Datasource Properties"
+msgstr "Hibernate 数据源属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.datasource</property>"
+msgstr "<property>hibernate.connection.datasource</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>datasource JNDI name</emphasis>"
+msgstr "<emphasis>数据库用户</emphasis>(可选) "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.url</property>"
+msgstr "<property>hibernate.jndi.url</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
+msgstr "<emphasis>JNDI 提供者的 URL</emphasis>(可选)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.class</property>"
+msgstr "<property>hibernate.jndi.class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>class of the JNDI <literal>InitialContextFactory</literal></emphasis> (optional)"
+msgstr "<emphasis>JNDI <literal>InitialContextFactory</literal> 类</emphasis>(可选)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user</emphasis> (optional)"
+msgstr "<emphasis>数据库用户</emphasis>(可选)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>database user password</emphasis> (optional)"
+msgstr "<emphasis>数据库密码</emphasis>(可选)"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example <filename>hibernate.properties</filename> file for an application server provided JNDI datasource:"
+msgstr "这是一个使用应用程序服务器提供的 JNDI 数据源的 <literal>hibernate.properties</literal> 样例文件: "
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC connections obtained from a JNDI datasource will automatically participate in the container-managed transactions of the application server."
+msgstr "从 JNDI 数据源获得的 JDBC 连接将自动参与到应用程序服务器中容器管理的事务(container-managed transactions)中去。"
+
+#. Tag: para
+#, no-c-format
+msgid "Arbitrary connection properties can be given by prepending \"<literal>hibernate.connection</literal>\" to the connection property name. For example, you can specify a <property>charSet</property> connection property using <property>hibernate.connection.charSet</property>."
+msgstr "任何连接(connection)属性的属性名都要以 \"<literal>hibernate.connnection</literal>\" 开头。例如,你可能会使用 <literal>hibernate.connection.charSet</literal> 来指定 <property>charSet</property> 连接属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can define your own plugin strategy for obtaining JDBC connections by implementing the interface <interfacename>org.hibernate.connection.ConnectionProvider</interfacename>, and specifying your custom implementation via the <property>hibernate.connection.provider_class</property> property."
+msgstr "通过实现 <literal>org.hibernate.connection.ConnectionProvider</literal> 接口,你可以定义属于你自己的获得JDBC连接的插件策略。通过设置<literal>hibernate.connection.provider_class</literal>,你可以选择一个自定义的实现。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Optional configuration properties"
+msgstr "可选的配置属性"
+
+#. Tag: para
+#, no-c-format
+msgid "There are a number of other properties that control the behavior of Hibernate at runtime. All are optional and have reasonable default values."
+msgstr "有大量属性能用来控制 Hibernate 在运行期的行为。它们都是可选的,并拥有适当的默认值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Some of these properties are \"system-level\" only.</emphasis> System-level properties can be set only via <literal>java -Dproperty=value</literal> or <filename>hibernate.properties</filename>. They <emphasis>cannot</emphasis> be set by the other techniques described above."
+msgstr "<emphasis>其中一些属性是\"系统级(system-level)的\"</emphasis>。系统级属性只能通过<literal>java -Dproperty=value</literal> 或 <literal>hibernate.properties</literal> 来设置,而<emphasis>不能</emphasis>用上面描述的其他方法来设置。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Configuration Properties"
+msgstr "Hibernate 配置属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.dialect</property>"
+msgstr "<property>hibernate.dialect</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a Hibernate <classname>org.hibernate.dialect.Dialect</classname> which allows Hibernate to generate SQL optimized for a particular relational database."
+msgstr "允许 Hibernate 针对特定的关系数据库生成优化的 SQL 的 <classname>org.hibernate.dialect.Dialect</classname> 的类名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>full.classname.of.Dialect</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>full.classname.of.Dialect</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases Hibernate will actually be able to choose the correct <classname>org.hibernate.dialect.Dialect</classname> implementation based on the <literal>JDBC metadata</literal> returned by the JDBC driver."
+msgstr "在大多数情况下,Hibernate 可以根据 JDBC 驱动返回的 <literal>JDBC metadata</literal> 选择正确的 <classname>org.hibernate.dialect.Dialect</classname> 实现。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.show_sql</property>"
+msgstr "<property>hibernate.show_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Write all SQL statements to console. This is an alternative to setting the log category <literal>org.hibernate.SQL</literal> to <literal>debug</literal>."
+msgstr "输出所有 SQL 语句到控制台。有一个另外的选择是把 <literal>org.hibernate.SQL</literal> 这个 log category设为 <literal>debug</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true</literal> | <literal>false</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>true</literal> | <literal>false</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.format_sql</property>"
+msgstr "<property>hibernate.format_sql</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pretty print the SQL in the log and console."
+msgstr "在 log 和 console 中打印出更漂亮的 SQL。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_schema</property>"
+msgstr "<property>hibernate.default_schema</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualify unqualified table names with the given schema/tablespace in generated SQL."
+msgstr "在生成的 SQL 中,将给定的 schema/tablespace 附加于非全限定名的表名上。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>SCHEMA_NAME</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_catalog</property>"
+msgstr "<property>hibernate.default_catalog</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Qualifies unqualified table names with the given catalog in generated SQL."
+msgstr "在生成的 SQL 中,将给定的 catalog 附加于非全限定名的表名上。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>CATALOG_NAME</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.session_factory_name</property>"
+msgstr "<property>hibernate.session_factory_name</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The <interfacename>org.hibernate.SessionFactory</interfacename> will be automatically bound to this name in JNDI after it has been created."
+msgstr "<interfacename>org.hibernate.SessionFactory</interfacename> 创建后,将自动使用这个名字绑定到 JNDI 中。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>jndi/composite/name</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>jndi/composite/name</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.max_fetch_depth</property>"
+msgstr "<property>hibernate.max_fetch_depth</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a maximum \"depth\" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A <literal>0</literal> disables default outer join fetching."
+msgstr "为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度。值为 <literal>0</literal> 意味着将关闭默认的外连接抓取。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values between <literal>0</literal> and <literal>3</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis> 建议在 <literal>0</literal> 到 <literal>3</literal> 之间取值 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_batch_fetch_size</property>"
+msgstr "<property>hibernate.default_batch_fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default size for Hibernate batch fetching of associations."
+msgstr "为 Hibernate 关联的批量抓取设置默认数量。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis>建议的取值为 <literal>4</literal>,<literal>8</literal>,和 <literal>16</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.default_entity_mode</property>"
+msgstr "<property>hibernate.default_entity_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets a default mode for entity representation for all sessions opened from this <literal>SessionFactory</literal>"
+msgstr "为由这个 <literal>SessionFactory</literal> 打开的所有 Session 指定默认的实体表现模式。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
+msgstr "<emphasis role=\"strong\">取值</emphasis><literal>dynamic-map</literal>,<literal>dom4j</literal>,<literal>pojo</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.order_updates</property>"
+msgstr "<property>hibernate.order_updates</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Forces Hibernate to order SQL updates by the primary key value of the items being updated. This will result in fewer transaction deadlocks in highly concurrent systems."
+msgstr "强制 Hibernate 按照被更新数据的主键,为 SQL 更新排序。这么做将减少在高并发系统中事务的死锁。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.generate_statistics</property>"
+msgstr "<property>hibernate.generate_statistics</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr "如果开启,Hibernate 将收集有助于性能调节的统计数据。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_identifier_rollback</property>"
+msgstr "<property>hibernate.use_identifier_rollback</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, generated identifier properties will be reset to default values when objects are deleted."
+msgstr "如果开启,在对象被删除时生成的标识属性将被重设为默认值。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.use_sql_comments</property>"
+msgstr "<property>hibernate.use_sql_comments</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If turned on, Hibernate will generate comments inside the SQL, for easier debugging, defaults to <literal>false</literal>."
+msgstr "如果开启,Hibernate 将在 SQL 中生成有助于调试的注释信息,默认值为 <literal>false</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate JDBC and Connection Properties"
+msgstr "Hibernate JDBC 和连接(connection)属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.fetch_size</property>"
+msgstr "<property>hibernate.jdbc.fetch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value determines the JDBC fetch size (calls <literal>Statement.setFetchSize()</literal>)."
+msgstr "非零值,指定 JDBC 抓取数量的大小(调用 <literal>Statement.setFetchSize()</literal>)。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_size</property>"
+msgstr "<property>hibernate.jdbc.batch_size</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
+msgstr "非零值,允许 Hibernate 使用 JDBC2 的批量更新。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> recommended values between <literal>5</literal> and <literal>30</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis>建议取 <literal>5</literal> 到 <literal>30</literal> 之间的值 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.batch_versioned_data</property>"
+msgstr "<property>hibernate.jdbc.batch_versioned_data</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Set this property to <literal>true</literal> if your JDBC driver returns correct row counts from <literal>executeBatch()</literal>. Iit is usually safe to turn this option on. Hibernate will then use batched DML for automatically versioned data. Defaults to <literal>false</literal>."
+msgstr "如果你想让你的 JDBC 驱动从 <literal>true</literal> 返回正确的行计数 ,那么将此属性设为 <literal>executeBatch()</literal>(开启这个选项通常是安全的)。同时,Hibernate 将为自动版本化的数据使用批量 DML。默认值为 <literal>false</literal>。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.factory_class</property>"
+msgstr "<property>hibernate.jdbc.factory_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Select a custom <interfacename>org.hibernate.jdbc.Batcher</interfacename>. Most applications will not need this configuration property."
+msgstr "选择一个自定义的 <literal>Batcher</literal>。多数应用程序不需要这个配置属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.BatcherFactory</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.Batcher</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+msgstr "<property>hibernate.jdbc.use_scrollable_resultset</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables use of JDBC2 scrollable resultsets by Hibernate. This property is only necessary when using user-supplied JDBC connections. Hibernate uses connection metadata otherwise."
+msgstr "允许 Hibernate 使用 JDBC2 的可滚动结果集。只有在使用用户提供的 JDBC 连接时,这个选项才是必要的,否则 Hibernate 会使用连接的元数据。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_streams_for_binary</property>"
+msgstr "<property>hibernate.jdbc.use_streams_for_binary</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Use streams when writing/reading <literal>binary</literal> or <literal>serializable</literal> types to/from JDBC. <emphasis>*system-level property*</emphasis>"
+msgstr "在 JDBC 读写 <literal>binary</literal> 或 <literal>serializable</literal> 的类型时使用流(stream)(系统级属性)。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jdbc.use_get_generated_keys</property>"
+msgstr "<property>hibernate.jdbc.use_get_generated_keys</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> to retrieve natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+, set to false if your driver has problems with the Hibernate identifier generators. By default, it tries to determine the driver capabilities using connection metadata."
+msgstr "在数据插入数据库之后,允许使用 JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> 来获取数据库生成的 key(键)。需要 JDBC3+ 驱动和 JRE1.4+,如果你的数据库驱动在使用 Hibernate 的标识生成器时遇到问题,请将此值设为 false。默认情况下将使用连接的元数据来判定驱动的能力。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>true|false</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>true | false</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.provider_class</property>"
+msgstr "<property>hibernate.connection.provider_class</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <interfacename>org.hibernate.connection.ConnectionProvider</interfacename> which provides JDBC connections to Hibernate."
+msgstr "自定义 <literal>ConnectionProvider</literal> 的类名,此类用来向 Hibernate 提供 JDBC 连接。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.ConnectionProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.isolation</property>"
+msgstr "<property>hibernate.connection.isolation</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sets the JDBC transaction isolation level. Check <interfacename>java.sql.Connection</interfacename> for meaningful values, but note that most databases do not support all isolation levels and some define additional, non-standard isolations."
+msgstr "设置 JDBC 事务隔离级别。查看 <literal>java.sql.Connection</literal> 来了解各个值的具体意义,但请注意多数数据库都不支持所有的隔离级别。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>1, 2, 4, 8</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.autocommit</property>"
+msgstr "<property>hibernate.connection.autocommit</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables autocommit for JDBC pooled connections (it is not recommended)."
+msgstr "允许被缓存的 JDBC 连接开启自动提交(autocommit)(不推荐)。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.release_mode</property>"
+msgstr "<property>hibernate.connection.release_mode</property>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Specifies when Hibernate should release JDBC connections. By default, a JDBC connection is held until the session is explicitly closed or disconnected. For an application server JTA datasource, use <literal>after_statement</literal> to aggressively release connections after every JDBC call. For a non-JTA connection, it often makes sense to release the connection at the end of each transaction, by using <literal>after_transaction</literal>. <literal>auto</literal> will choose <literal>after_statement</literal> for the JTA and CMT transaction strategies and <literal>after_transaction</literal> for the JDBC transaction strategy."
+msgstr "指定 Hibernate 在何时释放 JDBC 连接。默认情况下,直到 Session 被显式关闭或被断开连接时,才会释放 JDBC 连接。对于应用程序服务器的 JTA 数据源,你应当使用  <literal>after_statement</literal>,这样在每次 JDBC 调用后,都会主动的释放连接。对于非 JTA 的连接,使用 <literal>after_transaction</literal> 在每个事务结束时释放连接是合理的。<literal>auto</literal> 将为 JTA 和 CMT 事务策略选择 <literal>after_statement</literal>,为JDBC事务策略选择 <literal>after_transaction</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>auto</literal> (default) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>auto</literal> (默认) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "This setting only affects <literal>Session</literal>s returned from <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s obtained through <literal>SessionFactory.getCurrentSession</literal>, the <literal>CurrentSessionContext</literal> implementation configured for use controls the connection release mode for those <literal>Session</literal>s. See <xref linkend=\"architecture-current-session\" />"
+msgstr "注意,这些设置仅对通过 <literal>SessionFactory.openSession</literal> 得到的 <literal>Session</literal> 起作用。对于通过 <literal>SessionFactory.getCurrentSession</literal> 得到的 <literal>Session</literal>,所配置的 <literal>CurrentSessionContext</literal> 实现控制这些 <literal>Session</literal> 的连接释放模式。请参阅 <xref linkend=\"architecture-current-session\" />。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr "<property>hibernate.connection.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pass the JDBC property <emphasis>&lt;propertyName&gt;</emphasis> to <literal>DriverManager.getConnection()</literal>."
+msgstr "把 JDBC 属性 <emphasis>&lt;propertyName&gt;</emphasis> 传递给 <literal>DriverManager.getConnection()</literal>。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+msgstr "<property>hibernate.jndi.</property><emphasis>&lt;propertyName&gt;</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pass the property <emphasis>&lt;propertyName&gt;</emphasis> to the JNDI <literal>InitialContextFactory</literal>."
+msgstr "把 <emphasis>&lt;propertyName&gt;</emphasis> 属性传递给 JNDI <literal>InitialContextFactory</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Cache Properties"
+msgstr "Hibernate 缓存属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.provider_class</literal>"
+msgstr "<literal>hibernate.cache.provider_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>CacheProvider</literal>."
+msgstr "自定义的 <literal>CacheProvider</literal> 的类名。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.CacheProvider</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.CacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_minimal_puts</literal>"
+msgstr "<literal>hibernate.cache.use_minimal_puts</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Optimizes second-level cache operation to minimize writes, at the cost of more frequent reads. This setting is most useful for clustered caches and, in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr "以频繁的读操作为代价,优化二级缓存来最小化写操作。在 Hibernate3 中,这个设置对的集群缓存非常有用,对集群缓存的实现而言,默认是开启的。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_query_cache</literal>"
+msgstr "<literal>hibernate.cache.use_query_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the query cache. Individual queries still have to be set cachable."
+msgstr "允许查询缓存,个别查询仍然需要被设置为可缓存的。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_second_level_cache</literal>"
+msgstr "<literal>hibernate.cache.use_second_level_cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Can be used to completely disable the second level cache, which is enabled by default for classes which specify a <literal>&lt;cache&gt;</literal> mapping."
+msgstr "能用来完全禁止使用二级缓存。对那些在类的映射定义中指定 <literal>&lt;cache&gt;</literal> 的类,会默认开启二级缓存。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.query_cache_factory</literal>"
+msgstr "<literal>hibernate.cache.query_cache_factory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a custom <literal>QueryCache</literal> interface, defaults to the built-in <literal>StandardQueryCache</literal>."
+msgstr "自定义实现 <literal>QueryCache</literal> 接口的类名,默认为内建的 <literal>StandardQueryCache</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.QueryCache</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.QueryCache</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.region_prefix</literal>"
+msgstr "<literal>hibernate.cache.region_prefix</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A prefix to use for second-level cache region names."
+msgstr "二级缓存区域名的前缀。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>prefix</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>prefix</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cache.use_structured_entries</literal>"
+msgstr "<literal>hibernate.cache.use_structured_entries</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Forces Hibernate to store data in the second-level cache in a more human-friendly format."
+msgstr "强制 Hibernate 以更人性化的格式将数据存入二级缓存。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Transaction Properties"
+msgstr "Hibernate 事务属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.factory_class</literal>"
+msgstr "<literal>hibernate.transaction.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a <literal>TransactionFactory</literal> to use with Hibernate <literal>Transaction</literal> API (defaults to <literal>JDBCTransactionFactory</literal>)."
+msgstr "一个 <literal>TransactionFactory</literal> 的类名,用于 Hibernate <literal>Transaction</literal> API(默认为 <literal>JDBCTransactionFactory</literal>)。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.TransactionFactory</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.TransactionFactory</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>jta.UserTransaction</literal>"
+msgstr "<literal>jta.UserTransaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the JTA <literal>UserTransaction</literal> from the application server."
+msgstr "一个 JNDI 名字,被 <literal>JTATransactionFactory</literal> 用来从应用服务器获取 JTA   <literal>UserTransaction</literal>。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.manager_lookup_class</literal>"
+msgstr "<literal>hibernate.transaction.manager_lookup_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The classname of a <literal>TransactionManagerLookup</literal>. It is required when JVM-level caching is enabled or when using hilo generator in a JTA environment."
+msgstr "一个 <literal>TransactionManagerLookup</literal> 的类名 — 当使用 JVM 级缓存,或在 JTA 环境中使用 hilo 生成器的时候需要该类。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>classname.of.TransactionManagerLookup</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.flush_before_completion</literal>"
+msgstr "<literal>hibernate.transaction.flush_before_completion</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, the session will be automatically flushed during the before completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\" />."
+msgstr "如果开启,session 在事务完成后将被自动清洗(flush)。现在更好的方法是使用自动 session 上下文管理。请参见 <xref linkend=\"architecture-current-session\"/>。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.transaction.auto_close_session</literal>"
+msgstr "<literal>hibernate.transaction.auto_close_session</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "If enabled, the session will be automatically closed during the after completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\" />."
+msgstr "如果开启,session 在事务完成后将被自动关闭。 现在更好的方法是使用自动 session 上下文管理。请参见 <xref linkend=\"architecture-current-session\"/>。  "
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous Properties"
+msgstr "其他属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.current_session_context_class</literal>"
+msgstr "<literal>hibernate.current_session_context_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Supply a custom strategy for the scoping of the \"current\" <literal>Session</literal>. See <xref linkend=\"architecture-current-session\" /> for more information about the built-in strategies."
+msgstr "为\"当前\" <literal>Session</literal> 指定一个(自定义的)策略。关于内置策略的详情,请参见 <xref linkend=\"architecture-current-session\"/>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.factory_class</literal>"
+msgstr "<literal>hibernate.query.factory_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Chooses the HQL parser implementation."
+msgstr "选择 HQL 解析器的实现。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> 或 <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.query.substitutions</literal>"
+msgstr "<literal>hibernate.query.substitutions</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Is used to map from tokens in Hibernate queries to SQL tokens (tokens might be function or literal names, for example)."
+msgstr "将 Hibernate 查询中的符号映射到 SQL 查询中的符号(符号可能是函数名或常量名字)。  "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.hbm2ddl.auto</literal>"
+msgstr "<literal>hibernate.hbm2ddl.auto</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Automatically validates or exports schema DDL to the database when the <literal>SessionFactory</literal> is created. With <literal>create-drop</literal>, the database schema will be dropped when the <literal>SessionFactory</literal> is closed explicitly."
+msgstr "在 <literal>SessionFactory</literal> 创建时,自动检查数据库结构,或者将数据库 schema 的 DDL 导出到数据库。使用 <literal>create-drop</literal> 时,在显式关闭 <literal>SessionFactory</literal> 时,将删除掉数据库 schema。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis role=\"strong\">e.g.</emphasis> <literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
+msgstr "<emphasis role=\"strong\">例如:</emphasis><literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+msgstr "<literal>hibernate.cglib.use_reflection_optimizer</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Enables the use of CGLIB instead of runtime reflection (System-level property). Reflection can sometimes be useful when troubleshooting. Hibernate always requires CGLIB even if you turn off the optimizer. You cannot set this property in <literal>hibernate.cfg.xml</literal>."
+msgstr "开启 CGLIB 来替代运行时反射机制(系统级属性)。反射机制有时在除错时比较有用。注意即使关闭这个优化,Hibernate 还是需要 CGLIB。你不能在 <literal>hibernate.cfg.xml</literal> 中设置此属性。 "
+
+#. Tag: title
+#, no-c-format
+msgid "SQL Dialects"
+msgstr "SQL 方言"
+
+#. Tag: para
+#, no-c-format
+msgid "Always set the <literal>hibernate.dialect</literal> property to the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you specify a dialect, Hibernate will use sensible defaults for some of the other properties listed above. This means that you will not have to specify them manually."
+msgstr "你应当总是为你的数据库将 <literal>hibernate.dialect</literal> 属性设置成正确的  <literal>org.hibernate.dialect.Dialect</literal> 子类。如果你指定一种方言,Hibernate 将为上面列出的一些属性使用合理的默认值,这样你就不用手工指定它们。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
+msgstr "Hibernate SQL 方言(<literal>hibernate.dialect</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "RDBMS"
+msgstr "RDBMS"
+
+#. Tag: entry
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialect"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2"
+msgstr "DB2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 AS/400"
+msgstr "DB2 AS/400"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2400Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "DB2 OS390"
+msgstr "DB2 OS390"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+msgstr "<literal>org.hibernate.dialect.DB2390Dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PostgreSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL"
+msgstr "MySQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with InnoDB"
+msgstr "MySQL with InnoDB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLInnoDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "MySQL with MyISAM"
+msgstr "MySQL with MyISAM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MySQLMyISAMDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle (any version)"
+msgstr "Oracle(any version)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.OracleDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.OracleDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 9i"
+msgstr "Oracle 9i"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle9iDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Oracle 10g"
+msgstr "Oracle 10g"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.Oracle10gDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase"
+msgstr "Sybase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Sybase Anywhere"
+msgstr "Sybase Anywhere"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SybaseAnywhereDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Microsoft SQL Server"
+msgstr "Microsoft SQL Server"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SQLServerDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SAP DB"
+msgstr "SAP DB"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.SAPDBDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Informix"
+msgstr "Informix"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InformixDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InformixDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "HypersonicSQL"
+msgstr "HypersonicSQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.HSQLDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Ingres"
+msgstr "Ingres"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.IngresDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.IngresDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Progress"
+msgstr "Progress"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.ProgressDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Mckoi SQL"
+msgstr "Mckoi SQL"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.MckoiDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interbase"
+msgstr "Interbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.InterbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Pointbase"
+msgstr "Pointbase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.PointbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "FrontBase"
+msgstr "FrontBase"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FrontbaseDialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Firebird"
+msgstr "Firebird"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+msgstr "<literal>org.hibernate.dialect.FirebirdDialect</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Outer Join Fetching"
+msgstr "外连接抓取(Outer Join Fetching)"
+
+#. Tag: para
+#, no-c-format
+msgid "If your database supports ANSI, Oracle or Sybase style outer joins, <emphasis>outer join fetching</emphasis> will often increase performance by limiting the number of round trips to and from the database. This is, however, at the cost of possibly more work performed by the database itself. Outer join fetching allows a whole graph of objects connected by many-to-one, one-to-many, many-to-many and one-to-one associations to be retrieved in a single SQL <literal>SELECT</literal>."
+msgstr "如果你的数据库支持 ANSI、Oracle 或 Sybase 风格的外连接,<emphasis>外连接抓取</emphasis>通常能通过限制往返数据库次数(更多的工作交由数据库自己来完成)来提高效率。外连接抓取允许在单个 <literal>SELECT</literal> SQL 语句中, 通过 many-to-one、one-to-many、many-to-many 和 one-to-one 关联获取连接对象的整个对象图。"
+
+#. Tag: para
+#, no-c-format
+msgid "Outer join fetching can be disabled <emphasis>globally</emphasis> by setting the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</literal>. A setting of <literal>1</literal> or higher enables outer join fetching for one-to-one and many-to-one associations that have been mapped with <literal>fetch=\"join\"</literal>."
+msgstr "将 <literal>hibernate.max_fetch_depth</literal> 设为 <literal>0</literal> 能在<emphasis>全局</emphasis> 范围内禁止外连接抓取。设为 <literal>1</literal> 或更高值能启用 one-to-one 和 many-to-oneouter 关联的外连接抓取,它们通过 <literal>fetch=\"join\"</literal> 来映射。 "
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr "参见 <xref linkend=\"performance-fetching\"/> 获得更多信息。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Binary Streams"
+msgstr "二进制流(Binary Streams)"
+
+#. Tag: para
+#, no-c-format
+msgid "Oracle limits the size of <literal>byte</literal> arrays that can be passed to and/or from its JDBC driver. If you wish to use large instances of <literal>binary</literal> or <literal>serializable</literal> type, you should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>This is a system-level setting only.</emphasis>"
+msgstr "Oracle 限制那些通过 JDBC 驱动传输的<literal>字节</literal>数组的数目。如果你希望使用<literal>二进值(binary)</literal>或 <literal>可序列化的(serializable)</literal>类型的大对象,你应该开启 <literal>hibernate.jdbc.use_streams_for_binary</literal> 属性。<emphasis>这是系统级属性。</emphasis> "
+
+#. Tag: title
+#, no-c-format
+msgid "Second-level and query cache"
+msgstr "二级缓存与查询缓存"
+
+#. Tag: para
+#, no-c-format
+msgid "The properties prefixed by <literal>hibernate.cache</literal> allow you to use a process or cluster scoped second-level cache system with Hibernate. See the <xref linkend=\"performance-cache\" /> for more information."
+msgstr "以 <literal>hibernate.cache</literal> 为前缀的属性允许你在 Hibernate 中,使用进程或群集范围内的二级缓存系统。参见 <xref linkend=\"performance-cache\"/> 获取更多的详情。"
+
+#. Tag: title
+#, no-c-format
+msgid "Query Language Substitution"
+msgstr "查询语言中的替换"
+
+#. Tag: para
+#, no-c-format
+msgid "You can define new Hibernate query tokens using <literal>hibernate.query.substitutions</literal>. For example:"
+msgstr "你可以使用 <literal>hibernate.query.substitutions</literal> 在 Hibernate 中定义新的查询符号。例如: "
+
+#. Tag: para
+#, no-c-format
+msgid "This would cause the tokens <literal>true</literal> and <literal>false</literal> to be translated to integer literals in the generated SQL."
+msgstr "将导致符号 <literal>true</literal> 和 <literal>false</literal> 在生成的 SQL 中被翻译成整数常量。"
+
+#. Tag: para
+#, no-c-format
+msgid "This would allow you to rename the SQL <literal>LOWER</literal> function."
+msgstr "将允许你重命名 SQL 中的 <literal>LOWER</literal> 函数。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate statistics"
+msgstr "Hibernate 的统计(statistics)机制"
+
+#. Tag: para
+#, no-c-format
+msgid "If you enable <literal>hibernate.generate_statistics</literal>, Hibernate exposes a number of metrics that are useful when tuning a running system via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be configured to expose these statistics via JMX. Read the Javadoc of the interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr "如果你开启 <literal>hibernate.generate_statistics</literal>,那么当你通过  <literal>SessionFactory.getStatistics()</literal> 调整正在运行的系统时,Hibernate 将导出大量有用的数据。Hibernate 甚至能被配置成通过 JMX 导出这些统计信息。参考 <literal>org.hibernate.stats</literal> 中接口的 Javadoc,以获得更多信息。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Logging"
+msgstr "日志"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate utilizes <ulink url=\"http://www.slf4j.org/\">Simple Logging Facade for Java</ulink> (SLF4J) in order to log various system events. SLF4J can direct your logging output to several logging frameworks (NOP, Simple, log4j version 1.2, JDK 1.4 logging, JCL or logback) depending on your chosen binding. In order to setup logging you will need <filename>slf4j-api.jar</filename> in your classpath together with the jar file for your preferred binding - <filename>slf4j-log4j12.jar</filename> in the case of Log4J. See the SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">documentation</ulink> for more detail. To use Log4j you will also need to place a <filename>log4j.properties</filename> file in your classpath. An example properties file is distributed with Hibernate in the <literal>src/</literal> directory."
+msgstr "Hibernate 利用 <ulink url=\"http://www.slf4j.org/\">Simple Logging Facade for Java</ulink> (SLF4J) 来记录不同系统事件的日志。SLF4J 可以根据你选择的绑定把日志输出到几个日志框架(NOP、Simple、log4j version 1.2、JDK 1.4 logging、JCL 或 logback)上。为了设置日志,你需要在 classpath 里加入 <filename>slf4j-api.jar</filename> 和你选择的绑定的 JAR 文件(使用 Log4J 时加入 <filename>slf4j-log4j12.jar</filename>)。更多的细节请参考 SLF4J <ulink url=\"http://www.slf4j.org/manual.html\">文档</ulink>。要使用 Log4j,你也需要在 classpath 里加入 <filename>log4j.properties</filename> 文件。Hibernate 里的 <literal>src/</literal> 目录里带有一个属性文件的例子。"
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you familiarize yourself with Hibernate's log messages. A lot of work has been put into making the Hibernate log as detailed as possible, without making it unreadable. It is an essential troubleshooting device. The most interesting log categories are the following:"
+msgstr "我们强烈建议你熟悉一下 Hibernate 的日志消息。在不失可读性的前提下,我们做了很多工作,使 Hibernate 的日志可能地详细。这是必要的查错利器。最令人感兴趣的日志分类有如下这些:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Log Categories"
+msgstr "Hibernate 日志类别"
+
+#. Tag: entry
+#, no-c-format
+msgid "Category"
+msgstr "类别"
+
+#. Tag: entry
+#, no-c-format
+msgid "Function"
+msgstr "功能"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.SQL</literal>"
+msgstr "<literal>org.hibernate.SQL</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DML statements as they are executed"
+msgstr "在所有 SQL DML 语句被执行时为它们记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.type</literal>"
+msgstr "<literal>org.hibernate.type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC parameters"
+msgstr "为所有 JDBC 参数记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.tool.hbm2ddl</literal>"
+msgstr "<literal>org.hibernate.tool.hbm2ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all SQL DDL statements as they are executed"
+msgstr "在所有 SQL DDL 语句执行时为它们记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.pretty</literal>"
+msgstr "<literal>org.hibernate.pretty</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log the state of all entities (max 20 entities) associated with the session at flush time"
+msgstr "在 session 清洗(flush)时,为所有与其关联的实体(最多 20 个)的状态记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache</literal>"
+msgstr "<literal>org.hibernate.cache</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all second-level cache activity"
+msgstr "为所有二级缓存的活动记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction</literal>"
+msgstr "<literal>org.hibernate.transaction</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log transaction related activity"
+msgstr "为事务相关的活动记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.jdbc</literal>"
+msgstr "<literal>org.hibernate.jdbc</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JDBC resource acquisition"
+msgstr "为所有 JDBC 资源的获取记录日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.hql.ast.AST</literal>"
+msgstr "<literal>org.hibernate.hql.ast.AST</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log HQL and SQL ASTs during query parsing"
+msgstr "在解析查询的时候,记录 HQL 和 SQL 的 AST 分析日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.secure</literal>"
+msgstr "<literal>org.hibernate.secure</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log all JAAS authorization requests"
+msgstr "为 JAAS 认证请求做日志"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate</literal>"
+msgstr "<literal>org.hibernate</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Log everything. This is a lot of information but it is useful for troubleshooting"
+msgstr "为任何 Hibernate 相关信息记录日志(信息量较大,但对查错非常有帮助)"
+
+#. Tag: para
+#, no-c-format
+msgid "When developing applications with Hibernate, you should almost always work with <literal>debug</literal> enabled for the category <literal>org.hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate.show_sql</literal> enabled."
+msgstr "在使用 Hibernate 开发应用程序时,你应当总是为 <literal>org.hibernate.SQL</literal> 开启 <literal>debug</literal> 级别的日志记录,或者开启 <literal>hibernate.show_sql</literal> 属性。"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing a <literal>NamingStrategy</literal>"
+msgstr "实现 <literal>NamingStrategy</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you to specify a \"naming standard\" for database objects and schema elements."
+msgstr "<literal>org.hibernate.cfg.NamingStrategy</literal> 接口允许你为数据库中的对象和 schema 元素指定一个“命名标准”。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can provide rules for automatically generating database identifiers from Java identifiers or for processing \"logical\" column and table names given in the mapping file into \"physical\" table and column names. This feature helps reduce the verbosity of the mapping document, eliminating repetitive noise (<literal>TBL_</literal> prefixes, for example). The default strategy used by Hibernate is quite minimal."
+msgstr "你可能会提供一些通过 Java 标识生成数据库标识或将映射定义文件中\"逻辑\"表/列名处理成\"物理\"表/列名的规则。这个特性有助于减少冗长的映射定义文件,消除重复内容(如 <literal>TBL_</literal> 前缀)。Hibernate 使用的缺省策略是相当精简的。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify a different strategy by calling <literal>Configuration.setNamingStrategy()</literal> before adding mappings:"
+msgstr "在加入映射定义前,你可以调用 <literal>Configuration.setNamingStrategy()</literal> 指定一个不同的命名策略: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in strategy that might be a useful starting point for some applications."
+msgstr "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> 是一个内建的命名策略,对一些应用程序而言,可能是非常有用的起点。"
+
+#. Tag: title
+#, no-c-format
+msgid "XML configuration file"
+msgstr "XML 配置文件"
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach to configuration is to specify a full configuration in a file named <literal>hibernate.cfg.xml</literal>. This file can be used as a replacement for the <literal>hibernate.properties</literal> file or, if both are present, to override properties."
+msgstr "另一个配置方法是在 <literal>hibernate.cfg.xml</literal> 文件中指定一套完整的配置。这个文件可以当成 <literal>hibernate.properties</literal> 的替代。若两个文件同时存在,它将覆盖前者的属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "The XML configuration file is by default expected to be in the root of your <literal>CLASSPATH</literal>. Here is an example:"
+msgstr "XML 配置文件被默认是放在 <literal>CLASSPATH</literal> 的根目录下。下面是一个例子: "
+
+#. Tag: para
+#, no-c-format
+msgid "The advantage of this approach is the externalization of the mapping file names to configuration. The <literal>hibernate.cfg.xml</literal> is also more convenient once you have to tune the Hibernate cache. It is your choice to use either <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>. Both are equivalent, except for the above mentioned benefits of using the XML syntax."
+msgstr "如你所见,这个方法优势在于,在配置文件中指出了映射定义文件的名字。一旦你需要调整 Hibernate 的缓存,<literal>hibernate.cfg.xml</literal> 也是更方便。注意,使用 <literal>hibernate.properties</literal> 还是 <literal>hibernate.cfg.xml</literal> 完全是由你来决定,除了上面提到的 XML 语法的优势之外,两者是等价的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "With the XML configuration, starting Hibernate is then as simple as:"
+msgstr "使用 XML 配置,使得启动 Hibernate 变的异常简单:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can select a different XML configuration file using:"
+msgstr "你可以使用如下代码来添加一个不同的 XML 配置文件:"
+
+#. Tag: title
+#, no-c-format
+msgid "J2EE Application Server integration"
+msgstr "J2EE 应用程序服务器的集成"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate has the following integration points for J2EE infrastructure:"
+msgstr "针对 J2EE 体系,Hibernate 有如下几个集成的方面:"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC connections managed by the container and provided through JNDI. Usually, a JTA compatible <literal>TransactionManager</literal> and a <literal>ResourceManager</literal> take care of transaction management (CMT), especially distributed transaction handling across several datasources. You can also demarcate transaction boundaries programmatically (BMT), or you might want to use the optional Hibernate <literal>Transaction</literal> API for this to keep your code portable."
+msgstr "<emphasis>容器管理的数据源(Container-managed datasources)</emphasis>: Hibernate 能使用通过容器管理,并由 JNDI 提供的 JDBC 连接。通常,特别是当处理多个数据源的分布式事务的时候,由一个 JTA 兼容的 <literal>TransactionManager</literal> 和一个 <literal>ResourceManager</literal> 来处理事务管理(CMT,容器管理的事务)。当然你可以通过 编程方式来划分事务边界(BMT,Bean 管理的事务)。或者为了代码的可移植性,你也也许会想使用可选的 Hibernate <literal>Transaction</literal> API。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its <literal>SessionFactory</literal> to JNDI after startup."
+msgstr "<emphasis>自动 JNDI 绑定</emphasis>:Hibernate 可以在启动后将 <literal>SessionFactory</literal> 绑定到 JNDI。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>JTA Session binding:</emphasis> the Hibernate <literal>Session</literal> can be automatically bound to the scope of JTA transactions. Simply lookup the <literal>SessionFactory</literal> from JNDI and get the current <literal>Session</literal>. Let Hibernate manage flushing and closing the <literal>Session</literal> when your JTA transaction completes. Transaction demarcation is either declarative (CMT) or programmatic (BMT/UserTransaction)."
+msgstr "<emphasis>JTA Session 绑定:</emphasis> Hibernate <literal>Session</literal> 可以自动绑定到 JTA 事务作用的范围。只需简单地从 JNDI 查找 <literal>SessionFactory</literal> 并获得当前的 <literal>Session</literal>。当 JTA 事务完成时,让 Hibernate来处理 <literal>Session</literal> 的清洗(flush)与关闭。事务的划分可以是声明式的(CMT),也可以是编程式的(BMT/UserTransaction)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>JMX deployment:</emphasis> if you have a JMX capable application server (e.g. JBoss AS), you can choose to deploy Hibernate as a managed MBean. This saves you the one line startup code to build your <literal>SessionFactory</literal> from a <literal>Configuration</literal>. The container will startup your <literal>HibernateService</literal> and also take care of service dependencies (datasource has to be available before Hibernate starts, etc)."
+msgstr "<emphasis>JMX 部署:</emphasis> 如果你使用支持 JMX 应用程序服务器(如,JBoss AS),那么你可以选择将 Hibernate 部署成托管 MBean。这将为你省去一行从<literal>Configuration</literal> 构建 <literal>SessionFactory</literal> 的启动代码。容器将启动你的 <literal>HibernateService</literal>,并完美地处理好服务间的依赖关系(在 Hibernate 启动前,数据源必须是可用的,等等)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Depending on your environment, you might have to set the configuration option <literal>hibernate.connection.aggressive_release</literal> to true if your application server shows \"connection containment\" exceptions."
+msgstr "如果应用程序服务器抛出 \"connection containment\" 异常,根据你的环境,也许该将配置属性 <literal>hibernate.connection.release_mode</literal> 设为 <literal>after_statement</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction strategy configuration"
+msgstr "事务策略配置"
+
+#. Tag: para
+#, no-c-format
+msgid "The Hibernate <literal>Session</literal> API is independent of any transaction demarcation system in your architecture. If you let Hibernate use JDBC directly through a connection pool, you can begin and end your transactions by calling the JDBC API. If you run in a J2EE application server, you might want to use bean-managed transactions and call the JTA API and <literal>UserTransaction</literal> when needed."
+msgstr "在你的架构中,Hibernate 的 <literal>Session</literal> API 是独立于任何事务分界系统的。如果你让 Hibernate 通过连接池直接使用 JDBC,你需要调用 JDBC API 来打开和关闭你的事务。如果你运行在 J2EE 应用程序服务器中,你也许想用 Bean 管理的事务并在需要的时候调用 JTA API 和 <literal>UserTransaction</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To keep your code portable between these two (and other) environments we recommend the optional Hibernate <literal>Transaction</literal> API, which wraps and hides the underlying system. You have to specify a factory class for <literal>Transaction</literal> instances by setting the Hibernate configuration property <literal>hibernate.transaction.factory_class</literal>."
+msgstr "为了让你的代码在两种(或其他)环境中可以移植,我们建议使用可选的 Hibernate <literal>Transaction</literal> API,它包装并隐藏了底层系统。你必须通过设置 Hibernate 配置属性 <literal>hibernate.transaction.factory_class</literal> 来指定一个 <literal>Transaction</literal> 实例的工厂类。"
+
+#. Tag: para
+#, no-c-format
+msgid "There are three standard, or built-in, choices:"
+msgstr "有三个标准(内建)的选择: "
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JDBCTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to database (JDBC) transactions (default)"
+msgstr "委托给数据库(JDBC)事务(默认)"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.JTATransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed transactions if an existing transaction is underway in this context (for example, EJB session bean method). Otherwise, a new transaction is started and bean-managed transactions are used."
+msgstr "如果在上下文环境中存在运行着的事务(如,EJB 会话 Bean 的方法),则委托给容器管理的事务。否则,将启动一个新的事务,并使用 Bean 管理的事务。"
+
+#. Tag: term
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+msgstr "<literal>org.hibernate.transaction.CMTTransactionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "delegates to container-managed JTA transactions"
+msgstr "委托给容器管理的 JTA 事务"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define your own transaction strategies (for a CORBA transaction service, for example)."
+msgstr "你也可以定义属于你自己的事务策略(如,针对 CORBA 的事务服务)。"
+
+#. Tag: para
+#, no-c-format
+msgid "Some features in Hibernate (i.e., the second level cache, Contextual Sessions with JTA, etc.) require access to the JTA <literal>TransactionManager</literal> in a managed environment. In an application server, since J2EE does not standardize a single mechanism, you have to specify how Hibernate should obtain a reference to the <literal>TransactionManager</literal>:"
+msgstr "Hibernate 的一些特性(比如二级缓存,Contextual Sessions with JTA 等等)需要访问在托管环境中的 JTA <literal>TransactionManager</literal>。由于 J2EE 没有标准化一个单一的机制,Hibernate 在应用程序服务器中,你必须指定 Hibernate 如何获得 <literal>TransactionManager</literal> 的引用: "
+
+#. Tag: title
+#, no-c-format
+msgid "JTA TransactionManagers"
+msgstr "JTA TransactionManagers"
+
+#. Tag: entry
+#, no-c-format
+msgid "Transaction Factory"
+msgstr "Transaction 工厂类"
+
+#. Tag: entry
+#, no-c-format
+msgid "Application Server"
+msgstr "应用程序服务器"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss"
+msgstr "JBoss"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Weblogic"
+msgstr "Weblogic"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere"
+msgstr "WebSphere"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "WebSphere 6"
+msgstr "WebSphere 6"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Orion"
+msgstr "Orion"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Resin"
+msgstr "Resin"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOTM"
+msgstr "JOTM"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JOnAS"
+msgstr "JOnAS"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "JRun4"
+msgstr "JRun4"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+msgstr "<literal>org.hibernate.transaction.BESTransactionManagerLookup</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Borland ES"
+msgstr "Borland ES"
+
+#. Tag: title
+#, no-c-format
+msgid "JNDI-bound <literal>SessionFactory</literal>"
+msgstr "JNDI 绑定的 <literal>SessionFactory</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "A JNDI-bound Hibernate <literal>SessionFactory</literal> can simplify the lookup function of the factory and create new <literal>Session</literal>s. This is not, however, related to a JNDI bound <literal>Datasource</literal>; both simply use the same registry."
+msgstr "与 JNDI 绑定的 Hibernate 的 <literal>SessionFactory</literal> 能简化工厂的查询,简化创建新的 <literal>Session</literal>。需要注意的是这与 JNDI 绑定 <literal>Datasource</literal> 没有关系,它们只是恰巧用了相同的注册表。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you wish to have the <literal>SessionFactory</literal> bound to a JNDI namespace, specify a name (e.g. <literal>java:hibernate/SessionFactory</literal>) using the property <literal>hibernate.session_factory_name</literal>. If this property is omitted, the <literal>SessionFactory</literal> will not be bound to JNDI. This is especially useful in environments with a read-only JNDI default implementation (in Tomcat, for example)."
+msgstr "如果你希望将 <literal>SessionFactory</literal> 绑定到一个 JNDI 的名字空间,用属性 <literal>hibernate.session_factory_name</literal> 指定一个名字(如,<literal>java:hibernate/SessionFactory</literal>)。如果不设置这个属性,<literal>SessionFactory</literal> 将不会被绑定到 JNDI 中(在以只读 JNDI 为默认实现的环境中,这个设置尤其有用,如 Tomcat)。"
+
+#. Tag: para
+#, no-c-format
+msgid "When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal> to instantiate an initial context. If they are not specified, the default <literal>InitialContext</literal> will be used."
+msgstr "在将 <literal>SessionFactory</literal> 绑定至 JNDI 时,Hibernate 将使用 <literal>hibernate.jndi.url</literal>,和 <literal>hibernate.jndi.class</literal> 的值来实例化初始环境(initial context)。如果它们没有被指定,将使用默认的 <literal>InitialContext</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will automatically place the <literal>SessionFactory</literal> in JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means you will have this call in some startup code, or utility class in your application, unless you use JMX deployment with the <literal>HibernateService</literal> (this is discussed later in greater detail)."
+msgstr "在你调用 <literal>cfg.buildSessionFactory()</literal>后,Hibernate 会自动将 <literal>SessionFactory</literal> 注册到 JNDI。这意味这你至少需要在你应用程序的启动代码(或工具类)中完成这个调用,除非你使用 <literal>HibernateService</literal> 来做 JMX 部署(见后面讨论)。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other class, you can obtain the <literal>SessionFactory</literal> using a JNDI lookup."
+msgstr "假若你使用 JNDI <literal>SessionFactory</literal>,EJB 或者任何其它类都可以从 JNDI 中找到此 <literal>SessionFactory</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you bind the <literal>SessionFactory</literal> to JNDI in a managed environment and use a <literal>static</literal> singleton otherwise. To shield your application code from these details, we also recommend to hide the actual lookup code for a <literal>SessionFactory</literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory()</literal>. Note that such a class is also a convenient way to startup Hibernate&mdash;see chapter 1."
+msgstr "我们建议,在受管理的环境中,把 <literal>SessionFactory</literal> 绑定到 JNDI,在其它情况下,使用一个 <literal>static(静态的)</literal>singleton。为了在你的应用程序代码中隐藏这些细节,我们还建议你用一个 helper 类把实际查找 <literal>SessionFactory</literal> 的代码隐藏起来,比如 <literal>HibernateUtil.getSessionFactory()</literal>。注意,这个类也就可以方便地启动 Hibernate,参见第一章。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Current Session context management with JTA"
+msgstr "在 JTA 环境下使用 Current Session context(当前 session 上下文)管理"
+
+#. Tag: para
+#, no-c-format
+msgid "The easiest way to handle <literal>Sessions</literal> and transactions is Hibernate's automatic \"current\" <literal>Session</literal> management. For a discussion of contextual sessions see <xref linkend=\"architecture-current-session\" />. Using the <literal>\"jta\"</literal> session context, if there is no Hibernate <literal>Session</literal> associated with the current JTA transaction, one will be started and associated with that JTA transaction the first time you call <literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</literal>s retrieved via <literal>getCurrentSession()</literal> in the<literal>\"jta\"</literal> context are set to automatically flush before the transaction completes, close after the transaction completes, and aggressively release JDBC connections after each statement. This allows the <literal>Session</literal>s to be managed by the life cycle of the JTA transaction to which it is associated, keeping user code clean of s!
 uch management concerns. Your code can either use JTA programmatically through <literal>UserTransaction</literal>, or (recommended for portable code) use the Hibernate <literal>Transaction</literal> API to set transaction boundaries. If you run in an EJB container, declarative transaction demarcation with CMT is preferred."
+msgstr "在 Hibernate 中,管理 <literal>Session</literal> 和 transaction 最好的方法是自动的\"当前\"<literal>Session</literal> 管理。请参见 <xref linkend=\"architecture-current-session\" /> 一节的讨论。使用 <literal>\"jta\"</literal> session 上下文,假若在当前 JTA 事务中还没有 Hibernate<literal>Session</literal> 关联,第一次 <literal>sessionFactory.getCurrentSession()</literal> 调用会启动一个 Session,并关联到当前的 JTA 事务。在 <literal>\"jta\"</literal> 上下文中调用 <literal>getCurrentSession()</literal> 获得的 <literal>Session</literal>,会被设置为在 transaction 关闭的时候自动 flush(清洗)、在 transaction 关闭之后自动关闭,每句语句之后主动释放 JDBC 连接。这就可以根据 JTA 事务的生命周期来管理与之关联的 <literal>Session</literal>,用户代码中就可以不再考虑这些管理。你的代码也可以通过 <literal>UserTransaction!
 </literal>用编程方式使用 JTA,或者(我们建议,为了便于移植代码)使用 Hibernate 的 <literal>Transaction</literal> API 来设置 transaction 边界。如果你的代码运行在 EJB 容器中,我们建议对 CMT 使用声明式事务声明。 "
+
+#. Tag: title
+#, no-c-format
+msgid "JMX deployment"
+msgstr "JMX 部署"
+
+#. Tag: para
+#, no-c-format
+msgid "The line <literal>cfg.buildSessionFactory()</literal> still has to be executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You can do this either in a <literal>static</literal> initializer block, like the one in <literal>HibernateUtil</literal>, or you can deploy Hibernate as a <emphasis>managed service</emphasis>."
+msgstr "为了将 <literal>SessionFactory</literal> 注册到 JNDI 中,<literal>cfg.buildSessionFactory()</literal> 这行代码仍需在某处被执行。你可在一个 <literal>static</literal> 初始化块(像 <literal>HibernateUtil</literal> 中的那样)中执行它或将 Hibernate 部署为一个<emphasis>托管的服务</emphasis>。  "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</literal> for deployment on an application server with JMX capabilities, such as JBoss AS. The actual deployment and configuration is vendor-specific. Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr "为了部署在一个支持 JMX 的应用程序服务器上,Hibernate 和 <literal>org.hibernate.jmx.HibernateService</literal> 一同分发,如 Jboss AS。 实际的部署和配置是由应用程序服务器提供者指定的。这里是 JBoss 4.0.x 的 <literal>jboss-service.xml</literal> 样例: "
+
+#. Tag: para
+#, no-c-format
+msgid "This file is deployed in a directory called <literal>META-INF</literal> and packaged in a JAR file with the extension <literal>.sar</literal> (service archive). You also need to package Hibernate, its required third-party libraries, your compiled persistent classes, as well as your mapping files in the same archive. Your enterprise beans (usually session beans) can be kept in their own JAR file, but you can include this EJB JAR file in the main service archive to get a single (hot-)deployable unit. Consult the JBoss AS documentation for more information about JMX service and EJB deployment."
+msgstr "这个文件是部署在 <literal>META-INF</literal> 目录下的,并会被打包到以 <literal>.sar</literal>(service archive)为扩展名的 JAR 文件中。同时,你需要将 Hibernate、它所需要的第三方库、你编译好的持久化类以及你的映射定义文件打包进同一个文档。你的企业 Bean(一般为会话 Bean)可能会被打包成它们自己的 JAR 文件,但你也许会将 EJB JAR 文件一同包含进能独立(热)部署的主服务文档。参考 JBoss AS 文档以了解更多的 JMX服务与 EJB 部署的信息。 "
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addResource(\"Item.hbm.xml\")\n"
+#~ "    .addResource(\"Bid.hbm.xml\");]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class);]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration()\n"
+#~ "    .addClass(org.hibernate.auction.Item.class)\n"
+#~ "    .addClass(org.hibernate.auction.Bid.class)\n"
+#~ "    .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+#~ "MySQLInnoDBDialect\")\n"
+#~ "    .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/"
+#~ "jdbc/test\")\n"
+#~ "    .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+
+#~ msgid "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+#~ msgstr "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sessions.openSession(); // open a new Session]]"
+#~ ">"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sessions.openSession(); // open a new Session]]"
+#~ ">"
+
+#~ msgid "JDBC URL"
+#~ msgstr "JDBC URL"
+
+#~ msgid "database user"
+#~ msgstr "database user"
+
+#~ msgid "database user password"
+#~ msgstr "数据库用户密码"
+
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+#~ "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+#~ "hibernate.connection.username = myuser\n"
+#~ "hibernate.connection.password = secret\n"
+#~ "hibernate.c3p0.min_size=5\n"
+#~ "hibernate.c3p0.max_size=20\n"
+#~ "hibernate.c3p0.timeout=1800\n"
+#~ "hibernate.c3p0.max_statements=50\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+
+#~ msgid "datasource JNDI name"
+#~ msgstr "数据源 JNDI 名字"
+
+#~ msgid ""
+#~ "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = \\\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = \\\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+#~ msgstr ""
+#~ "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+#~ "hibernate.transaction.factory_class = \\\n"
+#~ "    org.hibernate.transaction.JTATransactionFactory\n"
+#~ "hibernate.transaction.manager_lookup_class = \\\n"
+#~ "    org.hibernate.transaction.JBossTransactionManagerLookup\n"
+#~ "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+
+#~ msgid "<entry>DB2</entry>"
+#~ msgstr "<entry>DB2</entry>"
+
+#~ msgid "hibernate.query.substitutions true=1, false=0"
+#~ msgstr "hibernate.query.substitutions true=1,false=0"
+
+#~ msgid "hibernate.query.substitutions toLowercase=LOWER"
+#~ msgstr "hibernate.query.substitutions toLowercase=LOWER"
+
+#~ msgid "org.hibernate"
+#~ msgstr "org.hibernate"
+
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+#~ "    .addFile(\"Item.hbm.xml\")\n"
+#~ "    .addFile(\"Bid.hbm.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <!-- a SessionFactory instance listed as /jndi/name -->\n"
+#~ "    <session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\">\n"
+#~ "\n"
+#~ "        <!-- properties -->\n"
+#~ "        <property name=\"connection.datasource\">java:/comp/env/jdbc/"
+#~ "MyDB</property>\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+#~ "property>\n"
+#~ "        <property name=\"show_sql\">false</property>\n"
+#~ "        <property name=\"transaction.factory_class\">\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        </property>\n"
+#~ "        <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- mapping files -->\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+#~ "\n"
+#~ "        <!-- cache settings -->\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/>\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only"
+#~ "\"/>\n"
+#~ "        <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+#~ "usage=\"read-write\"/>\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <!-- a SessionFactory instance listed as /jndi/name -->\n"
+#~ "    <session-factory\n"
+#~ "        name=\"java:hibernate/SessionFactory\">\n"
+#~ "\n"
+#~ "        <!-- properties -->\n"
+#~ "        <property name=\"connection.datasource\">java:/comp/env/jdbc/"
+#~ "MyDB</property>\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+#~ "property>\n"
+#~ "        <property name=\"show_sql\">false</property>\n"
+#~ "        <property name=\"transaction.factory_class\">\n"
+#~ "            org.hibernate.transaction.JTATransactionFactory\n"
+#~ "        </property>\n"
+#~ "        <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- mapping files -->\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+#~ "        <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+#~ "\n"
+#~ "        <!-- cache settings -->\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-"
+#~ "write\"/>\n"
+#~ "        <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only"
+#~ "\"/>\n"
+#~ "        <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+#~ "usage=\"read-write\"/>\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration().configure()."
+#~ "buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "<![CDATA[SessionFactory sf = new Configuration().configure()."
+#~ "buildSessionFactory();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+#~ msgstr ""
+#~ "<![CDATA[SessionFactory sf = new Configuration()\n"
+#~ "    .configure(\"catdb.cfg.xml\")\n"
+#~ "    .buildSessionFactory();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<server>\n"
+#~ "\n"
+#~ "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+#~ "\n"
+#~ "    <!-- Required services -->\n"
+#~ "    <depends>jboss.jca:service=RARDeployer</depends>\n"
+#~ "    <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+#~ "\n"
+#~ "    <!-- Bind the Hibernate service to JNDI -->\n"
+#~ "    <attribute name=\"JndiName\">java:/hibernate/SessionFactory</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Datasource settings -->\n"
+#~ "    <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+#~ "    <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Transaction integration -->\n"
+#~ "    <attribute name=\"TransactionStrategy\">\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+#~ "    <attribute name=\"TransactionManagerLookupStrategy\">\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup</"
+#~ "attribute>\n"
+#~ "    <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Fetching options -->\n"
+#~ "    <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+#~ "\n"
+#~ "    <!-- Second-level caching -->\n"
+#~ "    <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+#~ "EhCacheProvider</attribute>\n"
+#~ "    <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Logging -->\n"
+#~ "    <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Mapping files -->\n"
+#~ "    <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml</attribute>\n"
+#~ "\n"
+#~ "</mbean>\n"
+#~ "\n"
+#~ "</server>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<server>\n"
+#~ "\n"
+#~ "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+#~ "    name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+#~ "\n"
+#~ "    <!-- Required services -->\n"
+#~ "    <depends>jboss.jca:service=RARDeployer</depends>\n"
+#~ "    <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+#~ "\n"
+#~ "    <!-- Bind the Hibernate service to JNDI -->\n"
+#~ "    <attribute name=\"JndiName\">java:/hibernate/SessionFactory</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Datasource settings -->\n"
+#~ "    <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+#~ "    <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "attribute>\n"
+#~ "\n"
+#~ "    <!-- Transaction integration -->\n"
+#~ "    <attribute name=\"TransactionStrategy\">\n"
+#~ "        org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+#~ "    <attribute name=\"TransactionManagerLookupStrategy\">\n"
+#~ "        org.hibernate.transaction.JBossTransactionManagerLookup</"
+#~ "attribute>\n"
+#~ "    <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Fetching options -->\n"
+#~ "    <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+#~ "\n"
+#~ "    <!-- Second-level caching -->\n"
+#~ "    <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+#~ "    <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+#~ "EhCacheProvider</attribute>\n"
+#~ "    <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Logging -->\n"
+#~ "    <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+#~ "\n"
+#~ "    <!-- Mapping files -->\n"
+#~ "    <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/"
+#~ "Category.hbm.xml</attribute>\n"
+#~ "\n"
+#~ "</mbean>\n"
+#~ "\n"
+#~ "</server>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/events.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/events.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/events.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,541 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:34\n"
+"PO-Revision-Date: 2009-11-23 09:36+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors and events"
+msgstr "拦截器与事件(Interceptors and events)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"It is useful for the application to react to certain events that occur "
+"inside Hibernate. This allows for the implementation of generic "
+"functionality and the extension of Hibernate functionality."
+msgstr ""
+"应用程序能够响应 Hibernate 内部产生的特定事件是非常有用的。这样就允许实现某些"
+"通用的功能以及允许对 Hibernate 功能进行扩展。"
+
+#. Tag: title
+#, no-c-format
+msgid "Interceptors"
+msgstr "拦截器(Interceptors)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application, allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"<literal>Interceptor</literal> 接口提供了从会话(session)回调(callback)应"
+"用程序(application)的机制, 这种回调机制可以允许应用程序在持久化对象被保"
+"存、更新、删除或是加载之前,检查并(或)修改其 属性。一个可能的用途,就是用来"
+"跟踪审核(auditing)信息。例如:下面的这个<literal>拦截器</literal>,会在一个"
+"实现了 <literal>Auditable</literal> 接口的对象被创建时自动地设置 "
+"<literal>createTimestamp</literal> 属性,并在实现了 <literal>Auditable</"
+"literal> 接口的对象被更新时,同步更新 <literal>lastUpdateTimestamp</literal> "
+"属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can either implement <literal>Interceptor</literal> directly or extend "
+"<literal>EmptyInterceptor</literal>."
+msgstr ""
+"你可以直接实现 <literal>Interceptor</literal> 接口,也可以(最好)继承自 "
+"<literal>EmptyInterceptor</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are two kinds of inteceptors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"拦截器可以有两种:<literal>Session</literal> 范围内的和 "
+"<literal>SessionFactory</literal> 范围内的。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"当使用某个重载的 SessionFactory.openSession() 使用 <literal>Interceptor</"
+"literal> 作为参数调用打开一个 session 的时候,就指定了 <literal>Session</"
+"literal> 范围内的拦截器。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. Unless a session is opened explicitly "
+"specifying the interceptor to use, the supplied interceptor will be applied "
+"to all sessions opened from that <literal>SessionFactory</literal>. "
+"<literal>SessionFactory</literal>-scoped interceptors must be thread safe. "
+"Ensure that you do not store session-specific states, since multiple "
+"sessions will use this interceptor potentially concurrently."
+msgstr ""
+"<literal>SessionFactory</literal> 范围内的拦截器要通过 "
+"<literal>Configuration</literal> 中注册,而这必须在创建 "
+"<literal>SessionFactory</literal> 之前。在这种情况下,给出的拦截器会被这个 "
+"<literal>SessionFactory</literal> 所打开的所有 session 使用了;除非 session "
+"打开时明确指明了使用的拦截器。<literal>SessionFactory</literal> 范围内的拦截"
+"器,必须是线程安全的。确保你没有保存 session 专有的状态,因为多个 session 可"
+"能并发使用这个拦截器。"
+
+#. Tag: title
+#, no-c-format
+msgid "Event system"
+msgstr "事件系统(Event system)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you can "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition, or as a replacement, for interceptors."
+msgstr ""
+"如果需要响应持久层的某些特殊事件,你也可以使用 Hibernate3 的事件框架。该事件"
+"系统可以用来替代拦截器,也可以作为拦截器的补充来使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All the methods of the <literal>Session</literal> interface correlate to an "
+"event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</"
+"literal>, etc. Consult the XML configuration-file DTD or the <literal>org."
+"hibernate.event</literal> package for the full list of defined event types. "
+"When a request is made of one of these methods, the Hibernate "
+"<literal>Session</literal> generates an appropriate event and passes it to "
+"the configured event listeners for that type. Out-of-the-box, these "
+"listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implementation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"基本上,<literal>Session</literal> 接口的每个方法都有相对应的事件。比如 "
+"<literal>LoadEvent</literal>,<literal>FlushEvent</literal>,等等(查阅 XML "
+"配置文件的 DTD,以及 <literal>org.hibernate.event</literal> 包来获得所有已定"
+"义的事件的列表)。当某个方 法被调用时,Hibernate <literal>Session</literal>会"
+"生成一个相对应的事件并激活所 有配置好的事件监听器。系统预设的监听器实现的处理"
+"过程就是被监听的方法要做的(被监听的方法所做的其实仅仅是激活监听器,“实际”的"
+"工作是由监听器完成的)。不过,你可以自由地选择实现 一个自己定制的监听器(比"
+"如,实现并注册用来处理处理 <literal>LoadEvent</literal> 的 "
+"<literal>LoadEventListener</literal> 接口), 来负责处理所有的调用 "
+"<literal>Session</literal> 的 <literal>load()</literal> 方法的请求。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The listeners should be considered singletons. This means they are shared "
+"between requests, and should not save any state as instance variables."
+msgstr ""
+"监听器应该被看作是单例(singleton)对象,也就是说,所有同类型的事件的处理共享"
+"同一个监听器实例,因此监听器不应该保存任何状态(也就是不应该使用成员变量)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A custom listener implements the appropriate interface for the event it "
+"wants to process and/or extend one of the convenience base classes (or even "
+"the default event listeners used by Hibernate out-of-the-box as these are "
+"declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML. Declarative "
+"configuration through the properties file is not supported. Here is an "
+"example of a custom load event listener:"
+msgstr ""
+"用户定制的监听器应该实现与所要处理的事件相对应的接口,或者从一个合适的基类继"
+"承(甚至是从 Hibernate 自带的默认事件监听器类继承,为了方便你这样做,这些类都"
+"被声明成 non-final 的了)。用户定制的监听器可以通过编程使用 "
+"<literal>Configuration</literal> 对象 来注册,也可以在Hibernate的 XML 格式的"
+"配置文件中进行声明(不支持在 Properties 格式的配置文件声明监听器)。下面是一"
+"个用户定制的加载事件(load event)的监听器:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"你还需要修改一处配置,来告诉 Hibernate,除了默认的监听器,还要附加选定的监听"
+"器。"
+
+#. Tag: para
+#, no-c-format
+msgid "Instead, you can register it programmatically:"
+msgstr "或者,你可以通过编程的方式来注册它:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
+"reference will result in a separate instance of that class. If you need to "
+"share listener instances between listener types you must use the "
+"programmatic registration approach."
+msgstr ""
+"通过在XML配置文件声明而注册的监听器不能共享实例。如果在多个 <literal>&lt;"
+"listener/&gt;</literal> 节点中使用 了相同的类的名字,则每一个引用都将会产生一"
+"个独立的实例。如果你需要在多个监听器类型之间共享 监听器的实例,则你必须使用编"
+"程的方式来进行注册。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? A listener implementation could implement multiple event "
+"listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"为什么我们实现了特定监听器的接口,在注册的时候还要明确指出我们要注册哪个事件"
+"的监听器呢? 这是因为一个类可能实现多个监听器的接口。在注册的时候明确指定要监"
+"听的事件,可以让启用或者禁用对某个事件的监听的配置工作简单些。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate declarative security"
+msgstr "Hibernate 的声明式安全机制"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Hibernate3 allows certain actions to be permissioned "
+"via JACC, and authorized via JAAS. This is an optional functionality that is "
+"built on top of the event architecture."
+msgstr ""
+"通常,Hibernate 应用程序的声明式安全机制由会话外观层(session facade)所管"
+"理。现在,Hibernate3允许某些特定的行为由 JACC 进行许可管理,由 JAAS 进行授权"
+"管理。本功能是一个建立在事件框架之上的可选的功能。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"首先,你必须要配置适当的事件监听器(event listener),来激活使用 JAAS 管理授"
+"权的功能。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
+"shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/"
+"&gt;&lt;/event&gt;</literal> when there is exactly one listener for a "
+"particular event type."
+msgstr ""
+"注意,<literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> 只是 "
+"<literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/"
+"event&gt;</literal> 的简写,对每一个事件类型都必须严格的有一个监听器与之对"
+"应。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Next, while still in <literal>hibernate.cfg.xml</literal>, bind the "
+"permissions to roles:"
+msgstr ""
+"接下来,仍然在 <literal>hibernate.cfg.xml</literal> 文件中,绑定角色的权限: "
+
+#. Tag: para
+#, no-c-format
+msgid "The role names are the roles understood by your JACC provider."
+msgstr "这些角色的名字就是你的 JACC provider 所定义的角色的名字。"
+
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package org.hibernate.test;\n"
+#~ "\n"
+#~ "import java.io.Serializable;\n"
+#~ "import java.util.Date;\n"
+#~ "import java.util.Iterator;\n"
+#~ "\n"
+#~ "import org.hibernate.EmptyInterceptor;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.type.Type;\n"
+#~ "\n"
+#~ "public class AuditInterceptor extends EmptyInterceptor {\n"
+#~ "\n"
+#~ "    private int updates;\n"
+#~ "    private int creates;\n"
+#~ "    private int loads;\n"
+#~ "\n"
+#~ "    public void onDelete(Object entity,\n"
+#~ "                         Serializable id,\n"
+#~ "                         Object[] state,\n"
+#~ "                         String[] propertyNames,\n"
+#~ "                         Type[] types) {\n"
+#~ "        // do nothing\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onFlushDirty(Object entity,\n"
+#~ "                                Serializable id,\n"
+#~ "                                Object[] currentState,\n"
+#~ "                                Object[] previousState,\n"
+#~ "                                String[] propertyNames,\n"
+#~ "                                Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            updates++;\n"
+#~ "            for ( int i=0; i < propertyNames.length; i++ ) {\n"
+#~ "                if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) "
+#~ "{\n"
+#~ "                    currentState[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onLoad(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            loads++;\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean onSave(Object entity,\n"
+#~ "                          Serializable id,\n"
+#~ "                          Object[] state,\n"
+#~ "                          String[] propertyNames,\n"
+#~ "                          Type[] types) {\n"
+#~ "\n"
+#~ "        if ( entity instanceof Auditable ) {\n"
+#~ "            creates++;\n"
+#~ "            for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "                if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+#~ "                    state[i] = new Date();\n"
+#~ "                    return true;\n"
+#~ "                }\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return false;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void afterTransactionCompletion(Transaction tx) {\n"
+#~ "        if ( tx.wasCommitted() ) {\n"
+#~ "            System.out.println(\"Creations: \" + creates + \", Updates: "
+#~ "\" + updates, \"Loads: \" + loads);\n"
+#~ "        }\n"
+#~ "        updates=0;\n"
+#~ "        creates=0;\n"
+#~ "        loads=0;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#~ msgstr ""
+#~ "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+
+#~ msgid ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+#~ "    // this is the single method defined by the LoadEventListener "
+#~ "interface\n"
+#~ "    public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+#~ "loadType)\n"
+#~ "            throws HibernateException {\n"
+#~ "        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+#~ "getEntityId() ) ) {\n"
+#~ "            throw MySecurityException(\"Unauthorized access\");\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-configuration>\n"
+#~ "    <session-factory>\n"
+#~ "        ...\n"
+#~ "        <event type=\"load\">\n"
+#~ "            <listener class=\"com.eg.MyLoadListener\"/>\n"
+#~ "            <listener class=\"org.hibernate.event.def."
+#~ "DefaultLoadEventListener\"/>\n"
+#~ "        </event>\n"
+#~ "    </session-factory>\n"
+#~ "</hibernate-configuration>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+#~ msgstr ""
+#~ "<![CDATA[Configuration cfg = new Configuration();\n"
+#~ "LoadEventListener[] stack = { new MyLoadListener(), new "
+#~ "DefaultLoadEventListener() };\n"
+#~ "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+#~ "JACCPreDeleteEventListener\"/>\n"
+#~ "<listener type=\"pre-update\" class=\"org.hibernate.secure."
+#~ "JACCPreUpdateEventListener\"/>\n"
+#~ "<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+#~ "JACCPreInsertEventListener\"/>\n"
+#~ "<listener type=\"pre-load\" class=\"org.hibernate.secure."
+#~ "JACCPreLoadEventListener\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,"
+#~ "update,read\"/>\n"
+#~ "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_mappings.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_mappings.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_mappings.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1254 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-20 18:36+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Various Mappings"
+msgstr "示例:复杂映射实例"
+
+#. Tag: para
+#, no-c-format
+msgid "This chapters explores some more complex association mappings."
+msgstr "本章展示了一些较为复杂的关系映射。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Employer/Employee"
+msgstr "Employer(雇主)/Employee(雇员)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an entity class (<literal>Employment</"
+"literal>) to represent the association. You can do this when there might be "
+"more than one period of employment for the same two parties. Components are "
+"used to model monetary values and employee names."
+msgstr ""
+"下面关于 <literal>Employer</literal> 和 <literal>Employee</literal> 的关系模"
+"型使用了一个真实的实体类(<literal>Employment</literal>)来表述,这是因为对于"
+"相同的雇员和雇主可能会有多个雇佣时间段。对于金额和雇员姓名,用 Components 建"
+"模。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is a possible mapping document:"
+msgstr "映射文件可能是这样: "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the table schema generated by <literal>SchemaExport</literal>."
+msgstr "用 <literal>SchemaExport</literal> 生成表结构。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Author/Work"
+msgstr "Author(作家)/Work(作品)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. In the "
+"example, the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> is represented as a many-to-many association and "
+"the relationship between <literal>Author</literal> and <literal>Person</"
+"literal> is represented as one-to-one association. Another possibility would "
+"be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"考虑下面的 <literal>Work</literal>,<literal>Author</literal> 和 "
+"<literal>Person</literal> 模型的关系。我们用多对多关系来描述 <literal>Work</"
+"literal> 和 <literal>Author</literal>,用一对一关系来描述 <literal>Author</"
+"literal> 和 <literal>Person</literal>,另一种可能性是 <literal>Author</"
+"literal> 继承 <literal>Person</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr "下面的映射文件正确的描述了这些关系:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are four tables in this mapping: <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Here is the table schema, as "
+"generated by <literal>SchemaExport</literal>:"
+msgstr ""
+"映射中有 4 个表。<literal>works</literal>,<literal>authors</literal> 和 "
+"<literal>persons</literal> 分别保存着 work,author 和 person 的数据。"
+"<literal>author_work</literal> 是 authors 和 works 的关联表。表结构是由 "
+"<literal>SchemaExport</literal> 生成的:"
+
+#. Tag: title
+#, no-c-format
+msgid "Customer/Order/Product"
+msgstr "Customer(客户)/Order(订单)/Product(产品)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In this section we consider a model of the relationships between "
+"<literal>Customer</literal>, <literal>Order</literal>, <literal>Line Item</"
+"literal> and <literal>Product</literal>. There is a one-to-many association "
+"between <literal>Customer</literal> and <literal>Order</literal>, but how "
+"can you represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? In the example, <literal>LineItem</literal> is "
+"mapped as an association class representing the many-to-many association "
+"between <literal>Order</literal> and <literal>Product</literal>. In "
+"Hibernate this is called a composite element."
+msgstr ""
+"现在来考虑 <literal>Customer</literal>,<literal>Order</literal>, "
+"<literal>LineItem</literal> 和 <literal>Product</literal> 关系的模型。"
+"<literal>Customer</literal> 和 <literal>Order</literal> 之间 是一对多的关系,"
+"但是我们怎么来描述 <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>呢? 我可以把 <literal>LineItem</literal> 作为描述 "
+"<literal>Order</literal> 和  <literal>Product</literal> 多对多关系的关联类,"
+"在 Hibernate,这叫做组合元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping document will look like this:"
+msgstr "映射文件如下: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>,<literal>orders</literal>,"
+"<literal>line_items</literal> 和  <literal>products</literal> 分别保存着 "
+"customer,order,order line item 和 product 的数据。 <literal>line_items</"
+"literal> 也作为连接 orders 和 products 的关联表。"
+
+#. Tag: title
+#, no-c-format
+msgid "Miscellaneous example mappings"
+msgstr "杂例"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These examples are available from the Hibernate test suite. You will find "
+"many other useful example mappings there by searching in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"这些例子全部来自于 Hibernate 的 test suite,同时你也可以找到其他有用的例子。"
+"可以参考 Hibernate 的 <literal>test</literal> 目录。 "
+
+#. Tag: title
+#, no-c-format
+msgid "\"Typed\" one-to-one association"
+msgstr "\"Typed\" 一对一关联"
+
+#. Tag: title
+#, no-c-format
+msgid "Composite key example"
+msgstr "组合键示例"
+
+#. Tag: title
+#, no-c-format
+msgid "Many-to-many with shared composite key attribute"
+msgstr ""
+"共有组合键属性的多对多(Many-to-many with shared composite key attribute)"
+
+#. Tag: title
+#, no-c-format
+msgid "Content based discrimination"
+msgstr "基于内容的识别"
+
+#. Tag: title
+#, no-c-format
+msgid "Associations on alternate keys"
+msgstr "备用键的联合"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "        \n"
+#~ "    <class name=\"Employer\" table=\"employers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employer_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employment\" table=\"employment_periods\">\n"
+#~ "\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employment_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"startDate\" column=\"start_date\"/>\n"
+#~ "        <property name=\"endDate\" column=\"end_date\"/>\n"
+#~ "\n"
+#~ "        <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+#~ "            <property name=\"amount\">\n"
+#~ "                <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/"
+#~ ">\n"
+#~ "            </property>\n"
+#~ "            <property name=\"currency\" length=\"12\"/>\n"
+#~ "        </component>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"employer\" column=\"employer_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "        <many-to-one name=\"employee\" column=\"employee_id\" not-null="
+#~ "\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Employee\" table=\"employees\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"sequence\">\n"
+#~ "                <param name=\"sequence\">employee_id_seq</param>\n"
+#~ "            </generator>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"taxfileNumber\"/>\n"
+#~ "        <component name=\"name\" class=\"Name\">\n"
+#~ "            <property name=\"firstName\"/>\n"
+#~ "            <property name=\"initial\"/>\n"
+#~ "            <property name=\"lastName\"/>\n"
+#~ "        </component>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table employers (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employment_periods (\n"
+#~ "    id BIGINT not null,\n"
+#~ "    hourly_rate NUMERIC(12, 2),\n"
+#~ "    currency VARCHAR(12), \n"
+#~ "    employee_id BIGINT not null, \n"
+#~ "    employer_id BIGINT not null, \n"
+#~ "    end_date TIMESTAMP, \n"
+#~ "    start_date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table employees (\n"
+#~ "    id BIGINT not null, \n"
+#~ "    firstName VARCHAR(255), \n"
+#~ "    initial CHAR(1), \n"
+#~ "    lastName VARCHAR(255), \n"
+#~ "    taxfileNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK0 foreign key (employer_id) "
+#~ "references employers\n"
+#~ "alter table employment_periods \n"
+#~ "    add constraint employment_periodsFK1 foreign key (employee_id) "
+#~ "references employees\n"
+#~ "create sequence employee_id_seq\n"
+#~ "create sequence employment_id_seq\n"
+#~ "create sequence employer_id_seq]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <discriminator column=\"type\" type=\"character\"/>\n"
+#~ "\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "        <set name=\"authors\" table=\"author_work\">\n"
+#~ "            <key column name=\"work_id\"/>\n"
+#~ "            <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "        <subclass name=\"Book\" discriminator-value=\"B\">\n"
+#~ "            <property name=\"text\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "        <subclass name=\"Song\" discriminator-value=\"S\">\n"
+#~ "            <property name=\"tempo\"/>\n"
+#~ "            <property name=\"genre\"/>\n"
+#~ "        </subclass>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Author\" table=\"authors\">\n"
+#~ "\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <!-- The Author must have the same identifier as the Person --"
+#~ ">\n"
+#~ "            <generator class=\"assigned\"/> \n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"alias\"/>\n"
+#~ "        <one-to-one name=\"person\" constrained=\"true\"/>\n"
+#~ "\n"
+#~ "        <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+#~ "            <key column=\"author_id\"/>\n"
+#~ "            <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+#~ "        </set>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"persons\">\n"
+#~ "        <id name=\"id\" column=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+#~ msgstr ""
+#~ "<![CDATA[create table works (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    tempo FLOAT, \n"
+#~ "    genre VARCHAR(255), \n"
+#~ "    text INTEGER, \n"
+#~ "    title VARCHAR(255), \n"
+#~ "    type CHAR(1) not null, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table author_work (\n"
+#~ "    author_id BIGINT not null, \n"
+#~ "    work_id BIGINT not null, \n"
+#~ "    primary key (work_id, author_id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table authors (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    alias VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table persons (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table authors \n"
+#~ "    add constraint authorsFK0 foreign key (id) references persons\n"
+#~ "alter table author_work \n"
+#~ "    add constraint author_workFK0 foreign key (author_id) references "
+#~ "authors\n"
+#~ "alter table author_work\n"
+#~ "    add constraint author_workFK1 foreign key (work_id) references works]]"
+#~ ">"
+
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class name=\"Customer\" table=\"customers\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <set name=\"orders\" inverse=\"true\">\n"
+#~ "            <key column=\"customer_id\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </set>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Order\" table=\"orders\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\"/>\n"
+#~ "        <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+#~ "        <list name=\"lineItems\" table=\"line_items\">\n"
+#~ "            <key column=\"order_id\"/>\n"
+#~ "            <list-index column=\"line_number\"/>\n"
+#~ "            <composite-element class=\"LineItem\">\n"
+#~ "                <property name=\"quantity\"/>\n"
+#~ "                <many-to-one name=\"product\" column=\"product_id\"/>\n"
+#~ "            </composite-element>\n"
+#~ "        </list>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "    <class name=\"Product\" table=\"products\">\n"
+#~ "        <id name=\"id\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"serialNumber\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+#~ msgstr ""
+#~ "<![CDATA[create table customers (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    name VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table orders (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    customer_id BIGINT, \n"
+#~ "    date TIMESTAMP, \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table line_items (\n"
+#~ "    line_number INTEGER not null, \n"
+#~ "    order_id BIGINT not null, \n"
+#~ "    product_id BIGINT, \n"
+#~ "    quantity INTEGER, \n"
+#~ "    primary key (order_id, line_number)\n"
+#~ ")\n"
+#~ "\n"
+#~ "create table products (\n"
+#~ "    id BIGINT not null generated by default as identity, \n"
+#~ "    serialNumber VARCHAR(255), \n"
+#~ "    primary key (id)\n"
+#~ ")\n"
+#~ "\n"
+#~ "alter table orders \n"
+#~ "    add constraint ordersFK0 foreign key (customer_id) references "
+#~ "customers\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK0 foreign key (product_id) references "
+#~ "products\n"
+#~ "alter table line_items\n"
+#~ "    add constraint line_itemsFK1 foreign key (order_id) references "
+#~ "orders]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"name\"/>\n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'HOME'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "    <one-to-one name=\"mailingAddress\" \n"
+#~ "            cascade=\"all\">\n"
+#~ "        <formula>name</formula>\n"
+#~ "        <formula>'MAILING'</formula>\n"
+#~ "    </one-to-one>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\" batch-size=\"2\" \n"
+#~ "        check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-many-to-one name=\"person\" \n"
+#~ "                column=\"personName\"/>\n"
+#~ "        <key-property name=\"type\" \n"
+#~ "                column=\"addressType\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"street\" type=\"text\"/>\n"
+#~ "    <property name=\"state\"/>\n"
+#~ "    <property name=\"zip\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Customer\">\n"
+#~ "\n"
+#~ "    <id name=\"customerId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+#~ "    <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+#~ "\n"
+#~ "    <list name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key column=\"customerId\"/>\n"
+#~ "        <index column=\"orderNumber\"/>\n"
+#~ "        <one-to-many class=\"Order\"/>\n"
+#~ "    </list>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "    <synchronize table=\"Product\"/>\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"Order$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"orderDate\" \n"
+#~ "            type=\"calendar_date\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"total\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity*p.price) \n"
+#~ "            from LineItem li, Product p \n"
+#~ "            where li.productId = p.productId \n"
+#~ "                and li.customerId = customerId \n"
+#~ "                and li.orderNumber = orderNumber )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"customer\"\n"
+#~ "            column=\"customerId\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"/>\n"
+#~ "        \n"
+#~ "    <bag name=\"lineItems\"\n"
+#~ "            fetch=\"join\" \n"
+#~ "            inverse=\"true\"\n"
+#~ "            cascade=\"save-update\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"customerId\"/>\n"
+#~ "            <column name=\"orderNumber\"/>\n"
+#~ "        </key>\n"
+#~ "        <one-to-many class=\"LineItem\"/>\n"
+#~ "    </bag>\n"
+#~ "    \n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"LineItem\">\n"
+#~ "    \n"
+#~ "    <composite-id name=\"id\" \n"
+#~ "            class=\"LineItem$Id\">\n"
+#~ "        <key-property name=\"customerId\" length=\"10\"/>\n"
+#~ "        <key-property name=\"orderNumber\"/>\n"
+#~ "        <key-property name=\"productId\" length=\"10\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    \n"
+#~ "    <property name=\"quantity\"/>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"order\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\">\n"
+#~ "        <column name=\"customerId\"/>\n"
+#~ "        <column name=\"orderNumber\"/>\n"
+#~ "    </many-to-one>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"product\"\n"
+#~ "            insert=\"false\"\n"
+#~ "            update=\"false\" \n"
+#~ "            not-null=\"true\"\n"
+#~ "            column=\"productId\"/>\n"
+#~ "        \n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Product\">\n"
+#~ "    <synchronize table=\"LineItem\"/>\n"
+#~ "\n"
+#~ "    <id name=\"productId\"\n"
+#~ "        length=\"10\">\n"
+#~ "        <generator class=\"assigned\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"description\" \n"
+#~ "        not-null=\"true\" \n"
+#~ "        length=\"200\"/>\n"
+#~ "    <property name=\"price\" length=\"3\"/>\n"
+#~ "    <property name=\"numberAvailable\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"numberOrdered\">\n"
+#~ "        <formula>\n"
+#~ "            ( select sum(li.quantity) \n"
+#~ "            from LineItem li \n"
+#~ "            where li.productId = productId )\n"
+#~ "        </formula>\n"
+#~ "    </property>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <set name=\"groups\" table=\"UserGroup\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"Group\">\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "    \n"
+#~ "<class name=\"Group\" table=\"`Group`\">\n"
+#~ "    <composite-id>\n"
+#~ "        <key-property name=\"name\"/>\n"
+#~ "        <key-property name=\"org\"/>\n"
+#~ "    </composite-id>\n"
+#~ "    <property name=\"description\"/>\n"
+#~ "    <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+#~ "        <key>\n"
+#~ "            <column name=\"groupName\"/>\n"
+#~ "            <column name=\"org\"/>\n"
+#~ "        </key>\n"
+#~ "        <many-to-many class=\"User\">\n"
+#~ "            <column name=\"userName\"/>\n"
+#~ "            <formula>org</formula>\n"
+#~ "        </many-to-many>\n"
+#~ "    </set>\n"
+#~ "</class>\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\"\n"
+#~ "    discriminator-value=\"P\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\" \n"
+#~ "        column=\"person_id\" \n"
+#~ "        unsaved-value=\"0\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "            \n"
+#~ "    <discriminator \n"
+#~ "        type=\"character\">\n"
+#~ "        <formula>\n"
+#~ "            case \n"
+#~ "                when title is not null then 'E' \n"
+#~ "                when salesperson is not null then 'C' \n"
+#~ "                else 'P' \n"
+#~ "            end\n"
+#~ "        </formula>\n"
+#~ "    </discriminator>\n"
+#~ "\n"
+#~ "    <property name=\"name\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        length=\"80\"/>\n"
+#~ "        \n"
+#~ "    <property name=\"sex\" \n"
+#~ "        not-null=\"true\"\n"
+#~ "        update=\"false\"/>\n"
+#~ "    \n"
+#~ "    <component name=\"address\">\n"
+#~ "        <property name=\"address\"/>\n"
+#~ "        <property name=\"zip\"/>\n"
+#~ "        <property name=\"country\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Employee\" \n"
+#~ "        discriminator-value=\"E\">\n"
+#~ "            <property name=\"title\"\n"
+#~ "                length=\"20\"/>\n"
+#~ "            <property name=\"salary\"/>\n"
+#~ "            <many-to-one name=\"manager\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "    <subclass name=\"Customer\" \n"
+#~ "        discriminator-value=\"C\">\n"
+#~ "            <property name=\"comments\"/>\n"
+#~ "            <many-to-one name=\"salesperson\"/>\n"
+#~ "    </subclass>\n"
+#~ "    \n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    \n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <property name=\"name\" length=\"100\"/>\n"
+#~ "    \n"
+#~ "    <one-to-one name=\"address\" \n"
+#~ "        property-ref=\"person\"\n"
+#~ "        cascade=\"all\"\n"
+#~ "        fetch=\"join\"/>\n"
+#~ "    \n"
+#~ "    <set name=\"accounts\" \n"
+#~ "        inverse=\"true\">\n"
+#~ "        <key column=\"userId\"\n"
+#~ "            property-ref=\"userId\"/>\n"
+#~ "        <one-to-many class=\"Account\"/>\n"
+#~ "    </set>\n"
+#~ "    \n"
+#~ "    <property name=\"userId\" length=\"8\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Address\">\n"
+#~ "\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"hilo\"/>\n"
+#~ "    </id>\n"
+#~ "\n"
+#~ "    <property name=\"address\" length=\"300\"/>\n"
+#~ "    <property name=\"zip\" length=\"5\"/>\n"
+#~ "    <property name=\"country\" length=\"25\"/>\n"
+#~ "    <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+#~ "\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Account\">\n"
+#~ "    <id name=\"accountId\" length=\"32\">\n"
+#~ "        <generator class=\"uuid\"/>\n"
+#~ "    </id>\n"
+#~ "    \n"
+#~ "    <many-to-one name=\"user\"\n"
+#~ "        column=\"userId\"\n"
+#~ "        property-ref=\"userId\"/>\n"
+#~ "    \n"
+#~ "    <property name=\"type\" not-null=\"true\"/>\n"
+#~ "    \n"
+#~ "</class>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_parentchild.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_parentchild.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_parentchild.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,369 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-16 10:04+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Parent/Child"
+msgstr "示例:父子关系(Parent/Child)"
+
+#. Tag: para
+#, no-c-format
+msgid "One of the first things that new users want to do with Hibernate is to model a parent/child type relationship. There are two different approaches to this. The most convenient approach, especially for new users, is to model both <literal>Parent</literal> and <literal>Child</literal> as entity classes with a <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>. The alternative approach is to declare the <literal>Child</literal> as a <literal>&lt;composite-element&gt;</literal>. The default semantics of a one-to-many association in Hibernate are much less close to the usual semantics of a parent/child relationship than those of a composite element mapping. We will explain how to use a <emphasis>bidirectional one-to-many association with cascades</emphasis> to model a parent/child relationship efficiently and elegantly."
+msgstr "刚刚接触 Hibernate 的人大多是从父子关系(parent / child type relationship)的建模入手的。父子关系的建模有两种方法。由于种种原因,最方便的方法是把 <literal>Parent</literal> 和 <literal>Child</literal> 都建模成实体类,并创建一个从 <literal>Parent</literal> 指向 <literal>Child</literal> 的 &lt;one-to-many&gt; 关联,对新手来说尤其如此。还有一种方法,就是将 <literal>Child</literal> 声明为一个 <literal>&lt;composite-element&gt;</literal>(组合元素)。 事实上在 Hibernate 中 one to many 关联的默认语义远没有 composite element 贴近 parent / child 关系的通常语义。下面我们会阐述如何使用<emphasis>带有级联的双向一对多关联(idirectional one to many association with cascades)</emphasis>去建立有效、优美的 parent / child 关系。"
+
+#. Tag: title
+#, no-c-format
+msgid "A note about collections"
+msgstr "关于 collections 需要注意的一点"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate collections are considered to be a logical part of their owning entity and not of the contained entities. Be aware that this is a critical distinction that has the following consequences:"
+msgstr "Hibernate collections 被当作其所属实体而不是其包含实体的一个逻辑部分。这非常重要,它主要体现为以下几点:"
+
+#. Tag: para
+#, no-c-format
+msgid "When you remove/add an object from/to a collection, the version number of the collection owner is incremented."
+msgstr "当删除或增加 collection 中对象的时候,collection 所属者的版本值会递增。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If an object that was removed from a collection is an instance of a value type (e.g. a composite element), that object will cease to be persistent and its state will be completely removed from the database. Likewise, adding a value type instance to the collection will cause its state to be immediately persistent."
+msgstr "如果一个从 collection 中移除的对象是一个值类型(value type)的实例,比如 composite element,那么这个对象的持久化状态将会终止,其在数据库中对应的记录会被删除。同样的,向 collection 增加一个 value type 的实例将会使之立即被持久化。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Conversely, if an entity is removed from a collection (a one-to-many or many-to-many association), it will not be deleted by default. This behavior is completely consistent; a change to the internal state of another entity should not cause the associated entity to vanish. Likewise, adding an entity to a collection does not cause that entity to become persistent, by default."
+msgstr "另一方面,如果从一对多或多对多关联的 collection 中移除一个实体,在缺省情况下这个对象并不会被删除。这个行为是完全合乎逻辑的--改变一个实体的内部状态不应该使与它关联的实体消失掉。同样的,向 collection 增加一个实体不会使之被持久化。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Adding an entity to a collection, by default, merely creates a link between the two entities. Removing the entity will remove the link. This is appropriate for all sorts of cases. However, it is not appropriate in the case of a parent/child relationship. In this case, the life of the child is bound to the life cycle of the parent."
+msgstr "实际上,向 Collection 增加一个实体的缺省动作只是在两个实体之间创建一个连接而已,同样移除的时候也只是删除连接。这种处理对于所有的情况都是合适的。对于父子关系则是完全不适合的,在这种关系下,子对象的生存绑定于父对象的生存周期。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Bidirectional one-to-many"
+msgstr "双向的一对多关系(Bidirectional one-to-many)"
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr "假设我们要实现一个简单的从 Parent 到 Child 的 &lt;one-to-many&gt; 关联。"
+
+#. Tag: para
+#, no-c-format
+msgid "If we were to execute the following code:"
+msgstr "如果我们运行下面的代码:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate would issue two SQL statements:"
+msgstr "Hibernate 会产生两条 SQL 语句:"
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr "一条 <literal>INSERT</literal> 语句,为 <literal>c</literal> 创建一条记录"
+
+#. Tag: para
+#, no-c-format
+msgid "an <literal>UPDATE</literal> to create the link from <literal>p</literal> to <literal>c</literal>"
+msgstr "一条 <literal>UPDATE</literal> 语句,创建从 <literal>p</literal> 到 <literal>c</literal> 的连接"
+
+#. Tag: para
+#, no-c-format
+msgid "This is not only inefficient, but also violates any <literal>NOT NULL</literal> constraint on the <literal>parent_id</literal> column. You can fix the nullability constraint violation by specifying <literal>not-null=\"true\"</literal> in the collection mapping:"
+msgstr "这样做不仅效率低,而且违反了 <literal>parent_id</literal> 列 <literal>parent_id</literal> 非空的限制。我们可以通过在集合类映射上指定 <literal>not-null=\"true\"</literal> 来解决违反非空约束的问题:"
+
+#. Tag: para
+#, no-c-format
+msgid "However, this is not the recommended solution."
+msgstr "然而,这并非是推荐的解决方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "The underlying cause of this behavior is that the link (the foreign key <literal>parent_id</literal>) from <literal>p</literal> to <literal>c</literal> is not considered part of the state of the <literal>Child</literal> object and is therefore not created in the <literal>INSERT</literal>. The solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr "这种现象的根本原因是从 <literal>p</literal> 到 <literal>c</literal> 的连接(外键 parent_id)没有被当作 <literal>Child</literal> 对象状态的一部分,因而没有在 <literal>INSERT</literal> 语句中被创建。因此解决的办法就是把这个连接添加到 <literal>Child</literal> 的映射中。"
+
+#. Tag: para
+#, no-c-format
+msgid "You also need to add the <literal>parent</literal> property to the <literal>Child</literal> class."
+msgstr "你还需要为类 <literal>Child</literal> 添加 <literal>parent</literal> 属性。"
+
+#. Tag: para
+#, no-c-format
+msgid "Now that the <literal>Child</literal> entity is managing the state of the link, we tell the collection not to update the link. We use the <literal>inverse</literal> attribute to do this:"
+msgstr "现在实体 <literal>Child</literal> 在管理连接的状态,为了使 collection 不更新连接,我们使用 <literal>inverse</literal> 属性:"
+
+#. Tag: para
+#, no-c-format
+msgid "The following code would be used to add a new <literal>Child</literal>:"
+msgstr "下面的代码是用来添加一个新的 <literal>Child</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "Only one SQL <literal>INSERT</literal> would now be issued."
+msgstr "现在,只会有一条 <literal>INSERT</literal> 语句被执行。"
+
+#. Tag: para
+#, no-c-format
+msgid "You could also create an <literal>addChild()</literal> method of <literal>Parent</literal>."
+msgstr "为了让事情变得井井有条,可以为 <literal>Parent</literal> 加一个 <literal>addChild()</literal> 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "The code to add a <literal>Child</literal> looks like this:"
+msgstr "现在,添加 <literal>Child</literal> 的代码就是这样:"
+
+#. Tag: title
+#, no-c-format
+msgid "Cascading life cycle"
+msgstr "级联生命周期(Cascading lifecycle) "
+
+#. Tag: para
+#, no-c-format
+msgid "You can address the frustrations of the explicit call to <literal>save()</literal> by using cascades."
+msgstr "需要显式调用 <literal>save()</literal> 仍然很麻烦,我们可以用级联来解决这个问题。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This simplifies the code above to:"
+msgstr "这样上面的代码可以简化为: "
+
+#. Tag: para
+#, no-c-format
+msgid "Similarly, we do not need to iterate over the children when saving or deleting a <literal>Parent</literal>. The following removes <literal>p</literal> and all its children from the database."
+msgstr "同样的,保存或删除 <literal>Parent</literal> 对象的时候并不需要遍历其子对象。下面的代码会删除对象 <literal>p</literal> 及其所有子对象对应的数据库记录。 "
+
+#. Tag: para
+#, no-c-format
+msgid "However, the following code:"
+msgstr "然而,这段代码:"
+
+#. Tag: para
+#, no-c-format
+msgid "will not remove <literal>c</literal> from the database. In this case, it will only remove the link to <literal>p</literal> and cause a <literal>NOT NULL</literal> constraint violation. You need to explicitly <literal>delete()</literal> the <literal>Child</literal>."
+msgstr "不会从数据库删除<literal>c</literal>;它只会删除与 <literal>p</literal> 之间的连接(并且会导致违反 <literal>NOT NULL</literal> 约束,在这个例子中)。你需要显式调用 <literal>delete()</literal> 来删除 <literal>Child</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In our case, a <literal>Child</literal> cannot exist without its parent. So if we remove a <literal>Child</literal> from the collection, we do want it to be deleted. To do this, we must use <literal>cascade=\"all-delete-orphan\"</literal>."
+msgstr "在我们的例子中,如果没有父对象,子对象就不应该存在,如果将子对象从 collection 中移除,实际上我们是想删除它。要实现这种要求,就必须使用 <literal>cascade=\"all-delete-orphan\"</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Even though the collection mapping specifies <literal>inverse=\"true\"</literal>, cascades are still processed by iterating the collection elements. If you need an object be saved, deleted or updated by cascade, you must add it to the collection. It is not enough to simply call <literal>setParent()</literal>."
+msgstr "注意:即使在 collection 一方的映射中指定 <literal>inverse=\"true\"</literal>,级联仍然是通过遍历 collection 中的元素来处理的。如果你想要通过级联进行子对象的插入、删除、更新操作,就必须把它加到 collection 中,只调用 <literal>setParent()</literal> 是不够的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Cascades and <literal>unsaved-value</literal>"
+msgstr "级联与未保存值(<literal>unsaved-value</literal>)"
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</literal>, made some changes in a UI action and wanted to persist these changes in a new session by calling <literal>update()</literal>. The <literal>Parent</literal> will contain a collection of children and, since the cascading update is enabled, Hibernate needs to know which children are newly instantiated and which represent existing rows in the database. We will also assume that both <literal>Parent</literal> and <literal>Child</literal> have generated identifier properties of type <literal>Long</literal>. Hibernate will use the identifier and version/timestamp property value to determine which of the children are new. (See <xref linkend=\"objectstate-saveorupdate\" />.) <emphasis>In Hibernate3, it is no longer necessary to specify an <literal>unsaved-value</literal> explicitly.</emphasis>"
+msgstr "假设我们从 <literal>Session</literal> 中装入了一个 <literal>Parent</literal> 对象,用户界面对其进行了修改,然后希望在一个新的 Session 里面调用 <literal>update()</literal> 来保存这些修改。对象 <literal>Parent</literal> 包含了子对象的集合,由于打开了级联更新,Hibernate 需要知道哪些 Child 对象是新实例化的,哪些代表数据库中已经存在的记录。我们假设 <literal>Parent</literal> 和 <literal>Child</literal> 对象的标识属性都是自动生成的,类型为 <literal>Long</literal>。Hibernate 会使用标识属性的值,和 version 或 timestamp 属性,来判断哪些子对象是新的。(参见 <xref linkend=\"objectstate-saveorupdate\"/>)<emphasis>在 Hibernate3 中,显式指定 <literal>unsaved-value</literal> 不再是必须的了。</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>:"
+msgstr "下面的代码会更新 <literal>parent</literal> 和 <literal>child</literal> 对象,并且插入 <literal>newChild</literal> 对象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This may be suitable for the case of a generated identifier, but what about assigned identifiers and composite identifiers? This is more difficult, since Hibernate cannot use the identifier property to distinguish between a newly instantiated object, with an identifier assigned by the user, and an object loaded in a previous session. In this case, Hibernate will either use the timestamp or version property, or will actually query the second-level cache or, worst case, the database, to see if the row exists."
+msgstr "这对于自动生成标识的情况是非常好的,但是自分配的标识和复合标识怎么办呢?这是有点麻烦,因为 Hibernate 没有办法区分新实例化的对象(标识被用户指定了)和前一个 Session 装入的对象。在这种情况下,Hibernate 会使用 timestamp 或 version 属性,或者查询第二级缓存,或者最坏的情况,查询数据库,来确认是否此行存在。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Conclusion"
+msgstr "结论"
+
+#. Tag: para
+#, no-c-format
+msgid "The sections we have just covered can be a bit confusing. However, in practice, it all works out nicely. Most Hibernate applications use the parent/child pattern in many places."
+msgstr "这里有不少东西需要融会贯通,可能会让新手感到迷惑。但是在实践中它们都工作地非常好。大部分 Hibernate 应用程序都会经常用到父子对象模式。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We mentioned an alternative in the first paragraph. None of the above issues exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, which have exactly the semantics of a parent/child relationship. Unfortunately, there are two big limitations with composite element classes: composite elements cannot own collections and they should not be the child of any entity other than the unique parent."
+msgstr "在第一段中我们曾经提到另一个方案。上面的这些问题都不会出现在 <literal>&lt;composite-element&gt;</literal> 映射中,它准确地表达了父子关系的语义。很不幸复合元素还有两个重大限制:复合元素不能拥有 collections,并且,除了用于惟一的父对象外,它们不能再作为其它任何实体的子对象。 "
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = .....;\n"
+#~ "Child c = new Child();\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"children\">\n"
+#~ "    <key column=\"parent_id\" not-null=\"true\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true"
+#~ "\"/>]]>"
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public void addChild(Child c) {\n"
+#~ "    c.setParent(this);\n"
+#~ "    children.add(c);\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.save(c);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = new Child();\n"
+#~ "p.addChild(c);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "session.delete(p);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "c.setParent(null);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+#~ "Child c = (Child) p.getChildren().iterator().next();\n"
+#~ "p.getChildren().remove(c);\n"
+#~ "session.delete(c);\n"
+#~ "session.flush();]]>"
+#~ msgid ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-"
+#~ "orphan\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-"
+#~ "orphan\">\n"
+#~ "    <key column=\"parent_id\"/>\n"
+#~ "    <one-to-many class=\"Child\"/>\n"
+#~ "</set>]]>"
+#~ msgid ""
+#~ "<![CDATA[//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[//parent and child were both loaded in a previous session\n"
+#~ "parent.addChild(child);\n"
+#~ "Child newChild = new Child();\n"
+#~ "parent.addChild(newChild);\n"
+#~ "session.update(parent);\n"
+#~ "session.flush();]]>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_weblog.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_weblog.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/example_weblog.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,856 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-27 13:54+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Example: Weblog Application"
+msgstr "示例:Weblog 应用程序 "
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "持久化类(Persistent Classes)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The persistent classes here represent a weblog and an item posted in a "
+"weblog. They are to be modelled as a standard parent/child relationship, but "
+"we will use an ordered bag, instead of a set:"
+msgstr ""
+"下面的持久化类表示一个 weblog 和在其中张贴的一个贴子。他们是标准的父/子关系模"
+"型,但是我们会用一个有序包(ordered bag)而非集合(set)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Mappings"
+msgstr "Hibernate 映射"
+
+#. Tag: para
+#, no-c-format
+msgid "The XML mappings are now straightforward. For example:"
+msgstr "下列的 XML 映射应该是很直白的。例如:"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate Code"
+msgstr "Hibernate 代码"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes using Hibernate:"
+msgstr "下面的类演示了我们可以使用 Hibernate 对这些类进行的一些操作:"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "public class Blog {\n"
+#~ "    private Long _id;\n"
+#~ "    private String _name;\n"
+#~ "    private List _items;\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public List getItems() {\n"
+#~ "        return _items;\n"
+#~ "    }\n"
+#~ "    public String getName() {\n"
+#~ "        return _name;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setItems(List list) {\n"
+#~ "        _items = list;\n"
+#~ "    }\n"
+#~ "    public void setName(String string) {\n"
+#~ "        _name = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.text.DateFormat;\n"
+#~ "import java.util.Calendar;\n"
+#~ "\n"
+#~ "public class BlogItem {\n"
+#~ "    private Long _id;\n"
+#~ "    private Calendar _datetime;\n"
+#~ "    private String _text;\n"
+#~ "    private String _title;\n"
+#~ "    private Blog _blog;\n"
+#~ "\n"
+#~ "    public Blog getBlog() {\n"
+#~ "        return _blog;\n"
+#~ "    }\n"
+#~ "    public Calendar getDatetime() {\n"
+#~ "        return _datetime;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return _id;\n"
+#~ "    }\n"
+#~ "    public String getText() {\n"
+#~ "        return _text;\n"
+#~ "    }\n"
+#~ "    public String getTitle() {\n"
+#~ "        return _title;\n"
+#~ "    }\n"
+#~ "    public void setBlog(Blog blog) {\n"
+#~ "        _blog = blog;\n"
+#~ "    }\n"
+#~ "    public void setDatetime(Calendar calendar) {\n"
+#~ "        _datetime = calendar;\n"
+#~ "    }\n"
+#~ "    public void setId(Long long1) {\n"
+#~ "        _id = long1;\n"
+#~ "    }\n"
+#~ "    public void setText(String string) {\n"
+#~ "        _text = string;\n"
+#~ "    }\n"
+#~ "    public void setTitle(String string) {\n"
+#~ "        _title = string;\n"
+#~ "    }\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"Blog\"\n"
+#~ "        table=\"BLOGS\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            not-null=\"true\"\n"
+#~ "            unique=\"true\"/>\n"
+#~ "\n"
+#~ "        <bag\n"
+#~ "            name=\"items\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            order-by=\"DATE_TIME\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "\n"
+#~ "            <key column=\"BLOG_ID\"/>\n"
+#~ "            <one-to-many class=\"BlogItem\"/>\n"
+#~ "\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "    \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "    \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"eg\">\n"
+#~ "\n"
+#~ "    <class\n"
+#~ "        name=\"BlogItem\"\n"
+#~ "        table=\"BLOG_ITEMS\"\n"
+#~ "        dynamic-update=\"true\">\n"
+#~ "\n"
+#~ "        <id\n"
+#~ "            name=\"id\"\n"
+#~ "            column=\"BLOG_ITEM_ID\">\n"
+#~ "\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"title\"\n"
+#~ "            column=\"TITLE\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"text\"\n"
+#~ "            column=\"TEXT\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <property\n"
+#~ "            name=\"datetime\"\n"
+#~ "            column=\"DATE_TIME\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "        <many-to-one\n"
+#~ "            name=\"blog\"\n"
+#~ "            column=\"BLOG_ID\"\n"
+#~ "            not-null=\"true\"/>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "import java.util.ArrayList;\n"
+#~ "import java.util.Calendar;\n"
+#~ "import java.util.Iterator;\n"
+#~ "import java.util.List;\n"
+#~ "\n"
+#~ "import org.hibernate.HibernateException;\n"
+#~ "import org.hibernate.Query;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.Transaction;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+#~ "\n"
+#~ "public class BlogMain {\n"
+#~ "    \n"
+#~ "    private SessionFactory _sessions;\n"
+#~ "    \n"
+#~ "    public void configure() throws HibernateException {\n"
+#~ "        _sessions = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class)\n"
+#~ "            .buildSessionFactory();\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void exportTables() throws HibernateException {\n"
+#~ "        Configuration cfg = new Configuration()\n"
+#~ "            .addClass(Blog.class)\n"
+#~ "            .addClass(BlogItem.class);\n"
+#~ "        new SchemaExport(cfg).create(true, true);\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog createBlog(String name) throws HibernateException {\n"
+#~ "        \n"
+#~ "        Blog blog = new Blog();\n"
+#~ "        blog.setName(name);\n"
+#~ "        blog.setItems( new ArrayList() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.persist(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setBlog(blog);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        blog.getItems().add(item);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(blog);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public BlogItem createBlogItem(Long blogid, String title, String "
+#~ "text)\n"
+#~ "                        throws HibernateException {\n"
+#~ "        \n"
+#~ "        BlogItem item = new BlogItem();\n"
+#~ "        item.setTitle(title);\n"
+#~ "        item.setText(text);\n"
+#~ "        item.setDatetime( Calendar.getInstance() );\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+#~ "            item.setBlog(blog);\n"
+#~ "            blog.getItems().add(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return item;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(BlogItem item, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        item.setText(text);\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            session.update(item);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public void updateBlogItem(Long itemid, String text)\n"
+#~ "                    throws HibernateException {\n"
+#~ "    \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            BlogItem item = (BlogItem) session.load(BlogItem.class, "
+#~ "itemid);\n"
+#~ "            item.setText(text);\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listAllBlogNamesAndItemCounts(int max)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"select blog.id, blog.name, count(blogItem) \" +\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join blog.items as blogItem \" +\n"
+#~ "                \"group by blog.name, blog.id \" +\n"
+#~ "                \"order by max(blogItem.datetime)\"\n"
+#~ "            );\n"
+#~ "            q.setMaxResults(max);\n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public Blog getBlogAndAllItems(Long blogid)\n"
+#~ "                    throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        Blog blog = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"left outer join fetch blog.items \" +\n"
+#~ "                \"where blog.id = :blogid\"\n"
+#~ "            );\n"
+#~ "            q.setParameter(\"blogid\", blogid);\n"
+#~ "            blog  = (Blog) q.uniqueResult();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return blog;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    public List listBlogsAndRecentItems() throws HibernateException {\n"
+#~ "        \n"
+#~ "        Session session = _sessions.openSession();\n"
+#~ "        Transaction tx = null;\n"
+#~ "        List result = null;\n"
+#~ "        try {\n"
+#~ "            tx = session.beginTransaction();\n"
+#~ "            Query q = session.createQuery(\n"
+#~ "                \"from Blog as blog \" +\n"
+#~ "                \"inner join blog.items as blogItem \" +\n"
+#~ "                \"where blogItem.datetime > :minDate\"\n"
+#~ "            );\n"
+#~ "\n"
+#~ "            Calendar cal = Calendar.getInstance();\n"
+#~ "            cal.roll(Calendar.MONTH, false);\n"
+#~ "            q.setCalendar(\"minDate\", cal);\n"
+#~ "            \n"
+#~ "            result = q.list();\n"
+#~ "            tx.commit();\n"
+#~ "        }\n"
+#~ "        catch (HibernateException he) {\n"
+#~ "            if (tx!=null) tx.rollback();\n"
+#~ "            throw he;\n"
+#~ "        }\n"
+#~ "        finally {\n"
+#~ "            session.close();\n"
+#~ "        }\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "}]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/filters.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/filters.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/filters.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,312 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2009-11-27 13:53+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering data"
+msgstr "过滤数据"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that can be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3 提供了一种创新的方式来处理具有“显性(visibility)”规则的数据,那就"
+"是使用<emphasis>Hibernate 过滤器</emphasis>。<emphasis>Hibernate 过滤器</"
+"emphasis>是全局有效的、具有名字、可以带参数的过滤器,对于某个特定的 "
+"Hibernate session 您可以选择是否启用(或禁用)某个过滤器。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate filters"
+msgstr "Hibernate 过滤器(filters)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 has the ability to pre-define filter criteria and attach those "
+"filters at both a class level and a collection level. A filter criteria "
+"allows you to define a restriction clause similar to the existing \"where\" "
+"attribute available on the class and various collection elements. These "
+"filter conditions, however, can be parameterized. The application can then "
+"decide at runtime whether certain filters should be enabled and what their "
+"parameter values should be. Filters can be used like database views, but "
+"they are parameterized inside the application."
+msgstr ""
+"Hibernate3 新增了对某个类或者集合使用预先定义的过滤器条件(filter criteria)"
+"的功能。过滤器条件相当于定义一个 非常类似于类和各种集合上的“where”属性的约束"
+"子句,但是过滤器条件可以带参数。 应用程序可以在运行时决定是否启用给定的过滤"
+"器,以及使用什么样的参数值。过滤器的用法很像数据库视图,只不过是在应用程序中"
+"确定使用什么样的参数的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal>&lt;"
+"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
+"&gt;</literal> element:"
+msgstr ""
+"要使用过滤器,必须首先在相应的映射节点中定义。而定义一个过滤器,要用到位于 "
+"<literal>&lt;hibernate-mapping/&gt;</literal> 节点之内的 <literal>&lt;filter-"
+"def/&gt;</literal> 节点:"
+
+#. Tag: para
+#, no-c-format
+msgid "This filter can then be attached to a class:"
+msgstr "定义好之后,就可以在某个类中使用这个过滤器: "
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to a collection:"
+msgstr "或者也可以在某个集合使用它:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or, to both or multiples of each at the same time."
+msgstr "或者在同时可以使用多个过滤器。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session. "
+"Filters must be enabled through use of the <literal>Session.enableFilter()</"
+"literal> method, which returns an instance of the <literal>Filter</literal> "
+"interface. If you used the simple filter defined above, it would look like "
+"this:"
+msgstr ""
+"<literal>Session</literal> 对象中会用到的方法有:<literal>enableFilter"
+"(String filterName)</literal>,<literal>getEnabledFilter(String filterName)</"
+"literal>,和 <literal>disableFilter(String filterName)</literal>。Session 中"
+"默认是<emphasis>不</emphasis>启用过滤器的,必须通过 <literal>Session."
+"enabledFilter()</literal> 方法显式的启用。该方法返回被启用的 "
+"<literal>Filter</literal> 的实例。以上文定义的过滤器为例:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Methods on the org.hibernate.Filter interface do allow the method-chaining "
+"common to much of Hibernate."
+msgstr ""
+"注意,org.hibernate.Filter 的方法允许链式方法调用。(类似上面例子中启用 "
+"Filter 之后设定 Filter 参数这个“方法链”) Hibernate 的其他部分也大多有这个特"
+"性。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following is a full example, using temporal data with an effective "
+"record date pattern:"
+msgstr "下面是一个比较完整的例子,使用了记录生效日期模式过滤有时效的数据: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In order to ensure that you are provided with currently effective records, "
+"enable the filter on the session prior to retrieving employee data:"
+msgstr ""
+"定义好后,如果想要保证取回的都是目前处于生效期的记录,只需在获取雇员数据的操"
+"作之前先开启过滤器即可: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Even though a salary constraint was mentioned explicitly on the results in "
+"the above HQL, because of the enabled filter, the query will return only "
+"currently active employees who have a salary greater than one million "
+"dollars."
+msgstr ""
+"在上面的 HQL 中,虽然我们仅仅显式的使用了一个薪水条件,但因为启用了过滤器,查"
+"询将仅返回那些目前雇用关系处于生效期的,并且薪水高于一百万美元的雇员的数据。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to use filters with outer joining, either through HQL or load "
+"fetching, be careful of the direction of the condition expression. It is "
+"safest to set this up for left outer joining. Place the parameter first "
+"followed by the column name(s) after the operator."
+msgstr ""
+"注意:如果你打算在使用外连接(或者通过 HQL 或 load fetching)的同时使用过滤"
+"器,要注意条件表达式的方向(左还是右)。最安全的方式是使用左外连接(left "
+"outer joining)。并且通常来说,先写参数,然后是操作符,最后写数据库字段名。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After being defined, a filter might be attached to multiple entities and/or "
+"collections each with its own condition. This can be problematic when the "
+"conditions are the same each time. Using <literal>&lt;filter-def/&gt;</"
+"literal> allows you to definine a default condition, either as an attribute "
+"or CDATA:"
+msgstr ""
+"在 Filter 定义之后,它可能被附加到多个实体和/或集合类,每个都有自己的条件。假若"
+"这些条件都是一样的,每次都要定义就显得很繁琐。因此,<literal>&lt;filter-def/"
+"&gt;</literal> 被用来定义一个默认条件,它可能作为属性或者 CDATA 出现: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This default condition will be used whenever the filter is attached to "
+"something without specifying a condition. This means you can give a specific "
+"condition as part of the attachment of the filter that overrides the default "
+"condition in that particular case."
+msgstr ""
+"当这个 filter 被附加到任何目的地,而又没有指明条件时,这个缺省条件就会被使"
+"用。注意,换句话说,你可以通过给 filter 附加特别的条件来重载默认条件。"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\">\n"
+#~ "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+#~ "</filter-def>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"myClass\" ...>\n"
+#~ "    ...\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set ...>\n"
+#~ "    <filter name=\"myFilter\" condition=\":myFilterParam = "
+#~ "MY_FILTERED_COLUMN\"/>\n"
+#~ "</set>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+#~ msgstr ""
+#~ "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam"
+#~ "\", \"some-value\");]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"effectiveDate\">\n"
+#~ "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+#~ "</filter-def>\n"
+#~ "\n"
+#~ "<class name=\"Employee\" ...>\n"
+#~ "...\n"
+#~ "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department"
+#~ "\"/>\n"
+#~ "    <property name=\"effectiveStartDate\" type=\"date\" column="
+#~ "\"eff_start_dt\"/>\n"
+#~ "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt"
+#~ "\"/>\n"
+#~ "...\n"
+#~ "    <!--\n"
+#~ "        Note that this assumes non-terminal records have an eff_end_dt "
+#~ "set to\n"
+#~ "        a max db date for simplicity-sake\n"
+#~ "    -->\n"
+#~ "    <filter name=\"effectiveDate\"\n"
+#~ "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+#~ ">\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"Department\" ...>\n"
+#~ "...\n"
+#~ "    <set name=\"employees\" lazy=\"true\">\n"
+#~ "        <key column=\"dept_id\"/>\n"
+#~ "        <one-to-many class=\"Employee\"/>\n"
+#~ "        <filter name=\"effectiveDate\"\n"
+#~ "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt"
+#~ "\"/>\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = ...;\n"
+#~ "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new "
+#~ "Date());\n"
+#~ "List results = session.createQuery(\"from Employee as e where e.salary > :"
+#~ "targetSalary\")\n"
+#~ "         .setLong(\"targetSalary\", new Long(1000000))\n"
+#~ "         .list();\n"
+#~ "]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</"
+#~ "filter-def>\n"
+#~ "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/inheritance_mapping.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/inheritance_mapping.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/inheritance_mapping.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,777 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 09:06+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Inheritance mapping"
+msgstr "继承映射(Inheritance Mapping) "
+
+#. Tag: title
+#, no-c-format
+msgid "The three strategies"
+msgstr "三种策略 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports the three basic inheritance mapping strategies:"
+msgstr "Hibernate 支持三种基本的继承映射策略:"
+
+#. Tag: para
+#, no-c-format
+msgid "table per class hierarchy"
+msgstr "每个类分层结构一张表(table per class hierarchy)"
+
+#. Tag: para
+#, no-c-format
+msgid "table per subclass"
+msgstr "每个子类一张表(Table per subclass) "
+
+#. Tag: para
+#, no-c-format
+msgid "table per concrete class"
+msgstr "每个具体类一张表(table per concrete class)"
+
+#. Tag: para
+#, no-c-format
+msgid "In addition, Hibernate supports a fourth, slightly different kind of polymorphism:"
+msgstr "此外,Hibernate 还支持第四种稍有不同的多态映射策略:"
+
+#. Tag: para
+#, no-c-format
+msgid "implicit polymorphism"
+msgstr "隐式多态(implicit polymorphism)"
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to use different mapping strategies for different branches of the same inheritance hierarchy. You can then make use of implicit polymorphism to achieve polymorphism across the whole hierarchy. However, Hibernate does not support mixing <literal>&lt;subclass&gt;</literal>, <literal>&lt;joined-subclass&gt;</literal> and <literal>&lt;union-subclass&gt;</literal> mappings under the same root <literal>&lt;class&gt;</literal> element. It is possible to mix together the table per hierarchy and table per subclass strategies under the the same <literal>&lt;class&gt;</literal> element, by combining the <literal>&lt;subclass&gt;</literal> and <literal>&lt;join&gt;</literal> elements (see below for an example)."
+msgstr "对于同一个继承层次内的不同分支,可以采用不同的映射策略,然后用隐式多 态来完成跨越整个层次的多态。但是在同一个 <literal>&lt;class&gt;</literal> 根元素下,Hibernate 不支持混合了元素 <literal>&lt;subclass&gt;</literal>、<literal>&lt;joined-subclass&gt;</literal> 和 <literal>&lt;union-subclass&gt;</literal> 的映射。在同一个 <literal>&lt;class&gt;</literal> 元素下,可以混合使用“每个类分层结构一张表”(table per hierarchy)和“每个子类一张表”(table per subclass) 这两种映射策略,这是通过结合元素 <literal>&lt;subclass&gt;</literal> 和 <literal>&lt;join&gt;</literal> 来实现的(见后)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>, and <literal>joined-subclass</literal> mappings in separate mapping documents directly beneath <literal>hibernate-mapping</literal>. This allows you to extend a class hierarchy by adding a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping, naming a previously mapped superclass. Previously this feature made the ordering of the mapping documents important. Since Hibernate3, the ordering of mapping files is irrelevant when using the extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses before subclasses."
+msgstr "在多个映射文件中,可以直接在 <literal>hibernate-mapping</literal> 根下定义 <literal>subclass</literal>,<literal>union-subclass</literal> 和  <literal>joined-subclass</literal>。也就是说,你可以仅加入一个新的映射文件来扩展类层次。你必须在 subclass 的映射中指明 <literal>extends</literal> 属性,给出一个之前定义的超类的名字。注意,在以前,这一功能对映射文件的顺序有严格的要求,从 Hibernate 3 开始,使用 extends 关键字的时侯,对映射文件的顺序不再有要求;但在每个映射文件里,超类必须在子类之前定义。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Table per class hierarchy"
+msgstr "每个类分层结构一张表(Table per class hierarchy)"
+
+#. Tag: para
+#, no-c-format
+msgid "Suppose we have an interface <literal>Payment</literal> with the implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, and <literal>ChequePayment</literal>. The table per hierarchy mapping would display in the following way:"
+msgstr "假设我们有接口<literal>Payment</literal>和它的几个实现类: <literal>CreditCardPayment</literal>, <literal>CashPayment</literal> 和<literal>ChequePayment</literal>。则“每个类分层结构一张表”(Table per class hierarchy)的映射代码如下所示: "
+
+#. Tag: para
+#, no-c-format
+msgid "Exactly one table is required. There is a limitation of this mapping strategy: columns declared by the subclasses, such as <literal>CCTYPE</literal>, cannot have <literal>NOT NULL</literal> constraints."
+msgstr "采用这种策略只需要一张表即可。它有一个很大的限制:要求那些由子类定义的字段, 如 <literal>CCTYPE</literal>,不能有<literal>非空(NOT NULL)</literal>约束。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass"
+msgstr "每个子类一张表(Table per subclass)"
+
+#. Tag: para
+#, no-c-format
+msgid "A table per subclass mapping looks like this:"
+msgstr " 对于上例中的几个类而言,采用“每个子类一张表”的映射策略,代码如下所示:"
+
+#. Tag: para
+#, no-c-format
+msgid "Four tables are required. The three subclass tables have primary key associations to the superclass table so the relational model is actually a one-to-one association."
+msgstr "需要四张表。三个子类表通过主键关联到超类表(因而关系模型实际上是一对一关联)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Table per subclass: using a discriminator"
+msgstr "每个子类一张表(Table per subclass),使用辨别标志(Discriminator)  "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's implementation of table per subclass does not require a discriminator column. Other object/relational mappers use a different implementation of table per subclass that requires a type discriminator column in the superclass table. The approach taken by Hibernate is much more difficult to implement, but arguably more correct from a relational point of view. If you want to use a discriminator column with the table per subclass strategy, you can combine the use of <literal>&lt;subclass&gt;</literal> and <literal>&lt;join&gt;</literal>, as follows:"
+msgstr "注意,对“每个子类一张表”的映射策略,Hibernate 的实现不需要辨别字段,而其他的对象/关系映射工具使用了一种不同于Hibernate的实现方法,该方法要求在超类表中有一个类型辨别字段(type discriminator column)。Hibernate 采用的方法更难实现,但从关系(数据库)的角度来看,按理说它更正确。若你愿意使用带有辨别字段的“每个子类一张表”的策略,你可以结合使用 <literal>&lt;subclass&gt;</literal> 与<literal>&lt;join&gt;</literal>,如下所示: "
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate not to fetch the <literal>ChequePayment</literal> subclass data using an outer join when querying the superclass."
+msgstr "可选的声明 <literal>fetch=\"select\"</literal>,是用来告诉 Hibernate,在查询超类时,不要使用外部连接(outer join)来抓取子类 <literal>ChequePayment</literal> 的数据。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "混合使用“每个类分层结构一张表”和“每个子类一张表”"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even mix the table per hierarchy and table per subclass strategies using the following approach:"
+msgstr "你甚至可以采取如下方法混和使用“每个类分层结构一张表”和“每个子类一张表”这两种策略: "
+
+#. Tag: para
+#, no-c-format
+msgid "For any of these mapping strategies, a polymorphic association to the root <literal>Payment</literal> class is mapped using <literal>&lt;many-to-one&gt;</literal>."
+msgstr "对上述任何一种映射策略而言,指向根类 <literal>Payment</literal> 的关联是使用 <literal>&lt;many-to-one&gt;</literal> 进行映射的。"
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class"
+msgstr "每个具体类一张表(Table per concrete class)"
+
+#. Tag: para
+#, no-c-format
+msgid "There are two ways we can map the table per concrete class strategy. First, you can use <literal>&lt;union-subclass&gt;</literal>."
+msgstr "对于“每个具体类一张表”的映射策略,可以采用两种方法。第一种方法是使用  <literal>&lt;union-subclass&gt;</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Three tables are involved for the subclasses. Each table defines columns for all properties of the class, including inherited properties."
+msgstr "这里涉及三张与子类相关的表。每张表为对应类的所有属性(包括从超类继承的属性)定义相应字段。"
+
+#. Tag: para
+#, no-c-format
+msgid "The limitation of this approach is that if a property is mapped on the superclass, the column name must be the same on all subclass tables. The identity generator strategy is not allowed in union subclass inheritance. The primary key seed has to be shared across all unioned subclasses of a hierarchy."
+msgstr "这种方式的局限在于,如果一个属性在超类中做了映射,其字段名必须与所有子类表中定义的相同。(我们可能会在 Hibernate 的后续发布版本中放宽此限制。)不允许在联合子类(union subclass)的继承层次中使用标识生成器策略(identity generator strategy),实际上,主键的种子(primary key seed)不得不为同一继承层次中的全部被联合子类所共用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If your superclass is abstract, map it with <literal>abstract=\"true\"</literal>. If it is not abstract, an additional table (it defaults to <literal>PAYMENT</literal> in the example above), is needed to hold instances of the superclass."
+msgstr "假若超类是抽象类,请使用 <literal>abstract=\"true\"</literal>。当然,假若它不是抽象的,需要一个额外的表(上面的例子中,默认是 <literal>PAYMENT</literal>),来保存超类的实例。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Table per concrete class using implicit polymorphism"
+msgstr "每个具体类一张表,使用隐式多态 "
+
+#. Tag: para
+#, no-c-format
+msgid "An alternative approach is to make use of implicit polymorphism:"
+msgstr "另一种可供选择的方法是采用隐式多态:"
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that the <literal>Payment</literal> interface is not mentioned explicitly. Also notice that properties of <literal>Payment</literal> are mapped in each of the subclasses. If you want to avoid duplication, consider using XML entities (for example, <literal>[ &lt;!ENTITY allproperties SYSTEM \"allproperties.xml\"&gt; ]</literal> in the <literal>DOCTYPE</literal> declaration and <literal>&amp;allproperties&semi;</literal> in the mapping)."
+msgstr "请注意,这里没有显性地提及 <literal>Payment</literal> 接口。<literal>Payment</literal> 的属性映射到每个子类。如果你想避免重复,请考虑使用 XML 实体(如:<literal>DOCTYPE</literal> 声明里的  <literal>[ &lt;!ENTITY allproperties SYSTEM \"allproperties.xml\"&gt; ]</literal> 和映射里的 <literal>&amp;allproperties&semi;</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The disadvantage of this approach is that Hibernate does not generate SQL <literal>UNION</literal>s when performing polymorphic queries."
+msgstr "这种方法的缺陷在于,在 Hibernate 执行多态查询时(polymorphic queries)无法生成带 <literal>UNION</literal> 的 SQL 语句。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For this mapping strategy, a polymorphic association to <literal>Payment</literal> is usually mapped using <literal>&lt;any&gt;</literal>."
+msgstr "对于这种映射策略而言,通常用 <literal>&lt;any&gt;</literal> 来实现到  <literal>Payment</literal> 的多态关联映射。"
+
+#. Tag: title
+#, no-c-format
+msgid "Mixing implicit polymorphism with other inheritance mappings"
+msgstr "隐式多态和其他继承映射混合使用"
+
+#. Tag: para
+#, no-c-format
+msgid "Since the subclasses are each mapped in their own <literal>&lt;class&gt;</literal> element, and since <literal>Payment</literal> is just an interface), each of the subclasses could easily be part of another inheritance hierarchy. You can still use polymorphic queries against the <literal>Payment</literal> interface."
+msgstr "对这一映射还有一点需要注意。因为每个子类都在各自独立的元素 <literal>&lt;class&gt;</literal> 中映射(并且 <literal>Payment</literal> 只是一个接口),每个子类可以很容易的成为另一个继承体系中的一部分!(你仍然可以对接口 <literal>Payment</literal> 使用多态查询。) "
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, <literal>Payment</literal> is not mentioned explicitly. If we execute a query against the <literal>Payment</literal> interface, for example <literal>from Payment</literal>, Hibernate automatically returns instances of <literal>CreditCardPayment</literal> (and its subclasses, since they also implement <literal>Payment</literal>), <literal>CashPayment</literal> and <literal>ChequePayment</literal>, but not instances of <literal>NonelectronicTransaction</literal>."
+msgstr "我们还是没有明确的提到 <literal>Payment</literal>。如果我们针对接口 <literal>Payment</literal> 执行查询 — 如 <literal>from Payment</literal> — Hibernate 自动返回 <literal>CreditCardPayment</literal>(和它的子类,因为 它们也实现了接口 <literal>Payment</literal>)、<literal>CashPayment</literal> 和 <literal>Chequepayment</literal> 的实例,但不返回 <literal>NonelectronicTransaction</literal> 的实例。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Limitations"
+msgstr "限制"
+
+#. Tag: para
+#, no-c-format
+msgid "There are limitations to the \"implicit polymorphism\" approach to the table per concrete-class mapping strategy. There are somewhat less restrictive limitations to <literal>&lt;union-subclass&gt;</literal> mappings."
+msgstr "对“每个具体类映射一张表”(table per concrete-class)的映射策略而言,隐式多态的方式有一定的限制。而 <literal>&lt;union-subclass&gt;</literal> 映射的限制则没有那么严格。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following table shows the limitations of table per concrete-class mappings, and of implicit polymorphism, in Hibernate."
+msgstr "下面表格中列出了在 Hibernte 中“每个具体类一张表”的策略和隐式多态的限制。"
+
+#. Tag: title
+#, no-c-format
+msgid "Features of inheritance mappings"
+msgstr "继承映射特性(Features of inheritance mappings)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Inheritance strategy"
+msgstr "继承策略(Inheritance strategy)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-one"
+msgstr "多态多对多 "
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-one"
+msgstr "多态一对一"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic one-to-many"
+msgstr "多态一对多"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic many-to-many"
+msgstr "多态多对多"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic <literal>load()/get()</literal>"
+msgstr "Polymorphic <literal>load()/get()</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "多态查询"
+
+#. Tag: entry
+#, no-c-format
+msgid "Polymorphic joins"
+msgstr "多态连接(join)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Outer join fetching"
+msgstr "支持外连接(Outer join)读取。 "
+
+#. Tag: entry
+#, no-c-format
+msgid "table per class-hierarchy"
+msgstr "每个类分层结构一张表(table per class hierarchy) "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-one&gt;</literal>"
+msgstr "<literal>&lt;many-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-one&gt;</literal>"
+msgstr "<literal>&lt;one-to-one&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal>"
+msgstr "<literal>&lt;one-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-many&gt;</literal>"
+msgstr "<literal>&lt;many-to-many&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.get(Payment.class, id)</literal>"
+msgstr "<literal>s.get(Payment.class, id)</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Payment p</literal>"
+msgstr "<literal>from Payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>from Order o join o.payment p</literal>"
+msgstr "<literal>from Order o join o.payment p</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>supported</emphasis>"
+msgstr "<emphasis>所支持的</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete-class (union-subclass)"
+msgstr "每个具体类一张表(union-subclass)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;one-to-many&gt;</literal> (for <literal>inverse=\"true\"</literal> only)"
+msgstr "<literal>&lt;one-to-many&gt;</literal> (仅适用于 <literal>inverse=\"true\"</literal>)"
+
+#. Tag: entry
+#, no-c-format
+msgid "table per concrete class (implicit polymorphism)"
+msgstr "每个具体类一张表(隐式多态)  "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;any&gt;</literal>"
+msgstr "<literal>&lt;any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<emphasis>not supported</emphasis>"
+msgstr "<emphasis>不支持的</emphasis>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>&lt;many-to-any&gt;</literal>"
+msgstr "<literal>&lt;many-to-any&gt;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()</literal>"
+msgstr "<literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()</literal>"
+
+#~ msgid "table per class-heirarchy"
+#~ msgstr "每个类分层结构一张表 "
+
+#~ msgid "Polymorphic many-to-one: <code>&lt;many-to-one&gt;</code>"
+#~ msgstr "多态性多对一:<code>&lt;many-to-one&gt;</code>"
+
+#~ msgid "Polymorphic one-to-one: <code>&lt;one-to-one&gt;</code>"
+#~ msgstr "多态性一对一:<code>&lt;one-to-one&gt;</code>"
+
+#~ msgid "Polymorphic one-to-many: <code>&lt;one-to-many&gt;</code>"
+#~ msgstr "多态性一对多:<code>&lt;one-to-many&gt;</code>"
+
+#~ msgid "Polymorphic many-to-many: <code>&lt;many-to-many&gt;</code>"
+#~ msgstr "多态性多对多:<code>&lt;many-to-many&gt;</code>"
+
+#~ msgid ""
+#~ "Polymorphic <literal>load()</literal> or <literal>get()</literal>: "
+#~ "<code>s.get(Payment.class, id)</code>"
+#~ msgstr ""
+#~ "多态性 <literal>load()</literal> 或 <literal>get()</literal>:<code>s.get"
+#~ "(Payment.class, id)</code>"
+
+#~ msgid "Polymorphic queries: <code>from Payment p</code>"
+#~ msgstr "多态性查询:<code>from Payment p</code>"
+
+#~ msgid "Polymorphic many-to-one: <code>&lt;any&gt;</code>"
+#~ msgstr "多态多对一:<code>&lt;any&gt;</code>"
+
+#~ msgid ""
+#~ "Polymorphic one-to-one, polymorphic one-to-many, polymorphic joins, and "
+#~ "outer join fetching are not supported."
+#~ msgstr ""
+#~ "多态性一对一、多态性一对多,不支持多态性 join 和 outer join fetching。"
+
+#~ msgid "<para>table per subclass</para>"
+#~ msgstr "<para>每个子类一张表</para>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ " <hibernate-mapping>\n"
+#~ "     <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value="
+#~ "\"D\">\n"
+#~ "          <property name=\"name\" type=\"string\"/>\n"
+#~ "     </subclass>\n"
+#~ " </hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "     &lt;subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-"
+#~ "value=\"D\"&gt;\n"
+#~ "          &lt;property name=\"name\" type=\"string\"/&gt;\n"
+#~ "     &lt;/subclass&gt;\n"
+#~ " &lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        <join table=\"CASH_PAYMENT\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
+#~ "            <key column=\"PAYMENT_ID\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        &lt;join table=\"CASH_PAYMENT\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CHEQUE_PAYMENT\" fetch=\"select\"&gt;\n"
+#~ "            &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+#~ "        <join table=\"CREDIT_PAYMENT\">\n"
+#~ "            <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "            ...\n"
+#~ "        </join>\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "    <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+#~ "        ...\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\" table=\"PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"PAYMENT_TYPE\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT"
+#~ "\"&gt;\n"
+#~ "        &lt;join table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "            &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "            ...\n"
+#~ "        &lt;/join&gt;\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"CashPayment\" discriminator-value=\"CASH\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "    &lt;subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class="
+#~ "\"Payment\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Payment\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+#~ "        <generator class=\"sequence\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "        <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "    <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        ...\n"
+#~ "    </union-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Payment\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"sequence\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;property name=\"creditCardType\" column=\"CCTYPE\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "    &lt;union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/union-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
+#~ "    <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
+#~ "    <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
+#~ "    <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
+#~ "    <column name=\"PAYMENT_CLASS\"/>\n"
+#~ "    <column name=\"PAYMENT_ID\"/>\n"
+#~ "</any>]]>"
+#~ msgstr ""
+#~ "&lt;any name=\"payment\" meta-type=\"string\" id-type=\"long\"&gt;\n"
+#~ "    &lt;meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CASH\" class=\"CashPayment\"/&gt;\n"
+#~ "    &lt;meta-value value=\"CHEQUE\" class=\"ChequePayment\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_CLASS\"/&gt;\n"
+#~ "    &lt;column name=\"PAYMENT_ID\"/&gt;\n"
+#~ "&lt;/any&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
+#~ "    <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+#~ "    ...\n"
+#~ "    <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
+#~ "    <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
+#~ "</class>\n"
+#~ "\n"
+#~ "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
+#~ "    <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    ...\n"
+#~ "    <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "    <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+#~ "        <key column=\"PAYMENT_ID\"/>\n"
+#~ "        <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+#~ "        ...\n"
+#~ "    </joined-subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;discriminator column=\"CREDIT_CARD\" type=\"string\"/&gt;\n"
+#~ "    &lt;property name=\"amount\" column=\"CREDIT_AMOUNT\"/&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/"
+#~ "&gt;\n"
+#~ "    &lt;subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/&gt;\n"
+#~ "&lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN"
+#~ "\"&gt;\n"
+#~ "    &lt;id name=\"id\" type=\"long\" column=\"TXN_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CASH_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "    &lt;joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT"
+#~ "\"&gt;\n"
+#~ "        &lt;key column=\"PAYMENT_ID\"/&gt;\n"
+#~ "        &lt;property name=\"amount\" column=\"CHEQUE_AMOUNT\"/&gt;\n"
+#~ "        ...\n"
+#~ "    &lt;/joined-subclass&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid "<term>table per subclass</term>"
+#~ msgstr "<entry>每个子类一张表</entry>"
+
+#~ msgid "from Payment p"
+#~ msgstr "from Payment p"
+
+#~ msgid "supported"
+#~ msgstr "支持"
+
+#~ msgid "&lt;any&gt;"
+#~ msgstr "&lt;any&gt;"
+
+#~ msgid "not supported"
+#~ msgstr "不支持"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/performance.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/performance.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/performance.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,2507 @@
+# translation of performance.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: performance\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-15 15:27+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Improving performance"
+msgstr "提升性能"
+
+#. Tag: title
+#, no-c-format
+msgid "Fetching strategies"
+msgstr "抓取策略(Fetching strategies)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate uses a <emphasis>fetching strategy</emphasis> to retrieve "
+"associated objects if the application needs to navigate the association. "
+"Fetch strategies can be declared in the O/R mapping metadata, or over-ridden "
+"by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate "
+"使用 <emphasis>抓取策略(fetching strategy)</emphasis> 获取关联对象。抓取策"
+"略可以在 O/R 映射的元数据中声明,也可以在特定的 HQL 或<literal>条件查询"
+"(Criteria Query)</literal>中重载声明。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 defines the following fetching strategies:"
+msgstr "Hibernate3 定义了如下几种抓取策略:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis>: Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>连接抓取(Join fetching)</emphasis>:Hibernate 通过在 "
+"<literal>SELECT</literal>  语句使用 <literal>OUTER JOIN</literal>(外连接)来"
+"获得对象的关联实例或者关联集合。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis>: a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you access the association."
+msgstr ""
+"<emphasis>查询抓取(Select fetching)</emphasis>:另外发送一条 "
+"<literal>SELECT</literal> 语句抓取当前对象的关联实体或集合。除非你显式的指定 "
+"<literal>lazy=\"false\"</literal> 禁止 延迟抓取(lazy fetching),否则只有当"
+"你真正访问关联关系的时候,才会执行第二条 select 语句。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis>: a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you access the association."
+msgstr ""
+"<emphasis>子查询抓取(Subselect fetching)</emphasis>:另外发送一条  "
+"<literal>SELECT</literal> 语句抓取在前面查询到(或者抓取到)的所有实体对象的"
+"关联集合。除非你显式的指定 <literal>lazy=\"false\"</literal> 禁止延迟抓取"
+"(lazy fetching),否则只有当你真正访问关联关系的时候,才会执行第二条 select "
+"语句。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis>: an optimization strategy for select "
+"fetching. Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal> by specifying a list of primary or "
+"foreign keys."
+msgstr ""
+"<emphasis>批量抓取(Batch fetching)</emphasis>:对查询抓取的优化方案,通过指"
+"定一个主键或外键列表,Hibernate 使用单条 <literal>SELECT</literal> 语句获取一"
+"批对象实例或集合。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate also distinguishes between:"
+msgstr "Hibernate 会区分下列各种情况:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis>: an association, collection or "
+"attribute is fetched immediately when the owner is loaded."
+msgstr ""
+"<emphasis>Immediate fetching,立即抓取</emphasis>:当宿主被加载时,关联、集合"
+"或属性被立即抓取。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis>: a collection is fetched when "
+"the application invokes an operation upon that collection. This is the "
+"default for collections."
+msgstr ""
+"<emphasis>Lazy collection fetching,延迟集合抓取</emphasis>:直到应用程序对集"
+"合进行了一次操作时,集合才被抓取(对集合而言这是默认行为)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis>: individual elements "
+"of the collection are accessed from the database as needed. Hibernate tries "
+"not to fetch the whole collection into memory unless absolutely needed. It "
+"is suitable for large collections."
+msgstr ""
+"<emphasis>\"Extra-lazy\" collection fetching,\"Extra-lazy\" 集合抓取</"
+"emphasis>:对集合类中的每个元素而言,都是直到需要时才去访问数据库。除非绝对必"
+"要,Hibernate 不会试图去把整个集合都抓取到内存里来(适用于非常大的集合)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis>: a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>Proxy fetching,代理抓取</emphasis>:对返回单值的关联而言,当其某个"
+"方法被调用,而非对其关键字进行 get 操作时才抓取。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis>: a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy; the association is fetched even when only the "
+"identifier is accessed. It is also more transparent, since no proxy is "
+"visible to the application. This approach requires buildtime bytecode "
+"instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>\"No-proxy\" fetching,非代理抓取</emphasis>:对返回单值的关联而"
+"言,当实例变量被访问的时候进行抓取。与上面的代理抓取相比,这种方法没有那么“延"
+"迟”得厉害(就算只访问标识符,也会导致关联抓取)但是更加透明,因为对应用程序来"
+"说,不再看到 proxy。这种方法需要在编译期间进行字节码增强操作,因此很少需要用"
+"到。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis>: an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Lazy attribute fetching,属性延迟加载</emphasis>:对属性或返回单值"
+"的关联而言,当其实例变量被访问的时候进行抓取。需要编译期字节码强化,因此这一"
+"方法很少是必要的。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched and <emphasis>how</emphasis> is it fetched. It is "
+"important that you do not confuse them. We use <literal>fetch</literal> to "
+"tune performance. We can use <literal>lazy</literal> to define a contract "
+"for what data is always available in any detached instance of a particular "
+"class."
+msgstr ""
+"这里有两个正交的概念:关联<emphasis>何时</emphasis>被抓取,以及被<emphasis>如"
+"何</emphasis>抓取(会采用什么样的 SQL 语句)。注意不要混淆它们。我们使用"
+"<literal>抓取</literal>来改善性能。我们使用<literal>延迟</literal>来定义一些"
+"契约,对某特定类的某个脱管的实例,知道有哪些数据是可以使用的。"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with lazy associations"
+msgstr "操作延迟加载的关联"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"most associations in the majority of applications."
+msgstr ""
+"默认情况下,Hibernate 3 对集合使用延迟 select 抓取,对返回单值的关联使用延迟"
+"代理抓取。对几乎是所有的应用而言,其绝大多数的关联,这种策略都是有效的。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate "
+"will use the batch fetch optimization for lazy fetching. This optimization "
+"can also be enabled at a more granular level."
+msgstr ""
+"假若你设置了 <literal>hibernate.default_batch_fetch_size</literal>,"
+"Hibernate 会对延迟加载采取批量抓取优化措施(这种优化也可能会在更细化的级别打"
+"开)。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Please be aware that access to a lazy association outside of the context of "
+"an open Hibernate session will result in an exception. For example:"
+msgstr ""
+"然而,你必须了解延迟抓取带来的一个问题。在一个打开的 Hibernate session 上下文"
+"之外调用延迟集合会导致一次意外。比如: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. This can be fixed by moving the code that reads "
+"from the collection to just before the transaction is committed."
+msgstr ""
+"在 <literal>Session</literal> 关闭后,permessions 集合将是未实例化的、不再可"
+"用,因此无法正常载入其状态。 <emphasis>Hibernate 对脱管对象不支持延迟实例化</"
+"emphasis>。这里的修改方法是将 permissions 读取数据的代码移到事务提交之前。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will fetch the entire database into memory "
+"in every transaction."
+msgstr ""
+"除此之外,通过对关联映射指定 <literal>lazy=\"false\"</literal>,我们也可以使"
+"用非延迟的集合或关联。但是,对绝大部分集合来说,更推荐使用延迟方式抓取数据。"
+"如果在你的对象模型中定义了太多的非延迟关联,Hibernate 最终几乎需要在每个事务"
+"中载入整个数据库到内存中。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"On the other hand, you can use join fetching, which is non-lazy by nature, "
+"instead of select fetching in a particular transaction. We will now explain "
+"how to customize the fetching strategy. In Hibernate3, the mechanisms for "
+"choosing a fetch strategy are identical for single-valued associations and "
+"collections."
+msgstr ""
+"但是,另一方面,在一些特殊的事务中,我们也经常需要使用到连接抓取(它本身上就"
+"是非延迟的),以代替查询抓取。 下面我们将会很快明白如何具体的定制 Hibernate "
+"中的抓取策略。在 Hibernate3 中,具体选择哪种抓取策略的机制是和选择 单值关联或"
+"集合关联相一致的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Tuning fetch strategies"
+msgstr "调整抓取策略(Tuning fetch strategies)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"查询抓取(默认的)在 N+1 查询的情况下是极其脆弱的,因此我们可能会要求在映射文"
+"档中定义使用连接抓取:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"在映射文档中定义的<literal>抓取</literal>策略将会对以下列表条目产生影响:"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
+msgstr ""
+"通过 <literal>get()</literal> 或 <literal>load()</literal> 方法取得数据。"
+
+#. Tag: para
+#, no-c-format
+msgid "retrieval that happens implicitly when an association is navigated"
+msgstr "只有在关联之间进行导航时,才会隐式的取得数据。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Criteria</literal> queries"
+msgstr "条件查询"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "使用了 <literal>subselect</literal> 抓取的 HQL 查询"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Irrespective of the fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. This might, however, result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"不管你使用哪种抓取策略,定义为非延迟的类图会被保证一定装载入内存。注意这可能"
+"意味着在一条 HQL 查询后紧跟着一系列的查询。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Usually, the mapping document is not used to customize fetching. Instead, we "
+"keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"通常情况下,我们并不使用映射文档进行抓取策略的定制。更多的是,保持其默认值,"
+"然后在特定的事务中, 使用 HQL 的<literal>左连接抓取(left join fetch)</"
+"literal> 对其进行重载。这将通知 Hibernate在第一次查询中使用外部关联(outer "
+"join),直接得到其关联数据。在<literal>条件查询</literal> API 中,应该调用 "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>语句。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to change the fetching strategy used by <literal>get()</literal> "
+"or <literal>load()</literal>, you can use a <literal>Criteria</literal> "
+"query. For example:"
+msgstr ""
+"也许你喜欢仅仅通过条件查询,就可以改变 <literal>get()</literal> 或 "
+"<literal>load()</literal> 语句中的数据抓取策略。例如: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan"
+"\"."
+msgstr ""
+"这就是其他 ORM 解决方案的“抓取计划(fetch plan)”在 Hibernate 中的等价物。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A completely different approach to problems with N+1 selects is to use the "
+"second-level cache."
+msgstr "截然不同的一种避免 N+1 次查询的方法是,使用二级缓存。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Single-ended association proxies"
+msgstr "单端关联代理(Single-ended association proxies)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement which is "
+"accessed via the CGLIB library."
+msgstr ""
+"在 Hinerbate 中,对集合的延迟抓取的采用了自己的实现方法。但是,对于单端关联的"
+"延迟抓取,则需要采用 其他不同的机制。单端关联的目标实体必须使用代理,"
+"Hihernate 在运行期二进制级(通过优异的 CGLIB 库), 为持久对象实现了延迟载入"
+"代理。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"At startup, Hibernate3 generates proxies by default for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"默认的,Hibernate3 将会为所有的持久对象产生代理(在启动阶段),然后使用他们实"
+"现 <literal>多对一(many-to-one)</literal>关联和<literal>一对一(one-to-"
+"one)</literal> 关联的延迟抓取。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>The proxied class must "
+"implement a default constructor with at least package visibility. This "
+"constructor is recommended for all persistent classes</emphasis>."
+msgstr ""
+"在映射文件中,可以通过设置 <literal>proxy</literal> 属性为目标 class 声明一个"
+"接口供代理接口使用。 默认的,Hibernate 将会使用该类的一个子类。<emphasis>注"
+"意:被代理的类必须实现一个至少包可见的默认构造函数,我们建议所有的持久类都应"
+"拥有这样的构造函数。</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There are potential problems to note when extending this approach to "
+"polymorphic classes.For example:"
+msgstr "在如此方式定义一个多态类的时候,有许多值得注意的常见性的问题,例如: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"首先,<literal>Cat</literal> 实例永远不可以被强制转换为 "
+"<literal>DomesticCat</literal>,即使它本身就是 <literal>DomesticCat</"
+"literal> 实例。"
+
+#. Tag: para
+#, no-c-format
+msgid "Secondly, it is possible to break proxy <literal>==</literal>:"
+msgstr "其次,代理的“<literal>==</literal>”可能不再成立。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"虽然如此,但实际情况并没有看上去那么糟糕。虽然我们现在有两个不同的引用,分别"
+"指向这两个不同的代理对象,但实际上,其底层应该是同一个实例对象:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Third, you cannot use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"第三,你不能对 <literal>final</literal> 类或具有 <literal>final</literal> 方"
+"法的类使用 CGLIB 代理。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(e.g. in initializers or default constructor), then those resources will "
+"also be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"最后,如果你的持久化对象在实例化时需要某些资源(例如,在实例化方法、默认构造"
+"方法中),那么代理对象也同样需要使用这些资源。实际上,代理类是持久化类的子"
+"类。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. To avoid these problems your persistent classes must each "
+"implement an interface that declares its business methods. You should "
+"specify these interfaces in the mapping file where <literal>CatImpl</"
+"literal> implements the interface <literal>Cat</literal> and "
+"<literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. For example:"
+msgstr ""
+"这些问题都源于 Java 的单根继承模型的天生限制。如果你希望避免这些问题,那么你"
+"的每个持久化类必须实现一个接口, 在此接口中已经声明了其业务方法。然后,你需要"
+"在映射文档中再指定这些接口,如 <literal>CatImpl</literal> 实现 <literal>Cat</"
+"literal> 而 <literal>DomesticCatImpl</literal> 实现 <literal>DomesticCat</"
+"literal> 接口。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Then proxies for instances of <literal>Cat</literal> and "
+"<literal>DomesticCat</literal> can be returned by <literal>load()</literal> "
+"or <literal>iterate()</literal>."
+msgstr ""
+"然后,<literal>load()</literal> 和 <literal>iterate()</literal> 永远也不会返"
+"回 <literal>Cat</literal> 和 <literal>DomesticCat</literal> 实例的代理。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>list()</literal> does not usually return proxies."
+msgstr "<literal>list()</literal> 通常不返回代理。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"这里,对象之间的关系也将被延迟载入。这就意味着,你应该将属性声明为 "
+"<literal>Cat</literal>,而不是 <literal>CatImpl</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization:"
+msgstr "有些方法中是<emphasis>不</emphasis>需要代理初始化的:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>: if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal> 方法,如果持久类没有重载 <literal>equals()</"
+"literal> 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>: if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>:如果持久类没有重载 <literal>hashCode()</"
+"literal> 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier getter method"
+msgstr "标志符的 getter 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate 将会识别出那些重载了 <literal>equals()</literal>、或 "
+"<literal>hashCode()</literal> 方法的持久化类。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, you can avoid problems associated with "
+"typecasting. However, buildtime bytecode instrumentation is required, and "
+"all operations will result in immediate proxy initialization."
+msgstr ""
+"若选择 <literal>lazy=\"no-proxy\"</literal> 而非默认的 <literal>lazy=\"proxy"
+"\"</literal>,我们可以避免类型转换带来的问题。然而,这样我们就需要编译期字节"
+"码增强,并且所有的操作都会导致立刻进行代理初始化。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Initializing collections and proxies"
+msgstr "实例化集合和代理(Initializing collections and proxies)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, i.e., when the entity owning the collection "
+"or having the reference to the proxy is in the detached state."
+msgstr ""
+"在 <literal>Session</literal> 范围之外访问未初始化的集合或代理,Hibernate 将"
+"会抛出 <literal>LazyInitializationException</literal> 异常。也就是说,在分离"
+"状态下,访问一个实体所拥有的集合,或者访问其指向代理的属性时,会引发此异常。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes a proxy or collection needs to be initialized before closing the "
+"<literal>Session</literal>. You can force initialization by calling "
+"<literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</"
+"literal>, for example. However, this can be confusing to readers of the code "
+"and it is not convenient for generic code."
+msgstr ""
+"有时候我们需要保证某个代理或者集合在 Session 关闭前就已经被初始化了。当然,我"
+"们可以通过强行调用 <literal>cat.getSex()</literal> 或者 <literal>cat."
+"getKittens().size()</literal> 之类的方法来确保这一点。 但是这样的程序会造成读"
+"者的疑惑,也不符合通常的代码规范。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal>, provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"静态方法 <literal>Hibernate.initialized()</literal> 为你的应用程序提供了一个"
+"便捷的途径来延迟加载集合或代理。 只要它的 Session 处于 open 状态,"
+"<literal>Hibernate.initialize(cat)</literal> 将会为 cat 强制对代理实例化。同"
+"样,<literal>Hibernate.initialize(cat.getKittens())</literal> 对 kittens 的集"
+"合具有同样的功能。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"required collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"还有另外一种选择,就是保持 <literal>Session</literal> 一直处于 open 状态,直"
+"到所有需要的集合或代理都被载入。 在某些应用架构中,特别是对于那些使用 "
+"Hibernate 进行数据访问的代码,以及那些在不同应用层和不同物理进程中使用 "
+"Hibernate 的代码。 在集合实例化时,如何保证 <literal>Session</literal> 处于 "
+"open 状态经常会是一个问题。有两种方法可以解决此问题: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"在一个基于 Web 的应用中,可以利用 servlet 过滤器(filter),在用户请求"
+"(request)结束、页面生成 结束时关闭 <literal>Session</literal>(这里使用了"
+"<emphasis>在展示层保持打开 Session 模式(Open Session in View)</"
+"emphasis>),当然,这将依赖于应用框架中异常需要被正确的处理。在返回界面给用户"
+"之前,乃至在生成界面过程中发生异常的情况下,正确关闭 <literal>Session</"
+"literal> 和结束事务将是非常重要的, 请参见 Hibernate wiki 上的 \"Open "
+"Session in View\" 模式,你可以找到示例。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that the web tier needs before returning. This "
+"means that the business tier should load all the data and return all the "
+"data already initialized to the presentation/web tier that is required for a "
+"particular use case. Usually, the application calls <literal>Hibernate."
+"initialize()</literal> for each collection that will be needed in the web "
+"tier (this call must occur before the session is closed) or retrieves the "
+"collection eagerly using a Hibernate query with a <literal>FETCH</literal> "
+"clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</"
+"literal>. This is usually easier if you adopt the <emphasis>Command</"
+"emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
+msgstr ""
+"在一个拥有单独业务层的应用中,业务层必须在返回之前,为 web 层“准备”好其所需的"
+"数据集合。这就意味着 业务层应该载入所有表现层/web 层所需的数据,并将这些已实"
+"例化完毕的数据返回。通常,应用程序应该为 web 层所需的每个集合调用 "
+"<literal>Hibernate.initialize()</literal>(这个调用必须发生咱 session 关闭之"
+"前);或者使用带有 <literal>FETCH</literal> 从句,或 <literal>FetchMode."
+"JOIN</literal> 的 Hibernate 查询,事先取得所有的数据集合。如果你在应用中使用"
+"了 <emphasis>Command</emphasis> 模式,代替 <emphasis>Session Facade</"
+"emphasis>,那么这项任务将会变得简单的多。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections or other proxies. Hibernate does not, "
+"and certainly <emphasis>should</emphasis> not, do this automatically since "
+"it would introduce impromptu transaction semantics."
+msgstr ""
+"你也可以通过 <literal>merge()</literal> 或 <literal>lock()</literal> 方法,在"
+"访问未实例化的集合(或代理)之前,为先前载入的对象绑定一个新的 "
+"<literal>Session</literal>。显然,Hibernate 将不会,也不<emphasis>应该</"
+"emphasis>自动完成这些任务,因为这将引入一个特殊的事务语义。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sometimes you do not want to initialize a large collection, but still need "
+"some information about it, like its size, for example, or a subset of the "
+"data."
+msgstr ""
+"有时候,你并不需要完全实例化整个大的集合,仅需要了解它的部分信息(例如其大"
+"小)、或者集合的部分内容。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr "你可以使用集合过滤器得到其集合的大小,而不必实例化整个集合:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"这里的 <literal>createFilter()</literal> 方法也可以被用来有效的抓取集合的部分"
+"内容,而无需实例化整个集合:"
+
+#. Tag: title
+#, no-c-format
+msgid "Using batch fetching"
+msgstr "使用批量抓取(Using batch fetching)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Using batch fetching, Hibernate can load several uninitialized proxies if "
+"one proxy is accessed. Batch fetching is an optimization of the lazy select "
+"fetching strategy. There are two ways you can configure batch fetching: on "
+"the class level and the collection level."
+msgstr ""
+"Hibernate 可以充分有效的使用批量抓取,也就是说,如果仅一个访问代理(或集"
+"合),那么 Hibernate 将不载入其他未实例化的代理。批量抓取是延迟查询抓取的优化"
+"方案,你可以在两种批量抓取方案之间进行选择:在类级别和集合级别。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Consider the "
+"following example: at runtime you have 25 <literal>Cat</literal> instances "
+"loaded in a <literal>Session</literal>, and each <literal>Cat</literal> has "
+"a reference to its <literal>owner</literal>, a <literal>Person</literal>. "
+"The <literal>Person</literal> class is mapped with a proxy, <literal>lazy="
+"\"true\"</literal>. If you now iterate through all cats and call "
+"<literal>getOwner()</literal> on each, Hibernate will, by default, execute "
+"25 <literal>SELECT</literal> statements to retrieve the proxied owners. You "
+"can tune this behavior by specifying a <literal>batch-size</literal> in the "
+"mapping of <literal>Person</literal>:"
+msgstr ""
+"类/实体级别的批量抓取很容易理解。假设你在运行时将需要面对下面的问题:你在一"
+"个 <literal>Session</literal> 中载入了 25 个 <literal>Cat</literal> 实例,每"
+"个 <literal>Cat</literal> 实例都拥有一个引用成员 <literal>owner</literal>,其"
+"指向 <literal>Person</literal>,而 <literal>Person</literal> 类是代理,同时 "
+"<literal>lazy=\"true\"</literal>。如果你必须遍历整个 cats 集合,对每个元素调"
+"用 <literal>getOwner()</literal> 方法,Hibernate 将会默认的执行 25 次 "
+"<literal>SELECT</literal> 查询, 得到其 owner 的代理对象。这时,你可以通过在"
+"映射文件的 <literal>Person</literal> 属性,显式声明 <literal>batch-size</"
+"literal>,改变其行为: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries: the pattern is 10, 10, 5."
+msgstr "随之,Hibernate 将只需要执行三次查询,分别为 10、10、 5。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Session</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"你也可以在集合级别定义批量抓取。例如,如果每个 <literal>Person</literal> 都拥"
+"有一个延迟载入的 <literal>Cats</literal> 集合, 现在,<literal>Sesssion</"
+"literal> 中载入了 10 个 person 对象,遍历 person 集合将会引起 10 次 "
+"<literal>SELECT</literal> 查询,每次查询都会调用 <literal>getCats()</"
+"literal> 方法。如果你在 <literal>Person</literal> 的映射定义部分,允许对 "
+"<literal>cats</literal> 批量抓取,那么,Hibernate 将可以预先抓取整个集合。请"
+"看例子: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"如果整个的 <literal>batch-size</literal> 是 3,那么 Hibernate 将会分四次执行 "
+"<literal>SELECT</literal> 查询, 按照 3、3、3、1 的大小分别载入数据。这里的每"
+"次载入的数据量还具体依赖于当前 <literal>Session</literal> 中未实例化集合的个"
+"数。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, i.e. the typical bill-of-materials pattern. However, a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees."
+msgstr ""
+"如果你的模型中有嵌套的树状结构,例如典型的帐单-原料结构(bill-of-materials "
+"pattern),集合的批量抓取是非常有用的。(尽管在更多情况下对树进行读取时,"
+"<emphasis>嵌套集合(nested set)</emphasis>或<emphasis>原料路径"
+"(materialized path)</emphasis>可能是更好的解决方法。)"
+
+#. Tag: title
+#, no-c-format
+msgid "Using subselect fetching"
+msgstr "使用子查询抓取(Using subselect fetching)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"will load all of them, re-running the original query in a subselect. This "
+"works in the same way as batch-fetching but without the piecemeal loading."
+msgstr ""
+"假若一个延迟集合或单值代理需要抓取,Hibernate 会使用一个 subselect 重新运行原"
+"来的查询,一次性读入所有的实例。这和批量抓取的实现方法是一样的,不会有破碎的"
+"加载。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Fetch profiles"
+msgstr "Fetch profile(抓取策略)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Another way to affect the fetching strategy for loading associated objects "
+"is through something called a fetch profile, which is a named configuration "
+"associated with the <interfacename>org.hibernate.SessionFactory</"
+"interfacename> but enabled, by name, on the <interfacename>org.hibernate."
+"Session</interfacename>. Once enabled on a <interfacename>org.hibernate."
+"Session</interfacename>, the fetch profile wull be in affect for that "
+"<interfacename>org.hibernate.Session</interfacename> until it is explicitly "
+"disabled."
+msgstr ""
+"影响抓取加载相关对象的策略的另外一个方法是通过抓取配置(fetch profile),它是"
+"和 <interfacename>org.hibernate.SessionFactory</interfacename> 相关的配置但"
+"对 <interfacename>org.hibernate.Session</interfacename> 启用。一旦在 "
+"<interfacename>org.hibernate.Session</interfacename> 上启用,抓取配置将对这"
+"个 <interfacename>org.hibernate.Session</interfacename> 生效直至它被显性地禁"
+"用。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"So what does that mean? Well lets explain that by way of an example. Say we "
+"have the following mappings:"
+msgstr "这是什么意思呢?让我们通过一个例子进行解释。假设我们有下列映射:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now normally when you get a reference to a particular customer, that "
+"customer's set of orders will be lazy meaning we will not yet have loaded "
+"those orders from the database. Normally this is a good thing. Now lets say "
+"that you have a certain use case where it is more efficient to load the "
+"customer and their orders together. One way certainly is to use \"dynamic "
+"fetching\" strategies via an HQL or criteria queries. But another option is "
+"to use a fetch profile to achieve that. Just add the following to your "
+"mapping:"
+msgstr ""
+"现在,当你获得某个特定客户的引用时,这个客户的订单将处于 lazy 状态,表示我们"
+"暂不会从数据库里加载这些订单。这样通常没有问题。假设在某种情况下,加载客户及"
+"其订单会更高效。其中一个办法当然是使用通过 HQL 或 Criteria 查询“动态抓取”的策"
+"略。另外一个方法就是使用抓取配置(Fetch Profile)。你可以在映射里加入下面的内"
+"容:"
+
+#. Tag: para
+#, no-c-format
+msgid "or even:"
+msgstr "甚至:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Now the following code will actually load both the customer <emphasis>and "
+"their orders</emphasis>:"
+msgstr "下面的代码将实际上加载客户<emphasis>以及</emphasis>订单:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Currently only join style fetch profiles are supported, but they plan is to "
+"support additional styles. See <ulink url=\"http://opensource.atlassian.com/"
+"projects/hibernate/browse/HHH-3414\">HHH-3414</ulink> for details."
+msgstr ""
+"目前只有 join 风格的抓取策略被支持,但其他风格也将被支持。更多细节请参考 "
+"<ulink url=\"http://opensource.atlassian.com/projects/hibernate/browse/HHH-"
+"3414\">HHH-3414</ulink>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using lazy property fetching"
+msgstr "使用延迟属性抓取(Using lazy property fetching)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature; optimizing row reads is "
+"much more important than optimization of column reads. However, only loading "
+"some properties of a class could be useful in extreme cases. For example, "
+"when legacy tables have hundreds of columns and the data model cannot be "
+"improved."
+msgstr ""
+"Hibernate3 对单独的属性支持延迟抓取,这项优化技术也被称为<emphasis>组抓取"
+"(fetch groups)</emphasis>。 请注意,该技术更多的属于市场特性。在实际应用"
+"中,优化行读取比优化列读取更重要。但是,仅载入类的部分属性在某些特定情况下会"
+"有用,例如在原有表中拥有几百列数据、数据模型无法改动的情况下。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"可以在映射文件中对特定的属性设置 <literal>lazy</literal>,定义该属性为延迟载"
+"入。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation. If your "
+"persistent classes are not enhanced, Hibernate will ignore lazy property "
+"settings and return to immediate fetching."
+msgstr ""
+"属性的延迟载入要求在其代码构建时加入二进制指示指令(bytecode "
+"instrumentation),如果你的持久类代码中未含有这些指令, Hibernate 将会忽略这"
+"些属性的延迟设置,仍然将其直接载入。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For bytecode instrumentation, use the following Ant task:"
+msgstr "你可以在 Ant 的 Task 中,进行如下定义,对持久类代码加入“二进制指令。”"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A different way of avoiding unnecessary column reads, at least for read-only "
+"transactions, is to use the projection features of HQL or Criteria queries. "
+"This avoids the need for buildtime bytecode processing and is certainly a "
+"preferred solution."
+msgstr ""
+"还有一种可以优化的方法,它使用 HQL 或条件查询的投影(projection)特性,可以避"
+"免读取非必要的列, 这一点至少对只读事务是非常有用的。它无需在代码构建时“二进"
+"制指令”处理,因此是一个更加值得选择的解决方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"有时你需要在 HQL 中通过<literal>抓取所有属性</literal>,强行抓取所有内容。 "
+
+#. Tag: title
+#, no-c-format
+msgid "The Second Level Cache"
+msgstr "二级缓存(The Second Level Cache)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You can even plug in a clustered cache. Be "
+"aware that caches are not aware of changes made to the persistent store by "
+"another application. They can, however, be configured to regularly expire "
+"cached data."
+msgstr ""
+"Hibernate 的 <literal>Session</literal> 在事务级别进行持久化数据的缓存操作。 "
+"当然,也有可能分别为每个类(或集合),配置集群、或 JVM 级别"
+"(<literal>SessionFactory 级别</literal>)的缓存。你甚至可以为之插入一个集群"
+"的缓存。注意,缓存永远不知道其他应用程序对持久化仓库(数据库)可能进行的修改 "
+"(即使可以将缓存数据设定为定期失效)。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You have the option to tell Hibernate which caching implementation to use by "
+"specifying the name of a class that implements <literal>org.hibernate.cache."
+"CacheProvider</literal> using the property <literal>hibernate.cache."
+"provider_class</literal>. Hibernate is bundled with a number of built-in "
+"integrations with the open-source cache providers that are listed below. You "
+"can also implement your own and plug it in as outlined above. Note that "
+"versions prior to 3.2 use EhCache as the default cache provider."
+msgstr ""
+"通过在 <literal>hibernate.cache.provider_class</literal> 属性中指定  "
+"<literal>org.hibernate.cache.CacheProvider</literal> 的某个实现的类名,你可以"
+"选择让 Hibernate 使用哪个缓存实现。Hibernate 打包一些开源缓存实现,提供对它们"
+"的内置支持(见下表)。除此之外,你也可以实现你自己的实现,将它们插入到系统"
+"中。注意,在 3.2 版本之前,默认使用 EhCache 作为缓存实现,但从 3.2 起就不再这"
+"样了。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Providers"
+msgstr "缓存策略提供商(Cache Providers)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cache"
+msgstr "Cache"
+
+#. Tag: entry
+#, no-c-format
+msgid "Provider class"
+msgstr "Provider class"
+
+#. Tag: entry
+#, no-c-format
+msgid "Type"
+msgstr "Type"
+
+#. Tag: entry
+#, no-c-format
+msgid "Cluster Safe"
+msgstr "Cluster Safe"
+
+#. Tag: entry
+#, no-c-format
+msgid "Query Cache Supported"
+msgstr "Query Cache Supported"
+
+#. Tag: entry
+#, no-c-format
+msgid "Hashtable (not intended for production use)"
+msgstr "Hashtable (not intended for production use)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.HashtableCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.HashtableCacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "memory"
+msgstr "memory"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes"
+msgstr "yes"
+
+#. Tag: entry
+#, no-c-format
+msgid "EHCache"
+msgstr "EHCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.EhCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.EhCacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "memory, disk"
+msgstr "memory,disk"
+
+#. Tag: entry
+#, no-c-format
+msgid "OSCache"
+msgstr "OSCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.OSCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.OSCacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "SwarmCache"
+msgstr "SwarmCache"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.SwarmCacheProvider</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast)"
+msgstr "clustered (ip multicast)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clustered invalidation)"
+msgstr "yes (clustered invalidation)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 1.x"
+msgstr "JBoss Cache 1.x"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.TreeCacheProvider</literal>"
+msgstr "<literal>org.hibernate.cache.TreeCacheProvider</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "clustered (ip multicast), transactional"
+msgstr "clustered (ip multicast), transactional"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication)"
+msgstr "yes (replication)"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (clock sync req.)"
+msgstr "yes (clock sync req.)"
+
+#. Tag: entry
+#, no-c-format
+msgid "JBoss Cache 2"
+msgstr "JBoss Cache 2"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+msgstr "<literal>org.hibernate.cache.jbc.JBossCacheRegionFactory</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "yes (replication or invalidation)"
+msgstr "yes (replication or invalidation)"
+
+#. Tag: title
+#, no-c-format
+msgid "Cache mappings"
+msgstr "缓存映射(Cache mappings)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>&lt;cache&gt;</literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"类或者集合映射的“<literal>&lt;cache&gt;</literal> 元素”可以有下列形式:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal>(必须)说明了缓存的策略:<literal>transactional</"
+"literal>、 <literal>read-write</literal>、<literal>nonstrict-read-write</"
+"literal> 或 <literal>read-only</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional: defaults to the class or collection "
+"role name): specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (可选,默认为类或者集合的名字(class or "
+"collection role name)) 指定第二级缓存的区域名(name of the second level "
+"cache region) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional: defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal>: specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> cannot be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal>(可选,默认为 <literal>all</literal>) "
+"<literal>non-lazy</literal> 当属性级延迟抓取打开时,标记为 <literal>lazy="
+"\"true\"</literal> 的实体的属性可能无法被缓存 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Alternatively, you can specify <literal>&lt;class-cache&gt;</literal> and "
+"<literal>&lt;collection-cache&gt;</literal> elements in <literal>hibernate."
+"cfg.xml</literal>."
+msgstr ""
+"另外(首选?),你可以在<literal>hibernate.cfg.xml</literal> 中指定 "
+"<literal>&lt;class-cache&gt;</literal> 和 <literal>&lt;collection-cache&gt;</"
+"literal> 元素。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"这里的 <literal>usage</literal> 属性指明了<emphasis>缓存并发策略(cache "
+"concurrency strategy)</emphasis>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read only"
+msgstr "策略:只读缓存(Strategy:read only)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If your application needs to read, but not modify, instances of a persistent "
+"class, a <literal>read-only</literal> cache can be used. This is the "
+"simplest and optimal performing strategy. It is even safe for use in a "
+"cluster."
+msgstr ""
+"如果你的应用程序只需读取一个持久化类的实例,而无需对其修改, 那么就可以对其进"
+"行<literal>只读</literal> 缓存。这是最简单,也是实用性最好的方法。甚至在集群"
+"中,它也能完美地运作。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: read/write"
+msgstr "策略:读写/缓存(Strategy:read/write)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal> and naming a strategy for "
+"obtaining the JTA <literal>TransactionManager</literal>. In other "
+"environments, you should ensure that the transaction is completed when "
+"<literal>Session.close()</literal> or <literal>Session.disconnect()</"
+"literal> is called. If you want to use this strategy in a cluster, you "
+"should ensure that the underlying cache implementation supports locking. The "
+"built-in cache providers <emphasis>do not</emphasis> support locking."
+msgstr ""
+"如果应用程序需要更新数据,那么使用<literal>读/写缓存</literal> 比较合适。 如"
+"果应用程序要求“序列化事务”的隔离级别(serializable transaction isolation "
+"level),那么就决不能使用这种缓存策略。 如果在 JTA 环境中使用缓存,你必须指"
+"定 <literal>hibernate.transaction.manager_lookup_class</literal> 属性的值, "
+"通过它,Hibernate 才能知道该应用程序中 JTA 的<literal>TransactionManager</"
+"literal>的具体策略。 在其它环境中,你必须保证在 <literal>Session.close()</"
+"literal>、或 <literal>Session.disconnect()</literal> 调用前, 整个事务已经结"
+"束。 如果你想在集群环境中使用此策略,你必须保证底层的缓存实现支持锁定"
+"(locking)。Hibernate 内置的缓存策略并不支持锁定功能。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
+msgstr "策略:非严格读/写缓存(Strategy:nonstrict read/write)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (i.e. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously), and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"如果应用程序只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不"
+"常见),也不需要十分严格的事务隔离,那么比较适合使用<literal>非严格读/写缓存"
+"</literal>策略。如果在 JTA 环境中使用该策略,你必须为其指定 "
+"<literal>hibernate.transaction.manager_lookup_class</literal> 属性的值,在其"
+"它环境中,你必须保证在<literal>Session.close()</literal>、或 "
+"<literal>Session.disconnect()</literal> 调用前,整个事务已经结束。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Strategy: transactional"
+msgstr "策略:事务缓存(transactional)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"can only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"Hibernate 的<literal>事务缓存</literal>策略提供了全事务的缓存支持,例如对 "
+"JBoss TreeCache 的支持。这样的缓存只能用于 JTA 环境中,你必须指定为其  "
+"<literal>hibernate.transaction.manager_lookup_class</literal> 属性。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Cache-provider/concurrency-strategy compatibility"
+msgstr "各种缓存提供商/缓存并发策略的兼容性"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies."
+msgstr ""
+"没有一种缓存提供商能够支持上列的所有缓存并发策略。下表中列出了各种提供器、及"
+"其各自适用的并发策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"没有一种缓存提供商能够支持上列的所有缓存并发策略。下表中列出了各种提供器、及"
+"其各自适用的并发策略。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Cache Concurrency Strategy Support"
+msgstr ""
+"各种缓存提供商对缓存并发策略的支持情况(Cache Concurrency Strategy Support)"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-only"
+msgstr "read-only"
+
+#. Tag: entry
+#, no-c-format
+msgid "nonstrict-read-write"
+msgstr "nonstrict-read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "read-write"
+msgstr "read-write"
+
+#. Tag: entry
+#, no-c-format
+msgid "transactional"
+msgstr "transactional"
+
+#. Tag: title
+#, no-c-format
+msgid "Managing the caches"
+msgstr "管理缓存(Managing the caches)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"无论何时,当你给 <literal>save()</literal>、<literal>update()</literal> 或  "
+"<literal>saveOrUpdate()</literal> 方法传递一个对象时,或使用 <literal>load()"
+"</literal>、<literal>get()</literal>、<literal>list()</literal>、"
+"<literal>iterate()</literal> 或 <literal>scroll()</literal> 方法获得一个对象"
+"时,该对象都将被加入到 <literal>Session</literal> 的内部缓存中。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur, or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"can be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"当随后 flush() 方法被调用时,对象的状态会和数据库取得同步。如果你不希望此同步"
+"操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用 "
+"<literal>evict()</literal> 方法,从一级缓存中去掉这些对象及其集合。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"Session 还提供了一个 <literal>contains()</literal> 方法,用来判断某个实例是否"
+"处于当前 session 的缓存中。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To evict all objects from the session cache, call <literal>Session.clear()</"
+"literal>"
+msgstr ""
+"如若要把所有的对象从 session 缓存中彻底清除,则需要调用 <literal>Session."
+"clear()</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"对于二级缓存来说,在 <literal>SessionFactory</literal> 中定义了许多方法,清除"
+"缓存中实例、整个类、集合实例或者整个集合。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache:"
+msgstr ""
+"<literal>CacheMode</literal> 参数用于控制具体的 Session 如何与二级缓存进行交"
+"互。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal>: will read items from and write items to "
+"the second-level cache"
+msgstr "<literal>CacheMode.NORMAL</literal>:从二级缓存中读、写数据。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal>: will read items from the second-level "
+"cache. Do not write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal>:从二级缓存中读取数据,仅在数据更新时对二级"
+"缓存写数据。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal>:仅向二级缓存写数据,但不从二级缓存中读数"
+"据。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal>: will write items to the second-level "
+"cache. Do not read from the second-level cache. Bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal> forcing a refresh of the "
+"second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal>:仅向二级缓存写数据,但不从二级缓存中读"
+"数据。通过 <literal>hibernate.cache.use_minimal_puts</literal> 的设置,强制二"
+"级缓存从数据库中读取数据,刷新缓存内容。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"如若需要查看二级缓存或查询缓存区域的内容,你可以使用<literal>统计"
+"(Statistics)</literal> API。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You will need to enable statistics and, optionally, force Hibernate to keep "
+"the cache entries in a more readable format:"
+msgstr ""
+"此时,你必须手工打开统计选项。可选的,你可以让 Hibernate 更人工可读的方式维护"
+"缓存内容。 "
+
+#. Tag: title
+#, no-c-format
+msgid "The Query Cache"
+msgstr "查询缓存(The Query Cache)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Query result sets can also be cached. This is only useful for queries that "
+"are run frequently with the same parameters."
+msgstr ""
+"查询的结果集也可以被缓存。只有当经常使用同样的参数进行查询时,这才会有些用"
+"处。"
+
+#. Tag: title
+#, no-c-format
+msgid "Enabling query caching"
+msgstr "启用查询缓存"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Caching of query results introduces some overhead in terms of your "
+"applications normal transactional processing. For example, if you cache "
+"results of a query against Person Hibernate will need to keep track of when "
+"those results should be invalidated because changes have been committed "
+"against Person. That, coupled with the fact that most applications simply "
+"gain no benefit from caching query results, leads Hibernate to disable "
+"caching of query results by default. To use query caching, you will first "
+"need to enable the query cache:"
+msgstr ""
+"按照应用程序的事务性处理过程,查询结果的缓存将产生一些负荷。例如,如果缓存针"
+"对 Person 的查询结果,在 Person 发生了修改时,Hibernate 将需要跟踪这些结果什"
+"么时候失效。因为大多数应用程序不会从缓存查询结果中受益,所以 Hibernate 在缺省"
+"情况下将禁用缓存。要使用查询缓存,你首先需要启用查询缓存:"
+
+#. Tag: para
+#, no-c-format
+msgid "This setting creates two new cache regions:"
+msgstr "这个设置创建了两个新的缓存 region:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>, holding the "
+"cached query results"
+msgstr ""
+"<classname>org.hibernate.cache.StandardQueryCache</classname>,保存缓存的查询"
+"结果"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>, holding "
+"timestamps of the most recent updates to queryable tables. These are used to "
+"validate the results as they are served from the query cache."
+msgstr ""
+"<classname>org.hibernate.cache.UpdateTimestampsCache</classname>,保存对可查"
+"询表的最近更新的时间戳。它们用于检验查询结果。"
+
+#. Tag: para
+#, fuzzy, no-c-format
+msgid ""
+"If you configure your underlying cache implementation to use expiry or "
+"timeouts is is very important that the cache timeout of the underlying cache "
+"region for the UpdateTimestampsCache be set to a higher value than the "
+"timeouts of any of the query caches. In fact, we recommend that the the "
+"UpdateTimestampsCache region not be configured for expiry at all. Note, in "
+"particular, that an LRU cache expiry policy is never appropriate."
+msgstr ""
+"如果你配置底层缓存实现来使用过期(expiry)或超时(timeout),把用于 "
+"UpdateTimestampsCache 的底层缓存 region 的缓存超时时间设置为比任何查询缓存的"
+"超时时间更长的值是非常重要的。事实上,我们推荐根本不把 UpdateTimestampsCache "
+"region 用于 expiry。请注意,特别是 LRU 缓存 expiry 策略总是不合适的。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"As mentioned above, most queries do not benefit from caching or their "
+"results. So by default, individual queries are not cached even after "
+"enabling query caching. To enable results caching for a particular query, "
+"call <literal>org.hibernate.Query.setCacheable(true)</literal>. This call "
+"allows the query to look for existing cache results or add its results to "
+"the cache when it is executed."
+msgstr ""
+"如上面所提及的,绝大多数的查询并不能从查询缓存中受益,所以 Hibernate 默认是不"
+"进行查询缓存的。如若需要进行缓存,请调用 <literal>org.hibernate.Query."
+"setCacheable(true)</literal>方法。这个调用会让查询在执行过程中时先从缓存中"
+"查找结果,并将自己的结果集放到缓存中去。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"The query cache does not cache the state of the actual entities in the "
+"cache; it caches only identifier values and results of value type. For this "
+"reaso, the query cache should always be used in conjunction with the second-"
+"level cache for those entities expected to be cached as part of a query "
+"result cache (just as with collection caching)."
+msgstr ""
+"查询缓存不会缓存缓存中实际实体的状态;它只缓存标识符值和值类型的结果。出于这"
+"个原因,对于那些作为查询结果缓存的一部分(和集合缓存一样)进行缓存的实体,查"
+"询缓存应该和二级缓存一起使用。"
+
+#. Tag: title
+#, no-c-format
+msgid "Query cache regions"
+msgstr "查询缓存区"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you can specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"如果你要对查询缓存的失效政策进行精确的控制,你必须调用 <literal>Query."
+"setCacheRegion()</literal> 方法,为每个查询指定其命名的缓存区域。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"If you want to force the query cache to refresh one of its regions "
+"(disregard any cached results it finds there) you can use <literal>org."
+"hibernate.Query.setCacheMode(CacheMode.REFRESH)</literal>. In conjunction "
+"with the region you have defined for the given query, Hibernate will "
+"selectively force the results cached in that particular region to be "
+"refreshed. This is particularly useful in cases where underlying data may "
+"have been updated via a separate process and is a far more efficient "
+"alternative to bulk eviction of the region via <literal>org.hibernate."
+"SessionFactory.evictQueries()</literal>."
+msgstr ""
+"如果查询需要强行刷新其查询缓存区域,那么你应该调用 <literal>org.hibernate."
+"Query.setCacheMode(CacheMode.REFRESH)</literal>方法。 这对在其他进程中修改"
+"底层数据(例如,不通过Hibernate修改数据),或对那些需要选择性更新特定查询结果"
+"集的情况特别有用。这是对 <literal>org.hibernate.SessionFactory.evictQueries()"
+"</literal> 的更为有效的替代方案,同样可以清除查询缓存区域。"
+
+#. Tag: title
+#, no-c-format
+msgid "Understanding Collection performance"
+msgstr "理解集合性能(Understanding Collection performance)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"In the previous sections we have covered collections and their applications. "
+"In this section we explore some more issues in relation to collections at "
+"runtime."
+msgstr ""
+"在前面的章节里我们已经讨论了集合和相关应用程序。在本节我么将探索运行时集合的"
+"更多问题。"
+
+#. Tag: title
+#, no-c-format
+msgid "Taxonomy"
+msgstr "分类(Taxonomy)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines three basic kinds of collections:"
+msgstr "Hibernate 定义了三种基本类型的集合:"
+
+#. Tag: para
+#, no-c-format
+msgid "collections of values"
+msgstr "值数据集合"
+
+#. Tag: para
+#, no-c-format
+msgid "one-to-many associations"
+msgstr "一对多关联(One-to-many Associations) "
+
+#. Tag: para
+#, no-c-format
+msgid "many-to-many associations"
+msgstr "多对多关联 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"这个分类是区分了不同的表和外键关系类型,但是它没有告诉我们关系模型的所有内"
+"容。 要完全理解他们的关系结构和性能特点,我们必须同时考虑“用于 Hibernate 更新"
+"或删除集合行数据的主键的结构”。因此得到了如下的分类:"
+
+#. Tag: para
+#, no-c-format
+msgid "indexed collections"
+msgstr "有序集合类"
+
+#. Tag: para
+#, no-c-format
+msgid "sets"
+msgstr "集合(sets)"
+
+#. Tag: para
+#, no-c-format
+msgid "bags"
+msgstr "包(bags)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, and arrays) have a primary key "
+"consisting of the <literal>&lt;key&gt;</literal> and <literal>&lt;index&gt;</"
+"literal> columns. In this case, collection updates are extremely efficient. "
+"The primary key can be efficiently indexed and a particular row can be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"所有的有序集合类(maps,lists,arrays)都拥有一个由 <literal>&lt;key&gt;</"
+"literal> 和 <literal>&lt;index&gt;</literal> 组成的主键。这种情况下集合类的更"
+"新是非常高效的 — 主键已经被有效的索引,因此当 Hibernate 试图更新或删除一行"
+"时,可以迅速找到该行数据。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal>&lt;key&gt;</literal> and "
+"element columns. This can be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields, as "
+"the database may not be able to index a complex primary key as efficiently. "
+"However, for one-to-many or many-to-many associations, particularly in the "
+"case of synthetic identifiers, it is likely to be just as efficient. If you "
+"want <literal>SchemaExport</literal> to actually create the primary key of a "
+"<literal>&lt;set&gt;</literal>, you must declare all columns as <literal>not-"
+"null=\"true\"</literal>."
+msgstr ""
+"集合(sets)的主键由 <literal>&lt;key&gt;</literal> 和其他元素字段构成。对于"
+"有些元素类型来说,这很低效,特别是组合元素或者大文本、大二进制字段;数据库可"
+"能无法有效的对复杂的主键进行索引。另一方面,对于一对多、多对多关联,特别是合"
+"成的标识符来说,集合也可以达到同样的高效性能。( 附注:如果你希望 "
+"<literal>SchemaExport</literal> 为你的 <literal>&lt;set&gt;</literal> 创建主"
+"键,你必须把所有的字段都声明为 <literal>not-null=\"true\"</literal>。) "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"<literal>&lt;idbag&gt;</literal> mappings define a surrogate key, so they "
+"are efficient to update. In fact, they are the best case."
+msgstr ""
+"<literal>&lt;idbag&gt;</literal> 映射定义了代理键,因此它总是可以很高效的被更"
+"新。事实上,<literal>&lt;idbag&gt;</literal> 拥有着最好的性能表现。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Bags are the worst case since they permit duplicate element values and, as "
+"they have no index column, no primary key can be defined. Hibernate has no "
+"way of distinguishing between duplicate rows. Hibernate resolves this "
+"problem by completely removing in a single <literal>DELETE</literal> and "
+"recreating the collection whenever it changes. This can be inefficient."
+msgstr ""
+"Bag 是最差的。因为 bag 允许重复的元素值,也没有索引字段,因此不可能定义主"
+"键。 Hibernate 无法判断出重复的行。当这种集合被更改时,Hibernate 将会先完整地"
+"移除 (通过一个(in a single <literal>DELETE</literal>))整个集合,然后再重"
+"新创建整个集合。因此 Bag 是非常低效的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For a one-to-many association, the \"primary key\" may not be the physical "
+"primary key of the database table. Even in this case, the above "
+"classification is still useful. It reflects how Hibernate \"locates\" "
+"individual rows of the collection."
+msgstr ""
+"请注意:对于一对多关联来说,“主键”很可能并不是数据库表的物理主键。但就算在此"
+"情况下,上面的分类仍然是有用的。(它仍然反映了 Hibernate 在集合的各数据行中是"
+"如何进行“定位”的。) "
+
+#. Tag: title
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
+msgstr "Lists,maps 和 sets 用于更新效率最高"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"sets allow the most efficient operation in terms of adding, removing and "
+"updating elements."
+msgstr ""
+"根据我们上面的讨论,显然有序集合类型和大多数 set 都可以在增加、删除、修改元素"
+"中拥有最好的性能。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many-to-many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate does not <literal>UPDATE</"
+"literal> a row when an element is \"changed\". Changes to a <literal>Set</"
+"literal> always work via <literal>INSERT</literal> and <literal>DELETE</"
+"literal> of individual rows. Once again, this consideration does not apply "
+"to one-to-many associations."
+msgstr ""
+"可论证的是对于多对多关联、值数据集合而言,有序集合类比集合(set)有一个好处。"
+"因为 <literal>Set</literal> 的内在结构, 如果“改变”了一个元素,Hibernate 并不"
+"会<literal>更新(UPDATE)</literal>这一行。对于 <literal>Set</literal> 来说,"
+"只有在<literal>插入(INSERT)</literal>和<literal>删除(DELETE)</literal> 操"
+"作时“改变”才有效。再次强调:这段讨论对“一对多关联”并不适用。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, you can conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. You can expect sets to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"注意到数组无法延迟载入,我们可以得出结论,list,map 和 idbags 是最高效的(非"
+"反向)集合类型,set 则紧随其后。 在 Hibernate 中,set 应该时最通用的集合类"
+"型,这时因为“set”的语义在关系模型中是最自然的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, most collections are in "
+"fact one-to-many associations with <literal>inverse=\"true\"</literal>. For "
+"these associations, the update is handled by the many-to-one end of the "
+"association, and so considerations of collection update performance simply "
+"do not apply."
+msgstr ""
+"但是,在设计良好的 Hibernate 领域模型中,我们通常可以看到更多的集合事实上是带"
+"有  <literal>inverse=\"true\"</literal> 的一对多的关联。对于这些关联,更新操"
+"作将会在多对一的这一端进行处理。因此对于此类情况,无需考虑其集合的更新性能。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Bags and lists are the most efficient inverse collections"
+msgstr "Bag 和 list 是反向集合类中效率最高的"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"There is a particular case, however, in which bags, and also lists, are much "
+"more performant than sets. For a collection with <literal>inverse=\"true\"</"
+"literal>, the standard bidirectional one-to-many relationship idiom, for "
+"example, we can add elements to a bag or list without needing to initialize "
+"(fetch) the bag elements. This is because, unlike a <literal>set</literal>, "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal>. This "
+"can make the following common code much faster:"
+msgstr ""
+"在把 bag 扔进水沟之前,你必须了解,在一种情况下,bag 的性能(包括list)要比 "
+"set 高得多:对于指明了 <literal>inverse=\"true\"</literal> 的集合类(比如说,"
+"标准的双向的一对多关联),我们可以在未初始化(fetch)包元素的情况下直接向 "
+"bag 或 list 添加新元素! 这是因为 <literal>Collection.add()</literal>)或者 "
+"<literal>Collection.addAll()</literal> 方法对 bag 或者 List 总是返回 true(这"
+"点与与 Set 不同)。因此对于下面的相同代码来说,速度会快得多。 "
+
+#. Tag: title
+#, no-c-format
+msgid "One shot delete"
+msgstr "一次性删除(One shot delete)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Deleting collection elements one by one can sometimes be extremely "
+"inefficient. Hibernate knows not to do that in the case of an newly-empty "
+"collection (if you called <literal>list.clear()</literal>, for example). In "
+"this case, Hibernate will issue a single <literal>DELETE</literal>."
+msgstr ""
+"偶尔的,逐个删除集合类中的元素是相当低效的。Hibernate 并没那么笨,如果你想要"
+"把整个集合都删除(比如说调用 list.clear()),Hibernate 只需要一个 DELETE 就搞"
+"定了。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Suppose you added a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements, unless the "
+"collection is a bag. This is certainly desirable."
+msgstr ""
+"假设我们在一个长度为20的集合类中新增加了一个元素,然后再删除两个。Hibernate "
+"会安排一条 <literal>INSERT</literal> 语句和两条 <literal>DELETE</literal> 语"
+"句(除非集合类是一个 bag)。这当然是令人满意的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"但是,假设我们删除了 18 个数据,只剩下 2 个,然后新增 3 个。则有两种处理方"
+"式:"
+
+#. Tag: para
+#, no-c-format
+msgid "delete eighteen rows one by one and then insert three rows"
+msgstr "逐一的删除这 18 个数据,再新增三个;"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"remove the whole collection in one SQL <literal>DELETE</literal> and insert "
+"all five current elements one by one"
+msgstr "删除整个集合类(只用一句 DELETE 语句),然后逐一添加 5 个数据。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate cannot know that the second option is probably quicker. It would "
+"probably be undesirable for Hibernate to be that intuitive as such behavior "
+"might confuse database triggers, etc."
+msgstr ""
+"Hibernate 还没那么聪明,知道第二种选择可能会比较快。(也许让 Hibernate 不这么"
+"聪明也是好事,否则可能会引发意外的“数据库触发器”之类的问题。)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behavior (i.e. the second strategy) at any "
+"time by discarding (i.e. dereferencing) the original collection and "
+"returning a newly instantiated collection with all the current elements."
+msgstr ""
+"幸运的是,你可以强制使用第二种策略。你需要取消原来的整个集合类(解除其引"
+"用),然后再返回一个新的实例化的集合类,只包含需要的元素。有些时候这是非常有"
+"用的。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"One-shot-delete does not apply to collections mapped <literal>inverse=\"true"
+"\"</literal>."
+msgstr ""
+"显然,一次性删除并不适用于被映射为 <literal>inverse=\"true\"</literal> 的集"
+"合。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring performance"
+msgstr "监测性能(Monitoring performance)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"没有监测和性能参数而进行优化是毫无意义的。Hibernate 为其内部操作提供了一系列"
+"的示意图,因此可以从 每个 <literal>SessionFactory</literal> 抓取其统计数据。"
+
+#. Tag: title
+#, no-c-format
+msgid "Monitoring a SessionFactory"
+msgstr "监测 SessionFactory"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"你可以有两种方式访问 <literal>SessionFactory</literal> 的数据记录,第一种就是"
+"自己直接调用 <literal>sessionFactory.getStatistics()</literal> 方法读取、显示"
+"<literal>统计</literal>数据。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You can enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"此外,如果你打开 <literal>StatisticsService</literal> MBean 选项,那么 "
+"Hibernate 则可以使用 JMX 技术 发布其数据记录。你可以让应用中所有的 "
+"<literal>SessionFactory</literal> 同时共享一个 MBean,也可以每个 "
+"SessionFactory 分配一个 MBean。下面的代码即是其演示代码: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can activate and deactivate the monitoring for a "
+"<literal>SessionFactory</literal>:"
+msgstr ""
+"你可以通过以下方法打开或关闭 <literal>SessionFactory</literal> 的监测功能: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"在配置期间,将 <literal>hibernate.generate_statistics</literal> 设置为 "
+"<literal>true</literal> 或 <literal>false</literal>;"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"在运行期间,则可以可以通过 <literal>sf.getStatistics().setStatisticsEnabled"
+"(true)</literal> 或 <literal>hibernateStatsBean.setStatisticsEnabled(true)</"
+"literal>"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Statistics can be reset programmatically using the <literal>clear()</"
+"literal> method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"你也可以在程序中调用 <literal>clear()</literal> 方法重置统计数据,调用 "
+"<literal>logSummary()</literal> 在日志中记录(info 级别)其总结。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Metrics"
+msgstr "数据记录(Metrics)"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from basic information to more "
+"specialized information that is only relevant in certain scenarios. All "
+"available counters are described in the <literal>Statistics</literal> "
+"interface API, in three categories:"
+msgstr ""
+"Hibernate 提供了一系列数据记录,其记录的内容包括从最基本的信息到与具体场景的"
+"特殊信息。所有的测量值都可以由 <literal>Statistics</literal> 接口 API 进行访"
+"问,主要分为三类:"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"使用 <literal>Session</literal> 的普通数据记录,例如打开的 Session 的个数、取"
+"得的 JDBC 的连接数等;"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Metrics related to the entities, collections, queries, and caches as a whole "
+"(aka global metrics)."
+msgstr "实体、集合、查询、缓存等内容的统一数据记录。"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
+msgstr "和具体实体、集合、查询、缓存相关的详细数据记录"
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"For example, you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Be aware that "
+"the number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision and on some platforms this might only be accurate "
+"to 10 seconds."
+msgstr ""
+"例如:你可以检查缓存的命中成功次数,缓存的命中失败次数,实体、集合和查询的使"
+"用概率,查询的平均时间等。请注意 Java 中时间的近似精度是毫秒。Hibernate 的数"
+"据精度和具体的 JVM 有关,在有些平台上其精度甚至只能精确到 10 秒。 "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code is a simple "
+"example:"
+msgstr ""
+"你可以直接使用 getter 方法得到全局数据记录(例如,和具体的实体、集合、缓存区"
+"无关的数据),你也可以在具体查询中通过标记实体名、 或 HQL、SQL 语句得到某实体"
+"的数据记录。请参考 <literal>Statistics</literal>、<literal>EntityStatistics</"
+"literal>、<literal>CollectionStatistics</literal>、"
+"<literal>SecondLevelCacheStatistics</literal> 和 <literal>QueryStatistics</"
+"literal> 的 API 文档以抓取更多信息。下面的代码则是个简单的例子: "
+
+#. Tag: para
+#, no-c-format
+msgid ""
+"You can work on all entities, collections, queries and region caches, by "
+"retrieving the list of names of entities, collections, queries and region "
+"caches using the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"如果你想得到所有实体、集合、查询和缓存区的数据,你可以通过以下方法获得实体、"
+"集合、查询和缓存区列表:<literal>getQueries()</literal>、"
+"<literal>getEntityNames()</literal>、<literal>getCollectionRoleNames()</"
+"literal> 和 <literal>getSecondLevelCacheRegionNames()</literal>。"
+
+#~ msgid ""
+#~ "This setting creates two new cache regions: one holding cached query "
+#~ "result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), "
+#~ "the other holding timestamps of the most recent updates to queryable "
+#~ "tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). "
+#~ "Note that the query cache does not cache the state of the actual entities "
+#~ "in the result set; it caches only identifier values and results of value "
+#~ "type. The query cache should always be used in conjunction with the "
+#~ "second-level cache."
+#~ msgstr ""
+#~ "该设置将会创建两个缓存区域 — 一个用于保存查询结果集(<literal>org."
+#~ "hibernate.cache.StandardQueryCache</literal>); 另一个则用于保存最近查询"
+#~ "的一系列表的时间戳(<literal>org.hibernate.cache.UpdateTimestampsCache</"
+#~ "literal>)。请注意:在查询缓存中,它并不缓存结果集中所包含的实体的确切状"
+#~ "态;它只缓存这些实体的标识符属性的值、以及各值类型的结果。所以查询缓存通常"
+#~ "会和二级缓存一起使用。 "
+
+#~ msgid ""
+#~ "<![CDATA[s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // "
+#~ "Error!]]>"
+#~ msgstr ""
+#~ "<![CDATA[s = sessions.openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "            \n"
+#~ "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+#~ "    .setString(\"userName\", userName).uniqueResult();\n"
+#~ "Map permissions = u.getPermissions();\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();\n"
+#~ "\n"
+#~ "Integer accessLevel = (Integer) permissions.get(\"accounts\");  // "
+#~ "Error!]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<set name=\"permissions\" \n"
+#~ "            fetch=\"join\">\n"
+#~ "    <key column=\"userId\"/>\n"
+#~ "    <one-to-many class=\"Permission\"/>\n"
+#~ "</set]]>"
+#~ msgstr ""
+#~ "<![CDATA[<set name=\"permissions\" \n"
+#~ "            fetch=\"join\">\n"
+#~ "    <key column=\"userId\"/>\n"
+#~ "    <one-to-many class=\"Permission\"/>\n"
+#~ "</set]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();]]>"
+#~ msgstr ""
+#~ "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+#~ "                .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+#~ "                .add( Restrictions.idEq(userId) )\n"
+#~ "                .uniqueResult();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a "
+#~ "proxy (does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a "
+#~ "proxy (does not hit the db)\n"
+#~ "if ( cat.isDomesticCat() ) {                  // hit the db to initialize "
+#~ "the proxy\n"
+#~ "    DomesticCat dc = (DomesticCat) cat;       // Error!\n"
+#~ "    ....\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);            // "
+#~ "instantiate a Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id);            // "
+#~ "instantiate a Cat proxy\n"
+#~ "DomesticCat dc = \n"
+#~ "        (DomesticCat) session.load(DomesticCat.class, id);  // acquire "
+#~ "new DomesticCat proxy!\n"
+#~ "System.out.println(cat==dc);                            // false]]>"
+
+#~ msgid ""
+#~ "<![CDATA[cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0]]>"
+#~ msgstr ""
+#~ "<![CDATA[cat.setWeight(11.0);  // hit the db to initialize the proxy\n"
+#~ "System.out.println( dc.getWeight() );  // 11.0]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+#~ "    ......\n"
+#~ "    <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+#~ "        .....\n"
+#~ "    </subclass>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+#~ "name='fritz'\").iterate();\n"
+#~ "Cat fritz = (Cat) iter.next();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+#~ "Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+#~ "name='fritz'\").iterate();\n"
+#~ "Cat fritz = (Cat) iter.next();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" )."
+#~ "list().get(0) ).intValue()]]>"
+#~ msgstr ""
+#~ "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" )."
+#~ "list().get(0) ).intValue()]]>"
+
+#~ msgid ""
+#~ "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+#~ "setMaxResults(10).list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+#~ "setMaxResults(10).list();]]>"
+
+#~ msgid "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+#~ msgstr "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <set name=\"cats\" batch-size=\"3\">\n"
+#~ "        ...\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <set name=\"cats\" batch-size=\"3\">\n"
+#~ "        ...\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Document\">\n"
+#~ "       <id name=\"id\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+#~ "    <property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/>\n"
+#~ "    <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true"
+#~ "\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Document\">\n"
+#~ "       <id name=\"id\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+#~ "    <property name=\"summary\" not-null=\"true\" length=\"200\" lazy="
+#~ "\"true\"/>\n"
+#~ "    <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true"
+#~ "\"/>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+#~ "    <taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\">\n"
+#~ "        <classpath path=\"${jar.path}\"/>\n"
+#~ "        <classpath path=\"${classes.dir}\"/>\n"
+#~ "        <classpath refid=\"lib.class.path\"/>\n"
+#~ "    </taskdef>\n"
+#~ "\n"
+#~ "    <instrument verbose=\"true\">\n"
+#~ "        <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+#~ "            <include name=\"*.class\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </instrument>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+#~ "    <taskdef name=\"instrument\" classname=\"org.hibernate.tool."
+#~ "instrument.InstrumentTask\">\n"
+#~ "        <classpath path=\"${jar.path}\"/>\n"
+#~ "        <classpath path=\"${classes.dir}\"/>\n"
+#~ "        <classpath refid=\"lib.class.path\"/>\n"
+#~ "    </taskdef>\n"
+#~ "\n"
+#~ "    <instrument verbose=\"true\">\n"
+#~ "        <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+#~ "            <include name=\"*.class\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </instrument>\n"
+#~ "</target>]]>"
+
+#~ msgid "<entry>yes</entry>"
+#~ msgstr "<entry>yes</entry>"
+
+#~ msgid ""
+#~ "<![CDATA[<cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<cache \n"
+#~ "    usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+#~ "    region=\"RegionName\"\n"
+#~ "    include=\"all|non-lazy\"\n"
+#~ "/>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+#~ "    <cache usage=\"read-only\"/>\n"
+#~ "    ....\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+#~ "    <cache usage=\"read-only\"/>\n"
+#~ "    ....\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"eg.Cat\" .... >\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"kittens\" ... >\n"
+#~ "        <cache usage=\"read-write\"/>\n"
+#~ "        ....\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"eg.Cat\" .... >\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    ....\n"
+#~ "    <set name=\"kittens\" ... >\n"
+#~ "        <cache usage=\"read-write\"/>\n"
+#~ "        ....\n"
+#~ "    </set>\n"
+#~ "</class>]]>"
+
+#~ msgid ""
+#~ "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\")."
+#~ "scroll(); //a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\")."
+#~ "scroll(); //a huge result set\n"
+#~ "while ( cats.next() ) {\n"
+#~ "    Cat cat = (Cat) cats.get(0);\n"
+#~ "    doSomethingWithACat(cat);\n"
+#~ "    sess.evict(cat);\n"
+#~ "}]]>"
+
+#~ msgid ""
+#~ "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular "
+#~ "Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections]]>"
+#~ msgstr ""
+#~ "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular "
+#~ "Cat\n"
+#~ "sessionFactory.evict(Cat.class);  //evict all Cats\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a "
+#~ "particular collection of kittens\n"
+#~ "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+#~ "collections]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+#~ "        .getSecondLevelCacheStatistics(regionName)\n"
+#~ "        .getEntries();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true]]>"
+#~ msgstr ""
+#~ "<![CDATA[hibernate.generate_statistics true\n"
+#~ "hibernate.cache.use_structured_entries true]]>"
+
+#~ msgid "<![CDATA[hibernate.cache.use_query_cache true]]>"
+#~ msgstr "<![CDATA[hibernate.cache.use_query_cache true]]>"
+
+#~ msgid ""
+#~ "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog."
+#~ "blogger = :blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog."
+#~ "blogger = :blogger\")\n"
+#~ "    .setEntity(\"blogger\", blogger)\n"
+#~ "    .setMaxResults(15)\n"
+#~ "    .setCacheable(true)\n"
+#~ "    .setCacheRegion(\"frontpages\")\n"
+#~ "    .list();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+#~ "Child c = new Child();\n"
+#~ "c.setParent(p);\n"
+#~ "p.getChildren().add(c);  //no need to fetch the collection!\n"
+#~ "sess.flush();]]>"
+
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+#~ msgstr ""
+#~ "<![CDATA[// MBean service registration for a specific SessionFactory\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+#~ "SessionFactory\n"
+#~ "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+
+#~ msgid ""
+#~ "<![CDATA[// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+#~ msgstr ""
+#~ "<![CDATA[// MBean service registration for all SessionFactory's\n"
+#~ "Hashtable tb = new Hashtable();\n"
+#~ "tb.put(\"type\", \"statistics\");\n"
+#~ "tb.put(\"sessionFactory\", \"all\");\n"
+#~ "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+#~ "\n"
+#~ "StatisticsService stats = new StatisticsService(); // MBean "
+#~ "implementation\n"
+#~ "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+
+#~ msgid ""
+#~ "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics"
+#~ "();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );]]>"
+#~ msgstr ""
+#~ "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics"
+#~ "();\n"
+#~ "\n"
+#~ "double queryCacheHitCount  = stats.getQueryCacheHitCount();\n"
+#~ "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+#~ "double queryCacheHitRatio =\n"
+#~ "  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+#~ "\n"
+#~ "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+#~ "\n"
+#~ "EntityStatistics entityStats =\n"
+#~ "  stats.getEntityStatistics( Cat.class.getName() );\n"
+#~ "long changes =\n"
+#~ "        entityStats.getInsertCount()\n"
+#~ "        + entityStats.getUpdateCount()\n"
+#~ "        + entityStats.getDeleteCount();\n"
+#~ "log.info(Cat.class.getName() + \" changed \" + changes + \"times\"  );]]>"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/persistent_classes.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/persistent_classes.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/persistent_classes.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,992 @@
+# translation of persistent_classes.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: persistent_classes\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 10:00+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Persistent Classes"
+msgstr "持久化类(Persistent Classes)"
+
+#. Tag: para
+#, no-c-format
+msgid "Persistent classes are classes in an application that implement the entities of the business problem (e.g. Customer and Order in an E-commerce application). Not all instances of a persistent class are considered to be in the persistent state. For example, an instance can instead be transient or detached."
+msgstr "在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的 Customer 和 Order)类就是持久化类。不能认为所有的持久化类的实例都是持久的状态 - 一个实例的状态也可能是瞬时的或脱管的。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate works best if these classes follow some simple rules, also known as the Plain Old Java Object (POJO) programming model. However, none of these rules are hard requirements. Indeed, Hibernate3 assumes very little about the nature of your persistent objects. You can express a domain model in other ways (using trees of <literal>Map</literal> instances, for example)."
+msgstr "如果这些持久化类遵循一些简单的规则,Hibernate 能够工作得更好,这些规则也被称作简单传统 Java 对象(POJO:Plain Old Java Object)编程模型。但是这些规则并不是必需的。 实际上,Hibernate3 对于你的持久化类几乎不做任何设想。你可以用其他的方法来表达领域模型:比如,使用 <literal>Map</literal> 实例的树型结构。"
+
+#. Tag: title
+#, no-c-format
+msgid "A simple POJO example"
+msgstr "一个简单的 POJO 例子"
+
+#. Tag: para
+#, no-c-format
+msgid "Most Java applications require a persistent class representing felines. For example:"
+msgstr "大多数 Java 程序需要用一个持久化类来表示猫科动物。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "The four main rules of persistent classes are explored in more detail in the following sections."
+msgstr "在后续的章节里我们将介绍持久性类的 4 个主要规则的更多细节。"
+
+#. Tag: title
+#, no-c-format
+msgid "Implement a no-argument constructor"
+msgstr "实现一个默认的(即无参数的)构造方法(constructor)"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> has a no-argument constructor. All persistent classes must have a default constructor (which can be non-public) so that Hibernate can instantiate them using <literal>Constructor.newInstance()</literal>. It is recommended that you have a default constructor with at least <emphasis>package</emphasis> visibility for runtime proxy generation in Hibernate."
+msgstr "<literal>Cat</literal> 有一个无参数的构造方法。所有的持久化类都必须有一个默认的构造方法(可以不是 public 的),这样的话 Hibernate 就可以使用 <literal>Constructor.newInstance()</literal>来实例化它们。 我们强烈建议,在 Hibernate 中,为了运行期代理的生成,构造方法至少是<emphasis>包(package)</emphasis>内可见的。"
+
+#. Tag: title
+#, no-c-format
+msgid "Provide an identifier property (optional)"
+msgstr "提供一个标识属性(identifier property)(可选)"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> has a property called <literal>id</literal>. This property maps to the primary key column of a database table. The property might have been called anything, and its type might have been any primitive type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or <literal>java.util.Date</literal>. If your legacy database table has composite keys, you can use a user-defined class with properties of these types (see the section on composite identifiers later in the chapter.)"
+msgstr "<literal>Cat</literal> 有一个属性叫做 <literal>id</literal>。这个属性映射数据库表的主 键字段。这个属性可以叫任何名字,其类型可以是任何的原始类型、原始类型的包装类型、 <literal>java.lang.String</literal> 或者是 <literal>java.util.Date</literal>。(如果你的遗留数据库表有联合主键,你甚至可以用一个用户自定义的类,该类拥有这些类型的属性。参见后面的关于联合标识符的章节。)"
+
+#. Tag: para
+#, no-c-format
+msgid "The identifier property is strictly optional. You can leave them off and let Hibernate keep track of object identifiers internally. We do not recommend this, however."
+msgstr "标识符属性是可选的。可以不用管它,让 Hibernate 内部来追踪对象的识别。 但是我们并不推荐这样做。"
+
+#. Tag: para
+#, no-c-format
+msgid "In fact, some functionality is available only to classes that declare an identifier property:"
+msgstr "实际上,一些功能只对那些声明了标识符属性的类起作用: "
+
+#. Tag: para
+#, no-c-format
+msgid "Transitive reattachment for detached objects (cascade update or cascade merge) - see <xref linkend=\"objectstate-transitive\" />"
+msgstr "托管对象的传播性再连接(级联更新或级联合并)- 参阅 <xref linkend=\"objectstate-transitive\"/>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.saveOrUpdate()</literal>"
+msgstr "<literal>Session.saveOrUpdate()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.merge()</literal>"
+msgstr "<literal>Session.merge()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "We recommend that you declare consistently-named identifier properties on persistent classes and that you use a nullable (i.e., non-primitive) type."
+msgstr "我们建议你对持久化类声明命名一致的标识属性。我们还建议你使用一个可以为空(也就是说,不是原始类型)的类型。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Prefer non-final classes (optional)"
+msgstr "使用非final的类(可选)"
+
+#. Tag: para
+#, no-c-format
+msgid "A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon the persistent class being either non-final, or the implementation of an interface that declares all public methods."
+msgstr "<emphasis>代理(proxies)</emphasis>是 Hibernate 的一个重要的功能,它依赖的条件是,持久化类或者是非 final 的,或者是实现了一个所有方法都声明为 public 的接口。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can persist <literal>final</literal> classes that do not implement an interface with Hibernate. You will not, however, be able to use proxies for lazy association fetching which will ultimately limit your options for performance tuning."
+msgstr "你可以用 Hibernate 持久化一个没有实现任何接口的 <literal>final</literal> 类,但是你不能使用代理来延迟关联加载,这会限制你进行性能优化的选择。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You should also avoid declaring <literal>public final</literal> methods on the non-final classes. If you want to use a class with a <literal>public final</literal> method, you must explicitly disable proxying by setting <literal>lazy=\"false\"</literal>."
+msgstr "你也应该避免在非 final 类中声明 <literal>public final</literal> 的方法。如果你想使用一个有 <literal>public final</literal> 方法的类,你必须通过设置 <literal>lazy=\"false\"</literal> 来明确地禁用代理。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Declare accessors and mutators for persistent fields (optional)"
+msgstr "为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选)"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Cat</literal> declares accessor methods for all its persistent fields. Many other ORM tools directly persist instance variables. It is better to provide an indirection between the relational schema and internal data structures of the class. By default, Hibernate persists JavaBeans style properties and recognizes method names of the form <literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. If required, you can switch to direct field access for particular properties."
+msgstr "<literal>Cat</literal> 为它的所有持久化字段声明了访问方法。很多其他 ORM 工具直接对实例变量进行持久化。我们相信,在关系数据库 schema 和类的内部数据结构之间引入间接层(原文为\"非直接\",indirection)会好一些。默认情况下 Hibernate 持久化 JavaBeans 风格的属性,认可  <literal>getFoo</literal>,<literal>isFoo</literal> 和 <literal>setFoo</literal> 这种形式的方法名。如果需要,你可以对某些特定属性实行直接字段访问。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Properties need <emphasis>not</emphasis> be declared public - Hibernate can persist a property with a default, <literal>protected</literal> or <literal>private</literal> get / set pair."
+msgstr "属性<emphasis>不需要</emphasis>要声明为 public 的。Hibernate 可以持久化一个有 <literal>default</literal>、<literal>protected</literal> 或 <literal>private</literal> 的 get/set 方法对的属性进行持久化。"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing inheritance"
+msgstr "实现继承(Inheritance)"
+
+#. Tag: para
+#, no-c-format
+msgid "A subclass must also observe the first and second rules. It inherits its identifier property from the superclass, <literal>Cat</literal>. For example:"
+msgstr "子类也必须遵守第一条和第二条规则。它从超类 <literal>Cat</literal> 继承了标识属性。例如:"
+
+#. Tag: title
+#, no-c-format
+msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr "实现 <literal>equals()</literal> 和 <literal>hashCode()</literal> 方法:"
+
+#. Tag: para
+#, no-c-format
+msgid "You have to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods if you:"
+msgstr "如果你有如下需求,你必须重载 <literal>equals()</literal> 和 <literal>hashCode()</literal> 方法: "
+
+#. Tag: para
+#, no-c-format
+msgid "intend to put instances of persistent classes in a <literal>Set</literal> (the recommended way to represent many-valued associations); <emphasis>and</emphasis>"
+msgstr "想把持久类的实例放入 <literal>Set</literal> 中(当表示多值关联时,推荐这么做),<emphasis>而且</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "intend to use reattachment of detached instances"
+msgstr "想重用脱管实例"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate guarantees equivalence of persistent identity (database row) and Java identity only inside a particular session scope. When you mix instances retrieved in different sessions, you must implement <literal>equals()</literal> and <literal>hashCode()</literal> if you wish to have meaningful semantics for <literal>Set</literal>s."
+msgstr "Hibernate 保证,仅在特定会话范围内,持久化标识(数据库的行)和 Java 标识是等价的。因此,一旦我们混合了从不同会话中获取的实例,如果希望 <literal>Set</literal> 有明确的语义,就必须实现 <literal>equals()</literal> 和  <literal>hashCode()</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The most obvious way is to implement <literal>equals()</literal>/<literal>hashCode()</literal> by comparing the identifier value of both objects. If the value is the same, both must be the same database row, because they are equal. If both are added to a <literal>Set</literal>, you will only have one element in the <literal>Set</literal>). Unfortunately, you cannot use that approach with generated identifiers. Hibernate will only assign identifier values to objects that are persistent; a newly created instance will not have any identifier value. Furthermore, if an instance is unsaved and currently in a <literal>Set</literal>, saving it will assign an identifier value to the object. If <literal>equals()</literal> and <literal>hashCode()</literal> are based on the identifier value, the hash code would change, breaking the contract of the <literal>Set</literal>. See the Hibernate website for a full discussion of this problem. This is not a Hibernate issue, but normal Ja!
 va semantics of object identity and equality."
+msgstr "实现 <literal>equals()</literal>/<literal>hashCode()</literal> 最显而易见的方法是比较两个对象 标识符的值。如果值相同,则两个对象对应于数据库的同一行,因此它们是相等的(如果都被添加到 <literal>Set</literal>,则在 <literal>Set</literal> 中只有一个元素)。不幸的是,对生成的标识不能 使用这种方法。Hibernate 仅对那些持久化对象赋标识值,一个新创建的实例将不会有任何标识值。此外, 如果一个实例没有被保存(unsaved),并且它当前正在一个 <literal>Set</literal> 中,保存它将会给这个对象赋一个标识值。如果 <literal>equals()</literal> 和 <literal>hashCode()</literal> 是基于标识值 实现的,则其哈希码将会改变,这违反了 <literal>Set</literal> 的契约。建议去 Hibernate 的站点阅读关于这个问题的全部讨论。注意,这不是 Hibernate 的问题,而是一般的 Java 对象标!
 识和 Java 对象等价的语义问题。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is recommended that you implement <literal>equals()</literal> and <literal>hashCode()</literal> using <emphasis>Business key equality</emphasis>. Business key equality means that the <literal>equals()</literal> method compares only the properties that form the business key. It is a key that would identify our instance in the real world (a <emphasis>natural</emphasis> candidate key):"
+msgstr "我们建议使用<emphasis>业务键值相等(Business key equality)</emphasis>来实现 <literal>equals()</literal> 和 <literal>hashCode()</literal>。业务键值相等的意思是,<literal>equals()</literal> 方法仅仅比较形成业务键的属性,它能在现实世界里标识我们的实例(是一个<emphasis>自然的</emphasis>候选码)。"
+
+#. Tag: para
+#, no-c-format
+msgid "A business key does not have to be as solid as a database primary key candidate (see <xref linkend=\"transactions-basics-identity\" />). Immutable or unique properties are usually good candidates for a business key."
+msgstr "注意,业务键不必像数据库的主键那样固定不变(参见 <xref linkend=\"transactions-basics-identity\"/>)。对业务键而言,不可变或唯一的属性是不错的选择。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic models"
+msgstr "动态模型(Dynamic models)"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>The following features are currently considered experimental and may change in the near future.</emphasis>"
+msgstr "<emphasis>注意,以下特性在当前处于试验阶段,将来可能会有变化。</emphasis> "
+
+#. Tag: para
+#, no-c-format
+msgid "Persistent entities do not necessarily have to be represented as POJO classes or as JavaBean objects at runtime. Hibernate also supports dynamic models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and the representation of entities as DOM4J trees. With this approach, you do not write persistent classes, only mapping files."
+msgstr "运行期的持久化实体没有必要一定表示为像 POJO 类或 JavaBean 对象那样的形式。Hibernate 也支持动态模型 (在运行期使用 <literal>Map</literal> 的 <literal>Map</literal>)和象 DOM4J 的树模型那样的实体表示。使用这种方法,你不用写持久化类,只写映射文件就行了。 "
+
+#. Tag: para
+#, no-c-format
+msgid "By default, Hibernate works in normal POJO mode. You can set a default entity representation mode for a particular <literal>SessionFactory</literal> using the <literal>default_entity_mode</literal> configuration option (see <xref linkend=\"configuration-optional-properties\" />)."
+msgstr "Hibernate 默认工作在普通 POJO 模式。你可以使用配置选项 <literal>default_entity_mode</literal>, 对特定的 <literal>SessionFactory</literal>,设置一个默认的实体表示模式。(参见 <xref linkend=\"configuration-optional-properties\"/>)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following examples demonstrate the representation using <literal>Map</literal>s. First, in the mapping file an <literal>entity-name</literal> has to be declared instead of, or in addition to, a class name:"
+msgstr "下面是用 <literal>Map</literal> 来表示的例子。首先,在映射文件中,要声明  <literal>entity-name</literal> 来代替一个类名(或作为一种附属)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Even though associations are declared using target class names, the target type of associations can also be a dynamic entity instead of a POJO."
+msgstr "注意,虽然是用目标类名来声明关联的,但是关联的目标类型除了是 POJO 之外,也可以是一个动态的实体。 "
+
+#. Tag: para
+#, no-c-format
+msgid "After setting the default entity mode to <literal>dynamic-map</literal> for the <literal>SessionFactory</literal>, you can, at runtime, work with <literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr "在使用 <literal>dynamic-map</literal> 为 <literal>SessionFactory</literal> 设置了默认的实体模式之后,可以在运行期使用 <literal>Map</literal> 的 <literal>Map</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "One of the main advantages of dynamic mapping is quick turnaround time for prototyping, without the need for entity class implementation. However, you lose compile-time type checking and will likely deal with many exceptions at runtime. As a result of the Hibernate mapping, the database schema can easily be normalized and sound, allowing to add a proper domain model implementation on top later on."
+msgstr "动态映射的好处是,变化所需要的时间少了,因为原型不需要实现实体类。然而,你无法进行编译期的类型检查,并可能由此会处理很多的运行期异常。幸亏有了 Hibernate 映射,它使得数据库的 schema 能容易的规格化和合理化,并允许稍后在此之上添加合适的领域模型实现。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Entity representation modes can also be set on a per <literal>Session</literal> basis:"
+msgstr "实体表示模式也能在每个 <literal>Session</literal> 的基础上设置:"
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that the call to <literal>getSession()</literal> using an <literal>EntityMode</literal> is on the <literal>Session</literal> API, not the <literal>SessionFactory</literal>. That way, the new <literal>Session</literal> shares the underlying JDBC connection, transaction, and other context information. This means you do not have to call <literal>flush()</literal> and <literal>close()</literal> on the secondary <literal>Session</literal>, and also leave the transaction and connection handling to the primary unit of work."
+msgstr "请注意,用 <literal>EntityMode</literal> 调用 <literal>getSession()</literal> 是在 <literal>Session</literal> 的 API 中,而不是 <literal>SessionFactory</literal>。 这样,新的 <literal>Session</literal> 共享底层的 JDBC 连接,事务,和其他的上下文信息。这意味着,你不需要在第二个 <literal>Session</literal> 中调用 <literal>flush()</literal> 和 <literal>close()</literal>,同样的,把事务和连接的处理交给原来的工作单元。 "
+
+#. Tag: para
+#, no-c-format
+msgid "More information about the XML representation capabilities can be found in <xref linkend=\"xml\" />."
+msgstr "关于 XML 表示能力的更多信息可以在 <xref linkend=\"xml\"/> 中找到。"
+
+#. Tag: title
+#, no-c-format
+msgid "Tuplizers"
+msgstr "元组片断映射(Tuplizers)"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are responsible for managing a particular representation of a piece of data given that representation's <literal>org.hibernate.EntityMode</literal>. If a given piece of data is thought of as a data structure, then a tuplizer is the thing that knows how to create such a data structure and how to extract values from and inject values into such a data structure. For example, for the POJO entity mode, the corresponding tuplizer knows how create the POJO through its constructor. It also knows how to access the POJO properties using the defined property accessors."
+msgstr "<literal>org.hibernate.tuple.Tuplizer</literal>,以及其子接口,负责根据给定的<literal>org.hibernate.EntityMode</literal>,来复现片断数据。如果给定的片断数据被认为其是一种数据结构,\"tuplizer\" 就是一个知道如何创建这样的数据结构,以及如何给这个数据结构赋值的东西。比如说,对于 POJO 这种 Entity Mode,对应的 tuplizer 知道通过其构造方法来创建一个 POJO,再通过其属性访问器来访问 POJO 属性。有两大类高层 Tuplizer,分别是<literal>org.hibernate.tuple.entity.EntityTuplizer</literal> 和 <literal>org.hibernate.tuple.entity.ComponentTuplizer</literal> 接口。<literal>EntityTuplizer</literal> 负责管理上面提到的实体的契约,而 <literal>ComponentTuplizer</literal> 则是针对组件的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There are two high-level types of Tuplizers, represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for managing the above mentioned contracts in regards to entities, while <literal>ComponentTuplizer</literal>s do the same for components."
+msgstr "有两种高层类型的 Tuplizer,分别由 <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> 和 <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> 接口代表。<literal>EntityTuplizer</literal> 负责管理和实体相关的上述合约,而<literal>ComponentTuplizer</literal> 则负责组件。"
+
+#. Tag: para
+#, no-c-format
+msgid "Users can also plug in their own tuplizers. Perhaps you require that a <literal>java.util.Map</literal> implementation other than <literal>java.util.HashMap</literal> be used while in the dynamic-map entity-mode. Or perhaps you need to define a different proxy generation strategy than the one used by default. Both would be achieved by defining a custom tuplizer implementation. Tuplizer definitions are attached to the entity or component mapping they are meant to manage. Going back to the example of our customer entity:"
+msgstr "用户也可以插入其自定义的 tuplizer。或许您需要一种不同于 dynamic-map entity-mode 中使用的 <literal>java.util.HashMap</literal> 的 <literal>java.util.Map</literal> 实现;或许您需要与默认策略不同的代理生成策略(proxy generation strategy)。通过自定义 tuplizer 实现,这两个目标您都可以达到。Tuplizer 定义被附加到它们期望管理的 entity 或者 component 映射中。回到我们的 customer entity 例子: "
+
+#. Tag: title
+#, no-c-format
+msgid "EntityNameResolvers"
+msgstr "EntityNameResolvers"
+
+#. Tag: para
+#, no-c-format
+msgid "The <interfacename>org.hibernate.EntityNameResolver</interfacename> interface is a contract for resolving the entity name of a given entity instance. The interface defines a single method <methodname>resolveEntityName</methodname> which is passed the entity instance and is expected to return the appropriate entity name (null is allowed and would indicate that the resolver does not know how to resolve the entity name of the given entity instance). Generally speaking, an <interfacename>org.hibernate.EntityNameResolver</interfacename> is going to be most useful in the case of dynamic models. One example might be using proxied interfaces as your domain model. The hibernate test suite has an example of this exact style of usage under the <package>org.hibernate.test.dynamicentity.tuplizer2</package>. Here is some of the code from that package for illustration."
+msgstr "<interfacename>org.hibernate.EntityNameResolver</interfacename> 接口是一个解析给定实体实例的实体名称的合约。这个接口定义了一个单一的方法 <methodname>resolveEntityName</methodname>,它传递实体实例并预期返回合适的实体名称(null 指明解析器不知道如何解析给定实体实例的实体名称)。一般说来,<interfacename>org.hibernate.EntityNameResolver</interfacename> 在动态模型里最为有用。其中的例子是把代理接口用作你的域模型。Hibernate Test Suite 在 <package>org.hibernate.test.dynamicentity.tuplizer2</package> 下有具有完全相同风格的例子。下面是该包里的一些代码:"
+
+#. Tag: para
+#, no-c-format
+msgid "In order to register an <interfacename>org.hibernate.EntityNameResolver</interfacename> users must either:"
+msgstr "为了注册 <interfacename>org.hibernate.EntityNameResolver</interfacename>,用户必须:"
+
+#. Tag: para
+#, no-c-format
+msgid "Implement a custom <link linkend=\"persistent-classes-tuplizers\">Tuplizer</link>, implementing the <methodname>getEntityNameResolvers</methodname> method."
+msgstr "实现自定义的 <link linkend=\"persistent-classes-tuplizers\">Tuplizer</link> 并实现 <methodname>getEntityNameResolvers</methodname> 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "Register it with the <classname>org.hibernate.impl.SessionFactoryImpl</classname> (which is the implementation class for <interfacename>org.hibernate.SessionFactory</interfacename>) using the <methodname>registerEntityNameResolver</methodname> method."
+msgstr "用 <methodname>registerEntityNameResolver</methodname> 方法注册到 <classname>org.hibernate.impl.SessionFactoryImpl</classname>(它是 <interfacename>org.hibernate.SessionFactory</interfacename> 的实现类)。"
+
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "            kitten.setMother(this);\n"
+#~ "        kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "import java.util.Set;\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Cat {\n"
+#~ "    private Long id; // identifier\n"
+#~ "\n"
+#~ "    private Date birthdate;\n"
+#~ "    private Color color;\n"
+#~ "    private char sex;\n"
+#~ "    private float weight;\n"
+#~ "    private int litterId;\n"
+#~ "\n"
+#~ "    private Cat mother;\n"
+#~ "    private Set kittens = new HashSet();\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id=id;\n"
+#~ "    }\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setBirthdate(Date date) {\n"
+#~ "        birthdate = date;\n"
+#~ "    }\n"
+#~ "    public Date getBirthdate() {\n"
+#~ "        return birthdate;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setWeight(float weight) {\n"
+#~ "        this.weight = weight;\n"
+#~ "    }\n"
+#~ "    public float getWeight() {\n"
+#~ "        return weight;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Color getColor() {\n"
+#~ "        return color;\n"
+#~ "    }\n"
+#~ "    void setColor(Color color) {\n"
+#~ "        this.color = color;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setSex(char sex) {\n"
+#~ "        this.sex=sex;\n"
+#~ "    }\n"
+#~ "    public char getSex() {\n"
+#~ "        return sex;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setLitterId(int id) {\n"
+#~ "        this.litterId = id;\n"
+#~ "    }\n"
+#~ "    public int getLitterId() {\n"
+#~ "        return litterId;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    void setMother(Cat mother) {\n"
+#~ "        this.mother = mother;\n"
+#~ "    }\n"
+#~ "    public Cat getMother() {\n"
+#~ "        return mother;\n"
+#~ "    }\n"
+#~ "    void setKittens(Set kittens) {\n"
+#~ "        this.kittens = kittens;\n"
+#~ "    }\n"
+#~ "    public Set getKittens() {\n"
+#~ "        return kittens;\n"
+#~ "    }\n"
+#~ "    \n"
+#~ "    // addKitten not needed by Hibernate\n"
+#~ "    public void addKitten(Cat kitten) {\n"
+#~ "            kitten.setMother(this);\n"
+#~ "        kitten.setLitterId( kittens.size() ); \n"
+#~ "        kittens.add(kitten);\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package eg;\n"
+#~ "\n"
+#~ "public class DomesticCat extends Cat {\n"
+#~ "        private String name;\n"
+#~ "\n"
+#~ "        public String getName() {\n"
+#~ "                return name;\n"
+#~ "        }\n"
+#~ "        protected void setName(String name) {\n"
+#~ "                this.name=name;\n"
+#~ "        }\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[public class Cat {\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "    public boolean equals(Object other) {\n"
+#~ "        if (this == other) return true;\n"
+#~ "        if ( !(other instanceof Cat) ) return false;\n"
+#~ "\n"
+#~ "        final Cat cat = (Cat) other;\n"
+#~ "\n"
+#~ "        if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+#~ "        if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+#~ "\n"
+#~ "        return true;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        int result;\n"
+#~ "        result = getMother().hashCode();\n"
+#~ "        result = 29 * result + getLitterId();\n"
+#~ "        return result;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "\n"
+#~ "        <id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/>\n"
+#~ "\n"
+#~ "        <bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "            <key column=\"CUSTOMER_ID\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "    \n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "\n"
+#~ "        <id name=\"id\"\n"
+#~ "            type=\"long\"\n"
+#~ "            column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <property name=\"name\"\n"
+#~ "            column=\"NAME\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <property name=\"address\"\n"
+#~ "            column=\"ADDRESS\"\n"
+#~ "            type=\"string\"/>\n"
+#~ "\n"
+#~ "        <many-to-one name=\"organization\"\n"
+#~ "            column=\"ORGANIZATION_ID\"\n"
+#~ "            class=\"Organization\"/>\n"
+#~ "\n"
+#~ "        <bag name=\"orders\"\n"
+#~ "            inverse=\"true\"\n"
+#~ "            lazy=\"false\"\n"
+#~ "            cascade=\"all\">\n"
+#~ "            <key column=\"CUSTOMER_ID\"/>\n"
+#~ "            <one-to-many class=\"Order\"/>\n"
+#~ "        </bag>\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "    \n"
+#~ "</hibernate-mapping>]]>"
+#~ msgid ""
+#~ "<![CDATA[Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session s = openSession();\n"
+#~ "Transaction tx = s.beginTransaction();\n"
+#~ "Session s = openSession();\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "\n"
+#~ "// Create an organization\n"
+#~ "Map foobar = new HashMap();\n"
+#~ "foobar.put(\"name\", \"Foobar Inc.\");\n"
+#~ "\n"
+#~ "// Link both\n"
+#~ "david.put(\"organization\", foobar);\n"
+#~ "\n"
+#~ "// Save both\n"
+#~ "s.save(\"Customer\", david);\n"
+#~ "s.save(\"Organization\", foobar);\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "s.close();]]>"
+#~ msgid ""
+#~ "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode."
+#~ "MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode."
+#~ "MAP);\n"
+#~ "\n"
+#~ "// Create a customer\n"
+#~ "Map david = new HashMap();\n"
+#~ "david.put(\"name\", \"David\");\n"
+#~ "dynamicSession.save(\"Customer\", david);\n"
+#~ "...\n"
+#~ "dynamicSession.flush();\n"
+#~ "dynamicSession.close()\n"
+#~ "...\n"
+#~ "// Continue on pojoSession\n"
+#~ "]]>"
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "        <!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        -->\n"
+#~ "        <tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/>\n"
+#~ "\n"
+#~ "        <id name=\"id\" type=\"long\" column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <!-- other properties -->\n"
+#~ "        ...\n"
+#~ "    </class>\n"
+#~ "</hibernate-mapping>\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "            protected final Map generateMap() {\n"
+#~ "                    return new CustomMap();\n"
+#~ "            }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping>\n"
+#~ "    <class entity-name=\"Customer\">\n"
+#~ "        <!--\n"
+#~ "            Override the dynamic-map entity-mode\n"
+#~ "            tuplizer for the customer entity\n"
+#~ "        -->\n"
+#~ "        <tuplizer entity-mode=\"dynamic-map\"\n"
+#~ "                class=\"CustomMapTuplizerImpl\"/>\n"
+#~ "\n"
+#~ "        <id name=\"id\" type=\"long\" column=\"ID\">\n"
+#~ "            <generator class=\"sequence\"/>\n"
+#~ "        </id>\n"
+#~ "\n"
+#~ "        <!-- other properties -->\n"
+#~ "        ...\n"
+#~ "    </class>\n"
+#~ "</hibernate-mapping>\n"
+#~ "\n"
+#~ "\n"
+#~ "public class CustomMapTuplizerImpl\n"
+#~ "        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+#~ "    // override the buildInstantiator() method to plug in our custom "
+#~ "map...\n"
+#~ "    protected final Instantiator buildInstantiator(\n"
+#~ "            org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+#~ "        return new CustomMapInstantiator( mappingInfo );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private static final class CustomMapInstantiator\n"
+#~ "            extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+#~ "        // override the generateMap() method to return our custom map...\n"
+#~ "            protected final Map generateMap() {\n"
+#~ "                    return new CustomMap();\n"
+#~ "            }\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "/**\n"
+#~ " * A very trivial JDK Proxy InvocationHandler implementation where we "
+#~ "proxy an interface as\n"
+#~ " * the domain model and simply store persistent state in an internal "
+#~ "Map.  This is an extremely\n"
+#~ " * trivial example meant only for illustration.\n"
+#~ " */\n"
+#~ "public final class DataProxyHandler implements InvocationHandler {\n"
+#~ "        private String entityName;\n"
+#~ "        private HashMap data = new HashMap();\n"
+#~ "\n"
+#~ "        public DataProxyHandler(String entityName, Serializable id) {\n"
+#~ "                this.entityName = entityName;\n"
+#~ "                data.put( \"Id\", id );\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public Object invoke(Object proxy, Method method, Object[] args) "
+#~ "throws Throwable {\n"
+#~ "                String methodName = method.getName();\n"
+#~ "                if ( methodName.startsWith( \"set\" ) ) {\n"
+#~ "                        String propertyName = methodName.substring( 3 );\n"
+#~ "                        data.put( propertyName, args[0] );\n"
+#~ "                }\n"
+#~ "                else if ( methodName.startsWith( \"get\" ) ) {\n"
+#~ "                        String propertyName = methodName.substring( 3 );\n"
+#~ "                        return data.get( propertyName );\n"
+#~ "                }\n"
+#~ "                else if ( \"toString\".equals( methodName ) ) {\n"
+#~ "                        return entityName + \"#\" + data.get( \"Id\" );\n"
+#~ "                }\n"
+#~ "                else if ( \"hashCode\".equals( methodName ) ) {\n"
+#~ "                        return new Integer( this.hashCode() );\n"
+#~ "                }\n"
+#~ "                return null;\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public String getEntityName() {\n"
+#~ "                return entityName;\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public HashMap getData() {\n"
+#~ "                return data;\n"
+#~ "        }\n"
+#~ "}\n"
+#~ "\n"
+#~ "/**\n"
+#~ " *\n"
+#~ " */\n"
+#~ "public class ProxyHelper {\n"
+#~ "    public static String extractEntityName(Object object) {\n"
+#~ "        // Our custom java.lang.reflect.Proxy instances actually bundle\n"
+#~ "        // their appropriate entity name, so we simply extract it from "
+#~ "there\n"
+#~ "        // if this represents one of our proxies; otherwise, we return "
+#~ "null\n"
+#~ "        if ( Proxy.isProxyClass( object.getClass() ) ) {\n"
+#~ "            InvocationHandler handler = Proxy.getInvocationHandler"
+#~ "( object );\n"
+#~ "            if ( DataProxyHandler.class.isAssignableFrom( handler.getClass"
+#~ "() ) ) {\n"
+#~ "                DataProxyHandler myHandler = ( DataProxyHandler ) "
+#~ "handler;\n"
+#~ "                return myHandler.getEntityName();\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return null;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    // various other utility methods ....\n"
+#~ "\n"
+#~ "}\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * The EntityNameResolver implementation.\n"
+#~ " * IMPL NOTE : An EntityNameResolver really defines a strategy for how "
+#~ "entity names should be\n"
+#~ " * resolved.  Since this particular impl can handle resolution for all of "
+#~ "our entities we want to\n"
+#~ " * take advantage of the fact that SessionFactoryImpl keeps these in a "
+#~ "Set so that we only ever\n"
+#~ " * have one instance registered.  Why?  Well, when it comes time to "
+#~ "resolve an entity name,\n"
+#~ " * Hibernate must iterate over all the registered resolvers.  So keeping "
+#~ "that number down\n"
+#~ " * helps that process be as speedy as possible.  Hence the equals and "
+#~ "hashCode impls\n"
+#~ " */\n"
+#~ "public class MyEntityNameResolver implements EntityNameResolver {\n"
+#~ "    public static final MyEntityNameResolver INSTANCE = new "
+#~ "MyEntityNameResolver();\n"
+#~ "\n"
+#~ "    public String resolveEntityName(Object entity) {\n"
+#~ "        return ProxyHelper.extractEntityName( entity );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean equals(Object obj) {\n"
+#~ "        return getClass().equals( obj.getClass() );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        return getClass().hashCode();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ "public class MyEntityTuplizer extends PojoEntityTuplizer {\n"
+#~ "        public MyEntityTuplizer(EntityMetamodel entityMetamodel, "
+#~ "PersistentClass mappedEntity) {\n"
+#~ "                super( entityMetamodel, mappedEntity );\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public EntityNameResolver[] getEntityNameResolvers() {\n"
+#~ "                return new EntityNameResolver[] { MyEntityNameResolver."
+#~ "INSTANCE };\n"
+#~ "        }\n"
+#~ "\n"
+#~ "    public String determineConcreteSubclassEntityName(Object "
+#~ "entityInstance, SessionFactoryImplementor factory) {\n"
+#~ "        String entityName = ProxyHelper.extractEntityName"
+#~ "( entityInstance );\n"
+#~ "        if ( entityName == null ) {\n"
+#~ "            entityName = super.determineConcreteSubclassEntityName"
+#~ "( entityInstance, factory );\n"
+#~ "        }\n"
+#~ "        return entityName;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "}"
+#~ msgstr ""
+#~ "/**\n"
+#~ " * A very trivial JDK Proxy InvocationHandler implementation where we "
+#~ "proxy an interface as\n"
+#~ " * the domain model and simply store persistent state in an internal "
+#~ "Map.  This is an extremely\n"
+#~ " * trivial example meant only for illustration.\n"
+#~ " */\n"
+#~ "public final class DataProxyHandler implements InvocationHandler {\n"
+#~ "        private String entityName;\n"
+#~ "        private HashMap data = new HashMap();\n"
+#~ "\n"
+#~ "        public DataProxyHandler(String entityName, Serializable id) {\n"
+#~ "                this.entityName = entityName;\n"
+#~ "                data.put( \"Id\", id );\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public Object invoke(Object proxy, Method method, Object[] args) "
+#~ "throws Throwable {\n"
+#~ "                String methodName = method.getName();\n"
+#~ "                if ( methodName.startsWith( \"set\" ) ) {\n"
+#~ "                        String propertyName = methodName.substring( 3 );\n"
+#~ "                        data.put( propertyName, args[0] );\n"
+#~ "                }\n"
+#~ "                else if ( methodName.startsWith( \"get\" ) ) {\n"
+#~ "                        String propertyName = methodName.substring( 3 );\n"
+#~ "                        return data.get( propertyName );\n"
+#~ "                }\n"
+#~ "                else if ( \"toString\".equals( methodName ) ) {\n"
+#~ "                        return entityName + \"#\" + data.get( \"Id\" );\n"
+#~ "                }\n"
+#~ "                else if ( \"hashCode\".equals( methodName ) ) {\n"
+#~ "                        return new Integer( this.hashCode() );\n"
+#~ "                }\n"
+#~ "                return null;\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public String getEntityName() {\n"
+#~ "                return entityName;\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public HashMap getData() {\n"
+#~ "                return data;\n"
+#~ "        }\n"
+#~ "}\n"
+#~ "\n"
+#~ "/**\n"
+#~ " *\n"
+#~ " */\n"
+#~ "public class ProxyHelper {\n"
+#~ "    public static String extractEntityName(Object object) {\n"
+#~ "        // Our custom java.lang.reflect.Proxy instances actually bundle\n"
+#~ "        // their appropriate entity name, so we simply extract it from "
+#~ "there\n"
+#~ "        // if this represents one of our proxies; otherwise, we return "
+#~ "null\n"
+#~ "        if ( Proxy.isProxyClass( object.getClass() ) ) {\n"
+#~ "            InvocationHandler handler = Proxy.getInvocationHandler"
+#~ "( object );\n"
+#~ "            if ( DataProxyHandler.class.isAssignableFrom( handler.getClass"
+#~ "() ) ) {\n"
+#~ "                DataProxyHandler myHandler = ( DataProxyHandler ) "
+#~ "handler;\n"
+#~ "                return myHandler.getEntityName();\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "        return null;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    // various other utility methods ....\n"
+#~ "\n"
+#~ "}\n"
+#~ "\n"
+#~ "/**\n"
+#~ " * The EntityNameResolver implementation.\n"
+#~ " * IMPL NOTE : An EntityNameResolver really defines a strategy for how "
+#~ "entity names should be\n"
+#~ " * resolved.  Since this particular impl can handle resolution for all of "
+#~ "our entities we want to\n"
+#~ " * take advantage of the fact that SessionFactoryImpl keeps these in a "
+#~ "Set so that we only ever\n"
+#~ " * have one instance registered.  Why?  Well, when it comes time to "
+#~ "resolve an entity name,\n"
+#~ " * Hibernate must iterate over all the registered resolvers.  So keeping "
+#~ "that number down\n"
+#~ " * helps that process be as speedy as possible.  Hence the equals and "
+#~ "hashCode impls\n"
+#~ " */\n"
+#~ "public class MyEntityNameResolver implements EntityNameResolver {\n"
+#~ "    public static final MyEntityNameResolver INSTANCE = new "
+#~ "MyEntityNameResolver();\n"
+#~ "\n"
+#~ "    public String resolveEntityName(Object entity) {\n"
+#~ "        return ProxyHelper.extractEntityName( entity );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public boolean equals(Object obj) {\n"
+#~ "        return getClass().equals( obj.getClass() );\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public int hashCode() {\n"
+#~ "        return getClass().hashCode();\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ "public class MyEntityTuplizer extends PojoEntityTuplizer {\n"
+#~ "        public MyEntityTuplizer(EntityMetamodel entityMetamodel, "
+#~ "PersistentClass mappedEntity) {\n"
+#~ "                super( entityMetamodel, mappedEntity );\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        public EntityNameResolver[] getEntityNameResolvers() {\n"
+#~ "                return new EntityNameResolver[] { MyEntityNameResolver."
+#~ "INSTANCE };\n"
+#~ "        }\n"
+#~ "\n"
+#~ "    public String determineConcreteSubclassEntityName(Object "
+#~ "entityInstance, SessionFactoryImplementor factory) {\n"
+#~ "        String entityName = ProxyHelper.extractEntityName"
+#~ "( entityInstance );\n"
+#~ "        if ( entityName == null ) {\n"
+#~ "            entityName = super.determineConcreteSubclassEntityName"
+#~ "( entityInstance, factory );\n"
+#~ "        }\n"
+#~ "        return entityName;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    ...\n"
+#~ "}"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/portability.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/portability.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/portability.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,334 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-16 10:10+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: portability.xml:31
+#, no-c-format
+msgid "Database Portability Considerations"
+msgstr "数据库移植性考量"
+
+#. Tag: title
+#: portability.xml:34
+#, no-c-format
+msgid "Portability Basics"
+msgstr "移植性基础"
+
+#. Tag: para
+#: portability.xml:36
+#, no-c-format
+msgid ""
+"One of the selling points of Hibernate (and really Object/Relational Mapping "
+"as a whole) is the notion of database portability. This could mean an "
+"internal IT user migrating from one database vendor to another, or it could "
+"mean a framework or deployable application consuming Hibernate to "
+"simultaneously target multiple database products by their users. Regardless "
+"of the exact scenario, the basic idea is that you want Hibernate to help you "
+"run against any number of databases without changes to your code, and "
+"ideally without any changes to the mapping metadata."
+msgstr ""
+"Hibernate(实际上是整个 Object/Relational Mapping)的一个卖点是数据库的移植"
+"性。这意味着内部的 IT 用户可以改变数据库供应商,或者可部署的应用程序/框架使"
+"用 Hibernate 来同时使用多个数据库产品。不考虑具体的应用情景,这里的基本概念"
+"是 Hibernate 可帮助你运行多种数据库而无需修改你的代码,理想情况下甚至不用修改"
+"映射元数据。"
+
+#. Tag: title
+#: portability.xml:47
+#, no-c-format
+msgid "Dialect"
+msgstr "Dialect"
+
+#. Tag: para
+#: portability.xml:49
+#, no-c-format
+msgid ""
+"The first line of portability for Hibernate is the dialect, which is a "
+"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
+"contract. A dialect encapsulates all the differences in how Hibernate must "
+"communicate with a particular database to accomplish some task like getting "
+"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
+"range of dialects for many of the most popular databases. If you find that "
+"your particular database is not among them, it is not terribly difficult to "
+"write your own."
+msgstr ""
+"Hibernate 的移植性的首要问题是方言(dialect),也就是 <classname>org."
+"hibernate.dialect.Dialect</classname> 合约的具体实例。方言封装了 Hibernate 和"
+"特定数据库通讯以完成某些任务如获取序列值或构建 SELECT 查询等的所有差异。"
+"Hibernate 捆绑了用于许多最常用的数据库的方言。如果你发现自己使用的数据库不在"
+"其中,编写自定义的方言也不是很困难的事情。"
+
+#. Tag: title
+#: portability.xml:60
+#, no-c-format
+msgid "Dialect resolution"
+msgstr "方言的使用"
+
+#. Tag: para
+#: portability.xml:62
+#, no-c-format
+msgid ""
+"Originally, Hibernate would always require that users specify which dialect "
+"to use. In the case of users looking to simultaneously target multiple "
+"databases with their build that was problematic. Generally this required "
+"their users to configure the Hibernate dialect or defining their own method "
+"of setting that value."
+msgstr ""
+"最开始,Hibernate 总是要求用户指定所使用的方言(dialect)。在用户希望同时使用"
+"多个数据库时就会出现问题。通常这要求用户配置 Hibernate 方言或者定义自己设置这"
+"个值的方法。"
+
+#. Tag: para
+#: portability.xml:69
+#, no-c-format
+msgid ""
+"Starting with version 3.2, Hibernate introduced the notion of automatically "
+"detecting the dialect to use based on the <interfacename>java.sql."
+"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
+"Connection</interfacename> to that database. This was much better, expect "
+"that this resolution was limited to databases Hibernate know about ahead of "
+"time and was in no way configurable or overrideable."
+msgstr ""
+"从版本 3.2 开始,Hibernate 引入了方言的自动检测,它基于从该数据库的 "
+"<interfacename>java.sql.Connection</interfacename> 上获得的 "
+"<interfacename>java.sql.DatabaseMetaData</interfacename>。这是一个更好的方"
+"案,但它局限于 Hibernate 已知的数据库且无法进行配置和覆盖。"
+
+#. Tag: para
+#: portability.xml:77
+#, fuzzy, no-c-format
+msgid ""
+"Starting with version 3.3, Hibernate has a fare more powerful way to "
+"automatically determine which dialect to should be used by relying on a "
+"series of delegates which implement the <interfacename>org.hibernate.dialect."
+"resolver.DialectResolver</interfacename> which defines only a single method:"
+"<programlisting role=\"JAVA\"><![CDATA[public Dialect resolveDialect"
+"(DatabaseMetaData metaData) throws JDBCConnectionException]]></"
+"programlisting>. The basic contract here is that if the resolver "
+"'understands' the given database metadata then it returns the corresponding "
+"Dialect; if not it returns null and the process continues to the next "
+"resolver. The signature also identifies <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname> as possibly being thrown. "
+"A JDBCConnectionException here is interpreted to imply a \"non transient"
+"\" (aka non-recoverable) connection problem and is used to indicate an "
+"immediate stop to resolution attempts. All other exceptions result in a "
+"warning and continuing on to the next resolver."
+msgstr ""
+"从版本 3.3 开始,Hibernate 有了更为强大的自动决定应该使用哪个方言的方法,这根"
+"据一系列实现 <interfacename>org.hibernate.dialect.resolver.DialectResolver</"
+"interfacename> 接口的代理,它们只定义一个方法:<programlisting role=\"JAVA"
+"\">public Dialect resolveDialect(DatabaseMetaData metaData) throws "
+"JDBCConnectionException</programlisting>。这里的基本合约是如果解析者"
+"(resolver)“理解”给点数据库的元数据并返回对应的方言;否则返回 null 并使用下"
+"一个解析者。这个签名也指定可能抛出的异常 <exceptionname>org.hibernate."
+"exception.JDBCConnectionException</exceptionname>。这里的 "
+"JDBCConnectionException 被认为是“非瞬时的”(也就是不可恢复的)连接问题且指示"
+"立即终止解析。所有其他的异常都导致警告发出并使用下一个解析者。\""
+
+#. Tag: para
+#: portability.xml:90
+#, no-c-format
+msgid ""
+"The cool part about these resolvers is that users can also register their "
+"own custom resolvers which will be processed ahead of the built-in Hibernate "
+"ones. This might be useful in a number of different situations: it allows "
+"easy integration for auto-detection of dialects beyond those shipped with "
+"HIbernate itself; it allows you to specify to use a custom dialect when a "
+"particular database is recognized; etc. To register one or more resolvers, "
+"simply specify them (seperated by commas, tabs or spaces) using the "
+"'hibernate.dialect_resolvers' configuration setting (see the "
+"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
+"cfg.Environment</classname>)."
+msgstr ""
+"这些解析者最棒的功能是用户也可以注册自定义的解析者,它们将在内置的解析者之前"
+"被调用。在许多情况下这可能很有用:它可以轻易地集成内置方言之外的方言的自动检"
+"测;它让你可以使用自定义的方言等。要注册一个或多个解析者,只要用 'hibernate."
+"dialect_resolvers' 配置设置指定它们(由逗号、制表符或空格隔开)就可以了(请参"
+"考 <classname>org.hibernate.cfg.Environment</classname> 上的 "
+"<constant>DIALECT_RESOLVERS</constant>)。"
+
+#. Tag: title
+#: portability.xml:103
+#, no-c-format
+msgid "Identifier generation"
+msgstr "标识符的生成"
+
+#. Tag: para
+#: portability.xml:105
+#, fuzzy, no-c-format
+msgid ""
+"When considering portability between databases, another important decision "
+"is selecting the identifier generation stratagy you want to use. Originally "
+"Hibernate provided the <emphasis>native</emphasis> generator for this "
+"purpose, which was intended to select between a <emphasis>sequence</"
+"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
+"strategy depending on the capability of the underlying database. However, an "
+"insidious implication of this approach comes about when targtetting some "
+"databases which support <emphasis>identity</emphasis> generation and some "
+"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
+"definition of an IDENTITY (or auto-increment) column to manage the "
+"identifier value; it is what is known as a post-insert generation strategy "
+"becauase the insert must actually happen before we can know the identifier "
+"value. Because Hibernate relies on this identifier value to uniquely "
+"reference entities within a persistence context it must then issue the "
+"insert immediately when the users requests the entitiy be associated with "
+"the session (like via save() e.g.) regardless of current transactional "
+"semantics. <note> <para> Hibernate was changed slightly once the implication "
+"of this was better understood so that the insert is delayed in cases where "
+"that is feasible. </para> </note> The underlying issue is that the actual "
+"semanctics of the application itself changes in these cases."
+msgstr ""
+"当考虑数据库的移植性时,另外一个重要的考量是选择标识符生成策略。Hibernate 原"
+"先提供的 <emphasis>native</emphasis> 生成器的目的是根据底层数据库的能力在 "
+"<emphasis>sequence</emphasis>、<emphasis>identity</emphasis> 或 "
+"<emphasis>table</emphasis> 策略间进行选择。然而,这个方法一个潜在的问题是有些"
+"数据库支持<emphasis>标识符(identity)</emphasis>生成而有些则不支持。"
+"<emphasis>标识符(identity)</emphasis> 生成依赖于管理标识符值的 IDENTITY"
+"(或 auto-increment)字段的 SQL 定义。它也成为 post-insert 生成策略,因为 "
+"insert 必须在知道标识符值后才能实际发生。因为 Hibernate 依赖于这个标识符值来"
+"唯一地引用持久性上下文里的实体,当用户请求和会话相关联的实体时(如通过 save"
+"()),它必须立即执行 insert  语句而不管当前的事务性语义。"
+
+#. Tag: para
+#: portability.xml:130
+#, no-c-format
+msgid ""
+"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
+"targetting portability in a much different way. <note> <para> There are "
+"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
+"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
+"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
+"listitem> </itemizedlist> </para> </note> The idea behind these generators "
+"is to port the actual semantics of the identifer value generation to the "
+"different databases. For example, the <classname>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
+"databases which do not support sequences by using a table."
+msgstr ""
+
+#. Tag: title
+#: portability.xml:159
+#, no-c-format
+msgid "Database functions"
+msgstr "数据库函数"
+
+#. Tag: para
+#: portability.xml:162
+#, no-c-format
+msgid ""
+"This is an area in Hibernate in need of improvement. In terms of portability "
+"concerns, this function handling currently works pretty well from HQL; "
+"however, it is quite lacking in all other aspects."
+msgstr ""
+"这是 Hibernate 需要提高的一个领域。从可移植性来说,这个功能可以很好地处理 "
+"HQL 的内容,但在其他方面就有所欠缺。"
+
+#. Tag: para
+#: portability.xml:169
+#, no-c-format
+msgid ""
+"SQL functions can be referenced in many ways by users. However, not all "
+"databases support the same set of functions. Hibernate, provides a means of "
+"mapping a <emphasis>logical</emphasis> function name to a delegate which "
+"knows how to render that particular function, perhaps even using a totally "
+"different physical function call."
+msgstr ""
+"用户可以以多种方式引用 SQL 函数。然而,不是所有的数据库都支持相同的函数集。"
+"Hibernate 提供了一种映射<emphasis>逻辑</emphasis>函数名到代理的方法,这个代理"
+"知道如何解析特定的函数,甚至可能使用完全不同的物理函数调用。 "
+
+#. Tag: para
+#: portability.xml:175
+#, no-c-format
+msgid ""
+"Technically this function registration is handled through the <classname>org."
+"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
+"intended to allow users to provide custom function definitions without "
+"having to provide a custom dialect. This specific behavior is not fully "
+"completed as of yet."
+msgstr ""
+"从技术上来讲,这个函数注册是通过 <classname>org.hibernate.dialect.function."
+"SQLFunctionRegistry</classname> 类进行处理的,它的目的是允许用户提供自定义的"
+"函数定义而无需提供自定义的方言。这种特殊的行为目前还未全部开发完毕。"
+
+#. Tag: para
+#: portability.xml:182
+#, no-c-format
+msgid ""
+"It is sort of implemented such that users can programatically register "
+"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
+"and those functions will be recognized for HQL."
+msgstr ""
+"其中一些功能已经实现,如用户可以在程序里用 <classname>org.hibernate.cfg."
+"Configuration</classname> 注册函数且这些函数可被 HQL 识别。"
+
+#. Tag: title
+#: portability.xml:192
+#, no-c-format
+msgid "Type mappings"
+msgstr "类型映射"
+
+#. Tag: para
+#: portability.xml:194
+#, no-c-format
+msgid "This section scheduled for completion at a later date..."
+msgstr "本节内容仍未完成..."
+
+#~ msgid ""
+#~ "Hibernate was changed slightly once the implication of this was better "
+#~ "understood so that the insert is delayed in cases where that is feasible."
+#~ msgstr "Hibernate 已经进行了轻微改进,所以在可行时这种插入会被延迟。"
+
+#~ msgid ""
+#~ "The underlying issue is that the actual semanctics of the application "
+#~ "itself changes in these cases."
+#~ msgstr "底层的问题是这些例子里应用程序自身的实际模式的改变。"
+
+#~ msgid ""
+#~ "Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
+#~ "\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier "
+#~ "generators targetting portability in a much different way."
+#~ msgstr ""
+#~ "从 3.2.3 版本开始,Hibernate 带有一套 <ulink url=\"http://in.relation."
+#~ "to/2082.lace\">enhanced</ulink> 标识符生成器,它以很不同的方式实现移植性。"
+
+#~ msgid ""
+#~ "There are specifically 2 bundled <emphasis>enhanced</emphasis>generators:"
+#~ msgstr "特别是两个捆绑的 <emphasis>enhanced</emphasis> 生成器:"
+
+#~ msgid ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+#~ msgstr ""
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname>"
+
+#~ msgid "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+#~ msgstr "<classname>org.hibernate.id.enhanced.TableGenerator</classname>"
+
+#~ msgid ""
+#~ "The idea behind these generators is to port the actual semantics of the "
+#~ "identifer value generation to the different databases. For example, the "
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> "
+#~ "mimics the behavior of a sequence on databases which do not support "
+#~ "sequences by using a table."
+#~ msgstr ""
+#~ "这些生成器背后的概念是把标识符值生成的实际情景移植到不同的数据库里。例如,"
+#~ "<classname>org.hibernate.id.enhanced.SequenceStyleGenerator</classname> 通"
+#~ "过使用表来模拟不支持序列(sequences)的数据库上的序列行为。"
+
+#~ msgid ""
+#~ "This is a new area in Hibernate and as such it is not as mature as the "
+#~ "overall Hibernate experience."
+#~ msgstr "这是 Hibernate 的一个新的领域,暂时还不如 Hibernate 总体那么成熟。"

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/preface.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/preface.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/preface.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,96 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 10:12+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Preface"
+msgstr "前言"
+
+#. Tag: para
+#, no-c-format
+msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an Object/Relational Mapping tool for Java environments. The term Object/Relational Mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
+msgstr "在今日的企业环境中,把面向对象的软件和关系型数据库一起使用可能是相当麻烦和浪费时间的。Hibernate 是一个面向 Java 环境的对象/关系型数据库映射工具。对象/关系型数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于 SQL 的关系模型数据结构中去。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities. It can also significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
+msgstr "Hibernate 不仅管理 Java 类到数据库表的映射(包括 Java 数据类型到 SQL 数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时对人工使用 SQL 和 JDBC 处理数据的时间。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
+msgstr "Hibernate 的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的 95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate 可能不是最好的解决方案;对于那些在基于 Java 的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate 是最有用的。不管怎样,Hibernate 一定可以帮助你消除或者包装那些针对特定厂商的 SQL 代码,而且帮助你结果集从表格式的表示形式转换到一系列的对象中去。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
+msgstr "如果你对 Hibernate 和对象/关系型数据库映射还是个新手,甚至对 Java 也不熟悉,请按照下面的步骤来学习。"
+
+#. Tag: para
+#, no-c-format
+msgid "Read <xref linkend=\"tutorial\" /> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr "阅读 <xref linkend=\"tutorial\"/>,这是一篇包含详细的逐步知道的指南。本指南的源代码包含在发行包里,你可以在 <literal>doc/reference/tutorial/</literal> 目录下找到。"
+
+#. Tag: para
+#, no-c-format
+msgid "Read <xref linkend=\"architecture\" /> to understand the environments where Hibernate can be used."
+msgstr "阅读 <xref linkend=\"architecture\"/> 来理解 Hibernate 可以使用的环境。"
+
+#. Tag: para
+#, no-c-format
+msgid "View the <literal>eg/</literal> directory in the Hibernate distribution. It contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr "查看 Hibernate 发行包中的 <literal>eg/</literal> 目录,里面有个一简单的独立运行的程序。把你的 JDBC 驱动复制到 <literal>lib/</literal> 目录并修改一下 <literal>etc/hibernate.properties</literal>,指定数据库的信息。然后进入命令行,切换到发行包的目录,输入 <literal>ant eg</literal>(使用 Ant),或者在 Windows 系统下使用 <literal>build eg</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Use this reference documentation as your primary source of information. Consider reading <biblioref linkend=\"biblio-JPwH\"></biblioref> if you need more help with application design, or if you prefer a step-by-step tutorial. Also visit <ulink url=\"http://caveatemptor.hibernate.org\" /> and download the example application from <biblioref linkend=\"biblio-JPwH\"></biblioref>."
+msgstr "把这份文档作为你学习的主要信息来源。如果你需要应用程序设计方面的帮助或者你希望有一个按部就班的指南,你可以考虑阅读 <biblioref linkend=\"biblio-JPwH\"></biblioref> 。你也可以访问 <ulink url=\"http://caveatemptor.hibernate.org\" /> 并从 <biblioref linkend=\"biblio-JPwH\"></biblioref> 下载示例程序。"
+
+#. Tag: para
+#, no-c-format
+msgid "FAQs are answered on the Hibernate website."
+msgstr "在 Hibernate 网站上可以找到问题和解答(FAQ)。"
+
+#. Tag: para
+#, no-c-format
+msgid "Links to third party demos, examples, and tutorials are maintained on the Hibernate website."
+msgstr "在 Hibernate 网站上还有第三方的演示、示例和教程的链接。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
+msgstr "Hibernate 网站的社区是讨论关于设计模式以及很多整合方案(Tomcat、JBoss AS、Struts、EJB 等)的好地方。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue tracking system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
+msgstr "如果你有任何问题,请使用 Hibernate 网站上链接的用户论坛。我们也提供一个 JIRA 问题追踪系统,来搜集 bug 报告和新的功能请求。如果对开发 Hibernate 有兴趣,请加入开发者的邮件列表。如果你对翻译本文档感兴趣,请通过开发者的邮件列表来联系我们。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
+msgstr "商业开发、产品支持和 Hibernate 培训可以通过 JBoss Inc. 获得(请查阅: http://www.hibernate.org/SupportTraining/)。Hibernate 是一个专业的开源项目,也是 JBoss 企业级中间件系统(JBoss Enterprise Middleware System,JEMS)里的一个核心组件。  "
+
+#~ msgid "Feedback"
+#~ msgstr "反馈"
+#~ msgid ""
+#~ "Use <ulink url=\"http://opensource.atlassian.com/projects/hibernate"
+#~ "\">Hibernate JIRA</ulink> to report errors or request enhacements to this "
+#~ "documentation."
+#~ msgstr ""
+#~ "用 <ulink url=\"http://opensource.atlassian.com/projects/hibernate"
+#~ "\">Hibernate JIRA</ulink> 来报告错误或改进本文档。"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_criteria.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_criteria.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_criteria.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,753 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 09:53+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria Queries"
+msgstr "条件查询(Criteria Queries)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate features an intuitive, extensible criteria query API."
+msgstr "具有一个直观的、可扩展的条件查询 API 是 Hibernate 的特色。"
+
+#. Tag: title
+#, no-c-format
+msgid "Creating a <literal>Criteria</literal> instance"
+msgstr "创建一个 <literal>Criteria</literal> 实例"
+
+#. Tag: para
+#, no-c-format
+msgid "The interface <literal>org.hibernate.Criteria</literal> represents a query against a particular persistent class. The <literal>Session</literal> is a factory for <literal>Criteria</literal> instances."
+msgstr "<literal>org.hibernate.Criteria</literal >接口表示特定持久类的一个查询。<literal>Session</literal> 是 <literal>Criteria</literal> 实例的工厂。"
+
+#. Tag: title
+#, no-c-format
+msgid "Narrowing the result set"
+msgstr "限制结果集内容"
+
+#. Tag: para
+#, no-c-format
+msgid "An individual query criterion is an instance of the interface <literal>org.hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate.criterion.Restrictions</literal> defines factory methods for obtaining certain built-in <literal>Criterion</literal> types."
+msgstr "一个单独的查询条件是 <literal>org.hibernate.criterion.Criterion</literal> 接口的一个实例。<literal>org.hibernate.criterion.Restrictions</literal> 类定义了获得某些内置 <literal>Criterion</literal> 类型的工厂方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "Restrictions can be grouped logically."
+msgstr "约束可以按逻辑分组。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There are a range of built-in criterion types (<literal>Restrictions</literal> subclasses). One of the most useful allows you to specify SQL directly."
+msgstr "Hibernate 提供了相当多的内置 criterion 类型(<literal>Restrictions</literal> 子类),但是尤其有用的是可以允许你直接使用 SQL。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>{alias}</literal> placeholder with be replaced by the row alias of the queried entity."
+msgstr "<literal>{alias}</literal> 占位符应当被替换为被查询实体的列别名。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also obtain a criterion from a <literal>Property</literal> instance. You can create a <literal>Property</literal> by calling <literal>Property.forName()</literal>:"
+msgstr "<literal>Property</literal> 实例是获得一个条件的另外一种途径。你可以通过调用 <literal>Property.forName()</literal> 创建一个 <literal>Property</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Ordering the results"
+msgstr "结果集排序"
+
+#. Tag: para
+#, no-c-format
+msgid "You can order the results using <literal>org.hibernate.criterion.Order</literal>."
+msgstr "你可以使用 <literal>org.hibernate.criterion.Order</literal> 来为查询结果排序。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Associations"
+msgstr "关联"
+
+#. Tag: para
+#, no-c-format
+msgid "By navigating associations using <literal>createCriteria()</literal> you can specify constraints upon related entities:"
+msgstr "通过使用 <literal>createCriteria()</literal> 对关联进行导航,你可以指定相关实体的约束。"
+
+#. Tag: para
+#, no-c-format
+msgid "The second <literal>createCriteria()</literal> returns a new instance of <literal>Criteria</literal> that refers to the elements of the <literal>kittens</literal> collection."
+msgstr "注意第二个 <literal>createCriteria()</literal> 返回一个新的 <literal>Criteria</literal> 实例,该实例引用 <literal>kittens</literal> 集合中的元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There is also an alternate form that is useful in certain circumstances:"
+msgstr "接下来,替换形态在某些情况下也是很有用的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "(<literal>createAlias()</literal> does not create a new instance of <literal>Criteria</literal>.)"
+msgstr "(<literal>createAlias()</literal> 并不创建一个新的 <literal>Criteria</literal> 实例。)"
+
+#. Tag: para
+#, no-c-format
+msgid "The kittens collections held by the <literal>Cat</literal> instances returned by the previous two queries are <emphasis>not</emphasis> pre-filtered by the criteria. If you want to retrieve just the kittens that match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr "<literal>Cat</literal> 实例所保存的之前两次查询所返回的 kittens 集合是 <emphasis>没有</emphasis>被条件预过滤的。如果你希望只获得符合条件的 kittens,你必须使用 <literal>ResultTransformer</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Additionally you may manipulate the result set using a left outer join:"
+msgstr "此外,你可以用一个 left outer join 来操纵结果集:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will return all of the <literal>Cat</literal>s with a mate whose name starts with \"good\" ordered by their mate's age, and all cats who do not have a mate. This is useful when there is a need to order or limit in the database prior to returning complex/large result sets, and removes many instances where multiple queries would have to be performed and the results unioned by java in memory."
+msgstr "这将返回配偶的名字以 \"good\" 起始的所有 <literal>Cat</literal>,并根据其配偶的年龄进行排序。当需要在返回复杂/大型结果集前进行排序或限制、在多个查询必须执行且结果通过 Java 在内存里组合从而删除许多实例时,这很有用。"
+
+#. Tag: para
+#, no-c-format
+msgid "Without this feature, first all of the cats without a mate would need to be loaded in one query."
+msgstr "如果没有这个功能,那么没有配偶的猫就需要在一次查询里进行加载。"
+
+#. Tag: para
+#, no-c-format
+msgid "A second query would need to retreive the cats with mates who's name started with \"good\" sorted by the mates age."
+msgstr "第二个查询将需要获取配偶名以 \"good\" 起始并按照配偶年龄排序的猫。"
+
+#. Tag: para
+#, no-c-format
+msgid "Thirdly, in memory; the lists would need to be joined manually."
+msgstr "第三点,列表需要在内存中进行手工联合。"
+
+#. Tag: title
+#, no-c-format
+msgid "Dynamic association fetching"
+msgstr "动态关联抓取"
+
+#. Tag: para
+#, no-c-format
+msgid "You can specify association fetching semantics at runtime using <literal>setFetchMode()</literal>."
+msgstr "你可以使用 <literal>setFetchMode()</literal> 在运行时定义动态关联抓取的语义。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This query will fetch both <literal>mate</literal> and <literal>kittens</literal> by outer join. See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr "这个查询可以通过外连接抓取 <literal>mate</literal> 和 <literal>kittens</literal>。查看 <xref linkend=\"performance-fetching\" /> 可以获得更多信息。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Example queries"
+msgstr "查询示例"
+
+#. Tag: para
+#, no-c-format
+msgid "The class <literal>org.hibernate.criterion.Example</literal> allows you to construct a query criterion from a given instance."
+msgstr "<literal>org.hibernate.criterion.Example</literal> 类允许你通过一个给定实例构建一个条件查询。"
+
+#. Tag: para
+#, no-c-format
+msgid "Version properties, identifiers and associations are ignored. By default, null valued properties are excluded."
+msgstr "版本属性、标识符和关联被忽略。默认情况下值为 null 的属性将被排除。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can adjust how the <literal>Example</literal> is applied."
+msgstr "你可以自行调整 <literal>Example</literal> 使之更实用。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use examples to place criteria upon associated objects."
+msgstr "你甚至可以使用 examples 在关联对象上放置条件。"
+
+#. Tag: title
+#, no-c-format
+msgid "Projections, aggregation and grouping"
+msgstr "投影(Projections)、聚合(aggregation)和分组(grouping)"
+
+#. Tag: para
+#, no-c-format
+msgid "The class <literal>org.hibernate.criterion.Projections</literal> is a factory for <literal>Projection</literal> instances. You can apply a projection to a query by calling <literal>setProjection()</literal>."
+msgstr "<literal>org.hibernate.criterion.Projections</literal> 是 <literal>Projection</literal> 的实例工厂。我们通过调用 <literal>setProjection()</literal> 应用投影到一个查询。 "
+
+#. Tag: para
+#, no-c-format
+msgid "There is no explicit \"group by\" necessary in a criteria query. Certain projection types are defined to be <emphasis>grouping projections</emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr "在一个条件查询中没有必要显式的使用 \"group by\" 。某些投影类型就是被定义为<emphasis>分组投影</emphasis>,他们也出现在 SQL 的 <literal>group by</literal> 子句中。"
+
+#. Tag: para
+#, no-c-format
+msgid "An alias can be assigned to a projection so that the projected value can be referred to in restrictions or orderings. Here are two different ways to do this:"
+msgstr "你可以选择把一个别名指派给一个投影,这样可以使投影值被约束或排序所引用。下面是两种不同的实现方式: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>alias()</literal> and <literal>as()</literal> methods simply wrap a projection instance in another, aliased, instance of <literal>Projection</literal>. As a shortcut, you can assign an alias when you add the projection to a projection list:"
+msgstr "<literal>alias()</literal> 和 <literal>as()</literal> 方法简便的将一个投影实例包装到另外一个 别名的 <literal>Projection</literal> 实例中。简而言之,当你添加一个投影到一个投影列表中时你可以为它指定一个别名:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also use <literal>Property.forName()</literal> to express projections:"
+msgstr "你也可以使用 <literal>Property.forName()</literal> 来表示投影:"
+
+#. Tag: title
+#, no-c-format
+msgid "Detached queries and subqueries"
+msgstr "离线(detached)查询和子查询"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>DetachedCriteria</literal> class allows you to create a query outside the scope of a session and then execute it using an arbitrary <literal>Session</literal>."
+msgstr "<literal>DetachedCriteria</literal> 类使你在一个 session 范围之外创建一个查询,并且可以使用任意的 <literal>Session</literal> 来执行它。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>DetachedCriteria</literal> can also be used to express a subquery. Criterion instances involving subqueries can be obtained via <literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr "<literal>DetachedCriteria</literal> 也可以用以表示子查询。条件实例包含子查询可以通过  <literal>Subqueries</literal> 或者 <literal>Property</literal> 获得。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Correlated subqueries are also possible:"
+msgstr "甚至相互关联的子查询也是有可能的: "
+
+#. Tag: title
+#, no-c-format
+msgid "Queries by natural identifier"
+msgstr "根据自然标识查询(Queries by natural identifier)"
+
+#. Tag: para
+#, no-c-format
+msgid "For most queries, including criteria queries, the query cache is not efficient because query cache invalidation occurs too frequently. However, there is a special kind of query where you can optimize the cache invalidation algorithm: lookups by a constant natural key. In some applications, this kind of query occurs frequently. The criteria API provides special provision for this use case."
+msgstr "对大多数查询,包括条件查询而言,因为查询缓存的失效(invalidation)发生得太频繁,查询缓存不是非常高效。然而,有一种特别的查询,可以通过不变的自然键优化缓存的失效算法。在某些应用中,这种类型的查询比较常见。条件查询 API 对这种用例提供了特别规约。 "
+
+#. Tag: para
+#, no-c-format
+msgid "First, map the natural key of your entity using <literal>&lt;natural-id&gt;</literal> and enable use of the second-level cache."
+msgstr "首先,你应该对你的 entity 使用 <literal>&lt;natural-id&gt;</literal> 来映射自然键,然后打开第二级缓存。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This functionality is not intended for use with entities with <emphasis>mutable</emphasis> natural keys."
+msgstr "注意,此功能对具有<emphasis>mutable</emphasis>自然键的 entity 并不适用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Once you have enabled the Hibernate query cache, the <literal>Restrictions.naturalId()</literal> allows you to make use of the more efficient cache algorithm."
+msgstr "现在,我们可以用 <literal>Restrictions.naturalId()</literal> 来使用更加高效的缓存算法。 "
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "Criteria crit = sess.createCriteria(Cat.class);\n"
+#~ "crit.setMaxResults(50);\n"
+#~ "List cats = crit.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .add( Restrictions.or(\n"
+#~ "        Restrictions.eq( \"age\", new Integer(0) ),\n"
+#~ "        Restrictions.isNull(\"age\")\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", "
+#~ "\"Pk\" } ) )\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( Restrictions.isNull(\"age\") )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+#~ "        .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz%\", Hibernate.STRING) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)"
+#~ "\", \"Fritz&#37;\", \n"
+#~ "        Hibernate.STRING) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Property age = Property.forName(\"age\");\n"
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.disjunction()\n"
+#~ "        .add( age.isNull() )\n"
+#~ "        .add( age.eq( new Integer(0) ) )\n"
+#~ "        .add( age.eq( new Integer(1) ) )\n"
+#~ "        .add( age.eq( new Integer(2) ) )\n"
+#~ "    ) )\n"
+#~ "    .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi"
+#~ "\", \"Pk\" } ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\")\n"
+#~ "    .addOrder( Order.asc(\"name\") )\n"
+#~ "    .addOrder( Order.desc(\"age\") )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F%\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"name\").like(\"F&#37;\") )\n"
+#~ "    .addOrder( Property.forName(\"name\").asc() )\n"
+#~ "    .addOrder( Property.forName(\"age\").desc() )\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F%\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .createCriteria(\"kittens\")\n"
+#~ "        .add( Restrictions.like(\"name\", \"F&#37;\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createAlias(\"kittens\", \"kt\")\n"
+#~ "    .createAlias(\"mate\", \"mt\")\n"
+#~ "    .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F%\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .createCriteria(\"kittens\", \"kt\")\n"
+#~ "        .add( Restrictions.eq(\"name\", \"F&#37;\") )\n"
+#~ "    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+#~ "    .list();\n"
+#~ "Iterator iter = cats.iterator();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Map map = (Map) iter.next();\n"
+#~ "    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+#~ "    Cat kitten = (Cat) map.get(\"kt\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createCriteria(Cat.class)\n"
+#~ "    .add( Restrictions.like(\"name\", \"Fritz&#37;\") )\n"
+#~ "    .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+#~ "    .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Cat cat = new Cat();\n"
+#~ "cat.setSex('F');\n"
+#~ "cat.setColor(Color.BLACK);\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "Example example = Example.create(cat)\n"
+#~ "    .excludeZeroes()           //exclude zero valued properties\n"
+#~ "    .excludeProperty(\"color\")  //exclude the property named \"color\"\n"
+#~ "    .ignoreCase()              //perform case insensitive string "
+#~ "comparisons\n"
+#~ "    .enableLike();             //use like for string comparisons\n"
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add(example)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .add( Example.create(cat) )\n"
+#~ "    .createCriteria(\"mate\")\n"
+#~ "        .add( Example.create( cat.getMate() ) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.rowCount() )\n"
+#~ "    .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount() )\n"
+#~ "        .add( Projections.avg(\"weight\") )\n"
+#~ "        .add( Projections.max(\"weight\") )\n"
+#~ "        .add( Projections.groupProperty(\"color\") )\n"
+#~ "    )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.alias( Projections.groupProperty(\"color"
+#~ "\"), \"colr\" ) )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+#~ "    .addOrder( Order.asc(\"colr\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount(), \"catCountByColor\" )\n"
+#~ "        .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+#~ "        .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+#~ "        .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Domestic.class, \"cat\")\n"
+#~ "    .createAlias(\"kittens\", \"kit\")\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+#~ "        .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.asc(\"catName\") )\n"
+#~ "    .addOrder( Order.asc(\"kitName\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"name\") )\n"
+#~ "    .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List results = session.createCriteria(Cat.class)\n"
+#~ "    .setProjection( Projections.projectionList()\n"
+#~ "        .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+#~ "        .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+#~ "        .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+#~ "        .add( Property.forName(\"color\").group().as(\"color\" )\n"
+#~ "    )\n"
+#~ "    .addOrder( Order.desc(\"catCountByColor\") )\n"
+#~ "    .addOrder( Order.desc(\"avgWeight\") )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .add( Property.forName(\"sex\").eq('F') );\n"
+#~ "    \n"
+#~ "Session session = ....;\n"
+#~ "Transaction txn = session.beginTransaction();\n"
+#~ "List results = query.getExecutableCriteria(session).setMaxResults(100)."
+#~ "list();\n"
+#~ "txn.commit();\n"
+#~ "session.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat."
+#~ "class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeight) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeight) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+#~ "    .setProjection( Property.forName(\"weight\") );\n"
+#~ "session.createCriteria(Cat.class)\n"
+#~ "    .add( Subqueries.geAll(\"weight\", weights) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat."
+#~ "class, \"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "
+#~ "\"cat2\")\n"
+#~ "    .setProjection( Property.forName(\"weight\").avg() )\n"
+#~ "    .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+#~ "session.createCriteria(Cat.class, \"cat\")\n"
+#~ "    .add( Property.forName(\"weight).gt(avgWeightForSex) )\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"User\">\n"
+#~ "    <cache usage=\"read-write\"/>\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <natural-id>\n"
+#~ "        <property name=\"name\"/>\n"
+#~ "        <property name=\"org\"/>\n"
+#~ "    </natural-id>\n"
+#~ "    <property name=\"password\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"User\"&gt;\n"
+#~ "    &lt;cache usage=\"read-write\"/&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;natural-id&gt;\n"
+#~ "        &lt;property name=\"name\"/&gt;\n"
+#~ "        &lt;property name=\"org\"/&gt;\n"
+#~ "    &lt;/natural-id&gt;\n"
+#~ "    &lt;property name=\"password\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();]]>"
+#~ msgstr ""
+#~ "session.createCriteria(User.class)\n"
+#~ "    .add( Restrictions.naturalId()\n"
+#~ "        .set(\"name\", \"gavin\")\n"
+#~ "        .set(\"org\", \"hb\") \n"
+#~ "    ).setCacheable(true)\n"
+#~ "    .uniqueResult();"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_hql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_hql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_hql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1733 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:15\n"
+"PO-Revision-Date: 2010-03-16 10:03+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL: The Hibernate Query Language"
+msgstr "HQL: Hibernate 查询语言"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate uses a powerful query language (HQL) that is similar in appearance to SQL. Compared with SQL, however, HQL is fully object-oriented and understands notions like inheritance, polymorphism and association."
+msgstr "Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr "大小写敏感性问题"
+
+#. Tag: para
+#, no-c-format
+msgid "With the exception of names of Java classes and properties, queries are case-insensitive. 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 "除了 Java 类与属性的名称外,查询语句对大小写并不敏感。 所以 <literal>SeLeCT</literal> 与 <literal>sELEct</literal> 以及 <literal>SELECT</literal> 是相同的,但是 <literal>org.hibernate.eg.FOO</literal> 并不等价于 <literal>org.hibernate.eg.Foo</literal> 并且 <literal>foo.barSet</literal> 也不等价于 <literal>foo.BARSET</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses lowercase HQL keywords. Some users find queries with uppercase keywords more readable, but this convention is unsuitable for queries embedded in Java code."
+msgstr "本手册中的 HQL 关键字将使用小写字母。很多用户发现使用完全大写的关键字会使查询语句的可读性更强,但我们发现,当把查询语句嵌入到 Java 语句中的时候使用大写关键字比较难看。"
+
+#. Tag: title
+#, no-c-format
+msgid "The from clause"
+msgstr "from 子句"
+
+#. Tag: para
+#, no-c-format
+msgid "The simplest possible Hibernate query is of the form:"
+msgstr "Hibernate 中最简单的查询语句的形式如下:"
+
+#. Tag: para
+#, no-c-format
+msgid "This returns all instances of the class <literal>eg.Cat</literal>. You do not usually need to qualify the class name, since <literal>auto-import</literal> is the default. For example:"
+msgstr "该子句简单的返回 <literal>eg.Cat</literal> 类的所有实例。通常我们不需要使用类的全限定名,因为  <literal>auto-import</literal>(自动引入)是缺省的情况。所以我们几乎只使用如下的简单写法: "
+
+#. Tag: para
+#, no-c-format
+msgid "In order to refer to the <literal>Cat</literal> in other parts of the query, you will need to assign an <emphasis>alias</emphasis>. For example:"
+msgstr "为了在这个查询的其他部分里引用 <literal>Cat</literal>,你将需要分配一个<emphasis>别名</emphasis>。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query assigns the alias <literal>cat</literal> to <literal>Cat</literal> instances, so you can use that alias later in the query. The <literal>as</literal> keyword is optional. You could also write:"
+msgstr "这个语句把别名 <literal>cat</literal> 指定给类<literal>Cat</literal> 的实例,这样我们就可以在随后的查询中使用此别名了。关键字 <literal>as</literal> 是可选的,我们也可以这样写: "
+
+#. Tag: para
+#, no-c-format
+msgid "Multiple classes can appear, resulting in a cartesian product or \"cross\" join."
+msgstr "子句中可以同时出现多个类,其查询结果是产生一个笛卡儿积或产生跨表的连接。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is good practice to name query aliases using an initial lowercase as this is consistent with Java naming standards for local variables (e.g. <literal>domesticCat</literal>)."
+msgstr "查询语句中别名的开头部分小写被认为是实践中的好习惯,这样做与 Java 变量的命名标准保持了一致(比如,<literal>domesticCat</literal>)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Associations and joins"
+msgstr "关联(Association)与连接(Join)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also assign aliases to associated entities or to elements of a collection of values using a <literal>join</literal>. For example:"
+msgstr "我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名,这时要使用关键字 <literal>join</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL:"
+msgstr "受支持的连接类型是从 ANSI SQL 中借鉴来的:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>inner join</literal>"
+msgstr "<literal>inner join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>left outer join</literal>"
+msgstr "<literal>left outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>right outer join</literal>"
+msgstr "<literal>right outer join</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>full join</literal> (not usually useful)"
+msgstr "<literal>full join</literal>(全连接,并不常用)"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>inner join</literal>, <literal>left outer join</literal> and <literal>right outer join</literal> constructs may be abbreviated."
+msgstr "语句 <literal>inner join</literal>,<literal>left outer join</literal> 以及 <literal>right outer join</literal> 可以简写。"
+
+#. Tag: para
+#, no-c-format
+msgid "You may supply extra join conditions using the HQL <literal>with</literal> keyword."
+msgstr "通过 HQL 的 <literal>with</literal> 关键字,你可以提供额外的 join 条件。"
+
+#. Tag: para
+#, no-c-format
+msgid "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 outer join and lazy declarations of the mapping file for associations and collections. See <xref linkend=\"performance-fetching\" /> for more information."
+msgstr "还有,一个 \"fetch\" 连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接与延迟声明(lazy declarations)。查看 <xref linkend=\"performance-fetching\" /> 以获得等多的信息。 "
+
+#. Tag: para
+#, 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). The associated objects are also not returned directly in the query results. Instead, they may be accessed via the parent object. The only reason you might need an alias is if you are recursively join fetching a further collection:"
+msgstr "一个 fetch 连接通常不需要被指定别名,因为相关联的对象不应当被用在 <literal>where</literal> 子句(或其它任何子句)中。同时,相关联的对象并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>fetch</literal> construct cannot be used in queries called using <literal>iterate()</literal> (though <literal>scroll()</literal> can be used). <literal>Fetch</literal> should be used together with <literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>, as these operations are based on the result rows which usually contain duplicates for eager collection fetching, hence, the number of rows is not what you would expect. <literal>Fetch</literal> should also not be used together with impromptu <literal>with</literal> condition. It is possible to create a cartesian product by join fetching more than one collection in a query, so take care in this case. Join fetching multiple collection roles can produce unexpected results for bag mappings, so user discretion is advised when formulating queries in this case. Finally, note that <literal>full join fetch</literal> and <literal>right join fetch</literal> are not meaningful."
+msgstr "假若使用 <literal>iterate()</literal> 来调用查询,请注意 <literal>fetch</literal> 构造是不能使用的(<literal>scroll()</literal> 可以使用)。<literal>fetch</literal> 也不应该与 <literal>setMaxResults()</literal> 或 <literal>setFirstResult()</literal> 共用,这是因为这些操作是基于结果集的,而在预先抓取集合类时可能包含重复的数据,也就是说无法预先知道精确的行数。<literal>fetch</literal> 还不能与独立的 <literal>with</literal> 条件一起使用。通过在一次查询中 fetch 多个集合,可以制造出笛卡尔积,因此请多加注意。对 bag 映射来说,同时 join fetch 多个集合角色可能在某些情况下给出并非预期的结果,也请小心。最后注意,使用 <literal>full join fetch</literal> 与 <literal>right join fetch</literal> 是没有意义的。 "
+
+#. Tag: para
+#, 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 in the first query immediately using <literal>fetch all properties</literal>."
+msgstr "如果你使用属性级别的延迟获取(lazy fetching)(这是通过重新编写字节码实现的),可以使用  <literal>fetch all properties</literal> 来强制 Hibernate 立即取得那些原本需要延迟加载的属性(在第一个查询中)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Forms of join syntax"
+msgstr "join 语法的形式"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL supports two forms of association joining: <literal>implicit</literal> and <literal>explicit</literal>."
+msgstr "HQL 支持两种关联 join 的形式:<literal>implicit(隐式)</literal> 与 <literal>explicit(显式)</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The queries shown in the previous section all use the <literal>explicit</literal> form, that is, where the join keyword is explicitly used in the from clause. This is the recommended form."
+msgstr "上一节中给出的查询都是使用 <literal>explicit(显式)</literal>形式的,其中 form 子句中明确给出了 join 关键字。这是建议使用的方式。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>implicit</literal> form does not use the join keyword. Instead, the associations are \"dereferenced\" using dot-notation. <literal>implicit</literal> joins can appear in any of the HQL clauses. <literal>implicit</literal> join result in inner joins in the resulting SQL statement."
+msgstr "<literal>implicit(隐式)</literal>形式不使用 join 关键字。关联使用\"点号\"来进行“引用”。<literal>implicit</literal> join 可以在任何 HQL 子句中出现。<literal>implicit</literal> join 在最终的 SQL 语句中以 inner join 的方式出现。"
+
+#. Tag: title
+#, no-c-format
+msgid "Referring to identifier property"
+msgstr "引用 identifier 属性 "
+
+#. Tag: para
+#, no-c-format
+msgid "There are 2 ways to refer to an entity's identifier property:"
+msgstr "通常有两种方法来引用实体的 identifier 属性: "
+
+#. Tag: para
+#, no-c-format
+msgid "The special property (lowercase) <literal>id</literal> may be used to reference the identifier property of an entity <emphasis>provided that the entity does not define a non-identifier property named id</emphasis>."
+msgstr "特殊属性(lowercase)<literal>id</literal> 可以用来引用实体的 identifier 属性 <emphasis>假设这个实体没有定义用 non-identifier 属性命名的 id</emphasis>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the entity defines a named identifier property, you can use that property name."
+msgstr "如果这个实体定义了 identifier 属性,你可以使用属性名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "References to composite identifier properties follow the same naming rules. If the entity has a non-identifier property named id, the composite identifier property can only be referenced by its defined named. Otherwise, the special <literal>id</literal> property can be used to reference the identifier property."
+msgstr "对组合 identifier 属性的引用遵循相同的命名规则。如果实体有一个 non-identifier 属性命名的 id,这个组合 identifier 属性只能用自己定义的名字来引用;否则,特殊 <literal>id</literal> 属性可以用来引用 identifier 属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Please note that, starting in version 3.2.2, this has changed significantly. In previous versions, <literal>id</literal> <emphasis>always</emphasis> referred to the identifier property regardless of its actual name. A ramification of that decision was that non-identifier properties named <literal>id</literal> could never be referenced in Hibernate queries."
+msgstr "注意:从 3.2.2 版本开始,这已经改变了很多。在前面的版本里,不管实际的名字,<literal>id</literal> <emphasis>总是</emphasis>指向 identifier 属性;而用 non-identifier 属性命名的 <literal>id</literal> 就从来不在 Hibernate 查询里引用。  "
+
+#. Tag: title
+#, no-c-format
+msgid "The select clause"
+msgstr "select 子句"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>select</literal> clause picks which objects and properties to return in the query result set. Consider the following:"
+msgstr "<literal>select</literal> 子句选择将哪些对象与属性返回到查询结果集中。考虑如下情况:"
+
+#. Tag: para
+#, no-c-format
+msgid "The query will select <literal>mate</literal>s of other <literal>Cat</literal>s. You can express this query more compactly as:"
+msgstr "该语句将选择其它 <literal>Cat</literal> 的 <literal>mate</literal>(其他猫的配偶)。实际上,你可以更简洁的用以下的查询语句表达相同的含义: "
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can return properties of any value type including properties of component type:"
+msgstr "查询语句可以返回值为任何类型的属性,包括返回类型为某种组件(Component)的属性: "
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can return multiple objects and/or properties as an array of type <literal>Object[]</literal>:"
+msgstr "查询语句可以返回多个对象和(或)属性,存放在 <literal>Object[]</literal> 队列中, "
+
+#. Tag: para
+#, no-c-format
+msgid "Or as a <literal>List</literal>:"
+msgstr "或存放在一个 <literal>List</literal> 对象中:"
+
+#. Tag: para
+#, no-c-format
+msgid "Or - assuming that the class <literal>Family</literal> has an appropriate constructor - as an actual typesafe Java object:"
+msgstr "假设类 <literal>Family</literal> 有一个合适的构造函数 - 作为实际的类型安全的 Java 对象:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can assign aliases to selected expressions using <literal>as</literal>:"
+msgstr "你可以使用关键字 <literal>as</literal> 给“被选择了的表达式”指派别名: "
+
+#. Tag: para
+#, no-c-format
+msgid "This is most useful when used together with <literal>select new map</literal>:"
+msgstr "这种做法在与子句 <literal>select new map</literal> 一起使用时最有用:"
+
+#. Tag: para
+#, no-c-format
+msgid "This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr "该查询返回了一个 <literal>Map</literal> 的对象,内容是别名与被选择的值组成的名-值映射。"
+
+#. Tag: title
+#, no-c-format
+msgid "Aggregate functions"
+msgstr "聚集函数"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL queries can even return the results of aggregate functions on properties:"
+msgstr "HQL 查询甚至可以返回作用于属性之上的聚集函数的计算结果: "
+
+#. Tag: para
+#, no-c-format
+msgid "The supported aggregate functions are:"
+msgstr "受支持的聚集函数如下: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>avg(...), sum(...), min(...), max(...)</literal>"
+msgstr "<literal>avg(...), sum(...), min(...), max(...)</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(*)</literal>"
+msgstr "<literal>count(*)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>count(...), count(distinct ...), count(all...)</literal>"
+msgstr "<literal>count(...), count(distinct ...), count(all...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "You can use arithmetic operators, concatenation, and recognized SQL functions in the select clause:"
+msgstr "你可以在选择子句中使用数学操作符、连接以及经过验证的 SQL 函数: "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>distinct</literal> and <literal>all</literal> keywords can be used and have the same semantics as in SQL."
+msgstr "关键字 <literal>distinct</literal> 与 <literal>all</literal> 也可以使用,它们具有与 SQL 相同的语义。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr "多态查询"
+
+#. Tag: para
+#, no-c-format
+msgid "A query like:"
+msgstr "一个如下的查询语句:"
+
+#. Tag: para
+#, no-c-format
+msgid "returns instances not only of <literal>Cat</literal>, but also of subclasses like <literal>DomesticCat</literal>. Hibernate queries can name <emphasis>any</emphasis> Java class or interface in the <literal>from</literal> clause. 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 "不仅返回 <literal>Cat</literal> 类的实例,也同时返回子类 <literal>DomesticCat</literal> 的实例。Hibernate 可以在 <literal>from</literal> 子句中指定<emphasis>任何</emphasis> Java 类或接口。查询会返回继承了该类的所有持久化子类的实例或返回声明了该接口的所有持久化类的实例。下面的查询语句返回所有的被持久化的对象: "
+
+#. Tag: para
+#, no-c-format
+msgid "The interface <literal>Named</literal> might be implemented by various persistent classes:"
+msgstr "接口 <literal>Named</literal> 可能被各种各样的持久化类声明:"
+
+#. Tag: para
+#, no-c-format
+msgid "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 cannot call these queries using <literal>Query.scroll()</literal>."
+msgstr "注意,最后的两个查询将需要超过一个的 SQL <literal>SELECT</literal>。这表明 <literal>order by</literal> 子句没有对整个结果集进行正确的排序。(这也说明你不能对这样的查询使用 <literal>Query.scroll()</literal> 方法。)"
+
+#. Tag: title
+#, no-c-format
+msgid "The where clause"
+msgstr "where 子句"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>where</literal> clause allows you to refine the list of instances returned. If no alias exists, you can refer to properties by name:"
+msgstr "<literal>where</literal> 子句允许你将返回的实例列表的范围缩小。如果没有指定别名,你可以使用属性名来直接引用属性: "
+
+#. Tag: para
+#, no-c-format
+msgid "If there is an alias, use a qualified property name:"
+msgstr "如果指派了别名,需要使用完整的属性名:"
+
+#. Tag: para
+#, no-c-format
+msgid "This returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "返回名为(属性 name 等于)'Fritz' 的 <literal>Cat</literal> 类的实例。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following query:"
+msgstr "下面的查询:"
+
+#. Tag: para
+#, no-c-format
+msgid "returns all instances of <literal>Foo</literal> with 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 the following:"
+msgstr "将返回所有满足下面条件的 <literal>Foo</literal> 类的实例: 存在如下的 <literal>bar</literal> 的一个实例,其 <literal>date</literal> 属性等于 <literal>Foo</literal> 的 <literal>startDate</literal> 属性。复合路径表达式使得 <literal>where</literal> 子句非常的强大,考虑如下情况: "
+
+#. Tag: para
+#, no-c-format
+msgid "This query translates to an SQL query with a table (inner) join. For example:"
+msgstr "该查询将被翻译成为一个含有表连接(内连接)的 SQL 查询。如果你打算写像这样的查询语句:"
+
+#. Tag: para
+#, no-c-format
+msgid "would result in a query that would require four table joins in SQL."
+msgstr "在 SQL 中,你为达此目的将需要进行一个四表连接的查询。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>=</literal> operator can be used to compare not only properties, but also instances:"
+msgstr "<literal>=</literal> 运算符不仅可以被用来比较属性的值,也可以用来比较实例: "
+
+#. Tag: para
+#, no-c-format
+msgid "The special property (lowercase) <literal>id</literal> can be used to reference the unique identifier of an object. See <xref linkend=\"queryhql-identifier-property\" /> for more information."
+msgstr "特殊属性(小写)<literal>id</literal> 可以用来表示一个对象的唯一的标识符。详情请参考 <xref linkend=\"queryhql-identifier-property\" />。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The second query is efficient and does not require a table join."
+msgstr "第二个查询是有效的。此时不需要进行表连接。"
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of composite identifiers can also be used. Consider the following example where <literal>Person</literal> has composite identifiers consisting of <literal>country</literal> and <literal>medicareNumber</literal>:"
+msgstr "同样也可以使用复合标识符。比如 <literal>Person</literal> 类有一个复合标识符,它由 <literal>country</literal> 属性与 <literal>medicareNumber</literal> 属性组成:"
+
+#. Tag: para
+#, no-c-format
+msgid "Once again, the second query does not require a table join."
+msgstr "第二个查询也不需要进行表连接。 "
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"queryhql-identifier-property\" /> for more information regarding referencing identifier properties)"
+msgstr "关于引用标识符属性的更多信息,请参考 <xref linkend=\"queryhql-identifier-property\" />。 "
+
+#. Tag: para
+#, no-c-format
+msgid "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."
+msgstr "同样的,特殊属性 <literal>class</literal> 在进行多态持久化的情况下被用来存取一个实例的鉴别值(discriminator value)。一个嵌入到 where 子句中的 Java 类的名字将被转换为该类的鉴别值。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can also use components or composite user types, or properties of said component types. See <xref linkend=\"queryhql-components\" /> for more information."
+msgstr "你也可以使用组件或者复合用户类型,以及组件类型的属性。详情请参考 <xref linkend=\"queryhql-components\" />。 "
+
+#. Tag: para
+#, no-c-format
+msgid "An \"any\" type has the special properties <literal>id</literal> and <literal>class</literal> that allows you to express a join in the following way (where <literal>AuditLog.item</literal> is a property mapped with <literal>&lt;any&gt;</literal>):"
+msgstr "一个“任意”类型有两个特殊的属性 <literal>id</literal> 和 <literal>class</literal>,来允许我们按照下面的方式表达一个连接(<literal>AuditLog.item</literal> 是一个属性,该属性被映射为 <literal>&lt;any&gt;</literal>)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <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 "注意,在上面的查询与句中,<literal>log.item.class</literal> 和 <literal>payment.class</literal> 将涉及到完全不同的数据库中的列。"
+
+#. Tag: title
+#, no-c-format
+msgid "Expressions"
+msgstr "表达式"
+
+#. Tag: para
+#, no-c-format
+msgid "Expressions used in the <literal>where</literal> clause include the following:"
+msgstr "在 <literal>where</literal> 子句中允许使用的表达式包括 大多数你可以在 SQL 使用的表达式种类: "
+
+#. Tag: para
+#, no-c-format
+msgid "mathematical operators: <literal>+, -, *, /</literal>"
+msgstr "数学运算符 <literal>+,-,*,/</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "binary comparison operators: <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>"
+msgstr "二进制比较运算符 <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr "逻辑运算符 <literal>and,or,not</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Parentheses <literal>( )</literal> that indicates grouping"
+msgstr "括号 <literal>( )</literal>,表示分组 "
+
+#. Tag: para
+#, 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 "<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>"
+
+#. Tag: para
+#, no-c-format
+msgid "\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr "\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "string concatenation <literal>...||...</literal> or <literal>concat(...,...)</literal>"
+msgstr "字符串连接符 <literal>...||...</literal> or <literal>concat(...,...)</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>current_date()</literal>, <literal>current_time()</literal>, and <literal>current_timestamp()</literal>"
+msgstr "<literal>current_date()</literal>, <literal>current_time()</literal>, and <literal>current_timestamp()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, and <literal>year(...)</literal>"
+msgstr "<literal>second(...)</literal>、<literal>minute(...)</literal>、<literal>hour(...)</literal>、<literal>day(...)</literal>、<literal>month(...)</literal> 和 <literal>year(...)</literal>"
+
+#. Tag: para
+#, 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(), mod()</literal>"
+msgstr "EJB-QL 3.0 定义的任何功能或操作符:<literal>substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr "<literal>coalesce()</literal> 和 <literal>nullif()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>str()</literal> for converting numeric or temporal values to a readable string"
+msgstr "<literal>str()</literal> 把数字或者时间值转换为可读的字符串"
+
+#. Tag: para
+#, 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 "<literal>cast(... as ...)</literal>,其第二个参数是某 Hibernate 类型的名字,以及 <literal>extract(... from ...)</literal>,只要 ANSI <literal>cast()</literal> 和  <literal>extract()</literal> 被底层数据库支持"
+
+#. Tag: para
+#, no-c-format
+msgid "the HQL <literal>index()</literal> function, that applies to aliases of a joined indexed collection"
+msgstr "HQL <literal>index()</literal> 函数,作用于 join 的有序集合的别名。"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL functions that take collection-valued path expressions: <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>, along with the special <literal>elements()</literal> and <literal>indices</literal> functions that can be quantified using <literal>some, all, exists, any, in</literal>."
+msgstr "HQL 函数,把集合作为参数:<literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>,还有特别的 <literal>elements()</literal> 和 <literal>indices</literal> 函数,可以与数量词加以限定:<literal>some, all, exists, any, in</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Any database-supported SQL scalar function like <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, and <literal>sin()</literal>"
+msgstr "任何数据库支持的 SQL 标量函数,比如 <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "JDBC-style positional parameters <literal>?</literal>"
+msgstr "JDBC 风格的参数传入 <literal>?</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters <literal>:name</literal>, <literal>:start_date</literal>, and <literal>:x1</literal>"
+msgstr "命名参数 <literal>:name</literal>,<literal>:start_date</literal>,<literal>:x1</literal> "
+
+#. Tag: para
+#, no-c-format
+msgid "SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr "SQL 直接常量 <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Java <literal>public static final</literal> constants <literal>eg.Color.TABBY</literal>"
+msgstr "Java <literal>public static final</literal> 类型的常量 <literal>eg.Color.TABBY</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>in</literal> and <literal>between</literal> can be used as follows:"
+msgstr "关键字 <literal>in</literal> 与 <literal>between</literal> 可按如下方法使用: "
+
+#. Tag: para
+#, no-c-format
+msgid "The negated forms can be written as follows:"
+msgstr "而且否定的格式也可以如下书写: "
+
+#. Tag: para
+#, no-c-format
+msgid "Similarly, <literal>is null</literal> and <literal>is not null</literal> can be used to test for null values."
+msgstr "同样,子句 <literal>is null</literal> 与 <literal>is not null</literal> 可以被用来测试空值(null)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Booleans can be easily used in expressions by declaring HQL query substitutions in Hibernate configuration:"
+msgstr "在 Hibernate 配置文件中声明 HQL“查询替代(query substitutions)”之后,布尔表达式(Booleans)可以在其他表达式中轻松的使用: "
+
+#. Tag: para
+#, 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 "系统将该 HQL 转换为 SQL 语句时,该设置表明将用字符 <literal>1</literal> 和  <literal>0</literal> 来取代关键字 <literal>true</literal> 和 <literal>false</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can test the size of a collection with the special property <literal>size</literal> or the special <literal>size()</literal> function."
+msgstr "你可以用特殊属性 <literal>size</literal>,或是特殊函数 <literal>size()</literal> 测试一个集合的大小。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For indexed collections, you can refer to the minimum and maximum indices using <literal>minindex</literal> and <literal>maxindex</literal> functions. Similarly, you can refer to the minimum and maximum elements of a collection of basic type using the <literal>minelement</literal> and <literal>maxelement</literal> functions. For example:"
+msgstr "对于索引了(有序)的集合,你可以使用 <literal>minindex</literal> 与  <literal>maxindex</literal> 函数来引用到最小与最大的索引序数。同理,你可以使用 <literal>minelement</literal> 与 <literal>maxelement</literal> 函数来引用到一个基本数据类型的集合中最小与最大的元素。例如:"
+
+#. Tag: para
+#, 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):"
+msgstr "在传递一个集合的索引集或者是元素集(<literal>elements</literal> 与 <literal>indices</literal> 函数)或者传递一个子查询的结果的时候,可以使用 SQL 函数 <literal>any, some,all, exists, in</literal>:"
+
+#. Tag: para
+#, 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> - can only be used in the where clause in Hibernate3."
+msgstr "注意,在 Hibernate3 中,这些结构变量 —  <literal>size</literal>,<literal>elements</literal>,<literal>indices</literal>,<literal>minindex</literal>,<literal>maxindex</literal>,<literal>minelement</literal>,<literal>maxelement</literal> — 只能在 where 子句中使用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Elements of indexed collections (arrays, lists, and maps) can be referred to by index in a where clause only:"
+msgstr "一个被索引过的(有序的)集合的元素(arrays,lists,maps)可以在其他索引中被引用(只能在 where 子句中): "
+
+#. Tag: para
+#, no-c-format
+msgid "The expression inside <literal>[]</literal> can even be an arithmetic expression:"
+msgstr "在 <literal>[]</literal> 中的表达式甚至可以是一个算数表达式:"
+
+#. Tag: para
+#, 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 "对于一个一对多的关联(one-to-many association)或是值的集合中的元素,HQL 也提供内建的 <literal>index()</literal> 函数。"
+
+#. Tag: para
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database can be used:"
+msgstr "如果底层数据库支持标量的 SQL 函数,它们也可以被使用:"
+
+#. Tag: para
+#, no-c-format
+msgid "Consider how much longer and less readable the following query would be in SQL:"
+msgstr "如果你还不能对所有的这些深信不疑,想想下面的查询。如果使用 SQL,语句长度会增长多少,可读性会下降多少: "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr "<emphasis>提示:</emphasis> 会像如下的语句"
+
+#. Tag: title
+#, no-c-format
+msgid "The order by clause"
+msgstr "order by 子句"
+
+#. Tag: para
+#, no-c-format
+msgid "The list returned by a query can be ordered by any property of a returned class or components:"
+msgstr "查询返回的列表(list)可以按照一个返回的类或组件(components)中的任何属性(property)进行排序: "
+
+#. Tag: para
+#, no-c-format
+msgid "The optional <literal>asc</literal> or <literal>desc</literal> indicate ascending or descending order respectively."
+msgstr "可选的 <literal>asc</literal> 或 <literal>desc</literal> 关键字指明了按照升序或降序进行排序。"
+
+#. Tag: title
+#, no-c-format
+msgid "The group by clause"
+msgstr "group by 子句"
+
+#. Tag: para
+#, no-c-format
+msgid "A query that returns aggregate values can be grouped by any property of a returned class or components:"
+msgstr "一个返回聚集值(aggregate values)的查询可以按照一个返回的类或组件(components)中的任何属性(property)进行分组: "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr "<literal>having</literal> 子句在这里也允许使用。"
+
+#. Tag: para
+#, no-c-format
+msgid "SQL functions and aggregate functions are allowed in the <literal>having</literal> and <literal>order by</literal> clauses if they are supported by the underlying database (i.e., not in MySQL)."
+msgstr "如果底层的数据库支持的话(例如不能在 MySQL 中使用),SQL 的一般函数与聚集函数也可以出现在 <literal>having</literal> 与 <literal>order by</literal> 子句中。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Neither the <literal>group by</literal> clause nor the <literal>order by</literal> clause can contain arithmetic expressions. Hibernate also does not currently expand a grouped entity, so you cannot write <literal>group by cat</literal> if all properties of <literal>cat</literal> are non-aggregated. You have to list all non-aggregated properties explicitly."
+msgstr "注意 <literal>group by</literal> 子句与 <literal>order by</literal> 子句中都不能包含算术表达式(arithmetic expressions)。也要注意 Hibernate 目前不会扩展 group 的实体,因此你不能写 <literal>group by cat</literal>,除非 <literal>cat</literal> 的所有属性都不是聚集的(non-aggregated)。你必须明确的列出所有的非聚集属性。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Subqueries"
+msgstr "子查询"
+
+#. Tag: para
+#, no-c-format
+msgid "For databases that support subselects, Hibernate 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 "对于支持子查询的数据库,Hibernate 支持在查询中使用子查询。一个子查询必须被圆括号包围起来(经常是 SQL 聚集函数的圆括号)。甚至相互关联的子查询(引用到外部查询中的别名的子查询)也是允许的。"
+
+#. Tag: para
+#, no-c-format
+msgid "Note that HQL subqueries can occur only in the select or where clauses."
+msgstr "注意,HQL 自查询只可以在 select 或者 where 子句中出现。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Note that subqueries can also utilize <literal>row value constructor</literal> syntax. See <xref linkend=\"queryhql-tuple\" /> for more information."
+msgstr "注意子查询也可以利用 <literal>row value constructor</literal> 语法。请参考 <xref linkend=\"queryhql-tuple\" /> 来获得详情。"
+
+#. Tag: title
+#, no-c-format
+msgid "HQL examples"
+msgstr "HQL 示例 "
+
+#. Tag: para
+#, 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 main strengths. The following example queries are similar to queries that have been used on recent projects. Please note that most queries you will write will be much simpler than the following examples."
+msgstr "Hibernate 查询可以非常的强大与复杂。实际上,Hibernate 的一个主要卖点就是查询语句的威力。这里有一些例子,它们与我在最近的一个项目中使用的查询非常相似。注意你能用到的大多数查询比这些要简单的多。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following query returns the order id, number of items, the given minimum total value and the total value of the order for all unpaid orders for a particular customer. The results are ordered 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 "下面的查询对于某个特定的客户的所有未支付的账单,在给定给最小总价值的情况下,返回订单的 id,条目的数量和总价值,返回值按照总价值的结果进行排序。为了决定价格,查询使用了当前目录。作为转换结果的 SQL 查询,使用了<literal>ORDER</literal>,<literal>ORDER_LINE</literal>,<literal>PRODUCT</literal>,<literal>CATALOG</literal> 和 <literal>PRICE</literal> 库表。"
+
+#. Tag: para
+#, 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: para
+#, 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 "下面一个查询计算每一种状态下的支付的数目,除去所有处于 <literal>AWAITING_APPROVAL</literal> 状态的支付,因为在该状态下 当前的用户作出了状态的最新改变。该查询被转换成含有两个内连接以及一个相关联的子选择的 SQL 查询,该查询使用了表 <literal>PAYMENT</literal>,<literal>PAYMENT_STATUS</literal> 以及  <literal>PAYMENT_STATUS_CHANGE</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>statusChanges</literal> collection was mapped as a list, instead of a set, the query would have been much simpler to write."
+msgstr "如果我把 <literal>statusChanges</literal> 实例集映射为一个列表(list)而不是一个集合(set),书写查询语句将更加简单。 "
+
+#. Tag: para
+#, 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 "下面一个查询使用了 MS SQL Server 的 <literal>isNull()</literal> 函数用以返回当前用户所属组织的组织帐号及组织未支付的账。它被转换成一个对表 <literal>ACCOUNT</literal>,<literal>PAYMENT</literal>,<literal>PAYMENT_STATUS</literal>,<literal>ACCOUNT_TYPE</literal>,<literal>ORGANIZATION</literal>  以及 <literal>ORG_USER</literal> 进行的三个内连接,一个外连接和一个子选择的 SQL 查询。"
+
+#. Tag: para
+#, no-c-format
+msgid "For some databases, we would need to do away with the (correlated) subselect."
+msgstr "对于一些数据库,我们需要弃用(相关的)子选择。"
+
+#. Tag: title
+#, no-c-format
+msgid "Bulk update and delete"
+msgstr "批量的 UPDATE 和 DELETE"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL now supports <literal>update</literal>, <literal>delete</literal> and <literal>insert ... select ...</literal> statements. See <xref linkend=\"batch-direct\" /> for more information."
+msgstr "HQL 现在支持 <literal>update</literal>,<literal>delete</literal> 和 <literal>insert ... select ...</literal>语句。查阅 <xref linkend=\"batch-direct\" /> 以获得更多信息。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr "小技巧 &amp; 小窍门"
+
+#. Tag: para
+#, no-c-format
+msgid "You can count the number of query results without returning them:"
+msgstr "你可以统计查询结果的数目而不必实际的返回他们: "
+
+#. Tag: para
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr "若想根据一个集合的大小来进行排序,可以使用如下的语句:"
+
+#. Tag: para
+#, 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 "如果你的数据库支持子选择,你可以在你的查询的 where 子句中为选择的大小(selection size)指定一个条件:"
+
+#. Tag: para
+#, no-c-format
+msgid "If your database does not support subselects, use the following query:"
+msgstr "如果你的数据库不支持子选择语句,使用下面的查询: "
+
+#. Tag: para
+#, no-c-format
+msgid "As this solution cannot return a <literal>User</literal> with zero messages because of the inner join, the following form is also useful:"
+msgstr "因为内连接(inner join)的原因,这个解决方案不能返回含有零个信息的 <literal>User</literal> 类的实例,所以这种情况下使用下面的格式将是有帮助的: "
+
+#. Tag: para
+#, no-c-format
+msgid "Properties of a JavaBean can be bound to named query parameters:"
+msgstr "JavaBean 的属性可以被绑定到一个命名查询(named query)的参数上:"
+
+#. Tag: para
+#, no-c-format
+msgid "Collections are pageable by using the <literal>Query</literal> interface with a filter:"
+msgstr "通过将接口 <literal>Query</literal> 与一个过滤器(filter)一起使用,集合(Collections)是可以分页的:"
+
+#. Tag: para
+#, no-c-format
+msgid "Collection elements can be ordered or grouped using a query filter:"
+msgstr "通过使用查询过滤器(query filter)可以将集合(Collection)的元素分组或排序: "
+
+#. Tag: para
+#, no-c-format
+msgid "You can find the size of a collection without initializing it:"
+msgstr "不用通过初始化,你就可以知道一个集合(Collection)的大小:"
+
+#. Tag: title
+#, no-c-format
+msgid "Components"
+msgstr "组件"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can be used similarly to the simple value types that are used in HQL queries. They can appear in the <literal>select</literal> clause as follows:"
+msgstr "在 HQL 查询里,组件可以和简单值类型一样使用。它们可以出现在 <literal>select</literal> 子句里: "
+
+#. Tag: para
+#, no-c-format
+msgid "where the Person's name property is a component. Components can also be used in the <literal>where</literal> clause:"
+msgstr "在这里,Person 的 name 属性是一个组件。组件也可以用在 <literal>where</literal> 子句里:"
+
+#. Tag: para
+#, no-c-format
+msgid "Components can also be used in the <literal>order by</literal> clause:"
+msgstr "组件也可以用在 <literal>order by</literal> 子句里:"
+
+#. Tag: para
+#, no-c-format
+msgid "Another common use of components is in <link linkend=\"queryhql-tuple\">row value constructors</link>."
+msgstr "组件的另外一个常见用法是在 <xref linkend=\"queryhql-tuple\" /> 行值(row value)构造函数里。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Row value constructor syntax"
+msgstr "Row value 构造函数语法"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL supports the use of ANSI SQL <literal>row value constructor</literal> syntax, sometimes referred to AS <literal>tuple</literal> syntax, even though the underlying database may not support that notion. Here, we are generally referring to multi-valued comparisons, typically associated with components. Consider an entity Person which defines a name component:"
+msgstr "HQL 支持 ANSI SQL <literal>row value constructor</literal> 语法(有时也叫作 <literal>tuple</literal> 语法),即使底层数据库可能不支持这个概念。在这里我们通常指的是多值(multi-valued)的比较,典型地是和组件相关联。来看看一个定义了 name 组件的实体 Person:"
+
+#. Tag: para
+#, no-c-format
+msgid "That is valid syntax although it is a little verbose. You can make this more concise by using <literal>row value constructor</literal> syntax:"
+msgstr "那是有效的语法,虽然有点冗长。我们可以使它更加简洁一点,并使用 <literal>row value constructor</literal> 语法: "
+
+#. Tag: para
+#, no-c-format
+msgid "It can also be useful to specify this in the <literal>select</literal> clause:"
+msgstr "在 <literal>select</literal> 子句里指定这个也是很有用的:"
+
+#. Tag: para
+#, no-c-format
+msgid "Using <literal>row value constructor</literal> syntax can also be beneficial when using subqueries that need to compare against multiple values:"
+msgstr "当使用需要比较多个值的子查询时,采用 <literal>row value constructor</literal> 语法也很有用处: "
+
+#. Tag: para
+#, no-c-format
+msgid "One thing to consider when deciding if you want to use this syntax, is that the query will be dependent upon the ordering of the component sub-properties in the metadata."
+msgstr "决定是否使用这个语法的一件因素就是:这个查询将依赖于元数据里的组件子属性(sub-properties)的顺序。 "
+
+#, fuzzy
+#~ msgid "<![CDATA[from eg.Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat]]>"
+#~ msgstr "from eg.Cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat]]>"
+#~ msgstr "from Cat as cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat]]>"
+#~ msgstr "from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula, Parameter]]>"
+#~ msgstr "from Formula, Parameter"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula as form, Parameter as param]]>"
+#~ msgstr "from Formula as form, Parameter as param"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate\n"
+#~ "    left outer join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
+#~ msgstr "from Cat as cat left join cat.mate.kittens as kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Formula form full join form.parameter param]]>"
+#~ msgstr "from Formula form full join form.parameter param"
+#~ msgid "inner join"
+#~ msgstr "<literal>inner join</literal>(内连接)"
+#~ msgid "left outer join"
+#~ msgstr "<literal>left outer join</literal>(左外连接)"
+
+#, fuzzy
+#~ msgid "right outer join"
+#~ msgstr "<literal>left outer join</literal>(左外连接)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    join cat.mate as mate\n"
+#~ "    left join cat.kittens as kitten"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight > 10.0]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    left join cat.kittens as kitten\n"
+#~ "        with kitten.bodyWeight &gt; 10.0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "    inner join fetch cat.mate\n"
+#~ "    left join fetch cat.kittens child\n"
+#~ "    left join fetch child.kittens"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Document fetch all properties order by name]]>"
+#~ msgstr "from Document fetch all properties order by name"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Document doc fetch all properties where lower(doc.name) "
+#~ "like '%cats%']]>"
+#~ msgstr ""
+#~ "from Document doc fetch all properties where lower(doc.name) like '&#37;"
+#~ "cats&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
+#~ msgstr "from Cat as cat where cat.mate.name like '&#37;s&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate]]>"
+#~ msgstr ""
+#~ "select mate\n"
+#~ "from Cat as cat\n"
+#~ "    inner join cat.mate as mate"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cat.mate from Cat cat]]>"
+#~ msgstr "select cat.mate from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri%']]>"
+#~ msgstr ""
+#~ "select cat.name from DomesticCat cat\n"
+#~ "where cat.name like 'fri&#37;'"
+
+#, fuzzy
+#~ msgid "<![CDATA[select cust.name.firstName from Customer as cust]]>"
+#~ msgstr "select cust.name.firstName from Customer as cust"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "select new Family(mother, mate, offspr)\n"
+#~ "from DomesticCat as mother\n"
+#~ "    join mother.mate as mate\n"
+#~ "    left join mother.kittens as offspr"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, "
+#~ "count(*) as n )\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) "
+#~ "as n )\n"
+#~ "from Cat cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count"
+#~ "(cat)\n"
+#~ "from Cat cat]]>"
+#~ msgstr ""
+#~ "select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
+#~ "from Cat cat"
+#~ msgid "count(*)"
+#~ msgstr "count(*)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight]]>"
+#~ msgstr ""
+#~ "select cat.weight + sum(kitten.weight)\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.weight"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from "
+#~ "Person]]>"
+#~ msgstr "select firstName||' '||initial||' '||upper(lastName) from Person"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat]]>"
+#~ msgstr ""
+#~ "select distinct cat.name from Cat cat\n"
+#~ "\n"
+#~ "select count(distinct cat.name), count(cat) from Cat cat"
+
+#, fuzzy
+#~ msgid "<![CDATA[from java.lang.Object o]]>"
+#~ msgstr "from java.lang.Object o"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Named n, Named m where n.name = m.name]]>"
+#~ msgstr "from Named n, Named m where n.name = m.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat where name='Fritz']]>"
+#~ msgstr "from Cat where name='Fritz'"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
+#~ msgstr "from Cat as cat where cat.name='Fritz'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date]]>"
+#~ msgstr ""
+#~ "select foo\n"
+#~ "from Foo foo, Bar bar\n"
+#~ "where foo.startDate = bar.date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
+#~ msgstr "from Cat cat where cat.mate.name is not null"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null]]>"
+#~ msgstr ""
+#~ "from Foo foo\n"
+#~ "where foo.bar.baz.customer.address.city is not null"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
+#~ msgstr "from Cat cat, Cat rival where cat.mate = rival.mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate]]>"
+#~ msgstr ""
+#~ "select cat, mate\n"
+#~ "from Cat cat, Cat mate\n"
+#~ "where cat.mate = mate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69]]>"
+#~ msgstr ""
+#~ "from Cat as cat where cat.id = 123\n"
+#~ "\n"
+#~ "from Cat as cat where cat.mate.id = 69"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Person person\n"
+#~ "where person.id.country = 'AU'\n"
+#~ "    and person.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456]]>"
+#~ msgstr ""
+#~ "from bank.Account account\n"
+#~ "where account.owner.id.country = 'AU'\n"
+#~ "    and account.owner.id.medicareNumber = 123456"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
+#~ msgstr "from Cat cat where cat.class = DomesticCat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
+#~ msgstr ""
+#~ "from AuditLog log, Payment payment\n"
+#~ "where log.item.class = 'Payment' and log.item.id = payment.id"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
+#~ msgstr "from DomesticCat cat where cat.name not between 'A' and 'B'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', "
+#~ "'Baz' )]]>"
+#~ msgstr "from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false "
+#~ "0</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"hibernate.query.substitutions\"&gt;true 1, false "
+#~ "0&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.alive = true]]>"
+#~ msgstr "from Cat cat where cat.alive = true"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
+#~ msgstr "from Cat cat where cat.kittens.size &gt; 0"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
+#~ msgstr "from Cat cat where size(cat.kittens) &gt; 0"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]"
+#~ ">"
+#~ msgstr "from Calendar cal where maxelement(cal.holidays) &gt; current_date"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
+#~ msgstr "from Order order where maxindex(order.items) &gt; 100"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
+#~ msgstr "from Order order where minelement(order.items) &gt; 10000"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)]]>"
+#~ msgstr ""
+#~ "select mother from Cat as mother, Cat as kit\n"
+#~ "where kit in elements(foo.kittens)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)]]>"
+#~ msgstr ""
+#~ "select p from NameList list, Person p\n"
+#~ "where p.name = some elements(list.names)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
+#~ msgstr "from Cat cat where exists elements(cat.kittens)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
+#~ msgstr "from Player p where 3 &gt; all elements(p.scores)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
+#~ msgstr "from Show show where 'fizard' in indices(show.acts)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Order order where order.items[0].id = 1234]]>"
+#~ msgstr "from Order order where order.items[0].id = 1234"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar]]>"
+#~ msgstr ""
+#~ "select person from Person person, Calendar calendar\n"
+#~ "where calendar.holidays['national day'] = person.birthDay\n"
+#~ "    and person.nationality.calendar = calendar"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = "
+#~ "11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ maxindex(order.items) ] = item and order.id = 11"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item]]>"
+#~ msgstr ""
+#~ "select item from Item item, Order order\n"
+#~ "where order.items[ size(order.items) - 1 ] = item"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) < 5]]>"
+#~ msgstr ""
+#~ "select item, index(item) from Order order\n"
+#~ "    join order.items item\n"
+#~ "where index(item) &lt; 5"
+
+#, fuzzy
+#~ msgid "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
+#~ msgstr "from DomesticCat cat where upper(cat.name) like 'FRI&#37;'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+#~ "    )"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+#~ msgstr ""
+#~ "from DomesticCat cat\n"
+#~ "order by cat.name asc, cat.weight desc, cat.birthdate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color]]>"
+#~ msgstr ""
+#~ "select cat.color, sum(cat.weight), count(cat)\n"
+#~ "from Cat cat\n"
+#~ "group by cat.color"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id]]>"
+#~ msgstr ""
+#~ "select foo.id, avg(name), max(name)\n"
+#~ "from Foo foo join foo.names name\n"
+#~ "group by foo.id"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) > 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc]]>"
+#~ msgstr ""
+#~ "select cat\n"
+#~ "from Cat cat\n"
+#~ "    join cat.kittens kitten\n"
+#~ "group by cat.id, cat.name, cat.other, cat.properties\n"
+#~ "having avg(kitten.weight) &gt; 100\n"
+#~ "order by count(kitten) asc, sum(kitten.weight) desc"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as fatcat\n"
+#~ "where fatcat.weight > (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as fatcat\n"
+#~ "where fatcat.weight &gt; (\n"
+#~ "    select avg(cat.weight) from DomesticCat cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name = some (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not exists (\n"
+#~ "    from Cat as mate where mate.mate = cat\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from DomesticCat as cat\n"
+#~ "where cat.name not in (\n"
+#~ "    select name.nickName from Name as name\n"
+#~ ")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat]]>"
+#~ msgstr ""
+#~ "select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+#~ "from Cat as cat"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 < sysdate\n"
+#~ "    and catalog.effectiveDate >= all (\n"
+#~ "        select cat.effectiveDate\n"
+#~ "        from Catalog as cat\n"
+#~ "        where cat.effectiveDate < sysdate\n"
+#~ "    )\n"
+#~ "group by order\n"
+#~ "having sum(price.amount) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) > :minAmount\n"
+#~ "order by sum(price.amount) desc]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 <> 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 <> :currentUser\n"
+#~ "    )\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select count(payment), status.name\n"
+#~ "from Payment as payment\n"
+#~ "    join payment.currentStatus as status\n"
+#~ "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+#~ "    or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :"
+#~ "currentUser\n"
+#~ "group by status.name, status.sortOrder\n"
+#~ "order by status.sortOrder]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+#~ msgstr ""
+#~ "select account, payment\n"
+#~ "from Account as account\n"
+#~ "    left outer join account.payments as payment\n"
+#~ "where :currentUser in elements(account.holder.users)\n"
+#~ "    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+#~ "PaymentStatus.UNPAID)\n"
+#~ "order by account.type.sortOrder, account.accountNumber, payment.dueDate"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue()]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue()"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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)"
+
+#, fuzzy
+#~ msgid "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
+#~ msgstr "from User usr where size(usr.messages) &gt;= 1"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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) >= 1]]>"
+#~ msgstr ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[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 ""
+#~ "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"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:"
+#~ "name and foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and "
+#~ "foo.size=:size\");\n"
+#~ "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+#~ "List foos = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial "
+#~ "filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();]]>"
+#~ msgstr ""
+#~ "Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
+#~ "q.setMaxResults(PAGE_SIZE);\n"
+#~ "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+#~ "List page = q.list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by "
+#~ "this.amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );]]>"
+#~ msgstr ""
+#~ "Collection orderedCollection = s.filter( collection, \"order by this."
+#~ "amount\" );\n"
+#~ "Collection counts = s.filter( collection, \"select this.type, count(this) "
+#~ "group by this.type\" );"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+#~ "iterate().next() ).intValue();]]>"
+#~ msgstr ""
+#~ "( (Integer) session.iterate(\"select count(*) from ....\").next() )."
+#~ "intValue();"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name from Person p]]>"
+#~ msgstr "select p.name from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[select p.name.first from Person p]]>"
+#~ msgstr "select p.name.first from from Person p"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name = :name]]>"
+#~ msgstr "from from Person p where p.name = :name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p where p.name.first = :firstName]]>"
+#~ msgstr "from from Person p where p.name.first = :firstName"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name]]>"
+#~ msgstr "from from Person p order by p.name"
+
+#, fuzzy
+#~ msgid "<![CDATA[from Person p order by p.name.first]]>"
+#~ msgstr "from from Person p order by p.name.first"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name.first='John' and p.name."
+#~ "last='Jingleheimer-Schmidt']]>"
+#~ msgstr ""
+#~ "from Person p where p.name.first='John' and p.name.last='Jingleheimer-"
+#~ "Schmidt'"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
+#~ msgstr "from Person p where p.name=('John', 'Jingleheimer-Schmidt')"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")]]>"
+#~ msgstr ""
+#~ "from Cat as cat\n"
+#~ "where not ( cat.name, cat.color ) in (\n"
+#~ "    select cat.name, cat.color from DomesticCat cat\n"
+#~ ")"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_sql.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_sql.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/query_sql.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1255 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:47\n"
+"PO-Revision-Date: 2010-03-16 10:16+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Native SQL"
+msgstr "Native SQL 查询"
+
+#. Tag: para
+#, no-c-format
+msgid "You can 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 <literal>CONNECT</literal> keyword in Oracle. It also provides a clean migration path from a direct SQL/JDBC based application to Hibernate."
+msgstr "你也可以使用你的数据库的 Native SQL 语言来查询数据。这对你在要使用数据库的某些特性的时候(比如说在查询提示或者 Oracle 中的 <literal>CONNECT</literal> 关键字),这是非常有用的。这就能够扫清你把原来直接使用 SQL/JDBC 的程序迁移到基于 Hibernate 应用的道路上的障碍。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 allows you to specify handwritten SQL, including stored procedures, for all create, update, delete, and load operations."
+msgstr "Hibernate3 允许你使用手写的 sql 来完成所有的 create、update、delete 和 load 操作(包括存储过程) "
+
+#. Tag: title
+#, no-c-format
+msgid "Using a <literal>SQLQuery</literal>"
+msgstr "使用 <literal>SQLQuery</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Execution of native SQL queries is controlled via the <literal>SQLQuery</literal> interface, which is obtained by calling <literal>Session.createSQLQuery()</literal>. The following sections describe how to use this API for querying."
+msgstr "对原生 SQL 查询执行的控制是通过 <literal>SQLQuery</literal> 接口进行的,通过执行<literal>Session.createSQLQuery()</literal>获取这个接口。下面来描述如何使用这个 API 进行查询。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar queries"
+msgstr "标量查询(Scalar queries)"
+
+#. Tag: para
+#, no-c-format
+msgid "The most basic SQL query is to get a list of scalars (values)."
+msgstr "最基本的 SQL 查询就是获得一个标量(数值)的列表。"
+
+#. Tag: para
+#, no-c-format
+msgid "These will return a List of Object arrays (Object[]) with scalar values for each column in the CATS table. Hibernate will use ResultSetMetadata to deduce the actual order and types of the returned scalar values."
+msgstr "它们都将返回一个 Object 数组(Object[])组成的 List,数组每个元素都是 CATS 表的一个字段值。Hibernate 会使用 ResultSetMetadata 来判定返回的标量值的实际顺序和类型。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To avoid the overhead of using <literal>ResultSetMetadata</literal>, or simply to be more explicit in what is returned, one can use <literal>addScalar()</literal>:"
+msgstr "如果要避免过多的使用 <literal>ResultSetMetadata</literal>,或者只是为了更加明确的指名返回值,可以使用 <literal>addScalar()</literal>: "
+
+#. Tag: para
+#, no-c-format
+msgid "This query specified:"
+msgstr "这个查询指定:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string"
+msgstr "SQL 查询字符串"
+
+#. Tag: para
+#, no-c-format
+msgid "the columns and types to return"
+msgstr "要返回的字段和类型"
+
+#. Tag: para
+#, no-c-format
+msgid "This will return Object arrays, but now it will not use <literal>ResultSetMetadata</literal> but will instead explicitly get the ID, NAME and BIRTHDATE column as respectively a Long, String and a Short from the underlying resultset. This also means that only these three columns will be returned, even though the query is using <literal>*</literal> and could return more than the three listed columns."
+msgstr "它仍然会返回 Object 数组,但是此时不再使用 <literal>ResultSetMetdata</literal>,而是明确的将 ID,NAME 和 BIRTHDATE 按照 Long,String 和 Short 类型从 resultset 中取出。同时,也指明了就算 query 是使用 <literal>*</literal> 来查询的,可能获得超过列出的这三个字段,也仅仅会返回这三个字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to leave out the type information for all or some of the scalars."
+msgstr "对全部或者部分的标量值不设置类型信息也是可以的。"
+
+#. Tag: para
+#, no-c-format
+msgid "This is essentially the same query as before, but now <literal>ResultSetMetaData</literal> is used to determine the type of NAME and BIRTHDATE, where as the type of ID is explicitly specified."
+msgstr "基本上这和前面一个查询相同,只是此时使用 <literal>ResultSetMetaData</literal> 来决定 NAME 和 BIRTHDATE 的类型,而 ID 的类型是明确指出的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "How the java.sql.Types returned from ResultSetMetaData is mapped to Hibernate types is controlled by the Dialect. If a specific type is not mapped, or does not result in the expected type, it is possible to customize it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr "关于从 ResultSetMetaData 返回的 java.sql.Types 是如何映射到 Hibernate 类型,是由方言(Dialect)控制的。假若某个指定的类型没有被映射,或者不是你所预期的类型,你可以通过 Dialet 的 <literal>registerHibernateType</literal> 调用自行定义。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Entity queries"
+msgstr "实体查询(Entity queries)"
+
+#. Tag: para
+#, no-c-format
+msgid "The above queries were all about returning scalar values, basically returning the \"raw\" values from the resultset. The following shows how to get entity objects from a native sql query via <literal>addEntity()</literal>."
+msgstr "上面的查询都是返回标量值的,也就是从 resultset 中返回的“裸”数据。下面展示如何通过 <literal>addEntity()</literal> 让原生查询返回实体对象。"
+
+#. Tag: para
+#, no-c-format
+msgid "the entity returned by the query"
+msgstr "要返回的实体"
+
+#. Tag: para
+#, no-c-format
+msgid "Assuming that Cat is mapped as a class with the columns ID, NAME and BIRTHDATE the above queries will both return a List where each element is a Cat entity."
+msgstr "假设 Cat 被映射为拥有 ID,NAME 和 BIRTHDATE 三个字段的类,以上的两个查询都返回一个 List,每个元素都是一个 Cat 实体。"
+
+#. Tag: para
+#, no-c-format
+msgid "If the entity is mapped with a <literal>many-to-one</literal> to another entity it is required to also return this when performing the native query, otherwise a database specific \"column not found\" error will occur. The additional columns will automatically be returned when using the * notation, but we prefer to be explicit as in the following example for a <literal>many-to-one</literal> to a <literal>Dog</literal>:"
+msgstr "假若实体在映射时有一个 <literal>many-to-one</literal> 的关联指向另外一个实体,在查询时必须也返回那个实体,否则会导致发生一个 \"column not found\" 的数据库错误。这些附加的字段可以使用 * 标注来自动返回,但我们希望还是明确指明,看下面这个具有指向 <literal>Dog</literal> 的 <literal>many-to-one</literal> 的例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "This will allow cat.getDog() to function properly."
+msgstr "这样 cat.getDog() 就能正常运作。"
+
+#. Tag: title
+#, no-c-format
+msgid "Handling associations and collections"
+msgstr "处理关联和集合类(Handling associations and collections)"
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to eagerly join in the <literal>Dog</literal> to avoid the possible extra roundtrip for initializing the proxy. This is done via the <literal>addJoin()</literal> method, which allows you to join in an association or collection."
+msgstr "通过提前抓取将 <literal>Dog</literal> 连接获得,而避免初始化 proxy 带来的额外开销也是可能的。这是通过 <literal>addJoin()</literal> 方法进行的,这个方法可以让你将关联或集合连接进来。"
+
+#. Tag: para
+#, no-c-format
+msgid "In this example, the returned <literal>Cat</literal>'s will have their <literal>dog</literal> property fully initialized without any extra roundtrip to the database. Notice that you added an alias name (\"cat\") to be able to specify the target property path of the join. It is possible to do the same eager joining for collections, e.g. if the <literal>Cat</literal> had a one-to-many to <literal>Dog</literal> instead."
+msgstr "上面这个例子中,返回的 <literal>Cat</literal> 对象,其 <literal>dog</literal> 属性被完全初始化了,不再需要数据库的额外操作。注意,我们加了一个别名(\"cat\"),以便指明 join 的目标属性路径。通过同样的提前连接也可以作用于集合类,例如,假若 <literal>Cat</literal> 有一个指向 <literal>Dog</literal> 的一对多关联。 "
+
+#. Tag: para
+#, no-c-format
+msgid "At this stage you are reaching the limits of what is possible with native queries, without starting to enhance the sql queries to make them usable in Hibernate. Problems can arise when returning multiple entities of the same type or when the default alias/column names are not enough."
+msgstr "到此为止,我们碰到了天花板:若不对 SQL 查询进行增强,这些已经是在 Hibernate 中使用原生 SQL 查询所能做到的最大可能了。下面的问题即将出现:返回多个同样类型的实体怎么办?或者默认的别名/字段不够又怎么办? "
+
+#. Tag: title
+#, no-c-format
+msgid "Returning multiple entities"
+msgstr "返回多个实体(Returning multiple entities)"
+
+#. Tag: para
+#, no-c-format
+msgid "Until now, the result set column names are assumed to be the same as the column names specified in the mapping document. This can be problematic for SQL queries that join multiple tables, since the same column names can appear in more than one table."
+msgstr "到目前为止,结果集字段名被假定为和映射文件中指定的的字段名是一致的。假若 SQL 查询连接了多个表,同一个字段名可能在多个表中出现多次,这就会造成问题。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Column alias injection is needed in the following query (which most likely will fail):"
+msgstr "下面的查询中需要使用字段别名注射(这个例子本身会失败):"
+
+#. Tag: para
+#, no-c-format
+msgid "The query was intended to return two Cat instances per row: a cat and its mother. The query will, however, fail because there is a conflict of names; the instances are mapped to the same column names. Also, on some databases the returned column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. which are not equal to the columns specified in the mappings (\"ID\" and \"NAME\")."
+msgstr "这个查询的本意是希望每行返回两个 Cat 实例,一个是 cat,另一个是它的妈妈。但是因为它们的字段名被映射为相同的,而且在某些数据库中,返回的字段别名是“c.ID”,\"c.NAME\" 这样的形式,而它们和在映射文件中的名字(\"ID\" 和 \"NAME\")不匹配,这就会造成失败。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following form is not vulnerable to column name duplication:"
+msgstr "下面的形式可以解决字段名重复:"
+
+#. Tag: para
+#, no-c-format
+msgid "the SQL query string, with placeholders for Hibernate to inject column aliases"
+msgstr "SQL 查询语句,其中包含占位附来让 Hibernate 注射字段别名"
+
+#. Tag: para
+#, no-c-format
+msgid "the entities returned by the query"
+msgstr "查询返回的实体"
+
+#. Tag: para
+#, no-c-format
+msgid "The {cat.*} and {mother.*} notation used above is a shorthand for \"all properties\". Alternatively, you can list the columns explicitly, but even in this case Hibernate injects the SQL column aliases for each property. The placeholder for a column alias is just the property name qualified by the table alias. In the following example, you retrieve Cats and their mothers from a different table (cat_log) to the one declared in the mapping metadata. You can even use the property aliases in the where clause."
+msgstr "上面使用的 {cat.*} 和 {mother.*} 标记是作为“所有属性”的简写形式出现的。当然你也可以明确地罗列出字段名,但在这个例子里面我们让 Hibernate 来为每个属性注射 SQL 字段别名。字段别名的占位符是属性名加上表别名的前缀。在下面的例子中,我们从另外一个表(cat_log)中通过映射元数据中的指定获取 Cat 和它的妈妈。注意,要是我们愿意,我们甚至可以在 where 子句中使用属性别名。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Alias and property references"
+msgstr "别名和属性引用(Alias and property references)"
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases the above alias injection is needed. For queries relating to more complex mappings, like composite properties, inheritance discriminators, collections etc., you can use specific aliases that allow Hibernate to inject the proper aliases."
+msgstr "大多数情况下,都需要上面的属性注射,但在使用更加复杂的映射,比如复合属性、通过标识符构造继承树,以及集合类等等情况下,也有一些特别的别名,来允许 Hibernate 注入合适的别名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The following table shows the different ways you can use the alias injection. Please note that the alias names in the result are simply examples; each alias will have a unique and probably different name when used."
+msgstr "下表列出了使用别名注射参数的不同可能性。注意:下面结果中的别名只是示例,实用时每个别名需要唯一并且不同的名字。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Alias injection names"
+msgstr "别名注射(alias injection names)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "描述"
+
+#. Tag: entry
+#, no-c-format
+msgid "Syntax"
+msgstr "语法"
+
+#. Tag: entry
+#, no-c-format
+msgid "Example"
+msgstr "示例"
+
+#. Tag: entry
+#, no-c-format
+msgid "A simple property"
+msgstr "简单属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[propertyname]</literal>"
+msgstr "<literal>{[aliasname].[propertyname]</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>A_NAME as {item.name}</literal>"
+msgstr "<literal>A_NAME as {item.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A composite property"
+msgstr "复合属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].[componentname].[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].[componentname].[propertyname]}</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</literal>"
+msgstr "<literal>CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "Discriminator of an entity"
+msgstr "实体辨别器(Discriminator of an entity)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].class}</literal>"
+msgstr "<literal>{[aliasname].class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>DISC as {item.class}</literal>"
+msgstr "<literal>DISC as {item.class}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of an entity"
+msgstr "实体的所有属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].*}</literal>"
+msgstr "<literal>{[aliasname].*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{item.*}</literal>"
+msgstr "<literal>{item.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "A collection key"
+msgstr "集合键(collection key)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].key}</literal>"
+msgstr "<literal>{[aliasname].key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>ORGID as {coll.key}</literal>"
+msgstr "<literal>ORGID as {coll.key}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The id of an collection"
+msgstr "集合 id"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].id}</literal>"
+msgstr "<literal>{[aliasname].id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>EMPID as {coll.id}</literal>"
+msgstr "<literal>EMPID as {coll.id}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "The element of an collection"
+msgstr "集合元素"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element}</literal>"
+msgstr "<literal>{[aliasname].element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>XID as {coll.element}</literal>"
+msgstr "<literal>XID as {coll.element}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "property of the element in the collection"
+msgstr "集合元素的属性 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.[propertyname]}</literal>"
+msgstr "<literal>{[aliasname].element.[propertyname]}</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>NAME as {coll.element.name}</literal>"
+msgstr "<literal>NAME as {coll.element.name}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the element in the collection"
+msgstr "集合元素的所有属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{[aliasname].element.*}</literal>"
+msgstr "<literal>{[aliasname].element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.element.*}</literal>"
+msgstr "<literal>{coll.element.*}</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "All properties of the collection"
+msgstr "集合的所有属性 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>{coll.*}</literal>"
+msgstr "<literal>{coll.*}</literal>"
+
+#. Tag: title
+#, no-c-format
+msgid "Returning non-managed entities"
+msgstr "返回非受管实体(Returning non-managed entities)"
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to apply a ResultTransformer to native SQL queries, allowing it to return non-managed entities."
+msgstr "可以对原生 sql 查询使用 ResultTransformer。这会返回不受 Hibernate 管理的实体。 "
+
+#. Tag: para
+#, no-c-format
+msgid "a result transformer"
+msgstr "结果转换器(result transformer)"
+
+#. Tag: para
+#, no-c-format
+msgid "The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding properties or fields."
+msgstr "上面的查询将会返回 <literal>CatDTO</literal> 的列表,它将被实例化并且将 NAME 和 BIRTHDAY 的值注射入对应的属性或者字段。"
+
+#. Tag: title
+#, no-c-format
+msgid "Handling inheritance"
+msgstr "处理继承(Handling inheritance)"
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries which query for entities that are mapped as part of an inheritance must include all properties for the baseclass and all its subclasses."
+msgstr "原生 SQL 查询假若其查询结果实体是继承树中的一部分,它必须包含基类和所有子类的所有属性。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Parameters"
+msgstr "参数(Parameters)"
+
+#. Tag: para
+#, no-c-format
+msgid "Native SQL queries support positional as well as named parameters:"
+msgstr "原生查询支持位置参数和命名参数: "
+
+#. Tag: title
+#, no-c-format
+msgid "Named SQL queries"
+msgstr "命名 SQL 查询"
+
+#. Tag: para
+#, no-c-format
+msgid "Named SQL queries can be defined in the mapping document and called in exactly the same way as a named HQL query. In this case, you do <emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr "可以在映射文档中定义查询的名字,然后就可以象调用一个命名的 HQL 查询一样直接调用命名 SQL 查询.在这种情况下,我们<emphasis>不</emphasis> 需要调用 <literal>addEntity()</literal> 方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;return-join&gt;</literal> element is use to join associations and the <literal>&lt;load-collection&gt;</literal> element is used to define queries which initialize collections,"
+msgstr "<literal>&lt;return-join&gt;</literal> 和 <literal>&lt;load-collection&gt;</literal> 元素是用来连接关联以及将查询定义为预先初始化各个集合的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A named SQL query may return a scalar value. You must declare the column alias and Hibernate type using the <literal>&lt;return-scalar&gt;</literal> element:"
+msgstr "一个命名查询可能会返回一个标量值。你必须使用 <literal>&lt;return-scalar&gt;</literal> 元素来指定字段的别名和 Hibernate 类型:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can externalize the resultset mapping information in a <literal>&lt;resultset&gt;</literal> element which will allow you to either reuse them across several named queries or through the <literal>setResultSetMapping()</literal> API."
+msgstr "你可以把结果集映射的信息放在外部的 <literal>&lt;resultset&gt;</literal> 元素中,这样就可以在多个命名查询间,或者通过 <literal>setResultSetMapping()</literal> API 来访问。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can, alternatively, use the resultset mapping information in your hbm files directly in java code."
+msgstr "另外,你可以在 java 代码中直接使用 hbm 文件中的结果集定义信息。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Using return-property to explicitly specify column/alias names"
+msgstr "使用 return-property 来明确地指定字段/别名"
+
+#. Tag: para
+#, no-c-format
+msgid "You can explicitly tell Hibernate what column aliases to use with <literal>&lt;return-property&gt;</literal>, instead of using the <literal>{}</literal>-syntax to let Hibernate inject its own aliases.For example:"
+msgstr "使用 <literal>&lt;return-property&gt;</literal> 你可以明确的告诉 Hibernate 使用哪些字段别名,这取代了使用 <literal>{}</literal>-语法 来让 Hibernate 注入它自己的别名。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>&lt;return-property&gt;</literal> also works with multiple columns. This solves a limitation with the <literal>{}</literal>-syntax which cannot allow fine grained control of multi-column properties."
+msgstr "<literal>&lt;return-property&gt;</literal> 也可用于多个字段,它解决了使用 <literal>{}</literal>-语法不能细粒度控制多个字段的限制。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In this example <literal>&lt;return-property&gt;</literal> was used in combination with the <literal>{}</literal>-syntax for injection. This allows users to choose how they want to refer column and properties."
+msgstr "注意在这个例子中,我们使用了 <literal>&lt;return-property&gt;</literal> 结合 <literal>{}</literal> 的注入语法。允许用户来选择如何引用字段以及属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If your mapping has a discriminator you must use <literal>&lt;return-discriminator&gt;</literal> to specify the discriminator column."
+msgstr "如果你映射一个识别器(discriminator),你必须使用 <literal>&lt;return-discriminator&gt;</literal> 来指定识别器字段。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using stored procedures for querying"
+msgstr "使用存储过程来查询"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 provides support for queries via stored procedures and functions. Most of the following documentation is equivalent for both. The stored procedure/function must return a resultset as the first out-parameter to be able to work with Hibernate. An example of such a stored function in Oracle 9 and higher is as follows:"
+msgstr "Hibernate 3 引入了对存储过程查询(stored procedure)和函数(function)的支持。以下的说明中,这二者一般都适用。存储过程/函数必须返回一个结果集,作为 Hibernate 能够使用的第一个外部参数。下面是一个 Oracle9 和更高版本的存储过程例子。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To use this query in Hibernate you need to map it via a named query."
+msgstr "在 Hibernate 里要要使用这个查询,你需要通过命名查询来映射它。"
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedures currently only return scalars and entities. <literal>&lt;return-join&gt;</literal> and <literal>&lt;load-collection&gt;</literal> are not supported."
+msgstr "注意存储过程当前仅仅返回标量和实体现在。不支持 <literal>&lt;return-join&gt;</literal> 和 <literal>&lt;load-collection&gt;</literal>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Rules/limitations for using stored procedures"
+msgstr "使用存储过程的规则和限制"
+
+#. Tag: para
+#, no-c-format
+msgid "You cannot use stored procedures with Hibernate unless you follow some procedure/function rules. If they do not follow those rules they are not usable with Hibernate. If you still want to use these procedures you have to execute them via <literal>session.connection()</literal>. The rules are different for each database, since database vendors have different stored procedure semantics/syntax."
+msgstr "为了在 Hibernate 中使用存储过程,你必须遵循一些规则。不遵循这些规则的存储过程将不可用。如果你仍然想使用他们,你必须通过 <literal>session.connection()</literal> 来执行他们。这些规则针对于不同的数据库。因为数据库提供商有各种不同的存储过程语法和语义。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedure queries cannot be paged with <literal>setFirstResult()/setMaxResults()</literal>."
+msgstr "对存储过程进行的查询无法使用 <literal>setFirstResult()/setMaxResults()</literal> 进行分页。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The recommended call form is standard SQL92: <literal>{ ? = call functionName(&lt;parameters&gt;) }</literal> or <literal>{ ? = call procedureName(&lt;parameters&gt;}</literal>. Native call syntax is not supported."
+msgstr "建议采用的调用方式是标准 SQL92: <literal>{ ? = call functionName(&lt;parameters&gt;) }</literal> 或者 <literal>{ ? = call procedureName(&lt;parameters&gt;) }</literal>。原生调用语法不被支持。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For Oracle the following rules apply:"
+msgstr "对于 Oracle 有如下规则:"
+
+#. Tag: para
+#, no-c-format
+msgid "A function must return a result set. The first parameter of a procedure must be an <literal>OUT</literal> that returns a result set. This is done by using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle you need to define a <literal>REF CURSOR</literal> type. See Oracle literature for further information."
+msgstr "函数必须返回一个结果集。存储过程的第一个参数必须是 <literal>OUT</literal>,它返回一个结果集。这是通过 Oracle 9 或 10 的 <literal>SYS_REFCURSOR</literal> 类型来完成的。在 Oracle 中你需要定义一个 <literal>REF CURSOR</literal> 类型,参见 Oracle 的手册。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For Sybase or MS SQL server the following rules apply:"
+msgstr "对于 Sybase 或者 MS SQL server 有如下规则:"
+
+#. Tag: para
+#, no-c-format
+msgid "The procedure must return a result set. Note that since these servers can return multiple result sets and update counts, Hibernate will iterate the results and take the first result that is a result set as its return value. Everything else will be discarded."
+msgstr "存储过程必须返回一个结果集。注意这些 servers 可能返回多个结果集以及更新的数目。Hibernate 将取出第一条结果集作为它的返回值,其他将被丢弃。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it will probably be more efficient, but this is not a requirement."
+msgstr "如果你能够在存储过程里设定 <literal>SET NOCOUNT ON</literal>,这可能会效率更高,但这不是必需的。"
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for create, update and delete"
+msgstr "定制 SQL 用来 create,update 和 delete"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate3 can use custom SQL for create, update, and delete operations. The SQL can be overridden at the statement level or inidividual column level. This section describes statement overrides. For columns, see <xref linkend=\"mapping-column-read-and-write\" />."
+msgstr "Hibernate3 可以自定义 create、update 和 delete 操作。SQL 可以在语句或单个字段级别进行覆盖。本节描述了语句覆盖。对于字段覆盖,请参考 <xref linkend=\"mapping-column-read-and-write\" />。"
+
+#. Tag: para
+#, no-c-format
+msgid "The class and collection persisters in Hibernate already contain a set of configuration time generated strings (insertsql, deletesql, updatesql etc.). The mapping tags <literal>&lt;sql-insert&gt;</literal>, <literal>&lt;sql-delete&gt;</literal>, and <literal>&lt;sql-update&gt;</literal> override these strings:"
+msgstr "Hibernate3 能够使用定制的 SQL 语句来执行 create,update 和 delete 操作。在 Hibernate 中,持久化的类和集合已经包含了一套配置期产生的语句(insertsql,deletesql,updatesql 等等),这些映射标记 <literal>&lt;sql-insert&gt;</literal>,<literal>&lt;sql-delete&gt;</literal> 和 <literal>&lt;sql-update&gt;</literal> 重载了这些语句。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL is directly executed in your database, so you can use any dialect you like. This will reduce the portability of your mapping if you use database specific SQL."
+msgstr "这些 SQL 直接在你的数据库里执行,所以你可以自由的使用你喜欢的任意语法。但如果你使用数据库特定的语法,这当然会降低你映射的可移植性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Stored procedures are supported if the <literal>callable</literal> attribute is set:"
+msgstr "如果设定 <literal>callable</literal>,则能够支持存储过程了。"
+
+#. Tag: para
+#, no-c-format
+msgid "The order of the positional parameters is vital, as they must be in the same sequence as Hibernate expects them."
+msgstr "参数的位置顺序是非常重要的,他们必须和 Hibernate 所期待的顺序相同。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can view the expected order by enabling debug logging for the <literal>org.hibernate.persister.entity</literal> level. With this level enabled, Hibernate will print out the static SQL that is used to create, update, delete etc. entities. To view the expected sequence, do not include your custom SQL in the mapping files, as this will override the Hibernate generated static SQL."
+msgstr "你能够通过设定日志调试级别为 <literal>org.hiberante.persister.entity</literal> 来查看 Hibernate 所期待的顺序。在这个级别下,Hibernate 将会打印出create,update 和 delete 实体的静态 SQL。(如果想看到预计的顺序。记得不要将定制 SQL 包含在映射文件里,因为他们会重载 Hibernate 生成的静态 SQL。) "
+
+#. Tag: para
+#, no-c-format
+msgid "The stored procedures are in most cases required to return the number of rows inserted, updated and deleted, as Hibernate has some runtime checks for the success of the statement. Hibernate always registers the first statement parameter as a numeric output parameter for the CUD operations:"
+msgstr "在大多数情况下(最好这么做),存储过程需要返回插入/更新/删除的行数,因为 Hibernate 对语句的成功执行有些运行时的检查。Hibernate 常会把进行 CUD 操作的语句的第一个参数注册为一个数值型输出参数。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Custom SQL for loading"
+msgstr "定制装载 SQL"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also declare your own SQL (or HQL) queries for entity loading. As with inserts, updates, and deletes, this can be done at the individual column level as described in <xref linkend=\"mapping-column-read-and-write\" /> or at the statement level. Here is an example of a statement level override:"
+msgstr "你也可以为实体加载声明自己的 SQL(或 HQL)。如 <xref linkend=\"mapping-column-read-and-write\" /> 所描述的,inserts、updates 和 deletes 可以在字段级别或语句级别来完成。下面是一个语句覆盖的例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "This is just a named query declaration, as discussed earlier. You can reference this named query in a class mapping:"
+msgstr "这只是一个前面讨论过的命名查询声明,你可以在类映射里引用这个命名查询。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This even works with stored procedures."
+msgstr "这也可以用于存储过程"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even define a query for collection loading:"
+msgstr "你甚至可以定一个用于集合装载的查询: "
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define an entity loader that loads a collection by join fetching:"
+msgstr "你甚至还可以定义一个实体装载器,它通过连接抓取装载一个集合: "
+
+#~ msgid ""
+#~ "You can also declare your own SQL (or HQL) queries for entity loading:"
+#~ msgstr "你可能需要声明你自己的 SQL(或 HQL)来装载实体:"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\", Hibernate.STRING)\n"
+#~ " .addScalar(\"BIRTHDATE\", Hibernate.DATE)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+#~ " .addScalar(\"ID\", Hibernate.LONG)\n"
+#~ " .addScalar(\"NAME\")\n"
+#~ " .addScalar(\"BIRTHDATE\")"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat."
+#~ "class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity"
+#~ "(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM "
+#~ "CATS\").addEntity(Cat.class);\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\")."
+#~ "addEntity(Cat.class);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, "
+#~ "D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME "
+#~ "FROM CATS c, DOGS d \n"
+#~ "    WHERE c.DOG_ID = d.D_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dog\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, "
+#~ "CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID "
+#~ "FROM CATS c, DOGS d\n"
+#~ "    WHERE c.ID = d.CAT_ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addJoin(\"cat.dogs\");"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE "
+#~ "c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT c.*, m.*  FROM CATS c, CATS m WHERE c."
+#~ "MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, "
+#~ "CATS m WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT {cat.*}, {mother.*}  FROM CATS c, CATS m "
+#~ "WHERE c.MOTHER_ID = c.ID\")\n"
+#~ " .addEntity(\"cat\", Cat.class)\n"
+#~ " .addEntity(\"mother\", Cat.class)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+#~ "         \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother."
+#~ "*} \" +\n"
+#~ "         \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+#~ "\n"
+#~ "List loggedCats = sess.createSQLQuery(sql)\n"
+#~ "        .addEntity(\"cat\", Cat.class)\n"
+#~ "        .addEntity(\"mother\", Cat.class).list()"
+
+#, fuzzy
+#~ msgid "A_NAME as {item.name}"
+#~ msgstr "<literal>A_NAME as {item.name}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].class}"
+#~ msgstr "<literal>{[aliasname].class}</literal>"
+
+#, fuzzy
+#~ msgid "DISC as {item.class}"
+#~ msgstr "<literal>DISC as {item.class}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].*}"
+#~ msgstr "<literal>{[aliasname].*}</literal>"
+#~ msgid "{item.*}"
+#~ msgstr "{item.*}"
+
+#, fuzzy
+#~ msgid "{[aliasname].key}"
+#~ msgstr "<literal>{[aliasname].key}</literal>"
+
+#, fuzzy
+#~ msgid "ORGID as {coll.key}"
+#~ msgstr "<literal>ORGID as {coll.key}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].id}"
+#~ msgstr "<literal>{[aliasname].id}</literal>"
+
+#, fuzzy
+#~ msgid "EMPID as {coll.id}"
+#~ msgstr "<literal>EMPID as {coll.id}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].element}"
+#~ msgstr "<literal>{[aliasname].element}</literal>"
+
+#, fuzzy
+#~ msgid "XID as {coll.element}"
+#~ msgstr "<literal>XID as {coll.element}</literal>"
+
+#, fuzzy
+#~ msgid "NAME as {coll.element.name}"
+#~ msgstr "<literal>NAME as {coll.element.name}</literal>"
+
+#, fuzzy
+#~ msgid "{[aliasname].element.*}"
+#~ msgstr "<literal>{[aliasname].element.*}</literal>"
+
+#, fuzzy
+#~ msgid "{coll.element.*}"
+#~ msgstr "{coll.*}"
+#~ msgid "{coll.*}"
+#~ msgstr "{coll.*}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
+#~ msgstr ""
+#~ "sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+#~ "        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE "
+#~ "NAME like ?\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus%\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus%\").list();          ]]>"
+#~ msgstr ""
+#~ "Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?"
+#~ "\").addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(0, \"Pus&#37;\").list();\n"
+#~ "     \n"
+#~ "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+#~ "addEntity(Cat.class);\n"
+#~ "List pusList = query.setString(\"name\", \"Pus&#37;\").list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"persons\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"persons\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex}\n"
+#~ "    FROM PERSON person\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List people = sess.getNamedQuery(\"persons\")\n"
+#~ "    .setString(\"namePattern\", namePattern)\n"
+#~ "    .setMaxResults(50)\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"personsWith\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"personsWith\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return-scalar column=\"name\" type=\"string\"/>\n"
+#~ "    <return-scalar column=\"age\" type=\"long\"/>\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return-scalar column=\"name\" type=\"string\"/&gt;\n"
+#~ "    &lt;return-scalar column=\"age\" type=\"long\"/&gt;\n"
+#~ "    SELECT p.NAME AS name,\n"
+#~ "           p.AGE AS age,\n"
+#~ "    FROM PERSON p WHERE p.NAME LIKE 'Hiber&#37;'\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<resultset name=\"personAddress\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\"/>\n"
+#~ "    <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+#~ "</resultset>\n"
+#~ "\n"
+#~ "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           address.STREET AS {address.street},\n"
+#~ "           address.CITY AS {address.city},\n"
+#~ "           address.STATE AS {address.state},\n"
+#~ "           address.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS address\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;resultset name=\"personAddress\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"address\" property=\"person.mailingAddress\"/"
+#~ "&gt;\n"
+#~ "&lt;/resultset&gt;\n"
+#~ "\n"
+#~ "&lt;sql-query name=\"personsWith\" resultset-ref=\"personAddress\"&gt;\n"
+#~ "    SELECT person.NAME AS {person.name},\n"
+#~ "           person.AGE AS {person.age},\n"
+#~ "           person.SEX AS {person.sex},\n"
+#~ "           adddress.STREET AS {address.street},\n"
+#~ "           adddress.CITY AS {address.city},\n"
+#~ "           adddress.STATE AS {address.state},\n"
+#~ "           adddress.ZIP AS {address.zip}\n"
+#~ "    FROM PERSON person\n"
+#~ "    JOIN ADDRESS adddress\n"
+#~ "        ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+#~ "    WHERE person.NAME LIKE :namePattern\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "List cats = sess.createSQLQuery(\n"
+#~ "        \"select {cat.*}, {kitten.*} from cats cat, cats kitten where "
+#~ "kitten.mother = cat.id\"\n"
+#~ "    )\n"
+#~ "    .setResultSetMapping(\"catAndKitten\")\n"
+#~ "    .list();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+#~ "    <return alias=\"person\" class=\"eg.Person\">\n"
+#~ "        <return-property name=\"name\" column=\"myName\"/>\n"
+#~ "        <return-property name=\"age\" column=\"myAge\"/>\n"
+#~ "        <return-property name=\"sex\" column=\"mySex\"/>\n"
+#~ "    </return>\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "</sql-query>\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"mySqlQuery\"&gt;\n"
+#~ "    &lt;return alias=\"person\" class=\"eg.Person\"&gt;\n"
+#~ "        &lt;return-property name=\"name\" column=\"myName\"/&gt;\n"
+#~ "        &lt;return-property name=\"age\" column=\"myAge\"/&gt;\n"
+#~ "        &lt;return-property name=\"sex\" column=\"mySex\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    SELECT person.NAME AS myName,\n"
+#~ "           person.AGE AS myAge,\n"
+#~ "           person.SEX AS mySex,\n"
+#~ "    FROM PERSON person WHERE person.NAME LIKE :name\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "        <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
+#~ "    </return>\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"organizationCurrentEmployments\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"myEndDate\"/&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "        SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+#~ "        STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+#~ "        REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+#~ "        FROM EMPLOYMENT\n"
+#~ "        WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+#~ "        ORDER BY STARTDATE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+#~ "    RETURN SYS_REFCURSOR\n"
+#~ "AS\n"
+#~ "    st_cursor SYS_REFCURSOR;\n"
+#~ "BEGIN\n"
+#~ "    OPEN st_cursor FOR\n"
+#~ " SELECT EMPLOYEE, EMPLOYER,\n"
+#~ " STARTDATE, ENDDATE,\n"
+#~ " REGIONCODE, EID, VALUE, CURRENCY\n"
+#~ " FROM EMPLOYMENT;\n"
+#~ "      RETURN  st_cursor;\n"
+#~ " END;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
+#~ "    <return alias=\"emp\" class=\"Employment\">\n"
+#~ "        <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
+#~ "        <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
+#~ "        <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
+#~ "        <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
+#~ "        <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
+#~ "        <return-property name=\"id\" column=\"EID\"/>\n"
+#~ "        <return-property name=\"salary\">\n"
+#~ "            <return-column name=\"VALUE\"/>\n"
+#~ "            <return-column name=\"CURRENCY\"/>\n"
+#~ "        </return-property>\n"
+#~ "    </return>\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"selectAllEmployees_SP\" callable=\"true\"&gt;\n"
+#~ "    &lt;return alias=\"emp\" class=\"Employment\"&gt;\n"
+#~ "        &lt;return-property name=\"employee\" column=\"EMPLOYEE\"/&gt;\n"
+#~ "        &lt;return-property name=\"employer\" column=\"EMPLOYER\"/&gt;\n"
+#~ "        &lt;return-property name=\"startDate\" column=\"STARTDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"endDate\" column=\"ENDDATE\"/&gt;\n"
+#~ "        &lt;return-property name=\"regionCode\" column=\"REGIONCODE\"/"
+#~ "&gt;\n"
+#~ "        &lt;return-property name=\"id\" column=\"EID\"/&gt;\n"
+#~ "        &lt;return-property name=\"salary\"&gt;\n"
+#~ "            &lt;return-column name=\"VALUE\"/&gt;\n"
+#~ "            &lt;return-column name=\"CURRENCY\"/&gt;\n"
+#~ "        &lt;/return-property&gt;\n"
+#~ "    &lt;/return&gt;\n"
+#~ "    { ? = call selectAllEmployments() }\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-"
+#~ "insert>\n"
+#~ "    <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
+#~ "    <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert&gt;INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )"
+#~ "&lt;/sql-insert&gt;\n"
+#~ "    &lt;sql-update&gt;UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?&lt;/sql-"
+#~ "update&gt;\n"
+#~ "    &lt;sql-delete&gt;DELETE FROM PERSON WHERE ID=?&lt;/sql-delete&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-"
+#~ "insert>\n"
+#~ "    <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-"
+#~ "delete>\n"
+#~ "    <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-"
+#~ "update>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;sql-insert callable=\"true\"&gt;{call createPerson (?, ?)}&lt;/"
+#~ "sql-insert&gt;\n"
+#~ "    &lt;sql-delete callable=\"true\"&gt;{? = call deletePerson (?)}&lt;/"
+#~ "sql-delete&gt;\n"
+#~ "    &lt;sql-update callable=\"true\"&gt;{? = call updatePerson (?, ?)}"
+#~ "&lt;/sql-update&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL%ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;]]>"
+#~ msgstr ""
+#~ "CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+#~ "VARCHAR2)\n"
+#~ "    RETURN NUMBER IS\n"
+#~ "BEGIN\n"
+#~ "\n"
+#~ "    update PERSON\n"
+#~ "    set\n"
+#~ "        NAME = uname,\n"
+#~ "    where\n"
+#~ "        ID = uid;\n"
+#~ "\n"
+#~ "    return SQL&#37;ROWCOUNT;\n"
+#~ "\n"
+#~ "END updatePerson;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/"
+#~ "&gt;\n"
+#~ "    SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+#~ "    FROM PERSON\n"
+#~ "    WHERE ID=?\n"
+#~ "    FOR UPDATE\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\">\n"
+#~ "    <id name=\"id\">\n"
+#~ "        <generator class=\"increment\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"name\" not-null=\"true\"/>\n"
+#~ "    <loader query-ref=\"person\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Person\"&gt;\n"
+#~ "    &lt;id name=\"id\"&gt;\n"
+#~ "        &lt;generator class=\"increment\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"name\" not-null=\"true\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"person\"/&gt;\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
+#~ "    <key/>\n"
+#~ "    <one-to-many class=\"Employment\"/>\n"
+#~ "    <loader query-ref=\"employments\"/>\n"
+#~ "</set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"employments\" inverse=\"true\"&gt;\n"
+#~ "    &lt;key/&gt;\n"
+#~ "    &lt;one-to-many class=\"Employment\"/&gt;\n"
+#~ "    &lt;loader query-ref=\"employments\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"employments\">\n"
+#~ "    <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"employments\"&gt;\n"
+#~ "    &lt;load-collection alias=\"emp\" role=\"Person.employments\"/&gt;\n"
+#~ "    SELECT {emp.*}\n"
+#~ "    FROM EMPLOYMENT emp\n"
+#~ "    WHERE EMPLOYER = :id\n"
+#~ "    ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+#~ "&lt;/sql-query&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<sql-query name=\"person\">\n"
+#~ "    <return alias=\"pers\" class=\"Person\"/>\n"
+#~ "    <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "</sql-query>]]>"
+#~ msgstr ""
+#~ "&lt;sql-query name=\"person\"&gt;\n"
+#~ "    &lt;return alias=\"pers\" class=\"Person\"/&gt;\n"
+#~ "    &lt;return-join alias=\"emp\" property=\"pers.employments\"/&gt;\n"
+#~ "    SELECT NAME AS {pers.*}, {emp.*}\n"
+#~ "    FROM PERSON pers\n"
+#~ "    LEFT OUTER JOIN EMPLOYMENT emp\n"
+#~ "        ON pers.ID = emp.PERSON_ID\n"
+#~ "    WHERE ID=?\n"
+#~ "&lt;/sql-query&gt;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/quickstart.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/quickstart.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/quickstart.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,12 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Content-Type: text/plain; charset=utf-8\n"
+msgid "ROLES_OF_TRANSLATORS"
+msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+msgid "CREDIT_FOR_TRANSLATORS"
+msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/readonly.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/readonly.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/readonly.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1124 @@
+# Language zh-CN translations for PACKAGE package.
+# Automatically generated, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-25 06:26+0000\n"
+"PO-Revision-Date: 2010-03-25 06:26+0000\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: readonly.xml:33
+#, no-c-format
+msgid "Read-only entities"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:36
+#, no-c-format
+msgid ""
+"Hibernate's treatment of <emphasis>read-only</emphasis> entities may differ "
+"from what you may have encountered elsewhere. Incorrect usage may cause "
+"unexpected results."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:43
+#, no-c-format
+msgid "When an entity is read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:48
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check the entity's simple properties or single-"
+"ended associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:54
+#, no-c-format
+msgid ""
+"Hibernate will not update simple properties or updatable single-ended "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:60
+#, no-c-format
+msgid ""
+"Hibernate will not update the version of the read-only entity if only simple "
+"properties or single-ended updatable associations are changed;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:69
+#, no-c-format
+msgid ""
+"In some ways, Hibernate treats read-only entities the same as entities that "
+"are not read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:75
+#, no-c-format
+msgid ""
+"Hibernate cascades operations to associations as defined in the entity "
+"mapping."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:81
+#, no-c-format
+msgid ""
+"Hibernate updates the version if the entity has a collection with changes "
+"that dirties the entity;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:87
+#, no-c-format
+msgid "A read-only entity can be deleted."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:94
+#, no-c-format
+msgid ""
+"Even if an entity is not read-only, its collection association can be "
+"affected if it contains a read-only entity."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:99
+#, no-c-format
+msgid ""
+"For details about the affect of read-only entities on different property and "
+"association types, see <xref linkend=\"readonly-proptypes\"/>."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:105
+#, no-c-format
+msgid "For details about how to make entities read-only, see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:110
+#, no-c-format
+msgid "Hibernate does some optimizing for read-only entities:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:115
+#, no-c-format
+msgid ""
+"It saves execution time by not dirty-checking simple properties or single-"
+"ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:121
+#, no-c-format
+msgid "It saves memory by deleting database snapshots."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:128
+#, no-c-format
+msgid "Making persistent entities read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:130
+#, no-c-format
+msgid ""
+"Only persistent entities can be made read-only. Transient and detached "
+"entities must be put in persistent state before they can be made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:136
+#, no-c-format
+msgid ""
+"Hibernate provides the following ways to make persistent entities read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:142
+#, no-c-format
+msgid ""
+"you can map an entity class as <emphasis>immutable</emphasis>; when an "
+"entity of an immutable class is made persistent, Hibernate automatically "
+"makes it read-only. see <xref linkend=\"readonly-api-immutable\"/> for "
+"details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:150
+#, no-c-format
+msgid ""
+"you can change a default so that entities loaded into the session by "
+"Hibernate are automatically made read-only; see <xref linkend=\"readonly-api-"
+"loaddefault\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:157
+#, no-c-format
+msgid ""
+"you can make an HQL query or criteria read-only so that entities loaded when "
+"the query or criteria executes, scrolls, or iterates, are automatically made "
+"read-only; see <xref linkend=\"readonly-api-querycriteria\"/> for details"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:165
+#, no-c-format
+msgid ""
+"you can make a persistent entity that is already in the in the session read-"
+"only; see <xref linkend=\"readonly-api-entity\"/> for details"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:174
+#, no-c-format
+msgid "Entities of immutable classes"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:176
+#, no-c-format
+msgid ""
+"When an entity instance of an immutable class is made persistent, Hibernate "
+"automatically makes it read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:180
+#, no-c-format
+msgid ""
+"An entity of an immutable class can created and deleted the same as an "
+"entity of a mutable class."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:185
+#, no-c-format
+msgid ""
+"Hibernate treats a persistent entity of an immutable class the same way as a "
+"read-only persistent entity of a mutable class. The only exception is that "
+"Hibernate will not allow an entity of an immutable class to be changed so it "
+"is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:196
+#, no-c-format
+msgid "Loading persistent entities as read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:199 readonly.xml:286
+#, no-c-format
+msgid "Entities of immutable classes are automatically loaded as read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:205
+#, no-c-format
+msgid ""
+"To change the default behavior so Hibernate loads entity instances of "
+"mutable classes into the session and automatically makes them read-only, "
+"call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:210
+#, no-c-format
+msgid "Session.setDefaultReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:212
+#, no-c-format
+msgid ""
+"To change the default back so entities loaded by Hibernate are not made read-"
+"only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:216
+#, no-c-format
+msgid "Session.setDefaultReadOnly( false );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:218
+#, no-c-format
+msgid "You can determine the current setting by calling:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:221
+#, no-c-format
+msgid "Session.isDefaultReadOnly();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:223
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, entities loaded by the "
+"following are automatically made read-only:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:229
+#, no-c-format
+msgid "Session.load()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:234
+#, no-c-format
+msgid "Session.get()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:239
+#, no-c-format
+msgid "Session.merge()"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:244
+#, no-c-format
+msgid ""
+"executing, scrolling, or iterating HQL queries and criteria; to override "
+"this setting for a particular HQL query or criteria see"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:253
+#, no-c-format
+msgid "Changing this default has no effect on:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:258
+#, no-c-format
+msgid "persistent entities already in the session when the default was changed"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:264
+#, no-c-format
+msgid ""
+"persistent entities that are refreshed via Session.refresh(); a refreshed "
+"persistent entity will only be read-only if it was read-only before "
+"refreshing"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:272
+#, no-c-format
+msgid ""
+"persistent entities added by the application via Session.persist(), Session."
+"save(), and Session.update() Session.saveOrUpdate()"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:283
+#, no-c-format
+msgid "Loading read-only entities from an HQL query/criteria"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:292
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns false (the default) when an HQL query "
+"or criteria executes, then entities and proxies of mutable classes loaded by "
+"the query will not be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:299
+#, no-c-format
+msgid ""
+"You can override this behavior so that entities and proxies loaded by an HQL "
+"query or criteria are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:304
+#, no-c-format
+msgid "For an HQL query, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:307
+#, no-c-format
+msgid "Query.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:309
+#, no-c-format
+msgid ""
+"<literal>Query.setReadOnly( true )</literal> must be called before "
+"<literal>Query.list()</literal>, <literal>Query.uniqueResult()</literal>, "
+"<literal>Query.scroll()</literal>, or <literal>Query.iterate()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:315
+#, no-c-format
+msgid "For an HQL criteria, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:318
+#, no-c-format
+msgid "Criteria.setReadOnly( true );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:320
+#, no-c-format
+msgid ""
+"<literal>Criteria.setReadOnly( true )</literal> must be called before "
+"<literal>Criteria.list()</literal>, <literal>Criteria.uniqueResult()</"
+"literal>, or <literal>Criteria.scroll()</literal>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:326
+#, no-c-format
+msgid ""
+"Entities and proxies that exist in the session before being returned by an "
+"HQL query or criteria are not affected."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:331
+#, no-c-format
+msgid ""
+"Uninitialized persistent collections returned by the query are not affected. "
+"Later, when the collection is initialized, entities loaded into the session "
+"will be read-only if Session.isDefaultReadOnly() returns true."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:338
+#, no-c-format
+msgid ""
+"Using <literal>Query.setReadOnly( true )</literal> or <literal>Criteria."
+"setReadOnly( true )</literal> works well when a single HQL query or criteria "
+"loads all the entities and intializes all the proxies and collections that "
+"the application needs to be read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:346
+#, no-c-format
+msgid ""
+"When it is not possible to load and initialize all necessary entities in a "
+"single query or criteria, you can temporarily change the session default to "
+"load entities as read-only before the query is executed. Then you can "
+"explicitly initialize proxies and collections before restoring the session "
+"default."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:355
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"setDefaultReadOnly( true );\n"
+"Contract contract = \n"
+"   ( Contract ) session.createQuery(\n"
+"           \"from Contract where customerName = 'Sherman'\" )\n"
+"           .uniqueResult();\n"
+"Hibernate.initialize( contract.getPlan() );\n"
+"Hibernate.initialize( contract.getVariations() );\n"
+"Hibernate.initialize( contract.getNotes() );\n"
+"setDefaultReadOnly( false );\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:357
+#, no-c-format
+msgid ""
+"If Session.isDefaultReadOnly() returns true, then you can use Query."
+"setReadOnly( false ) and Criteria.setReadOnly( false ) to override this "
+"session setting and load entities that are not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:367
+#, no-c-format
+msgid "Making a persistent entity read-only"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:369
+#, no-c-format
+msgid ""
+"Persistent entities of immutable classes are automatically made read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:375
+#, no-c-format
+msgid "To make a persistent entity or proxy read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:378
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, true)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:380
+#, no-c-format
+msgid ""
+"To change a read-only entity or proxy of a mutable class so it is no longer "
+"read-only, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:384
+#, no-c-format
+msgid "Session.setReadOnly(entityOrProxy, false)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:387
+#, no-c-format
+msgid ""
+"When a read-only entity or proxy is changed so it is no longer read-only, "
+"Hibernate assumes that the current state of the read-only entity is "
+"consistent with its database representation. If this is not true, then any "
+"non-flushed changes made before or while the entity was read-only, will be "
+"ignored."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:396
+#, no-c-format
+msgid ""
+"To throw away non-flushed changes and make the persistent entity consistent "
+"with its database representation, call:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:400
+#, no-c-format
+msgid "session.refresh( entity );"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:402
+#, no-c-format
+msgid ""
+"To flush changes made before or while the entity was read-only and make the "
+"database representation consistent with the current state of the persistent "
+"entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:408
+#, no-c-format
+msgid ""
+"// evict the read-only entity so it is detached\n"
+"session.evict( entity );\n"
+"\n"
+"// make the detached entity (with the non-flushed changes) persistent\n"
+"session.update( entity );\n"
+"\n"
+"// now entity is no longer read-only and its changes can be flushed\n"
+"s.flush();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:413
+#, no-c-format
+msgid "Read-only affect on property type"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:415
+#, no-c-format
+msgid ""
+"The following table summarizes how different property types are affected by "
+"making an entity read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:421
+#, no-c-format
+msgid "Affect of read-only entity on property types"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:427
+#, no-c-format
+msgid "Property/Association Type"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:428
+#, no-c-format
+msgid "Changes flushed to DB?"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:433
+#, no-c-format
+msgid "Simple"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:435
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-simple\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:439
+#, no-c-format
+msgid "<entry>no*</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:443
+#, no-c-format
+msgid "Unidirectional one-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:444
+#, no-c-format
+msgid "Unidirectional many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:445
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-singleended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:451 readonly.xml:452
+#, no-c-format
+msgid "<para>no*</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:457
+#, no-c-format
+msgid "Unidirectional one-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:458
+#, no-c-format
+msgid "Unidirectional many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:459
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manyended-unidir\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:464 readonly.xml:465 readonly.xml:489
+#, no-c-format
+msgid "<para>yes</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:470
+#, no-c-format
+msgid "<para>Bidirectional one-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:471
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetoone-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:475
+#, no-c-format
+msgid "only if the owning entity is not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:479
+#, no-c-format
+msgid "<para>Bidirectional one-to-many/many-to-one</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:480
+#, no-c-format
+msgid "inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:481
+#, no-c-format
+msgid "non-inverse collection"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:482
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-onetomany-manytoone\"/>)"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:488
+#, no-c-format
+msgid "only added/removed entities that are not read-only*"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:494
+#, no-c-format
+msgid "<para>Bidirectional many-to-many</para>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:495
+#, no-c-format
+msgid "(<xref linkend=\"readonly-proptypes-manytomany-bidir\"/>)"
+msgstr ""
+
+#. Tag: entry
+#: readonly.xml:499
+#, no-c-format
+msgid "<entry>yes</entry>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:505
+#, no-c-format
+msgid ""
+"* Behavior is different when the entity having the property/association is "
+"read-only, compared to when it is not read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:511
+#, no-c-format
+msgid "Simple properties"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:513
+#, no-c-format
+msgid ""
+"When a persistent object is read-only, Hibernate does not dirty-check simple "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:518
+#, no-c-format
+msgid ""
+"Hibernate will not synchronize simple property state changes to the "
+"database. If you have automatic versioning, Hibernate will not increment the "
+"version if any simple properties change."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:524
+#, no-c-format
+msgid ""
+"Session session = factory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"// get a contract and make it read-only\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"\n"
+"// contract.getCustomerName() is \"Sherman\"\n"
+"contract.setCustomerName( \"Yogi\" );\n"
+"tx.commit();\n"
+"\n"
+"tx = session.beginTransaction();\n"
+"\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"// contract.getCustomerName() is still \"Sherman\"\n"
+"...\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:529
+#, no-c-format
+msgid "Unidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:532
+#, no-c-format
+msgid "Unidirectional one-to-one and many-to-one"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:534
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-one and many-to-one associations in "
+"the same way when the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:540
+#, no-c-format
+msgid ""
+"We use the term <emphasis>unidirectional single-ended association</emphasis> "
+"when referring to functionality that is common to unidirectional one-to-one "
+"and many-to-one associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:547
+#, no-c-format
+msgid ""
+"Hibernate does not dirty-check unidirectional single-ended associations when "
+"the owning entity is read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:552
+#, no-c-format
+msgid ""
+"If you change a read-only entity's reference to a unidirectional single-"
+"ended association to null, or to refer to a different entity, that change "
+"will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:560
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, then its references to unidirectional "
+"single-ended associations must be assigned when that entity is first "
+"created. Because the entity is automatically made read-only, these "
+"references can not be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:570
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to unidirectional single-ended associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:576
+#, no-c-format
+msgid ""
+"In the following examples, Contract has a unidirectional many-to-one "
+"association with Plan. Contract cascades save and update operations to the "
+"association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:582
+#, no-c-format
+msgid ""
+"The following shows that changing a read-only entity's many-to-one "
+"association reference to null has no effect on the entity's database "
+"representation."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:588
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and set its plan to null \n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"contract.setPlan( null );\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:590
+#, no-c-format
+msgid ""
+"The following shows that, even though an update to a read-only entity's many-"
+"to-one association has no affect on the entity's database representation, "
+"flush still cascades the save-update operation to the locally changed "
+"association."
+msgstr ""
+
+#. Tag: programlisting
+#: readonly.xml:599
+#, no-c-format
+msgid ""
+"// get a contract with an existing plan;\n"
+"// make the contract read-only and change to a new plan\n"
+"tx = session.beginTransaction();\n"
+"Contract contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"session.setReadOnly( contract, true );\n"
+"Plan newPlan = new Plan( \"new plan\"\n"
+"contract.setPlan( newPlan);\n"
+"tx.commit();\n"
+"\n"
+"// get the same contract\n"
+"tx = session.beginTransaction();\n"
+"contract = ( Contract ) session.get( Contract.class, contractId );\n"
+"newPlan = ( Contract ) session.get( Plan.class, newPlan.getId() ); \n"
+"\n"
+"// contract.getPlan() still refers to the original plan;\n"
+"// newPlan is non-null because it was persisted when \n"
+"// the previous transaction was committed; \n"
+"\n"
+"tx.commit();\n"
+"session.close();"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:604
+#, no-c-format
+msgid "Unidirectional one-to-many and many-to-many"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:606
+#, no-c-format
+msgid ""
+"Hibernate treats unidirectional one-to-many and many-to-many associations "
+"owned by a read-only entity the same as when owned by an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:613
+#, no-c-format
+msgid ""
+"Hibernate dirty-checks unidirectional one-to-many and many-to-many "
+"associations;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:618
+#, no-c-format
+msgid ""
+"The collection can contain entities that are read-only, as well as entities "
+"that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:624
+#, no-c-format
+msgid ""
+"Entities can be added and removed from the collection; changes are flushed "
+"to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:629
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in the collection if they dirty the owning entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:640
+#, no-c-format
+msgid "Bidirectional associations"
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:643
+#, no-c-format
+msgid "<title>Bidirectional one-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:645
+#, no-c-format
+msgid "If a read-only entity owns a bidirectional one-to-one association:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:652
+#, no-c-format
+msgid "Hibernate does not dirty-check the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:657
+#, no-c-format
+msgid ""
+"updates that change the association reference to null or to refer to a "
+"different entity will not be flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:664
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will not increment the version "
+"due to local changes to the association."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:673
+#, no-c-format
+msgid ""
+"If an entity is of an immutable class, and it owns a bidirectional one-to-"
+"one association, then its reference must be assigned when that entity is "
+"first created. Because the entity is automatically made read-only, these "
+"references cannot be updated."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:683
+#, no-c-format
+msgid ""
+"When the owner is not read-only, Hibernate treats an association with a read-"
+"only entity the same as when the association is with an entity that is not "
+"read-only."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:693
+#, no-c-format
+msgid "<title>Bidirectional one-to-many/many-to-one</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:695
+#, no-c-format
+msgid ""
+"A read-only entity has no impact on a bidirectional one-to-many/many-to-one "
+"association if:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:702
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using an inverse collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:708
+#, no-c-format
+msgid ""
+"the read-only entity is on the one-to-many side using a non-inverse "
+"collection;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:714
+#, no-c-format
+msgid ""
+"the one-to-many side uses a non-inverse collection that contains the read-"
+"only entity"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:721
+#, no-c-format
+msgid "When the one-to-many side uses an inverse collection:"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:727
+#, no-c-format
+msgid ""
+"a read-only entity can only be added to the collection when it is created;"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:733
+#, no-c-format
+msgid ""
+"a read-only entity can only be removed from the collection by an orphan "
+"delete or by explicitly deleting the entity."
+msgstr ""
+
+#. Tag: title
+#: readonly.xml:744
+#, no-c-format
+msgid "<title>Bidirectional many-to-many</title>"
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:745
+#, no-c-format
+msgid ""
+"Hibernate treats bidirectional many-to-many associations owned by a read-"
+"only entity the same as when owned by an entity that is not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:752
+#, no-c-format
+msgid "Hibernate dirty-checks bidirectional many-to-many associations."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:757
+#, no-c-format
+msgid ""
+"The collection on either side of the association can contain entities that "
+"are read-only, as well as entities that are not read-only."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:763
+#, no-c-format
+msgid ""
+"Entities are added and removed from both sides of the collection; changes "
+"are flushed to the database."
+msgstr ""
+
+#. Tag: para
+#: readonly.xml:769
+#, no-c-format
+msgid ""
+"If automatic versioning is used, Hibernate will update the version due to "
+"changes in both sides of the collection if they dirty the entity owning the "
+"respective collections."
+msgstr ""

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/session_api.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/session_api.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/session_api.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1343 @@
+# translation of session_api.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: session_api\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-16 09:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Working with objects"
+msgstr "与对象共事"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate is a full object/relational mapping solution that not only shields the developer from the details of the underlying database management system, but also offers <emphasis>state management</emphasis> of objects. This is, contrary to the management of SQL <literal>statements</literal> in common JDBC/SQL persistence layers, a natural object-oriented view of persistence in Java applications."
+msgstr "Hibernate 是完整的对象/关系映射解决方案,它提供了对象<emphasis>状态管理(state management)</emphasis>的功能,使开发者不再需要理会底层数据库系统的细节。也就是说,相对于常见的 JDBC/SQL 持久层方案中需要<literal>管理 SQL 语句</literal>,Hibernate 采用了更自然的面向对象的视角来持久化 Java 应用中的数据。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In other words, Hibernate application developers should always think about the <emphasis>state</emphasis> of their objects, and not necessarily about the execution of SQL statements. This part is taken care of by Hibernate and is only relevant for the application developer when tuning the performance of the system."
+msgstr "换句话说,使用 Hibernate 的开发者应该总是关注对象的<emphasis>状态(state)</emphasis>,不必考虑 SQL 语句的执行。这部分细节已经由 Hibernate 掌管妥当,只有开发者在进行系统性能调优的时候才需要进行了解。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate object states"
+msgstr "Hibernate 对象状态(object states)"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate defines and supports the following object states:"
+msgstr "Hibernate 定义并支持下列对象状态(state):"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Transient</emphasis> - an object is transient if it has just been instantiated using the <literal>new</literal> operator, and it is not associated with a Hibernate <literal>Session</literal>. It has no persistent representation in the database and no identifier value has been assigned. Transient instances will be destroyed by the garbage collector if the application does not hold a reference anymore. Use the Hibernate <literal>Session</literal> to make an object persistent (and let Hibernate take care of the SQL statements that need to be executed for this transition)."
+msgstr "<emphasis>瞬时(Transient)</emphasis> — 由 <literal>new</literal> 操作符创建,且尚未与Hibernate <literal>Session</literal> 关联的对象被认定为瞬时(Transient)的。瞬时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。 如果瞬时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garbage collector)销毁。 使用 Hibernate <literal>Session</literal>可以将其变为持久(Persistent)状态。(Hibernate会自动执行必要的SQL语句) "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Persistent</emphasis> - a persistent instance has a representation in the database and an identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a <literal>Session</literal>. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. Developers do not execute manual <literal>UPDATE</literal> statements, or <literal>DELETE</literal> statements when an object should be made transient."
+msgstr "<emphasis>持久(Persistent)</emphasis> — 持久(Persistent)的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier)。 持久(Persistent)的实例可能是刚被保存的,或刚被加载的,无论哪一种,按定义,它存在于相关联的<literal>Session</literal>作用范围内。 Hibernate会检测到处于持久(Persistent)状态的对象的任何改动,在当前操作单元(unit of work)执行完毕时将对象数据(state)与数据库同步(synchronize)。 开发者不需要手动执行<literal>UPDATE</literal>。将对象从持久(Persistent)状态变成瞬时(Transient)状态同样也不需要手动执行 <literal>DELETE</literal> 语句。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Detached</emphasis> - a detached instance is an object that has been persistent, but its <literal>Session</literal> has been closed. The reference to the object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be reattached to a new <literal>Session</literal> at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them <emphasis>application transactions</emphasis>, i.e., a unit of work from the point of view of the user."
+msgstr "<emphasis>脱管(Detached)</emphasis> — 与持久(Persistent)对象关联的<literal>Session</literal>被关闭后,对象就变为脱管(Detached)的。对脱管(Detached)对象的引用依然有效,对象可继续被修改。脱管(Detached)对象如果重新关联到某个新的 <literal>Session</literal> 上, 会再次转变为持久(Persistent)的(在Detached其间的改动将被持久化到数据库)。 这个功能使得一种编程模型,即中间会给用户思考时间(user think-time)的长时间运行的操作单元(unit of work)的编程模型成为可能。我们称之为<emphasis>应用程序事务</emphasis>,即从用户观点看是一个操作单元(unit of work)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We will now discuss the states and state transitions (and the Hibernate methods that trigger a transition) in more detail."
+msgstr "接下来我们来细致地讨论下状态(states)及状态间的转换(state transitions)(以及触发状态转换的 Hibernate 方法)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Making objects persistent"
+msgstr "使对象持久化"
+
+#. Tag: para
+#, no-c-format
+msgid "Newly instantiated instances of a persistent class are considered <emphasis>transient</emphasis> by Hibernate. We can make a transient instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr "Hibernate 认为持久化类(persistent class)新实例化的对象是<emphasis>瞬时(Transient)</emphasis>的。我们可通过将瞬时(Transient)对象与 session 关联而把它变为<emphasis>持久的(Persistent)</emphasis>。"
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>Cat</literal> has a generated identifier, the identifier is generated and assigned to the <literal>cat</literal> when <literal>save()</literal> is called. If <literal>Cat</literal> has an <literal>assigned</literal> identifier, or a composite key, the identifier should be assigned to the <literal>cat</literal> instance before calling <literal>save()</literal>. You can also use <literal>persist()</literal> instead of <literal>save()</literal>, with the semantics defined in the EJB3 early draft."
+msgstr "如果 <literal>Cat</literal> 的持久化标识(identifier)是 <literal>generated</literal> 类型的, 那么该标识(identifier)会自动在 <literal>save()</literal> 被调用时产生并分配给 <literal>cat</literal>。如果 <literal>Cat</literal> 的持久化标识(identifier)是<literal>assigned</literal>类型的,或是一个复合主键(composite key),那么该标识(identifier)应当在调用 <literal>save()</literal> 之前手动赋予给 <literal>cat</literal>。你也可以按照 EJB3 early draft 中定义的语义,使用 <literal>persist()</literal> 替代<literal>save()</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>persist()</literal> makes a transient instance persistent. However, it does not guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. <literal>persist()</literal> also guarantees that it will not execute an <literal>INSERT</literal> statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context."
+msgstr "<literal>persist()</literal> 使一个临时实例持久化。然而,它不保证立即把标识符值分配给持久性实例,这会发生在冲刷(flush)的时候。<literal>persist()</literal> 也保证它在事务边界外调用时不会执行 <literal>INSERT</literal> 语句。这对于长期运行的带有扩展会话/持久化上下文的会话是很有用的。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>save()</literal> does guarantee to return an identifier. If an INSERT has to be executed to get the identifier ( e.g. \"identity\" generator, not \"sequence\"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is problematic in a long-running conversation with an extended Session/persistence context."
+msgstr "<literal>save()</literal> 保证返回一个标识符。如果需要运行 INSERT 来获取标识符(如 \"identity\" 而非 \"sequence\" 生成器),这个 INSERT 将立即执行,不管你是否在事务内部还是外部。这对于长期运行的带有扩展会话/持久化上下文的会话来说会出现问题。"
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can assign the identifier using an overloaded version of <literal>save()</literal>."
+msgstr "此外,你可以用一个重载版本的 <literal>save()</literal> 方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the object you make persistent has associated objects (e.g. the <literal>kittens</literal> collection in the previous example), these objects can be made persistent in any order you like unless you have a <literal>NOT NULL</literal> constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a <literal>NOT NULL</literal> constraint if you <literal>save()</literal> the objects in the wrong order."
+msgstr "如果你持久化的对象有关联的对象(associated objects)(例如上例中的 <literal>kittens</literal> 集合) 那么对这些对象(译注:pk 和 kittens)进行持久化的顺序是任意的(也就是说可以先对 kittens 进行持久化也可以先对 pk 进行持久化), 除非你在外键列上有 <literal>NOT NULL</literal> 约束。 Hibernate 不会违反外键约束,但是如果你用错误的顺序持久化对象(译注:在 pk 持久化之前持久化kitten),那么可能会违反 <literal>NOT NULL</literal> 约束。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Usually you do not bother with this detail, as you will normally use Hibernate's <emphasis>transitive persistence</emphasis> feature to save the associated objects automatically. Then, even <literal>NOT NULL</literal> constraint violations do not occur - Hibernate will take care of everything. Transitive persistence is discussed later in this chapter."
+msgstr "通常你不会为这些细节烦心,因为你很可能会使用 Hibernate 的<emphasis>传播性持久化(transitive persistence)</emphasis>功能自动保存相关联那些对象。这样连违反 <literal>NOT NULL</literal> 约束的情况都不会出现了 — Hibernate 会管好所有的事情。传播性持久化(transitive persistence)将在本章稍后讨论。"
+
+#. Tag: title
+#, no-c-format
+msgid "Loading an object"
+msgstr "装载对象"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>load()</literal> methods of <literal>Session</literal> provide a way of retrieving a persistent instance if you know its identifier. <literal>load()</literal> takes a class object and loads the state into a newly instantiated instance of that class in a persistent state."
+msgstr "如果你知道某个实例的持久化标识(identifier),你就可以使用 <literal>Session</literal> 的 <literal>load()</literal> 方法来获取它。<literal>load()</literal> 的另一个参数是指定类的对象。本方法会创建指定类的持久化实例,并从数据库加载其数据(state)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Alternatively, you can load state into a given instance:"
+msgstr "此外,你可以把数据(state)加载到指定的对象实例上(覆盖掉该实例原来的数据)。"
+
+#. Tag: para
+#, no-c-format
+msgid "Be aware that <literal>load()</literal> will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, <literal>load()</literal> just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This is useful if you wish to create an association to an object without actually loading it from the database. It also allows multiple instances to be loaded as a batch if <literal>batch-size</literal> is defined for the class mapping."
+msgstr "请注意如果没有匹配的数据库记录,<literal>load()</literal> 方法可能抛出无法恢复的异常(unrecoverable exception)。如果类的映射使用了代理(proxy),<literal>load()</literal> 方法会返回一个未初始化的代理,直到你调用该代理的某方法时才会去访问数据库。 若你希望在某对象中创建一个指向另一个对象的关联,又不想在从数据库中装载该对象时同时装载相关联的那个对象,那么这种操作方式就用得上的了。如果为相应类映射关系设置了 <literal>batch-size</literal>,那么使用这种操作方式允许多个对象被一批装载(因为返回的是代理,无需从数据库中抓取所有对象的数据)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you are not certain that a matching row exists, you should use the <literal>get()</literal> method which hits the database immediately and returns null if there is no matching row."
+msgstr "如果你不确定是否有匹配的行存在,应该使用 <literal>get()</literal> 方法,它会立刻访问数据库,如果没有对应的记录,会返回 null。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can even load an object using an SQL <literal>SELECT ... FOR UPDATE</literal>, using a <literal>LockMode</literal>. See the API documentation for more information."
+msgstr "你甚至可以选用某个 <literal>LockMode</literal>,用 SQL 的 <literal>SELECT ... FOR UPDATE</literal> 装载对象。 请查阅 API 文档以获取更多信息。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Any associated instances or contained collections will <emphasis>not</emphasis> be selected <literal>FOR UPDATE</literal>, unless you decide to specify <literal>lock</literal> or <literal>all</literal> as a cascade style for the association."
+msgstr "注意,任何关联的对象或者包含的集合都<emphasis>不会</emphasis>被以 <literal>FOR UPDATE</literal> 方式返回, 除非你指定了 <literal>lock</literal> 或者 <literal>all</literal> 作为关联(association)的级联风格(cascade style)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to re-load an object and all its collections at any time, using the <literal>refresh()</literal> method. This is useful when database triggers are used to initialize some of the properties of the object."
+msgstr "任何时候都可以使用 <literal>refresh()</literal> 方法强迫装载对象和它的集合。如果你使用数据库触发器功能来处理对象的某些属性,这个方法就很有用了。"
+
+#. Tag: para
+#, no-c-format
+msgid "How much does Hibernate load from the database and how many SQL <literal>SELECT</literal>s will it use? This depends on the <emphasis>fetching strategy</emphasis>. This is explained in <xref linkend=\"performance-fetching\" />."
+msgstr "此处通常会出现一个重要问题: Hibernate 会从数据库中装载多少东西?会执行多少条相应的 SQL<literal>SELECT</literal> 语句?这取决于<emphasis>抓取策略(fetching strategy)</emphasis>,我们会在 <xref linkend=\"performance-fetching\" /> 中解释。  "
+
+#. Tag: title
+#, no-c-format
+msgid "Querying"
+msgstr "查询"
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not know the identifiers of the objects you are looking for, you need a query. Hibernate supports an easy-to-use but powerful object oriented query language (HQL). For programmatic query creation, Hibernate supports a sophisticated Criteria and Example query feature (QBC and QBE). You can also express your query in the native SQL of your database, with optional support from Hibernate for result set conversion into objects."
+msgstr "如果不知道所要寻找的对象的持久化标识,那么你需要使用查询。Hibernate 支持强大且易于使用的面向对象查询语言(HQL)。如果希望通过编程的方式创建查询,Hibernate 提供了完善的按条件(Query By Criteria,QBC)以及按样例(Query By Example,QBE)进行查询的功能。你也可以用原生 SQL(native SQL)描述查询,Hibernate 额外提供了将结果集(result set)转化为对象的支持。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Executing queries"
+msgstr "执行查询"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL and native SQL queries are represented with an instance of <literal>org.hibernate.Query</literal>. This interface offers methods for parameter binding, result set handling, and for the execution of the actual query. You always obtain a <literal>Query</literal> using the current <literal>Session</literal>:"
+msgstr "HQL 和原生 SQL(native SQL)查询要通过为 <literal>org.hibernate.Query</literal> 的实例来表达。 这个接口提供了参数绑定、结果集处理以及运行实际查询的方法。你总是可以通过当前 <literal>Session</literal> 获取一个 <literal>Query</literal> 对象:"
+
+#. Tag: para
+#, no-c-format
+msgid "A query is usually executed by invoking <literal>list()</literal>. The result of the query will be loaded completely into a collection in memory. Entity instances retrieved by a query are in a persistent state. The <literal>uniqueResult()</literal> method offers a shortcut if you know your query will only return a single object. Queries that make use of eager fetching of collections usually return duplicates of the root objects, but with their collections initialized. You can filter these duplicates through a <literal>Set</literal>."
+msgstr "一个查询通常在调用 <literal>list()</literal> 时被执行,执行结果会完全装载进内存中的一个集合(collection)。查询返回的对象处于持久(persistent)状态。如果你知道的查询只会返回一个对象,可使用 <literal>list()</literal> 的快捷方式 <literal>uniqueResult()</literal>。注意,使用集合预先抓取的查询往往会返回多次根对象(他们的集合类都被初始化了)。你可以通过一个<literal>集合(Set)</literal>来过滤这些重复对象。"
+
+#. Tag: title
+#, no-c-format
+msgid "Iterating results"
+msgstr "迭代式获取结果(Iterating results)"
+
+#. Tag: para
+#, no-c-format
+msgid "Occasionally, you might be able to achieve better performance by executing the query using the <literal>iterate()</literal> method. This will usually be the case if you expect that the actual entity instances returned by the query will already be in the session or second-level cache. If they are not already cached, <literal>iterate()</literal> will be slower than <literal>list()</literal> and might require many database hits for a simple query, usually <emphasis>1</emphasis> for the initial select which only returns identifiers, and <emphasis>n</emphasis> additional selects to initialize the actual instances."
+msgstr "某些情况下,你可以使用 <literal>iterate()</literal> 方法得到更好的性能。 这通常是你预期返回的结果在 session,或二级缓存(second-level cache)中已经存在时的情况。如若不然,<literal>iterate()</literal> 会比 <literal>list()</literal> 慢,而且可能简单查询也需要进行多次数据库访问:<literal>iterate()</literal> 会首先使用 <emphasis>1</emphasis> 条语句得到所有对象的持久化标识(identifiers),再根据持久化标识执行 <emphasis>n</emphasis> 条附加的 select 语句实例化实际的对象。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Queries that return tuples"
+msgstr "返回元组(tuples)的查询"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate queries sometimes return tuples of objects. Each tuple is returned as an array:"
+msgstr "(译注:元组(tuples)指一条结果行包含多个对象) Hibernate 查询有时返回元组(tuples),每个元组(tuples)以数组的形式返回: "
+
+#. Tag: title
+#, no-c-format
+msgid "Scalar results"
+msgstr "标量(Scalar)结果"
+
+#. Tag: para
+#, no-c-format
+msgid "Queries can specify a property of a class in the <literal>select</literal> clause. They can even call SQL aggregate functions. Properties or aggregates are considered \"scalar\" results and not entities in persistent state."
+msgstr "查询可在 <literal>select</literal> 从句中指定类的属性,甚至可以调用 SQL 统计(aggregate)函数。属性或统计结果被认定为\"标量(Scalar)\"的结果(而不是持久(persistent state)的实体)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Bind parameters"
+msgstr "绑定参数"
+
+#. Tag: para
+#, no-c-format
+msgid "Methods on <literal>Query</literal> are provided for binding values to named parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters are identifiers of the form <literal>:name</literal> in the query string. The advantages of named parameters are as follows:"
+msgstr "接口 <literal>Query</literal> 提供了对命名参数(named parameters)、JDBC 风格的<literal>问号(?)</literal>参数进行绑定的方法。<emphasis>不同于 JDBC,Hibernate 对参数从 0 开始计数。</emphasis> 命名参数(named parameters)在查询字符串中是形如 <literal>:name</literal> 的标识符。命名参数(named parameters)的优点是: "
+
+#. Tag: para
+#, no-c-format
+msgid "named parameters are insensitive to the order they occur in the query string"
+msgstr "命名参数(named parameters)与其在查询串中出现的顺序无关"
+
+#. Tag: para
+#, no-c-format
+msgid "they can occur multiple times in the same query"
+msgstr "它们可在同一查询串中多次出现 "
+
+#. Tag: para
+#, no-c-format
+msgid "they are self-documenting"
+msgstr "它们本身是自我说明的"
+
+#. Tag: title
+#, no-c-format
+msgid "Pagination"
+msgstr "分页"
+
+#. Tag: para
+#, no-c-format
+msgid "If you need to specify bounds upon your result set, that is, the maximum number of rows you want to retrieve and/or the first row you want to retrieve, you can use methods of the <literal>Query</literal> interface:"
+msgstr "如果你需要指定结果集的范围(希望返回的最大行数/或开始的行数),应该使用 <literal>Query</literal> 接口提供的方法: "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate knows how to translate this limit query into the native SQL of your DBMS."
+msgstr "Hibernate 知道如何将这个有限定条件的查询转换成你的数据库的原生 SQL(native SQL)。"
+
+#. Tag: title
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "可滚动遍历(Scrollable iteration)"
+
+#. Tag: para
+#, no-c-format
+msgid "If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the <literal>Query</literal> interface can be used to obtain a <literal>ScrollableResults</literal> object that allows flexible navigation of the query results."
+msgstr "如果你的 JDBC 驱动支持可滚动的 <literal>ResuleSet</literal>,<literal>Query</literal> 接口可以使用 <literal>ScrollableResults</literal>,允许你在查询结果中灵活游走。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Note that an open database connection and cursor is required for this functionality. Use <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal> if you need offline pagination functionality."
+msgstr "请注意,使用此功能需要保持数据库连接(以及游标(cursor))处于一直打开状态。如果你需要断开连接使用分页功能,请使用 <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "外置命名查询(Externalizing named queries)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also define named queries in the mapping document. Remember to use a <literal>CDATA</literal> section if your query contains characters that could be interpreted as markup."
+msgstr "你可以在映射文件中定义命名查询(named queries)。如果你的查询串中包含可能被解释为 XML 标记(markup)的字符,别忘了用<literal>CDATA</literal>包裹起来。"
+
+#. Tag: para
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
+msgstr "参数绑定及执行以编程方式(programatically)完成:"
+
+#. Tag: para
+#, no-c-format
+msgid "The actual program code is independent of the query language that is used. You can also define native SQL queries in metadata, or migrate existing queries to Hibernate by placing them in mapping files."
+msgstr "请注意实际的程序代码与所用的查询语言无关,你也可在元数据中定义原生 SQL(native SQL)查询,或将原有的其他的查询语句放在配置文件中,这样就可以让 Hibernate 统一管理,达到迁移的目的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Also note that a query declaration inside a <literal>&lt;hibernate-mapping&gt;</literal> element requires a global unique name for the query, while a query declaration inside a <literal>&lt;class&gt;</literal> element is made unique automatically by prepending the fully qualified name of the class. For example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr "也请注意在 <literal>&lt;hibernate-mapping&gt;</literal> 元素中声明的查询必须有一个全局唯一的名字,而在 <literal>&lt;class&gt;</literal> 元素中声明的查询自动具有全局名,是通过类的全名加以限定的。比如 <literal>eg.Cat.ByNameAndMaximumWeight</literal>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Filtering collections"
+msgstr "过滤集合"
+
+#. Tag: para
+#, no-c-format
+msgid "A collection <emphasis>filter</emphasis> is a special type of query that can be applied to a persistent collection or array. The query string can refer to <literal>this</literal>, meaning the current collection element."
+msgstr "集合<emphasis>过滤器(filter)</emphasis>是一种用于一个持久化集合或者数组的特殊的查询。查询字符串中可以使用 <literal>\"this\"</literal> 来引用集合中的当前元素。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The returned collection is considered a bag that is a copy of the given collection. The original collection is not modified. This is contrary to the implication of the name \"filter\", but consistent with expected behavior."
+msgstr "返回的集合可以被认为是一个包(bag,无顺序可重复的集合(collection)),它是所给集合的副本。 原来的集合不会被改动(这与“过滤器(filter)”的隐含的含义不符,不过与我们期待的行为一致)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Observe that filters do not require a <literal>from</literal> clause, although they can have one if required. Filters are not limited to returning the collection elements themselves."
+msgstr "请注意过滤器(filter)并不需要 <literal>from</literal> 子句(当然需要的话它们也可以加上)。过滤器(filter)不限定于只能返回集合元素本身。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Even an empty filter query is useful, e.g. to load a subset of elements in a large collection:"
+msgstr "即使无条件的过滤器(filter)也是有意义的。例如,用于加载一个大集合的子集: "
+
+#. Tag: title
+#, no-c-format
+msgid "Criteria queries"
+msgstr "条件查询(Criteria queries)"
+
+#. Tag: para
+#, no-c-format
+msgid "HQL is extremely powerful, but some developers prefer to build queries dynamically using an object-oriented API, rather than building query strings. Hibernate provides an intuitive <literal>Criteria</literal> query API for these cases:"
+msgstr "HQL 极为强大,但是有些人希望能够动态的使用一种面向对象 API 创建查询,而非在他们的 Java 代码中嵌入字符串。对于那部分人来说,Hibernate 提供了直观的 <literal>Criteria</literal> 查询 API。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Criteria</literal> and the associated <literal>Example</literal> API are discussed in more detail in <xref linkend=\"querycriteria\" />."
+msgstr "<literal>Criteria</literal> 以及相关的<literal>样例(Example)</literal>API 将会在 <xref linkend=\"querycriteria\"/> 中详细讨论。"
+
+#. Tag: title
+#, no-c-format
+msgid "Queries in native SQL"
+msgstr "使用原生 SQL 的查询"
+
+#. Tag: para
+#, no-c-format
+msgid "You can express a query in SQL, using <literal>createSQLQuery()</literal> and let Hibernate manage the mapping from result sets to objects. You can at any time call <literal>session.connection()</literal> and use the JDBC <literal>Connection</literal> directly. If you choose to use the Hibernate API, you must enclose SQL aliases in braces:"
+msgstr "你可以使用 <literal>createSQLQuery()</literal> 方法,用 SQL 来描述查询,并由 Hibernate 将结果集转换成对象。请注意,你可以在任何时候调用 <literal>session.connection()</literal> 来获得并使用 JDBC <literal>Connection</literal> 对象。 如果你选择使用 Hibernate 的 API,你必须把 SQL 别名用大括号包围起来: "
+
+#. Tag: para
+#, no-c-format
+msgid "SQL queries can contain named and positional parameters, just like Hibernate queries. More information about native SQL queries in Hibernate can be found in <xref linkend=\"querysql\" />."
+msgstr "和 Hibernate 查询一样,SQL 查询也可以包含命名参数和占位参数。可以在 <xref linkend=\"querysql\"/> 找到更多关于 Hibernate 中原生 SQL(native SQL)的信息。"
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr "修改持久对象"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Transactional persistent instances</emphasis> (i.e. objects loaded, saved, created or queried by the <literal>Session</literal>) can be manipulated by the application, and any changes to persistent state will be persisted when the <literal>Session</literal> is <emphasis>flushed</emphasis>. This is discussed later in this chapter. There is no need to call a particular method (like <literal>update()</literal>, which has a different purpose) to make your modifications persistent. The most straightforward way to update the state of an object is to <literal>load()</literal> it and then manipulate it directly while the <literal>Session</literal> is open:"
+msgstr "<emphasis>事务中的持久实例</emphasis>(就是通过 <literal>session</literal> 装载、保存、创建或者查询出的对象) 被应用程序操作所造成的任何修改都会在 <literal>Session</literal> 被<emphasis>刷出(flushed)</emphasis>的时候被持久化(本章后面会详细讨论)。这里不需要调用某个特定的方法(比如 <literal>update()</literal>,设计它的目的是不同的)将你的修改持久化。所以最直接的更新一个对象的方法就是在 <literal>Session</literal> 处于打开状态时 <literal>load()</literal> 它,然后直接修改即可: "
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes this programming model is inefficient, as it requires in the same session both an SQL <literal>SELECT</literal> to load an object and an SQL <literal>UPDATE</literal> to persist its updated state. Hibernate offers an alternate approach by using detached instances."
+msgstr "有时这种程序模型效率低下,因为它在同一 Session 里需要一条 SQL <literal>SELECT</literal> 语句(用于加载对象) 以及一条 SQL <literal>UPDATE</literal> 语句(持久化更新的状态)。为此  Hibernate 提供了另一种途径,使用脱管(detached)实例。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not offer its own API for direct execution of <literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate is a <emphasis>state management</emphasis> service, you do not have to think in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for executing SQL statements, you can get a JDBC <literal>Connection</literal> at any time by calling <literal>session.connection()</literal>. Furthermore, the notion of mass operations conflicts with object/relational mapping for online transaction processing-oriented applications. Future versions of Hibernate can, however, provide special mass operation functions. See <xref linkend=\"batch\" /> for some possible batch operation tricks."
+msgstr "请注意 Hibernate 本身不提供直接执行 <literal>UPDATE</literal> 或 <literal>DELETE</literal> 语句的 API。Hibernate 提供的是 <emphasis>state management</emphasis> 服务,你不必考虑要使用的 <emphasis>statements</emphasis>。JDBC 是出色的执行 SQL 语句的  API,任何时候调用  <literal>session.connection()</literal> 你都可以得到一个 <literal>Connection</literal> 对象。 此外,在联机事务处理(OLTP)程序中,大量操作(mass operations)与对象/关系映射的观点是相冲突的。Hibernate 的将来版本可能会提供专门的进行大量操作(mass operation)的功能。参考 <xref linkend=\"batch\"/>,寻找一些可用的批量(batch)操作技巧。"
+
+#. Tag: title
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr "修改脱管(Detached)对象"
+
+#. Tag: para
+#, no-c-format
+msgid "Many applications need to retrieve an object in one transaction, send it to the UI layer for manipulation, then save the changes in a new transaction. 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
+#, no-c-format
+msgid "Hibernate supports this model by providing for reattachment of detached instances using the <literal>Session.update()</literal> or <literal>Session.merge()</literal> methods:"
+msgstr "Hibernate 通过提供 <literal>Session.update()</literal> 或 <literal>Session.merge()</literal>  重新关联脱管实例的办法来支持这种模型。"
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>Cat</literal> with identifier <literal>catId</literal> had already been loaded by <literal>secondSession</literal> when the application tried to reattach it, an exception would have been thrown."
+msgstr "如果具有 <literal>catId</literal> 持久化标识的 <literal>Cat</literal> 之前已经被<literal>另一Session(secondSession)</literal>装载了, 应用程序进行重关联操作(reattach)的时候会抛出一个异常。"
+
+#. Tag: para
+#, no-c-format
+msgid "Use <literal>update()</literal> if you are certain that the session does not contain an already persistent instance with the same identifier. Use <literal>merge()</literal> if you want to merge your modifications at any time without consideration of the state of the session. In other words, <literal>update()</literal> is usually the first method you would call in a fresh session, ensuring that the reattachment of your detached instances is the first operation that is executed."
+msgstr "如果你确定当前 session 没有包含与之具有相同持久化标识的持久实例,使用 <literal>update()</literal>。如果想随时合并你的的改动而不考虑 session 的状态,使用 <literal>merge()</literal>。换句话说,在一个新 session 中通常第一个调用的是 <literal>update()</literal> 方法,以便保证重新关联脱管(detached)对象的操作首先被执行。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The application should individually <literal>update()</literal> detached instances that are reachable from the given detached instance <emphasis>only</emphasis> if it wants their state to be updated. This can be automated using <emphasis>transitive persistence</emphasis>. See <xref linkend=\"objectstate-transitive\" /> for more information."
+msgstr "如果希望相关联的脱管对象(通过引用“可到达”的脱管对象)的数据也要更新到数据库时(并且也<emphasis>仅仅</emphasis>在这种情况),可以对该相关联的脱管对象单独调用 <literal>update()</literal> 当然这些可以自动完成,即通过使用<emphasis>传播性持久化(transitive persistence)</emphasis>,请看 <xref linkend=\"objectstate-transitive\"/>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>lock()</literal> method also allows an application to reassociate an object with a new session. However, the detached instance has to be unmodified."
+msgstr "<literal>lock()</literal> 方法也允许程序重新关联某个对象到一个新 session 上。不过,该脱管(detached)的对象必须是没有修改过的。"
+
+#. Tag: para
+#, no-c-format
+msgid "Note that <literal>lock()</literal> can be used with various <literal>LockMode</literal>s. See the API documentation and the chapter on transaction handling for more information. Reattachment is not the only usecase for <literal>lock()</literal>."
+msgstr "请注意,<literal>lock()</literal> 可以搭配多种 <literal>LockMode</literal>,更多信息请阅读 API 文档以及关于事务处理(transaction handling)的章节。重新关联不是 <literal>lock()</literal> 的唯一用途。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Other models for long units of work are discussed in <xref linkend=\"transactions-optimistic\" />."
+msgstr "其他用于长时间工作单元的模型会在 <xref linkend=\"transactions-optimistic\"/> 中讨论。"
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic state detection"
+msgstr "自动状态检测"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate users have requested a general purpose method that either saves a transient instance by generating a new identifier or updates/reattaches the detached instances associated with its current identifier. The <literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr "Hibernate 的用户曾要求一个既可自动分配新持久化标识(identifier)保存瞬时(transient)对象,又可更新/重新关联脱管(detached)实例的通用方法。<literal>saveOrUpdate()</literal> 方法实现了这个功能。"
+
+#. Tag: para
+#, no-c-format
+msgid "The usage and semantics of <literal>saveOrUpdate()</literal> seems to be confusing for new users. Firstly, so long as you are not trying to use instances from one session in another new session, you should not need to use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or <literal>merge()</literal>. Some whole applications will never use either of these methods."
+msgstr "<literal>saveOrUpdate()</literal> 用途和语义可能会使新用户感到迷惑。首先,只要你没有尝试在某个  session 中使用来自另一 session 的实例,你就应该不需要使用 <literal>update()</literal>, <literal>saveOrUpdate()</literal>,或 <literal>merge()</literal>。有些程序从来不用这些方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are used in the following scenario:"
+msgstr "通常下面的场景会使用 <literal>update()</literal> 或 <literal>saveOrUpdate()</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "the application loads an object in the first session"
+msgstr "程序在第一个 session 中加载对象"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed up to the UI tier"
+msgstr "该对象被传递到表现层"
+
+#. Tag: para
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr "对象发生了一些改动"
+
+#. Tag: para
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
+msgstr "该对象被返回到业务逻辑层"
+
+#. Tag: para
+#, no-c-format
+msgid "the application persists these modifications by calling <literal>update()</literal> in a second session"
+msgstr "程序调用第二个 session 的 <literal>update()</literal> 方法持久这些改动"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
+msgstr "<literal>saveOrUpdate()</literal> 做下面的事:"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is already persistent in this session, do nothing"
+msgstr "如果对象已经在本 session 中持久化了,不做任何事"
+
+#. Tag: para
+#, no-c-format
+msgid "if another object associated with the session has the same identifier, throw an exception"
+msgstr "如果另一个与本 session 关联的对象拥有相同的持久化标识(identifier),抛出一个异常"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object has no identifier property, <literal>save()</literal> it"
+msgstr "如果对象没有持久化标识(identifier)属性,对其调用 <literal>save()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object's identifier has the value assigned to a newly instantiated object, <literal>save()</literal> it"
+msgstr "如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用 <literal>save()</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "if the object is versioned by a <literal>&lt;version&gt;</literal> or <literal>&lt;timestamp&gt;</literal>, and the version property value is the same value assigned to a newly instantiated object, <literal>save()</literal> it"
+msgstr "如果对象是附带版本信息的(通过 <literal>&lt;version&gt;</literal> 或 <literal>&lt;timestamp&gt;</literal>)并且版本属性的值表明其是一个新实例化的对象,<literal>save()</literal> 它。 "
+
+#. Tag: para
+#, no-c-format
+msgid "otherwise <literal>update()</literal> the object"
+msgstr "否则 <literal>update()</literal> 这个对象"
+
+#. Tag: para
+#, no-c-format
+msgid "and <literal>merge()</literal> is very different:"
+msgstr "<literal>merge()</literal> 可非常不同:"
+
+#. Tag: para
+#, no-c-format
+msgid "if there is a persistent instance with the same identifier currently associated with the session, copy the state of the given object onto the persistent instance"
+msgstr "如果 session 中存在相同持久化标识(identifier)的实例,用用户给出的对象的状态覆盖旧有的持久实例"
+
+#. Tag: para
+#, no-c-format
+msgid "if there is no persistent instance currently associated with the session, try to load it from the database, or create a new persistent instance"
+msgstr "如果 session 没有相应的持久实例,则尝试从数据库中加载,或创建新的持久化实例"
+
+#. Tag: para
+#, no-c-format
+msgid "the persistent instance is returned"
+msgstr "最后返回该持久实例"
+
+#. Tag: para
+#, no-c-format
+msgid "the given instance does not become associated with the session, it remains detached"
+msgstr "用户给出的这个对象没有被关联到 session 上,它依旧是脱管的"
+
+#. Tag: title
+#, no-c-format
+msgid "Deleting persistent objects"
+msgstr "删除持久对象"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.delete()</literal> will remove an object's state from the database. Your application, however, can still hold a reference to a deleted object. It is best to think of <literal>delete()</literal> as making a persistent instance, transient."
+msgstr "使用 <literal>Session.delete()</literal> 会把对象的状态从数据库中移除。当然,你的应用程序可能仍然持有一个指向已删除对象的引用。所以,最好这样理解:<literal>delete()</literal> 的用途是把一个持久实例变成瞬时(transient)实例。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can delete objects in any order, without risk of foreign key constraint violations. It is still possible to violate a <literal>NOT NULL</literal> constraint on a foreign key column by deleting objects in the wrong order, e.g. if you delete the parent, but forget to delete the children."
+msgstr "你可以用你喜欢的任何顺序删除对象,不用担心外键约束冲突。当然,如果你搞错了顺序,还是有可能引发在外键字段定义的 <literal>NOT NULL</literal> 约束冲突。例如你删除了父对象,但是忘记删除其子对象。"
+
+#. Tag: title
+#, no-c-format
+msgid "Replicating object between two different datastores"
+msgstr "在两个不同数据库间复制对象"
+
+#. Tag: para
+#, no-c-format
+msgid "It is sometimes useful to be able to take a graph of persistent instances and make them persistent in a different datastore, without regenerating identifier values."
+msgstr "偶尔会用到不重新生成持久化标识(identifier),将持久实例以及其关联的实例持久到不同的数据库中的操作。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>ReplicationMode</literal> determines how <literal>replicate()</literal> will deal with conflicts with existing rows in the database:"
+msgstr "<literal>ReplicationMode</literal> 决定在和数据库中已存在记录由冲突时,<literal>replicate()</literal> 如何处理。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.IGNORE</literal>: ignores the object when there is an existing database row with the same identifier"
+msgstr "<literal>ReplicationMode.IGNORE</literal>:当某个现有数据库记录具有相同标识符时忽略它"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.OVERWRITE</literal>: overwrites any existing database row with the same identifier"
+msgstr "<literal>ReplicationMode.OVERWRITE</literal>:用相同的标识符覆盖现有数据库记录"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.EXCEPTION</literal>: throws an exception if there is an existing database row with the same identifier"
+msgstr "<literal>ReplicationMode.EXCEPTION</literal>:当某个现有数据库记录具有相同标识符时抛出异常"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ReplicationMode.LATEST_VERSION</literal>: overwrites the row if its version number is earlier than the version number of the object, or ignore the object otherwise"
+msgstr "<literal>ReplicationMode.LATEST_VERSION</literal>:如果当前的版本较新,则覆盖,否则忽略"
+
+#. Tag: para
+#, no-c-format
+msgid "Usecases for this feature include reconciling data entered into different database instances, upgrading system configuration information during product upgrades, rolling back changes made during non-ACID transactions and more."
+msgstr "这个功能的用途包括使录入的数据在不同数据库中一致,产品升级时升级系统配置信息,回滚 non-ACID 事务中的修改等等。(译注,non-ACID,非 ACID;ACID,Atomic,Consistent,Isolated and Durable 的缩写)"
+
+#. Tag: title
+#, no-c-format
+msgid "Flushing the Session"
+msgstr "Session 刷出(flush)"
+
+#. Tag: para
+#, no-c-format
+msgid "Sometimes the <literal>Session</literal> will execute the SQL statements needed to synchronize the JDBC connection's state with the state of objects held in memory. This process, called <emphasis>flush</emphasis>, occurs by default at the following points:"
+msgstr "每间隔一段时间,<literal>Session</literal> 会执行一些必需的 SQL 语句来把内存中的对象的状态同步到 JDBC 连接中。这个过程被称为<emphasis>刷出(flush)</emphasis>,默认会在下面的时间点执行: "
+
+#. Tag: para
+#, no-c-format
+msgid "before some query executions"
+msgstr "在某些查询执行之前"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "在调用 <literal>org.hibernate.Transaction.commit()</literal> 的时候"
+
+#. Tag: para
+#, no-c-format
+msgid "from <literal>Session.flush()</literal>"
+msgstr "在调用 <literal>Session.flush()</literal> 的时候"
+
+#. Tag: para
+#, no-c-format
+msgid "The SQL statements are issued in the following order:"
+msgstr "涉及的 SQL 语句会按照下面的顺序发出执行: "
+
+#. Tag: para
+#, no-c-format
+msgid "all entity insertions in the same order the corresponding objects were saved using <literal>Session.save()</literal>"
+msgstr "所有对实体进行插入的语句,其顺序按照对象执行 <literal>Session.save()</literal> 的时间顺序 "
+
+#. Tag: para
+#, no-c-format
+msgid "all entity updates"
+msgstr "所有对实体进行更新的语句"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection deletions"
+msgstr "所有进行集合删除的语句"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr "所有对集合元素进行删除,更新或者插入的语句"
+
+#. Tag: para
+#, no-c-format
+msgid "all collection insertions"
+msgstr "所有进行集合插入的语句"
+
+#. Tag: para
+#, no-c-format
+msgid "all entity deletions in the same order the corresponding objects were deleted using <literal>Session.delete()</literal>"
+msgstr "所有对实体进行删除的语句,其顺序按照对象执行 <literal>Session.delete()</literal> 的时间顺序 "
+
+#. Tag: para
+#, no-c-format
+msgid "An exception is that objects using <literal>native</literal> ID generation are inserted when they are saved."
+msgstr "有一个例外是,如果对象使用 <literal>native</literal> 方式来生成 ID(持久化标识)的话,它们一执行 save 就会被插入。"
+
+#. Tag: para
+#, no-c-format
+msgid "Except when you explicitly <literal>flush()</literal>, there are absolutely no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> executes the JDBC calls, only the <emphasis>order</emphasis> in which they are executed. However, Hibernate does guarantee that the <literal>Query.list(..)</literal> will never return stale or incorrect data."
+msgstr "除非你明确地发出了 <literal>flush()</literal> 指令,关于 Session<emphasis> 何时</emphasis>会执行这些 JDBC 调用是完全无法保证的,只能保证它们执行的前后顺序。当然,Hibernate 保证,<literal>Query.list(..)</literal> 绝对不会返回已经失效的数据,也不会返回错误数据。 "
+
+#. Tag: para
+#, no-c-format
+msgid "It is possible to change the default behavior so that flush occurs less frequently. The <literal>FlushMode</literal> class defines three different modes: only flush at commit time when the Hibernate <literal>Transaction</literal> API is used, flush automatically using the explained routine, or never flush unless <literal>flush()</literal> is called explicitly. The last mode is useful for long running units of work, where a <literal>Session</literal> is kept open and disconnected for a long time (see <xref linkend=\"transactions-optimistic-longsession\" />)."
+msgstr "也可以改变默认的设置,来让刷出(flush)操作发生的不那么频繁。<literal>FlushMode</literal> 类定义了三种不同的方式。仅在提交时刷出(仅当 Hibernate 的 <literal>Transaction</literal> API 被使用时有效),按照刚才说的方式刷出,以及除非明确使用 <literal>flush()</literal> 否则从不刷出。 最后一种模式对于那些需要长时间保持 <literal>Session</literal> 为打开或者断线状态的长时间运行的工作单元很有用。(参见 <xref linkend=\"transactions-optimistic-longsession\"/>)。"
+
+#. Tag: para
+#, no-c-format
+msgid "During flush, an exception might occur (e.g. if a DML operation violates a constraint). Since handling exceptions involves some understanding of Hibernate's transactional behavior, we discuss it in <xref linkend=\"transactions\" />."
+msgstr "刷出(flush)期间,可能会抛出异常(例如一个 DML 操作违反了约束)。异常处理涉及到对 Hibernate 事务性行为的理解,因此我们将在 <xref linkend=\"transactions\"/> 中讨论。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Transitive persistence"
+msgstr "传播性持久化(transitive persistence)"
+
+#. Tag: para
+#, 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
+#, no-c-format
+msgid "If the children in a parent/child relationship would be value typed (e.g. a collection of addresses or strings), their life cycle would depend on the parent and no further action would be required for convenient \"cascading\" of state changes. When the parent is saved, the value-typed child objects are saved and when the parent is deleted, the children will be deleted, etc. This works for operations such as the removal of a child from the collection. Since value-typed objects cannot have shared references, Hibernate will detect this and delete the child from the database."
+msgstr "如果一个父子关系中的子对象是值类型(value typed)(例如,地址或字符串的集合)的,他们的生命周期会依赖于父对象,可以享受方便的级联操作(Cascading),不需要额外的动作。父对象被保存时,这些值类型(value typed)子对象也将被保存;父对象被删除时,子对象也将被删除。这对将一个子对象从集合中移除是同样有效:Hibernate 会检测到,并且因为值类型(value typed)的对象不可能被其他对象引用,所以 Hibernate 会在数据库中删除这个子对象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Now consider the same scenario with parent and child objects being entities, not value-types (e.g. categories and items, or parent and child cats). Entities have their own life cycle and support shared references. 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. Hibernate does not implement <emphasis>persistence by reachability</emphasis> by default."
+msgstr "现在考虑同样的场景,不过父子对象都是实体(entities)类型,而非值类型(value typed)(例如,类别与个体,或母猫和小猫)。实体有自己的生命期,允许共享对其的引用(因此从集合中移除一个实体,不意味着它可以被删除),并且实体到其他关联实体之间默认没有级联操作的设置。 Hibernate 默认不实现所谓的<emphasis>可到达即持久化(persistence by reachability)</emphasis>的策略。 "
+
+#. Tag: para
+#, no-c-format
+msgid "For each basic operation of the Hibernate session - including <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> - there is a corresponding cascade style. Respectively, the cascade styles are named <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>. If you want an operation to be cascaded along an association, you must indicate that in the mapping document. For example:"
+msgstr "每个 Hibernate session 的基本操作 — 包括 <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> — 都有对应的级联风格(cascade style)。这些级联风格(cascade style)风格分别命名为  <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>。如果你希望一个操作被顺着关联关系级联传播,你必须在映射文件中指出这一点。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "Cascade styles my be combined:"
+msgstr "级联风格(cascade style)是可组合的:"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even use <literal>cascade=\"all\"</literal> to specify that <emphasis>all</emphasis> operations should be cascaded along the association. The default <literal>cascade=\"none\"</literal> specifies that no operations are to be cascaded."
+msgstr "你可以使用 <literal>cascade=\"all\"</literal> 来指定<emphasis>全部</emphasis>操作都顺着关联关系级联(cascaded)。默认值是 <literal>cascade=\"none\"</literal>,即任何操作都不会被级联(cascaded)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A special cascade style, <literal>delete-orphan</literal>, applies only to one-to-many associations, and indicates that the <literal>delete()</literal> operation should be applied to any child object that is removed from the association."
+msgstr "注意有一个特殊的级联风格(cascade style) <literal>delete-orphan</literal>,只应用于 one-to-many 关联,表明 <literal>delete()</literal> 操作应该被应用于所有从关联中删除的对象。"
+
+#. Tag: para
+#, no-c-format
+msgid "Recommendations:"
+msgstr "建议:"
+
+#. Tag: para
+#, no-c-format
+msgid "It does not usually make sense to enable cascade on a <literal>&lt;many-to-one&gt;</literal> or <literal>&lt;many-to-many&gt;</literal> association. Cascade is often useful for <literal>&lt;one-to-one&gt;</literal> and <literal>&lt;one-to-many&gt;</literal> associations."
+msgstr "通常在 <literal>&lt;many-to-one&gt;</literal> 或 <literal>&lt;many-to-many&gt;</literal> 关系中应用级联(cascade)没什么意义。级联(cascade)通常在 <literal>&lt;one-to-one&gt;</literal>   和 <literal>&lt;one-to-many&gt;</literal> 关系中比较有用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If the child object's lifespan is bounded by the lifespan of the parent object, make it a <emphasis>life cycle object</emphasis> by specifying <literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr "如果子对象的寿命限定在父亲对象的寿命之内,可通过指定 <literal>cascade=\"all,delete-orphan\"</literal> 将其变为<emphasis>自动生命周期管理的对象(lifecycle object)</emphasis>。 "
+
+#. Tag: para
+#, 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 <literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr "其他情况,你可根本不需要级联(cascade)。但是如果你认为你会经常在某个事务中同时用到父对象与子对象,并且你希望少打点儿字,可以考虑使用   <literal>cascade=\"persist,merge,save-update\"</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Mapping an association (either a single valued association, or a collection) with <literal>cascade=\"all\"</literal> marks the association as a <emphasis>parent/child</emphasis> style relationship where save/update/delete of the parent results in save/update/delete of the child or children."
+msgstr "可以使用 <literal>cascade=\"all\"</literal> 将一个关联关系(无论是对值对象的关联,或者对一个集合的关联)标记为<emphasis>父/子</emphasis>关系的关联。 这样对父对象进行 save/update/delete 操作就会导致子对象也进行 save/update/delete 操作。"
+
+#. Tag: para
+#, no-c-format
+msgid "Furthermore, a mere reference to a child from a persistent parent will result in save/update of the child. This metaphor is incomplete, however. A child which becomes unreferenced by its parent is <emphasis>not</emphasis> automatically deleted, except in the case of a <literal>&lt;one-to-many&gt;</literal> association mapped with <literal>cascade=\"delete-orphan\"</literal>. The precise semantics of cascading operations for a parent/child relationship are as follows:"
+msgstr "此外,一个持久的父对象对子对象的浅引用(mere reference)会导致子对象被同步 save/update。不过,这个隐喻(metaphor)的说法并不完整。除非关联是 <literal>&lt;one-to-many&gt;</literal> 关联并且被标记为 <literal>cascade=\"delete-orphan\"</literal>,否则父对象失去对某个子对象的引用<emphasis>不会</emphasis>导致该子对象被自动删除。父子关系的级联(cascading)操作准确语义如下: "
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>persist()</literal>, all children are passed to <literal>persist()</literal>"
+msgstr "如果父对象被 <literal>persist()</literal>,那么所有子对象也会被 <literal>persist()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>merge()</literal>, all children are passed to <literal>merge()</literal>"
+msgstr "如果父对象被 <literal>merge()</literal>,那么所有子对象也会被 <literal>merge()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is passed to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal>, all children are passed to <literal>saveOrUpdate()</literal>"
+msgstr "如果父对象被 <literal>save()</literal>,<literal>update()</literal> 或  <literal>saveOrUpdate()</literal>,那么所有子对象则会被 <literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "If a transient or detached child becomes referenced by a persistent parent, it is passed to <literal>saveOrUpdate()</literal>"
+msgstr "如果某个持久的父对象引用了瞬时(transient)或者脱管(detached)的子对象,那么子对象将会被 <literal>saveOrUpdate()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "If a parent is deleted, all children are passed to <literal>delete()</literal>"
+msgstr "如果父对象被删除,那么所有子对象也会被 <literal>delete()</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "If a child is dereferenced by a persistent parent, <emphasis>nothing special happens</emphasis> - the application should explicitly delete the child if necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which case the \"orphaned\" child is deleted."
+msgstr "除非被标记为 <literal>cascade=\"delete-orphan\"</literal>(删除“孤儿”模式,此时不被任何一个父对象引用的子对象会被删除),否则子对象失掉父对象对其的引用时,<emphasis>什么事也不会发生</emphasis>。如果有特殊需要,应用程序可通过显式调用 delete() 删除子对象。"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, note that cascading of operations can be applied to an object graph at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All operations, if enabled, are cascaded to associated entities reachable when the operation is executed. However, <literal>save-update</literal> and <literal>delete-orphan</literal> are transitive for all associated entities reachable during flush of the <literal>Session</literal>."
+msgstr "最后,注意操作的级联可能是在<emphasis>调用期(call time)</emphasis>或者<emphasis>写入期(flush time)</emphasis>作用到对象图上的。所有的操作,如果允许,都在操作被执行的时候级联到可触及的关联实体上。然而,<literal>save-upate</literal> 和 <literal>delete-orphan</literal> 是在<literal>Session</literal> flush 的时候才作用到所有可触及的被关联对象上的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Using metadata"
+msgstr "使用元数据"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate requires a rich meta-level model of all entity and value types. This model can be useful to the application itself. For example, the application might use Hibernate's metadata to implement a \"smart\" deep-copy algorithm that understands which objects should be copied (eg. mutable value types) and which objects that should not (e.g. immutable value types and, possibly, associated entities)."
+msgstr "Hibernate 中有一个非常丰富的元级别(meta-level)的模型,含有所有的实体和值类型数据的元数据。 有时这个模型对应用程序本身也会非常有用。比如说,应用程序可能在实现一种“智能”的深度拷贝算法时,通过使用 Hibernate 的元数据来了解哪些对象应该被拷贝(比如,可变的值类型数据),那些不应该(不可变的值类型数据,也许还有某些被关联的实体)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate exposes metadata via the <literal>ClassMetadata</literal> and <literal>CollectionMetadata</literal> interfaces and the <literal>Type</literal> hierarchy. Instances of the metadata interfaces can be obtained from the <literal>SessionFactory</literal>."
+msgstr "Hibernate 提供了 <literal>ClassMetadata</literal> 接口,<literal>CollectionMetadata</literal> 接口和 <literal>Type</literal> 层次体系来访问元数据。可以通过  <literal>SessionFactory</literal> 获取元数据接口的实例。 "
+
+#~ msgid ""
+#~ "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);]]>"
+#~ msgstr ""
+#~ "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+#~ "fritz.setColor(Color.GINGER);\n"
+#~ "fritz.setSex('M');\n"
+#~ "fritz.setName(\"Fritz\");\n"
+#~ "Long generatedId = (Long) sess.save(fritz);]]>"
+#~ msgid ""
+#~ "<![CDATA[DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );]]>"
+#~ msgstr ""
+#~ "<![CDATA[DomesticCat pk = new DomesticCat();\n"
+#~ "pk.setColor(Color.TABBY);\n"
+#~ "pk.setSex('F');\n"
+#~ "pk.setName(\"PK\");\n"
+#~ "pk.setKittens( new HashSet() );\n"
+#~ "pk.addKitten(fritz);\n"
+#~ "sess.save( pk, new Long(1234) );]]>"
+#~ msgid "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+#~ msgstr "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+#~ msgid ""
+#~ "<![CDATA[// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );]]>"
+#~ msgstr ""
+#~ "<![CDATA[// you need to wrap primitive identifiers\n"
+#~ "long id = 1234;\n"
+#~ "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+#~ "(id) );]]>"
+#~ msgid ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = new DomesticCat();\n"
+#~ "// load pk's state into cat\n"
+#~ "sess.load( cat, new Long(pkId) );\n"
+#~ "Set kittens = cat.getKittens();]]>"
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+#~ "if (cat==null) {\n"
+#~ "    cat = new Cat();\n"
+#~ "    sess.save(cat, id);\n"
+#~ "}\n"
+#~ "return cat;]]>"
+#~ msgid ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+#~ msgid ""
+#~ "<![CDATA[sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+#~ msgstr ""
+#~ "<![CDATA[sess.save(cat);\n"
+#~ "sess.flush(); //force the SQL INSERT\n"
+#~ "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate < ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+#~ msgstr ""
+#~ "<![CDATA[List cats = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.birthdate < ?\")\n"
+#~ "    .setDate(0, date)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List mothers = session.createQuery(\n"
+#~ "    \"select mother from Cat as cat join cat.mother as mother where cat."
+#~ "name = ?\")\n"
+#~ "    .setString(0, name)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "List kittens = session.createQuery(\n"
+#~ "    \"from Cat as cat where cat.mother = ?\")\n"
+#~ "    .setEntity(0, pk)\n"
+#~ "    .list();\n"
+#~ "\n"
+#~ "Cat mother = (Cat) session.createQuery(\n"
+#~ "    \"select cat.mother from Cat as cat where cat = ?\")\n"
+#~ "    .setEntity(0, izi)\n"
+#~ "    .uniqueResult();]]\n"
+#~ "\n"
+#~ "Query mothersWithKittens = (Cat) session.createQuery(\n"
+#~ "    \"select mother from Cat as mother left join fetch mother.kittens"
+#~ "\");\n"
+#~ "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+#~ msgid ""
+#~ "<![CDATA[// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[// fetch ids\n"
+#~ "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+#~ "iterate();\n"
+#~ "while ( iter.hasNext() ) {\n"
+#~ "    Qux qux = (Qux) iter.next();  // fetch the object\n"
+#~ "    // something we couldnt express in the query\n"
+#~ "    if ( qux.calculateComplicatedAlgorithm() ) {\n"
+#~ "        // delete the current instance\n"
+#~ "        iter.remove();\n"
+#~ "        // dont need to process the rest\n"
+#~ "        break;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten = (Cat) tuple[0];\n"
+#~ "    Cat mother = (Cat) tuple[1];\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+#~ "            \"select kitten, mother from Cat kitten join kitten.mother "
+#~ "mother\")\n"
+#~ "            .list()\n"
+#~ "            .iterator();\n"
+#~ "\n"
+#~ "while ( kittensAndMothers.hasNext() ) {\n"
+#~ "    Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+#~ "    Cat kitten = (Cat) tuple[0];\n"
+#~ "    Cat mother = (Cat) tuple[1];\n"
+#~ "    ....\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[Iterator results = sess.createQuery(\n"
+#~ "        \"select cat.color, min(cat.birthdate), count(cat) from Cat cat "
+#~ "\" +\n"
+#~ "        \"group by cat.color\")\n"
+#~ "        .list()\n"
+#~ "        .iterator();\n"
+#~ "\n"
+#~ "while ( results.hasNext() ) {\n"
+#~ "    Object[] row = (Object[]) results.next();\n"
+#~ "    Color type = (Color) row[0];\n"
+#~ "    Date oldest = (Date) row[1];\n"
+#~ "    Integer count = (Integer) row[2];\n"
+#~ "    .....\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "<![CDATA[//named parameter (preferred)\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+#~ "\");\n"
+#~ "q.setString(\"name\", \"Fritz\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgid ""
+#~ "<![CDATA[//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgstr ""
+#~ "<![CDATA[//positional parameter\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+#~ "q.setString(0, \"Izi\");\n"
+#~ "Iterator cats = q.iterate();]]>"
+#~ msgid ""
+#~ "<![CDATA[//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[//named parameter list\n"
+#~ "List names = new ArrayList();\n"
+#~ "names.add(\"Izi\");\n"
+#~ "names.add(\"Fritz\");\n"
+#~ "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+#~ "namesList)\");\n"
+#~ "q.setParameterList(\"namesList\", names);\n"
+#~ "List cats = q.list();]]>"
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+#~ "q.setFirstResult(20);\n"
+#~ "q.setMaxResults(10);\n"
+#~ "List cats = q.list();]]>"
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from "
+#~ "DomesticCat cat \" +\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+#~ "(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()]]>"
+#~ msgstr ""
+#~ "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from "
+#~ "DomesticCat cat \" +\n"
+#~ "                            \"order by cat.name\");\n"
+#~ "ScrollableResults cats = q.scroll();\n"
+#~ "if ( cats.first() ) {\n"
+#~ "\n"
+#~ "    // find the first name on each page of an alphabetical list of cats "
+#~ "by name\n"
+#~ "    firstNamesOfPages = new ArrayList();\n"
+#~ "    do {\n"
+#~ "        String name = cats.getString(0);\n"
+#~ "        firstNamesOfPages.add(name);\n"
+#~ "    }\n"
+#~ "    while ( cats.scroll(PAGE_SIZE) );\n"
+#~ "\n"
+#~ "    // Now get the first page of cats\n"
+#~ "    pageOfCats = new ArrayList();\n"
+#~ "    cats.beforeFirst();\n"
+#~ "    int i=0;\n"
+#~ "    while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+#~ "(1) );\n"
+#~ "\n"
+#~ "}\n"
+#~ "cats.close()]]>"
+#~ msgid ""
+#~ "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight > ?\n"
+#~ "] ]></query>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+#~ "    from eg.DomesticCat as cat\n"
+#~ "        where cat.name = ?\n"
+#~ "        and cat.weight > ?\n"
+#~ "] ]></query>]]>"
+#~ msgid ""
+#~ "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+#~ "q.setString(0, name);\n"
+#~ "q.setInt(1, minWeight);\n"
+#~ "List cats = q.list();]]>"
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");]]>"
+#~ msgstr ""
+#~ "<![CDATA[Collection blackKittens = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"where this.color = ?\")\n"
+#~ "    .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+#~ "    .list()\n"
+#~ ");]]>"
+#~ msgid ""
+#~ "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+#~ "    pk.getKittens(), \n"
+#~ "    \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+#~ "    .list();]]>"
+#~ msgid ""
+#~ "<![CDATA[Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Collection tenKittens = session.createFilter(\n"
+#~ "    mother.getKittens(), \"\")\n"
+#~ "    .setFirstResult(0).setMaxResults(10)\n"
+#~ "    .list();]]>"
+#~ msgid ""
+#~ "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+#~ "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+#~ "crit.setMaxResults(10);\n"
+#~ "List cats = crit.list();]]>"
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT "
+#~ "{cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list();]]>"
+#~ msgstr ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT "
+#~ "{cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list();]]>"
+#~ msgid ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list()]]>"
+#~ msgstr ""
+#~ "<![CDATA[List cats = session.createSQLQuery(\n"
+#~ "    \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+#~ "           \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... "
+#~ "\" +\n"
+#~ "    \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+#~ "    .addEntity(\"cat\", Cat.class)\n"
+#~ ".list()]]>"
+#~ msgid ""
+#~ "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+#~ "(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and "
+#~ "persisted]]>"
+#~ msgstr ""
+#~ "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+#~ "(69) );\n"
+#~ "cat.setName(\"PK\");\n"
+#~ "sess.flush();  // changes to cat are automatically detected and "
+#~ "persisted]]>"
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate]]>"
+#~ msgstr ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+#~ "Cat potentialMate = new Cat();\n"
+#~ "firstSession.save(potentialMate);\n"
+#~ "\n"
+#~ "// in a higher layer of the application\n"
+#~ "cat.setMate(potentialMate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.update(cat);  // update cat\n"
+#~ "secondSession.update(mate); // update mate]]>"
+#~ msgid ""
+#~ "<![CDATA[//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);]]>"
+#~ msgstr ""
+#~ "<![CDATA[//just reassociate:\n"
+#~ "sess.lock(fritz, LockMode.NONE);\n"
+#~ "//do a version check, then reassociate:\n"
+#~ "sess.lock(izi, LockMode.READ);\n"
+#~ "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+#~ "sess.lock(pk, LockMode.UPGRADE);]]>"
+#~ msgid ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)]]>"
+#~ msgstr ""
+#~ "<![CDATA[// in the first session\n"
+#~ "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+#~ "\n"
+#~ "// in a higher tier of the application\n"
+#~ "Cat mate = new Cat();\n"
+#~ "cat.setMate(mate);\n"
+#~ "\n"
+#~ "// later, in a new session\n"
+#~ "secondSession.saveOrUpdate(cat);   // update existing state (cat has a "
+#~ "non-null id)\n"
+#~ "secondSession.saveOrUpdate(mate);  // save the new instance (mate has a "
+#~ "null id)]]>"
+#~ msgid "<![CDATA[sess.delete(cat);]]>"
+#~ msgstr "<![CDATA[sess.delete(cat);]]>"
+#~ msgid ""
+#~ "<![CDATA[//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[//retrieve a cat from one database\n"
+#~ "Session session1 = factory1.openSession();\n"
+#~ "Transaction tx1 = session1.beginTransaction();\n"
+#~ "Cat cat = session1.get(Cat.class, catId);\n"
+#~ "tx1.commit();\n"
+#~ "session1.close();\n"
+#~ "\n"
+#~ "//reconcile with a second database\n"
+#~ "Session session2 = factory2.openSession();\n"
+#~ "Transaction tx2 = session2.beginTransaction();\n"
+#~ "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+#~ "tx2.commit();\n"
+#~ "session2.close();]]>"
+#~ msgid ""
+#~ "<![CDATA[sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[sess = sf.openSession();\n"
+#~ "Transaction tx = sess.beginTransaction();\n"
+#~ "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale "
+#~ "state\n"
+#~ "\n"
+#~ "Cat izi = (Cat) sess.load(Cat.class, id);\n"
+#~ "izi.setName(iznizi);\n"
+#~ "\n"
+#~ "// might return stale data\n"
+#~ "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+#~ "\n"
+#~ "// change to izi is not flushed!\n"
+#~ "...\n"
+#~ "tx.commit(); // flush occurs\n"
+#~ "sess.close();]]>"
+#~ msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#~ msgstr "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#~ msgid ""
+#~ "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+#~ msgid ""
+#~ "<![CDATA[Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[Cat fritz = ......;\n"
+#~ "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+#~ "\n"
+#~ "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+#~ "String[] propertyNames = catMeta.getPropertyNames();\n"
+#~ "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+#~ "\n"
+#~ "// get a Map of all properties which are not collections or associations\n"
+#~ "Map namedValues = new HashMap();\n"
+#~ "for ( int i=0; i<propertyNames.length; i++ ) {\n"
+#~ "    if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+#~ "isCollectionType() ) {\n"
+#~ "        namedValues.put( propertyNames[i], propertyValues[i] );\n"
+#~ "    }\n"
+#~ "}]]>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/toolset_guide.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/toolset_guide.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/toolset_guide.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,968 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-16 10:12+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Toolset Guide"
+msgstr "工具箱指南"
+
+#. Tag: para
+#, no-c-format
+msgid "Roundtrip engineering with Hibernate is possible using a set of Eclipse plugins, commandline tools, and Ant tasks."
+msgstr "可以通过一系列 Eclipse 插件、命令行工具和 Ant 任务来进行与 Hibernate 关联的转换。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Hibernate Tools</emphasis> currently include plugins for the Eclipse IDE as well as Ant tasks for reverse engineering of existing databases:"
+msgstr "除了 Ant 任务外,当前的 <emphasis>Hibernate Tools</emphasis> 也包含了 Eclipse IDE 的插件,用于与现存数据库的逆向工程。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Mapping Editor:</emphasis> an editor for Hibernate XML mapping files that supports auto-completion and syntax highlighting. It also supports semantic auto-completion for class names and property/field names, making it more versatile than a normal XML editor."
+msgstr "<emphasis>Mapping Editor:</emphasis> Hibernate XML 映射文件的编辑器,支持自动完成和语法高亮。它也支持对类名和属性/字段名的语义自动完成,比通常的 XML 编辑器方便得多。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Console:</emphasis> the console is a new view in Eclipse. In addition to a tree overview of your console configurations, you are also provided with an interactive view of your persistent classes and their relationships. The console allows you to execute HQL queries against your database and browse the result directly in Eclipse."
+msgstr "<emphasis>Console:</emphasis> Console 是 Eclipse 的一个新视图。除了对你的 console 配置的树状概览,你还可以获得对你持久化类及其关联的交互式视图。Console 允许你对数据库执行 HQL 查询,并直接在 Eclipse 中浏览结果。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Development Wizards:</emphasis> several wizards are provided with the Hibernate Eclipse tools. You can use a wizard to quickly generate Hibernate configuration (cfg.xml) files, or to reverse engineer an existing database schema into POJO source files and Hibernate mapping files. The reverse engineering wizard supports customizable templates."
+msgstr "<emphasis>Development Wizards:</emphasis> 在 Hibernate Eclipse tools 中还提供了几个向导;你可以用向导快速生成 Hibernate 配置文件(cfg.xml),你甚至还可以同现存的数据库 schema 中反向工程出 POJO 源代码与 Hibernate 映射文件。反向工程支持可定制的模版。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Please refer to the <emphasis>Hibernate Tools</emphasis> package documentation for more information."
+msgstr "要得到更多信息,请查阅 <emphasis>Hibernate Tools</emphasis> 包及其文档。 "
+
+#. Tag: para
+#, no-c-format
+msgid "However, the Hibernate main package comes bundled with an integrated tool : <emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>.It can even be used from \"inside\" Hibernate."
+msgstr "同时,Hibernate 主发行包还附带了一个集成的工具(它甚至可以在 Hibernate“内部”快速运行)<emphasis>SchemaExport</emphasis> ,也就是 <literal>hbm2ddl</literal>。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Automatic schema generation"
+msgstr "Schema 自动生成(Automatic schema generation)"
+
+#. Tag: para
+#, no-c-format
+msgid "DDL can be generated from your mapping files by a Hibernate utility. The generated schema includes referential integrity constraints, primary and foreign keys, for entity and collection tables. Tables and sequences are also created for mapped identifier generators."
+msgstr "可以从你的映射文件使用一个 Hibernate 工具生成 DDL。生成的 schema 包含有对实体和集合类表的完整性引用约束(主键和外键)。涉及到的标示符生成器所需的表和 sequence 也会同时生成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via the <literal>hibernate.dialect</literal> property when using this tool, as DDL is highly vendor-specific."
+msgstr "在使用这个工具的时候,你<emphasis>必须</emphasis> 通过 <literal>hibernate.dialet</literal> 属性指定一个 SQL<literal> 方言(Dialet)</literal>,因为 DDL 是与供应商高度相关的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "First, you must customize your mapping files to improve the generated schema. The next section covers schema customization."
+msgstr "首先,要定制你的映射文件,来改善生成的 schema。下章将涵盖 schema 定制。"
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing the schema"
+msgstr "对 schema 定制化(Customizing the schema)"
+
+#. Tag: para
+#, no-c-format
+msgid "Many Hibernate mapping elements define optional attributes named <literal>length</literal>, <literal>precision</literal> and <literal>scale</literal>. You can set the length, precision and scale of a column with this attribute."
+msgstr "很多 Hibernate 映射元素定义了可选的 <literal>length</literal>、<literal>precision</literal> 或者 <literal>scale</literal> 属性。你可以通过这个属性设置字段的长度、精度、小数点位数。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Some tags also accept a <literal>not-null</literal> attribute for generating a <literal>NOT NULL</literal> constraint on table columns, and a <literal>unique</literal> attribute for generating <literal>UNIQUE</literal> constraint on table columns."
+msgstr "有些 tag 还接受 <literal>not-null</literal> 属性(用来在表字段上生成 <literal>NOT NULL</literal> 约束)和 <literal>unique</literal> 属性(用来在表字段上生成 <literal>UNIQUE</literal> 约束)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>unique-key</literal> attribute can be used to group columns in a single, unique key constraint. Currently, the specified value of the <literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to name the constraint in the generated DDL. It is only used to group the columns in the mapping file."
+msgstr "<literal>unique-key</literal> 属性可以对成组的字段指定一个唯一键约束(unique key constraint)。目前,<literal>unique-key</literal> 属性指定的值在生成 DDL 时<emphasis>并不会</emphasis>被当作这个约束的名字,它们只是在用来在映射文件内部用作区分的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "An <literal>index</literal> attribute specifies the name of an index that will be created using the mapped column or columns. Multiple columns can be grouped into the same index by simply specifying the same index name."
+msgstr "<literal>index</literal> 属性会用对应的字段(一个或多个)生成一个 index,它指出了这个 index 的名字。如果多个字段对应的 index 名字相同,就会生成包含这些字段的 index。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>foreign-key</literal> attribute can be used to override the name of any generated foreign key constraint."
+msgstr "<literal>foreign-key</literal> 属性可以用来覆盖任何生成的外键约束的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Many mapping elements also accept a child <literal>&lt;column&gt;</literal> element. This is particularly useful for mapping multi-column types:"
+msgstr "很多映射元素还接受 <literal>&lt;column&gt;</literal> 子元素。这在定义跨越多字段的类型时特别有用。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>default</literal> attribute allows you to specify a default value for a column.You should assign the same value to the mapped property before saving a new instance of the mapped class."
+msgstr "<literal>default</literal> 属性为字段指定一个默认值(在保存被映射的类的新实例之前,你应该将同样的值赋于对应的属性)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>sql-type</literal> attribute allows the user to override the default mapping of a Hibernate type to SQL datatype."
+msgstr "<literal>sql-type</literal> 属性允许用户覆盖默认的 Hibernate 类型到 SQL 数据类型的映射。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>check</literal> attribute allows you to specify a check constraint."
+msgstr "<literal>check</literal> 属性允许用户指定一个约束检查。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following table summarizes these optional attributes."
+msgstr "下表总结了这些可选属性:"
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "总结"
+
+#. Tag: entry
+#, no-c-format
+msgid "Attribute"
+msgstr "属性(Attribute)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Values"
+msgstr "值(Values)"
+
+#. Tag: entry
+#, no-c-format
+msgid "Interpretation"
+msgstr "解释(Interpretation)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>length</literal>"
+msgstr "<literal>length</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "number"
+msgstr "æ•°å­—"
+
+#. Tag: entry
+#, no-c-format
+msgid "column length"
+msgstr "字段长度"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>precision</literal>"
+msgstr "<literal>precision</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal precision"
+msgstr "精度(decimal precision)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>scale</literal>"
+msgstr "<literal>scale</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "column decimal scale"
+msgstr "小数点位数(decimal scale)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>not-null</literal>"
+msgstr "<literal>not-null</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>true|false</literal>"
+msgstr "<literal>true|false</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should be non-nullable"
+msgstr "指明字段是否应该是非空的 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique</literal>"
+msgstr "<literal>unique</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies that the column should have a unique constraint"
+msgstr "指明是否该字段具有惟一约束"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index</literal>"
+msgstr "<literal>index</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>index_name</literal>"
+msgstr "<literal>index_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a (multi-column) index"
+msgstr "指明一个(多字段)的索引(index)的名字"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique-key</literal>"
+msgstr "<literal>unique-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>unique_key_name</literal>"
+msgstr "<literal>unique_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of a multi-column unique constraint"
+msgstr "指明多字段惟一约束的名字(参见上面的说明)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign-key</literal>"
+msgstr "<literal>foreign-key</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>foreign_key_name</literal>"
+msgstr "<literal>foreign_key_name</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "specifies the name of the foreign key constraint generated for an association, for a <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-to-many&gt;</literal> mapping element. Note that <literal>inverse=\"true\"</literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr "指明一个外键的名字,它是为关联生成的,或者是为 <literal>&lt;one-to-one&gt;</literal>, <literal>&lt;many-to-one&gt;</literal>, <literal>&lt;key&gt;</literal>, or <literal>&lt;many-to-many&gt;</literal> 映射元素。注意 <literal>inverse=\"true\"</literal> 会被 <literal>SchemaExport</literal> 忽略。"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>sql-type</literal>"
+msgstr "<literal>sql-type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>SQL column type</literal>"
+msgstr "<literal>SQL column type</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "overrides the default column type (attribute of <literal>&lt;column&gt;</literal> element only)"
+msgstr "覆盖默认的字段类型(只能用于 <literal>&lt;column&gt;</literal> 属性)"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>default</literal>"
+msgstr "<literal>default</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "SQL expression"
+msgstr "SQL 表达式"
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a default value for the column"
+msgstr "为字段指定默认值"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>check</literal>"
+msgstr "<literal>check</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "create an SQL check constraint on either column or table"
+msgstr "对字段或表加入 SQL 约束检查"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>&lt;comment&gt;</literal> element allows you to specify comments for the generated schema."
+msgstr "<literal>&lt;comment&gt;</literal> 元素可以让你在生成的 schema 中加入注释。"
+
+#. Tag: para
+#, no-c-format
+msgid "This results in a <literal>comment on table</literal> or <literal>comment on column</literal> statement in the generated DDL where supported."
+msgstr "结果是在生成的 DDL 中包含 <literal>comment on table</literal> 或者 <literal>comment on column</literal> 语句(假若支持的话)。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Running the tool"
+msgstr "运行该工具"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaExport</literal> tool writes a DDL script to standard out and/or executes the DDL statements."
+msgstr "<literal>SchemaExport</literal> 工具把 DDL 脚本写到标准输出,同时/或者执行 DDL 语句。"
+
+#. Tag: para
+#, no-c-format
+msgid "The following table displays the <literal>SchemaExport</literal> command line options"
+msgstr "下表显示了 <literal>SchemaExport</literal> 命令行选项"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
+msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaExport</literal> Command Line Options"
+msgstr "<literal>SchemaExport</literal> 命令行选项"
+
+#. Tag: entry
+#, no-c-format
+msgid "Option"
+msgstr "选项"
+
+#. Tag: entry
+#, no-c-format
+msgid "Description"
+msgstr "描述"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--quiet</literal>"
+msgstr "<literal>--quiet</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not output the script to stdout"
+msgstr "不要把脚本输出到 stdout "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--drop</literal>"
+msgstr "<literal>--drop</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only drop the tables"
+msgstr "只进行 drop tables 的步骤"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--create</literal>"
+msgstr "<literal>--create</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "only create the tables"
+msgstr "只创建表"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--text</literal>"
+msgstr "<literal>--text</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export to the database"
+msgstr "不执行在数据库中运行的步骤 "
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--output=my_schema.ddl</literal>"
+msgstr "<literal>--output=my_schema.ddl</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "output the ddl script to a file"
+msgstr "把输出的 ddl 脚本输出到一个文件"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--naming=eg.MyNamingStrategy</literal>"
+msgstr "<literal>--naming=eg.MyNamingStrategy</literal> "
+
+#. Tag: entry
+#, no-c-format
+msgid "select a <literal>NamingStrategy</literal>"
+msgstr "选择 <literal>NamingStrategy</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--config=hibernate.cfg.xml</literal>"
+msgstr "<literal>--config=hibernate.cfg.xml</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read Hibernate configuration from an XML file"
+msgstr "从 XML 文件读入 Hibernate 配置"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--properties=hibernate.properties</literal>"
+msgstr "<literal>--properties=hibernate.properties</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "read database properties from a file"
+msgstr "从文件读入数据库属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--format</literal>"
+msgstr "<literal>--format</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "format the generated SQL nicely in the script"
+msgstr "把脚本中的 SQL 语句对齐和美化"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>--delimiter=;</literal>"
+msgstr "<literal>--delimiter=;</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "set an end of line delimiter for the script"
+msgstr "为脚本设置行结束符"
+
+#. Tag: para
+#, no-c-format
+msgid "You can even embed <literal>SchemaExport</literal> in your application:"
+msgstr "你甚至可以在你的应用程序中嵌入 <literal>SchemaExport</literal> 工具: "
+
+#. Tag: title
+#, no-c-format
+msgid "Properties"
+msgstr "属性(Properties)"
+
+#. Tag: para
+#, no-c-format
+msgid "Database properties can be specified:"
+msgstr "可以通过如下方式指定数据库属性: "
+
+#. Tag: para
+#, no-c-format
+msgid "as system properties with <literal>-D</literal><emphasis>&lt;property&gt;</emphasis>"
+msgstr "通过 <literal>-D</literal><emphasis>&lt;property&gt;</emphasis> 系统参数"
+
+#. Tag: para
+#, no-c-format
+msgid "in <literal>hibernate.properties</literal>"
+msgstr "在 <literal>hibernate.properties</literal> 文件中"
+
+#. Tag: para
+#, no-c-format
+msgid "in a named properties file with <literal>--properties</literal>"
+msgstr "位于一个其它名字的 properties 文件中,然后用 <literal>--properties</literal> 参数指定"
+
+#. Tag: para
+#, no-c-format
+msgid "The needed properties are:"
+msgstr "所需的参数包括:"
+
+#. Tag: title
+#, no-c-format
+msgid "SchemaExport Connection Properties"
+msgstr "SchemaExport 连接属性"
+
+#. Tag: entry
+#, no-c-format
+msgid "Property Name"
+msgstr "属性名"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.driver_class</literal>"
+msgstr "<literal>hibernate.connection.driver_class</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc driver class"
+msgstr "jdbc driver class"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.url</literal>"
+msgstr "<literal>hibernate.connection.url</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "jdbc url"
+msgstr "jdbc url"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.username</literal>"
+msgstr "<literal>hibernate.connection.username</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "database user"
+msgstr "database user"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.connection.password</literal>"
+msgstr "<literal>hibernate.connection.password</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "user password"
+msgstr "user password"
+
+#. Tag: entry
+#, no-c-format
+msgid "<literal>hibernate.dialect</literal>"
+msgstr "<literal>hibernate.dialect</literal>"
+
+#. Tag: entry
+#, no-c-format
+msgid "dialect"
+msgstr "方言(dialect)"
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant"
+msgstr "使用 Ant(Using Ant)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr "你可以在你的 Ant build 脚本中调用 <literal>SchemaExport</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Incremental schema updates"
+msgstr "对 schema 的增量更新(Incremental schema updates)"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaUpdate</literal> tool will update an existing schema with \"incremental\" changes. The <literal>SchemaUpdate</literal> depends upon the JDBC metadata API and, as such, will not work with all JDBC drivers."
+msgstr "<literal>SchemaUpdate</literal> 工具对已存在的 schema 采用\"增量\"方式进行更新。注意 <literal>SchemaUpdate</literal> 严重依赖于 JDBC metadata API,所以它并非对所有 JDBC 驱动都有效。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
+msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaUpdate</literal> Command Line Options"
+msgstr "<literal>SchemaUpdate</literal> 命令行选项"
+
+#. Tag: entry
+#, no-c-format
+msgid "do not export the script to the database"
+msgstr "不把脚本输出到数据库 "
+
+#. Tag: entry
+#, no-c-format
+msgid "specify a <literal>.cfg.xml</literal> file"
+msgstr "指定一个 <literal>.cfg.xml</literal> 文件"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaUpdate</literal> in your application:"
+msgstr "你可以在你的应用程序中嵌入 <literal>SchemaUpdate</literal> 工具: "
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for incremental schema updates"
+msgstr "用 Ant 来增量更新 schema(Using Ant for incremental schema updates)"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
+msgstr "你可以在 Ant 脚本中调用 <literal>SchemaUpdate</literal>:"
+
+#. Tag: title
+#, no-c-format
+msgid "Schema validation"
+msgstr "Schema 校验"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>SchemaValidator</literal> tool will validate that the existing database schema \"matches\" your mapping documents. The <literal>SchemaValidator</literal> depends heavily upon the JDBC metadata API and, as such, will not work with all JDBC drivers. This tool is extremely useful for testing."
+msgstr "<literal>SchemaValidator</literal> 工具会比较数据库现状是否与映射文档“匹配”。注意,<literal>SchemaValidator</literal> 严重依赖于 JDBC 的 metadata API,因此不是对所有的 JDBC 驱动都适用。这一工具在测试的时候特别有用。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
+msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "The following table displays the <literal>SchemaValidator</literal> command line options:"
+msgstr "下表显示了 <literal>SchemaValidator</literal> 命令行参数:"
+
+#. Tag: title
+#, no-c-format
+msgid "<literal>SchemaValidator</literal> Command Line Options"
+msgstr "<literal>SchemaValidator</literal> 命令行参数"
+
+#. Tag: para
+#, no-c-format
+msgid "You can embed <literal>SchemaValidator</literal> in your application:"
+msgstr "你可以在你的应用程序中嵌入 <literal>SchemaValidator</literal>: "
+
+#. Tag: title
+#, no-c-format
+msgid "Using Ant for schema validation"
+msgstr "使用 Ant 进行 schema 校验"
+
+#. Tag: para
+#, no-c-format
+msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
+msgstr "你可以在 Ant 脚本中调用 <literal>SchemaValidator</literal>:"
+
+#, fuzzy
+#~ msgid "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
+#~ msgstr "&lt;property name=\"zip\" length=\"5\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
+#~ msgstr "&lt;property name=\"balance\" precision=\"12\" scale=\"2\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/>]]>"
+#~ msgstr ""
+#~ "&lt;element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+#~ "unique=\"true\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key="
+#~ "\"OrgEmployeeId\"/>\n"
+#~ "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId"
+#~ "\"/&gt;\n"
+#~ "&lt;property name=\"employeeId\" unique-key=\"OrgEmployee\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
+#~ "<property name=\"firstName\" index=\"CustName\"/>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"lastName\" index=\"CustName\"/&gt;\n"
+#~ "&lt;property name=\"firstName\" index=\"CustName\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar"
+#~ "\"/>]]>"
+#~ msgstr ""
+#~ "&lt;many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/"
+#~ "&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
+#~ "    <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30"
+#~ "\"/>\n"
+#~ "    <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20"
+#~ "\"/>\n"
+#~ "    <column name=\"initial\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"name\" type=\"my.customtypes.Name\"/&gt;\n"
+#~ "    &lt;column name=\"last\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"30\"/&gt;\n"
+#~ "    &lt;column name=\"first\" not-null=\"true\" index=\"bar_idx\" length="
+#~ "\"20\"/&gt;\n"
+#~ "    &lt;column name=\"initial\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"credits\" default=\"10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"credits\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"credits\" default=\"10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
+#~ "    <column name=\"version\" default=\"0\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;version name=\"version\" type=\"integer\" insert=\"false\"&gt;\n"
+#~ "    &lt;column name=\"version\" default=\"0\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\" type=\"float\">\n"
+#~ "    <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\" type=\"float\"&gt;\n"
+#~ "    &lt;column name=\"balance\" sql-type=\"decimal(13,3)\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
+#~ "    <column name=\"foo\" check=\"foo > 10\"/>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"foo\" type=\"integer\"&gt;\n"
+#~ "    &lt;column name=\"foo\" check=\"foo &gt; 10\"/&gt;\n"
+#~ "&lt;/property&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
+#~ "    ...\n"
+#~ "    <property name=\"bar\" type=\"float\"/>\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Foo\" table=\"foos\" check=\"bar &lt; 100.0\"&gt;\n"
+#~ "    ...\n"
+#~ "    &lt;property name=\"bar\" type=\"float\"/&gt;\n"
+#~ "&lt;/class&gt;"
+#~ msgid "length"
+#~ msgstr "length"
+#~ msgid "precision"
+#~ msgstr "precision"
+#~ msgid "scale"
+#~ msgstr "scale"
+#~ msgid "not-null"
+#~ msgstr "not-null"
+#~ msgid "true|false"
+#~ msgstr "true|false"
+#~ msgid "unique"
+#~ msgstr "unique"
+#~ msgid "index"
+#~ msgstr "index"
+#~ msgid "index_name"
+#~ msgstr "index_name"
+#~ msgid "unique-key"
+#~ msgstr "unique-key"
+#~ msgid "unique_key_name"
+#~ msgstr "unique_key_name"
+#~ msgid "foreign-key"
+#~ msgstr "foreign-key"
+
+#, fuzzy
+#~ msgid "foreign_key_name"
+#~ msgstr "foreign-key"
+#~ msgid "sql-type"
+#~ msgstr "sql-type"
+
+#, fuzzy
+#~ msgid "SQL column type"
+#~ msgstr "<literal>SQL column type</literal>"
+#~ msgid "default"
+#~ msgstr "default"
+#~ msgid "check"
+#~ msgstr "check"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
+#~ "    <comment>Current customers only</comment>\n"
+#~ "    ...\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"Customer\" table=\"CurCust\"&gt;\n"
+#~ "    &lt;comment&gt;Current customers only&lt;/comment&gt;\n"
+#~ "    ...\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<property name=\"balance\">\n"
+#~ "    <column name=\"bal\">\n"
+#~ "        <comment>Balance in USD</comment>\n"
+#~ "    </column>\n"
+#~ "</property>]]>"
+#~ msgstr ""
+#~ "&lt;property name=\"balance\"&gt;\n"
+#~ "    &lt;column name=\"bal\"&gt;\n"
+#~ "        &lt;comment&gt;Balance in USD&lt;/comment&gt;\n"
+#~ "    &lt;/column&gt;\n"
+#~ "&lt;/property&gt;"
+#~ msgid "--quiet"
+#~ msgstr "--quiet"
+#~ msgid "--drop"
+#~ msgstr "--drop"
+#~ msgid "--create"
+#~ msgstr "--create"
+#~ msgid "--text"
+#~ msgstr "--text"
+
+#, fuzzy
+#~ msgid "--output=my_schema.ddl"
+#~ msgstr "<literal>--output=my_schema.ddl</literal>"
+
+#, fuzzy
+#~ msgid "--config=hibernate.cfg.xml"
+#~ msgstr "<literal>--config=hibernate.cfg.xml</literal>"
+#~ msgid "--properties=hibernate.properties"
+#~ msgstr "--properties=hibernate.properties"
+#~ msgid "--format"
+#~ msgstr "--format"
+#~ msgid "--delimiter=;"
+#~ msgstr "--delimiter=;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaExport(cfg).create(false, true);"
+
+#, fuzzy
+#~ msgid "hibernate.connection.driver_class"
+#~ msgstr "hibernate.connection.url"
+#~ msgid "hibernate.connection.url"
+#~ msgstr "hibernate.connection.url"
+#~ msgid "hibernate.connection.username"
+#~ msgstr "hibernate.connection.username"
+#~ msgid "hibernate.connection.password"
+#~ msgstr "hibernate.connection.password"
+#~ msgid "hibernate.dialect"
+#~ msgstr "hibernate.dialect"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaexport\">\n"
+#~ "    <taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaexport>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaexport\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaexport\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaexport\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"\n"
+#~ "        text=\"no\"\n"
+#~ "        drop=\"no\"\n"
+#~ "        delimiter=\";\"\n"
+#~ "        output=\"schema-export.sql\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaexport&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaUpdate(cfg).execute(false);"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemaupdate\">\n"
+#~ "    <taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemaupdate>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemaupdate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemaupdate\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemaupdate\n"
+#~ "        properties=\"hibernate.properties\"\n"
+#~ "        quiet=\"no\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();]]>"
+#~ msgstr ""
+#~ "Configuration cfg = ....;\n"
+#~ "new SchemaValidator(cfg).validate();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<target name=\"schemavalidate\">\n"
+#~ "    <taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/>\n"
+#~ "    \n"
+#~ "    <schemavalidator\n"
+#~ "        properties=\"hibernate.properties\">\n"
+#~ "        <fileset dir=\"src\">\n"
+#~ "            <include name=\"**/*.hbm.xml\"/>\n"
+#~ "        </fileset>\n"
+#~ "    </schemavalidator>\n"
+#~ "</target>]]>"
+#~ msgstr ""
+#~ "&lt;target name=\"schemavalidate\"&gt;\n"
+#~ "    &lt;taskdef name=\"schemavalidator\"\n"
+#~ "        classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+#~ "        classpathref=\"class.path\"/&gt;\n"
+#~ "    \n"
+#~ "    &lt;schemavalidator\n"
+#~ "        properties=\"hibernate.properties\"&gt;\n"
+#~ "        &lt;fileset dir=\"src\"&gt;\n"
+#~ "            &lt;include name=\"**/*.hbm.xml\"/&gt;\n"
+#~ "        &lt;/fileset&gt;\n"
+#~ "    &lt;/schemaupdate&gt;\n"
+#~ "&lt;/target&gt;"
+#~ msgid "<!-- <emphasis>Ant Tasks:</emphasis> -->"
+#~ msgstr "<!-- <emphasis>Ant Tasks:</emphasis> -->"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/transactions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/transactions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/transactions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,922 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-16 09:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Transactions and Concurrency"
+msgstr "事务和并发 "
+
+#. Tag: para
+#, no-c-format
+msgid "The most important point about Hibernate and concurrency control is that it is easy to understand. Hibernate directly uses JDBC connections and JTA resources without adding any additional locking behavior. It is recommended that you spend some time with the JDBC, ANSI, and transaction isolation specification of your database management system."
+msgstr "Hibernate 的事务和并发控制很容易掌握。Hibernate 直接使用 JDBC 连接和 JTA 资源,不添加任何附加锁定行为。我们强烈推荐你花点时间了解 JDBC 编程,ANSI SQL 查询语言和你使用的数据库系统的事务隔离规范。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate does not lock objects in memory. Your application can expect the behavior as defined by the isolation level of your database transactions. Through <literal>Session</literal>, which is also a transaction-scoped cache, Hibernate provides repeatable reads for lookup by identifier and entity queries and not reporting queries that return scalar values."
+msgstr "Hibernate 不锁定内存中的对象。你的应用程序会按照你的数据库事务的隔离级别规定的那样运作。幸亏有了 <literal>Session</literal>,使得 Hibernate 通过标识符查找,和实体查询(不是返回标量值的报表查询)提供了可重复的读取(Repeatable reads)功能,<literal>Session</literal> 同时也是事务范围内的缓存(cache)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In addition to versioning for automatic optimistic concurrency control, Hibernate also offers, using the <literal>SELECT FOR UPDATE</literal> syntax, a (minor) API for pessimistic locking of rows. Optimistic concurrency control and this API are discussed later in this chapter."
+msgstr "除了对自动乐观并发控制提供版本管理,针对行级悲观锁定,Hibernate 也提供了辅助的(较小的)API,它使用了 <literal>SELECT FOR UPDATE</literal> 的 SQL 语法。本章后面会讨论乐观并发控制和这个API。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The discussion of concurrency control in Hibernate begins with the granularity of <literal>Configuration</literal>, <literal>SessionFactory</literal>, and <literal>Session</literal>, as well as database transactions and long conversations."
+msgstr "我们从 <literal>Configuration</literal>层、<literal>SessionFactory</literal> 层,和 <literal>Session</literal> 层开始讨论 Hibernate 的并行控制、数据库事务和应用程序的长事务。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Session and transaction scopes"
+msgstr "Session 和事务范围(transaction scope)"
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe object, intended to be shared by all application threads. It is created once, usually on application startup, from a <literal>Configuration</literal> instance."
+msgstr "<literal>SessionFactory</literal> 对象的创建代价很昂贵,它是线程安全的对象,它为所有的应用程序线程所共享。它只创建一次,通常是在应用程序启动的时候,由一个 <literal>Configuraion</literal> 的实例来创建。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>Session</literal> is an inexpensive, non-threadsafe object that should be used once and then discarded for: a single request, a conversation or a single unit of work. A <literal>Session</literal> will not obtain a JDBC <literal>Connection</literal>, or a <literal>Datasource</literal>, unless it is needed. It will not consume any resources until used."
+msgstr "<literal>Session</literal> 对象的创建代价比较小,是非线程安全的,对于单个请求,单个会话、单个的 工作单元而言,它只被使用一次,然后就丢弃。只有在需要的时候,一个 <literal>Session</literal> 对象 才会获取一个 JDBC 的 <literal>Connection</literal>(或一个<literal>Datasource</literal>)对象,因此假若不使用的时候它不消费任何资源。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In order to reduce lock contention in the database, a database transaction has to be as short as possible. Long database transactions will prevent your application from scaling to a highly concurrent load. It is not recommended that you hold a database transaction open during user think time until the unit of work is complete."
+msgstr "此外我们还要考虑数据库事务。数据库事务应该尽可能的短,降低数据库中的锁争用。数据库长事务会阻止你的应用程序扩展到高的并发负载。因此,假若在用户思考期间让数据库事务开着,直到整个工作单元完成才关闭这个事务,这绝不是一个好的设计。 "
+
+#. Tag: para
+#, no-c-format
+msgid "What is the scope of a unit of work? Can a single Hibernate <literal>Session</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? These questions are addressed in the following sections."
+msgstr "一个操作单元(Unit of work)的范围是多大?单个的 Hibernate <literal>Session</literal> 能跨越多个数据库事务吗?还是一个 <literal>Session</literal> 的作用范围对应一个数据库事务的范围?应该何时打开 <literal>Session</literal>,何时关闭 <literal>Session</literal>,你又如何划分数据库事务的边界呢?我们将在后续章节解决这些问题。"
+
+#. Tag: title
+#, no-c-format
+msgid "Unit of work"
+msgstr "操作单元(Unit of work)"
+
+#. Tag: para
+#, no-c-format
+msgid "First, let's define a unit of work. A unit of work is a design pattern described by Martin Fowler as <quote> [maintaining] a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems. </quote><citation>PoEAA</citation> In other words, its a series of operations we wish to carry out against the database together. Basically, it is a transaction, though fulfilling a unit of work will often span multiple physical database transactions (see <xref linkend=\"transactions-basics-apptx\" />). So really we are talking about a more abstract notion of a transaction. The term \"business transaction\" is also sometimes used in lieu of unit of work."
+msgstr "首先,让我们定义一个工作单元(unit of work)。工作单元是一个设计模式,Martin Fowler 把它描述为 <quote> [maintaining] a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems. </quote><citation>PoEAA</citation> 换句话说,它是我们希望对数据库执行的一系列操作。基本上,它是一个事务,虽然完成一个工作单元经常将跨越多个物理数据库事务(请参考 <xref linkend=\"transactions-basics-apptx\"/>)。所以,实际上我们在讨论一个更抽象的事务概念。术语 \"business transaction\" 有时也和工作单元一起使用。"
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use the <emphasis>session-per-operation</emphasis> antipattern: do not open and close a <literal>Session</literal> for every simple database call in a single thread. 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. This also means that auto-commit after every single SQL statement is useless in an application as this mode is intended for ad-hoc SQL console work. Hibernate disables, or expects the application server to disable, auto-commit mode immediately. Database transactions are never optional. All communication with a database has to occur inside a transaction. Auto-commit behavior for reading data should be avoided, as many small transactions are unlikely to perform better than one clearly defined unit of work. The latter is also more maintainable and extensible."
+msgstr "首先,别用 <emphasis>session-per-operation</emphasis> 这种反模式了,也就是说,在单个线程中, 不要因为一次简单的数据库调用,就打开和关闭一次 <literal>Session</literal>!数据库事务也是如此。 应用程序中的数据库调用是按照计划好的次序,分组为原子的操作单元。(注意,这也意味着,应用程 序中,在单个的 SQL 语句发送之后,自动事务提交(auto-commit)模式失效了。这种模式专门为SQL控制台操作设计的。 Hibernate 禁止立即自动事务提交模式,或者期望应用服务器禁止立即自动事务提交模式。)数据库事务绝不是可有可无的,任何与数据库之间的通讯都必须在某个事务中进行,不管你是在读还是在写数据。对读数据而言,应该避免 auto-commit 行为,因为很多小的事务比一个清晰定义的工作单元性能差。后者也更容易维护和扩展。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The most common pattern in a multi-user client/server application is <emphasis>session-per-request</emphasis>. In this model, a request from the client is sent to the server, where the Hibernate persistence layer runs. A new Hibernate <literal>Session</literal> is opened, and all database operations are executed in this unit of work. On completion of the work, and once the response for the client has been prepared, the session is flushed and closed. Use a single database transaction to serve the clients request, starting and committing it when you open and close the <literal>Session</literal>. The relationship between the two is one-to-one and this model is a perfect fit for many applications."
+msgstr "在多用户的 client/server 应用程序中,最常用的模式是 <emphasis>每个请求一个会话(session-per-request)</emphasis>。 在这种模式下,来自客户端的请求被发送到服务器端(即 Hibernate 持久化层运行的地方),一个新的 Hibernate <literal>Session</literal> 被打开,并且执行这个操作单元中所有的数据库操作。一旦操作完成(同时对客户端的响应也准备就绪),session 被同步,然后关闭。你也可以使用单 个数据库事务来处理客户端请求,在你打开 <literal>Session</literal> 之后启动事务,在你关闭 <literal>Session</literal> 之前提交事务。会话和请求之间的关系是一对一的关系,这种模式对 于大多数应用程序来说是很棒的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The challenge lies in the implementation. Hibernate provides built-in management of the \"current session\" to simplify this pattern. Start a transaction when a server request has to be processed, and end the transaction before the response is sent to the client. Common solutions are <literal>ServletFilter</literal>, AOP interceptor with a pointcut on the service methods, or a proxy/interception container. An EJB container is a standardized way to implement cross-cutting aspects such as transaction demarcation on EJB session beans, declaratively with CMT. If you use programmatic transaction demarcation, for ease of use and code portability use the Hibernate <literal>Transaction</literal> API shown later in this chapter."
+msgstr "实现才是真正的挑战。Hibernate 内置了对\"当前 session(current session)\" 的管理,用于简化此模式。你要做的一切就是在服务器端要处理请求的时候,开启事务,在响应发送给客户之前结束事务。你可以用任何方式来完成这一操作,通常的方案有 <literal>ServletFilter</literal>,在 service 方法中进行 pointcut 的 AOP 拦截器,或者 proxy/interception 容器。EJB 容器是实现横切诸如 EJB session bean 上的事务分界,用 CMT 对事务进行声明等方面的标准手段。假若你决定使用编程式的事务分界,请参考本章后面讲到的 Hibernate <literal>Transaction</literal> API,这对易用性和代码可移植性都有好处。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Your application code can access a \"current session\" to process the request by calling <literal>sessionFactory.getCurrentSession()</literal>. You will always get a <literal>Session</literal> scoped to the current database transaction. This has to be configured for either resource-local or JTA environments, see <xref linkend=\"architecture-current-session\" />."
+msgstr "在任何时间,任何地方,你的应用代码可以通过简单的调用<literal>sessionFactory.getCurrentSession()</literal> 来访问\"当前 session\",用于处理请求。你总是会得到当前数据库事务范围内的 <literal>Session</literal>。在使用本地资源或 JTA 环境时,必须配置它,请参见 <xref linkend=\"architecture-current-session\"/>。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can extend the scope of a <literal>Session</literal> and database transaction until the \"view has been rendered\". This is especially useful in servlet applications that utilize a separate rendering phase after the request has been processed. Extending the database transaction until view rendering, is achieved by implementing your own interceptor. However, this will be difficult if you rely on EJBs with container-managed transactions. A transaction will be completed when an EJB method returns, before rendering of any view can start. See the Hibernate website and forum for tips and examples relating to this <emphasis>Open Session in View</emphasis> pattern."
+msgstr "有时,将 <literal>Session</literal> 和数据库事务的边界延伸到\"展示层被渲染后\"会带来便利。有些 serlvet 应用程序在对请求进行处理后,有个单独的渲染期,这种延伸对这种程序特别有用。假若你实现你自己的拦截器,把事务边界延伸到展示层渲染结束后非常容易。然而,假若你依赖有容器管理事务的 EJB,这就不太容易了,因为事务会在 EJB 方法返回后结束,而那是在任何展示层渲染开始之前。请访问  Hibernate 网站和论坛,你可以找到 <emphasis>Open Session in View</emphasis> 这一模式的提示和示例。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Long conversations"
+msgstr "长对话"
+
+#. Tag: para
+#, no-c-format
+msgid "The session-per-request pattern is not the only way of designing units of work. Many business processes require a whole series of interactions with the user that are interleaved with database accesses. In web and enterprise applications, it is not acceptable for a database transaction to span a user interaction. Consider the following example:"
+msgstr "session-per-request 模式不仅仅是一个可以用来设计操作单元的有用概念。很多业务处理都需 要一系列完整的与用户之间的交互,而这些用户是指对数据库有交叉访问的用户。在基于 web 的应用和企业应用中,跨用户交互的数据库事务是无法接受的。考虑下面的例子: "
+
+#. Tag: para
+#, no-c-format
+msgid "The first screen of a dialog opens. The data seen by the user has been loaded in a particular <literal>Session</literal> and database transaction. The user is free to modify the objects."
+msgstr "在界面的第一屏,打开对话框,用户所看到的数据是被一个特定的 <literal>Session</literal> 和数据 库事务载入(load)的。用户可以随意修改对话框中的数据对象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The user clicks \"Save\" after 5 minutes and expects their modifications to be made persistent. The user also expects that they were the only person editing this information and that no conflicting modification has occurred."
+msgstr "5 分钟后,用户点击“保存”,期望所做出的修改被持久化;同时他也期望自己是唯一修改这个信息的人,不会出现修改冲突。 "
+
+#. Tag: para
+#, no-c-format
+msgid "From the point of view of the user, we call this unit of work a long-running <emphasis>conversation</emphasis> or <emphasis>application transaction</emphasis>. There are many ways to implement this in your application."
+msgstr "从用户的角度来看,我们把这个操作单元称为长时间运行的<emphasis>对话</emphasis>(conversation),或者<emphasis>应用事务</emphasis>(application transaction)。在你的应用程序中,可以有很多种方法来实现它。"
+
+#. Tag: para
+#, no-c-format
+msgid "A first naive implementation might keep the <literal>Session</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 an anti-pattern, since lock contention would not allow the application to scale with the number of concurrent users."
+msgstr "头一个幼稚的做法是,在用户思考的过程中,保持 <literal>Session</literal> 和数据库事务是打开的,保持数据库锁定,以阻止并发修改,从而保证数据库事务隔离级别和原子操作。这种方式当然是一个反模式,因为锁争用会导致应用程序无法扩展并发用户的数目。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You have to use several database transactions to implement the conversation. In this case, maintaining isolation of business processes becomes the partial responsibility of the application tier. A single conversation 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 (for example, in a wizard-style dialog spanning several request/response cycles). This is easier to implement than it might sound, especially if you utilize some of Hibernate's features:"
+msgstr "很明显,我们必须使用多个数据库事务来实现这个对话。在这个例子中,维护业务处理的 事务隔离变成了应用程序层的部分责任。一个对话通常跨越多个数据库事务。如果仅仅只有一个数据库事务(最后的那个事务)保存更新过的数据,而所有其他事务只是单纯的读取数据(例如在一个跨越多个请求/响应周期的向导风格的对话框中),那么应用程序事务将保证其原子性。这种方式比听起来还要容易实现,特别是当你使用了 Hibernate 的下述特性的时候: "
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Automatic Versioning</emphasis>: Hibernate can perform automatic optimistic concurrency control for you. It can automatically detect if a concurrent modification occurred during user think time. Check for this at the end of the conversation."
+msgstr "<emphasis>自动版本化</emphasis>:Hibernate 能够自动进行乐观并发控制,如果在用户思考的过程中发生并发修改,Hibernate 能够自动检测到。一般我们只在对话结束时才检查。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Detached Objects</emphasis>: if you decide to use the <emphasis>session-per-request</emphasis> pattern, all loaded instances will be in the detached state during user think time. Hibernate allows you to reattach the objects and persist the modifications. The pattern is called <emphasis>session-per-request-with-detached-objects</emphasis>. Automatic versioning is used to isolate concurrent modifications."
+msgstr "<emphasis>脱管对象</emphasis>(Detached Objects):如果你决定采用前面已经讨论过的  <emphasis>session-per-request</emphasis> 模式,所有载入的实例在用户思考的过程中都处于与 Session 脱离的状态。Hibernate 允许你把与 Session 脱离的对象重新关联到 Session 上,并且对修改进行持久化,这种模式被称为 <emphasis>session-per-request-with-detached-objects</emphasis>。自动版本化被用来隔离并发修改。"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis>Extended (or Long) Session</emphasis>: the Hibernate <literal>Session</literal> can be disconnected from the underlying JDBC connection after the database transaction has been committed and reconnected when a new client request occurs. This pattern is known as <emphasis>session-per-conversation</emphasis> and makes even reattachment unnecessary. Automatic versioning is used to isolate concurrent modifications and the <literal>Session</literal> will not be allowed to be flushed automatically, but explicitly."
+msgstr "<emphasis>Extended (or Long) Session</emphasis>:Hibernate 的 <literal>Session</literal> 可以在数据库事务提交之后和底层的 JDBC 连接断开,当一个新的客户端请求到来的时候,它又重新连接上底层的 JDBC 连接。这种模式被称之为<emphasis>session-per-conversation</emphasis>,这种情况可 能会造成不必要的 Session 和 JDBC 连接的重新关联。自动版本化被用来隔离并发修改,<literal>Session</literal> 通常不允许自动 flush,而是显性地 flush。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Both <emphasis>session-per-request-with-detached-objects</emphasis> and <emphasis>session-per-conversation</emphasis> have advantages and disadvantages. These disadvantages are discussed later in this chapter in the context of optimistic concurrency control."
+msgstr "<emphasis>session-per-request-with-detached-objects</emphasis> 和  <emphasis>session-per-conversation</emphasis> 各有优缺点,我们在本章后面乐观并发控制那部分再进行讨论。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Considering object identity"
+msgstr "关注对象标识(Considering object identity)"
+
+#. Tag: para
+#, no-c-format
+msgid "An application can concurrently access the same persistent state in two different <literal>Session</literal>s. However, an instance of a persistent class is never shared between two <literal>Session</literal> instances. It is for this reason that there are two different notions of identity:"
+msgstr "应用程序可能在两个不同的 <literal>Session</literal> 中并发访问同一持久化状态,但是,一个持久化类的实例无法在两个 <literal>Session</literal> 中共享。因此有两种不同的标识语义: "
+
+#. Tag: term
+#, no-c-format
+msgid "Database Identity"
+msgstr "数据库标识"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo.getId().equals( bar.getId() )</literal>"
+msgstr "<literal>foo.getId().equals( bar.getId() )</literal> "
+
+#. Tag: term
+#, no-c-format
+msgid "JVM Identity"
+msgstr "JVM 标识"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>foo==bar</literal>"
+msgstr "<literal>foo==bar</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "For objects attached to a <emphasis>particular</emphasis> <literal>Session</literal> (i.e., in the scope of a <literal>Session</literal>), the two notions are equivalent and JVM identity for database identity is guaranteed by Hibernate. While the application might concurrently access the \"same\" (persistent identity) business object in two different sessions, the two instances will actually be \"different\" (JVM identity). Conflicts are resolved using an optimistic approach and automatic versioning at flush/commit time."
+msgstr "对于那些关联到 <emphasis>特定</emphasis> <literal>Session</literal>(也就是在单个 <literal>Session</literal> 的范围内)上的对象来说,这两种标识的语义是等价的,与数据库标识对应的 JVM 标识是由 Hibernate 来保证的。不过,当应用程序在两个不同的 session 中并发访问具有同一持久化标识的业务对象实例的时候,这个业务对象的两个实例事实上是不相同的(从 JVM 识别来看)。这种冲突可以通过在同步和提交的时候使用自动版本化和乐观锁定方法来解决。 "
+
+#. Tag: para
+#, 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 means that it does not need expensive locking or other means of synchronization. The application does not need to synchronize on any business object, as long as it maintains a single thread per <literal>Session</literal>. Within a <literal>Session</literal> the application can safely use <literal>==</literal> to compare objects."
+msgstr "这种方式把关于并发的头疼问题留给了 Hibernate 和数据库;由于在单个线程内,操作单元中的对象识别不 需要代价昂贵的锁定或其他意义上的同步,因此它同时可以提供最好的可伸缩性。只要在单个线程只持有一个 <literal>Session</literal>,应用程序就不需要同步任何业务对象。在 <literal>Session</literal> 的范围内,应用程序可以放心的使用 <literal>==</literal> 进行对象比较。 "
+
+#. Tag: para
+#, no-c-format
+msgid "However, an application that uses <literal>==</literal> outside of a <literal>Session</literal> might produce 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). JVM identity, however, is by definition not guaranteed for instances in a detached state. The developer has to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods in persistent classes and implement their own notion of object equality. There is one caveat: never use the database identifier to implement equality. Use a business key that is a combination of unique, usually immutable, attributes. The database identifier will change if a transient object is made persistent. If the transient instance (usually together with detached instances) is held in a <literal>Set</literal>, changing the hashcode bre!
 aks the contract of the <literal>Set</literal>. Attributes for business keys do not 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. Please note that this is not a Hibernate issue, but simply how Java object identity and equality has to be implemented."
+msgstr "不过,应用程序在 <literal>Session</literal> 的外面使用 <literal>==</literal> 进行对象比较可能会 导致无法预期的结果。在一些无法预料的场合,例如,如果你把两个脱管对象实例放进同一个  <literal>Set</literal> 的时候,就可能发生。这两个对象实例可能有同一个数据库标识(也就是说, 他们代表了表的同一行数据),从 JVM 标识的定义上来说,对脱管的对象而言,Hibernate 无法保证他们 的的 JVM 标识一致。开发人员必须覆盖持久化类的 <literal>equals()</literal> 方法和  <literal>hashCode()</literal> 方法,从而实现自定义的对象相等语义。警告:不要使用数据库标识来实现对象相等,应该使用业务键值,由唯一的,通常不变的属性组成。当一个瞬时对象被持久化的时候,它的数据库标识会发生改变。如果一个瞬时对象(通常也包括脱管对象实例)被放入ä!
 ¸€ä¸ª <literal>Set</literal>,改变它的 hashcode 会导致与这个 <literal>Set</literal> 的关系中断。虽 然业务键值的属性不象数据库主键那样稳定不变,但是你只需要保证在同一个 <literal>Set</literal> 中的对象属性的稳定性就足够了。请到 Hibernate 网站去寻求这个问题更多的详细的讨论。请注意,这不是一个有关 Hibernate 的问题,而仅仅是一个关于 Java 对象标识和判等行为如何实现的问题。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Common issues"
+msgstr "常见问题"
+
+#. Tag: para
+#, no-c-format
+msgid "Do not use the anti-patterns <emphasis>session-per-user-session</emphasis> or <emphasis>session-per-application</emphasis> (there are, however, rare exceptions to this rule). Some of the following issues might also arise within the recommended patterns, so ensure that you understand the implications before making a design decision:"
+msgstr "决不要使用反模式 <emphasis>session-per-user-session</emphasis> 或者 <emphasis> session-per-application</emphasis>(当然,这个规定几乎没有例外)。请注意,下述一些问题可能也会出现在我们推荐的模式中,在你作出某个设计决定之前,请务必理解该模式的应用前提。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A <literal>Session</literal> is not thread-safe. Things that work concurrently, like HTTP requests, session beans, or Swing workers, will cause race conditions if a <literal>Session</literal> instance is shared. If you keep your Hibernate <literal>Session</literal> in your <literal>HttpSession</literal> (this is discussed later in the chapter), you should consider synchronizing access to your Http session. Otherwise, a user that clicks reload fast enough can use the same <literal>Session</literal> in two concurrently running threads."
+msgstr "<literal>Session</literal> 对象是非线程安全的。如果一个 <literal>Session</literal> 实例允许共享的话,那些支持并发运行的东东,例如 HTTP request,session beans 或者是 Swing workers,将会导致出现资源争用(race condition)。如果在 <literal>HttpSession</literal> 中有 Hibernate 的 <literal>Session</literal> 的话(稍后讨论),你应该考虑同步访问你的 Http session。 否则,只要用户足够快的点击浏览器的“刷新”,就会导致两个并发运行线程使用同一个  <literal>Session</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "An exception thrown by Hibernate means you have to rollback your database transaction and close the <literal>Session</literal> immediately (this is discussed in more detail later in the chapter). If your <literal>Session</literal> is bound to the application, you have to stop the application. Rolling back the database transaction does not put your business objects back into the state they were at the start of the transaction. This means that the database state and the business objects will be out of sync. Usually this is not a problem, because exceptions are not recoverable and you will have to start over after rollback anyway."
+msgstr "一个由 Hibernate 抛出的异常意味着你必须立即回滚数据库事务,并立即关闭 <literal>Session</literal>(稍后会展开讨论)。如果你的 <literal>Session</literal> 绑定到一个应用程序上,你必须停止该应用程序。回滚数据库事务并不会把你的业务对象退回到事务启动时候的状态。这意味着数据库状态和业务对象状态不同步。通常情况下,这不是什么问题,因为异常是不可恢复的,你必须在回滚之后重新开始执行。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Session</literal> caches every object that is in a persistent state (watched and checked for dirty state by Hibernate). If you keep it open for a long time or simply load too much data, it will grow endlessly until you get an OutOfMemoryException. One solution is to call <literal>clear()</literal> and <literal>evict()</literal> to manage the <literal>Session</literal> cache, but you should consider a Stored Procedure if you need mass data operations. Some solutions are shown in <xref linkend=\"batch\" />. Keeping a <literal>Session</literal> open for the duration of a user session also means a higher probability of stale data."
+msgstr "<literal>Session</literal> 缓存了处于持久化状态的每个对象(Hibernate 会监视和检查脏数据)。 这意味着,如果你让 <literal>Session</literal> 打开很长一段时间,或是仅仅载入了过多的数据, <literal>Session</literal> 占用的内存会一直增长,直到抛出 OutOfMemoryException 异常。这个 问题的一个解决方法是调用 <literal>clear()</literal> 和 <literal>evict()</literal> 来管理 <literal>Session</literal> 的缓存,但是如果你需要大批量数据操作的话,最好考虑使用存储过程。在<xref linkend=\"batch\"/>中有一些解决方案。在用户会话期间一直保持 <literal>Session</literal> 打开也意味着出现脏数据的可能性很高。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr "数据库事务声明"
+
+#. Tag: para
+#, no-c-format
+msgid "Database, 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. Certainly, a single database transaction is going to perform better than many small transactions, even for reading data."
+msgstr "数据库(或者系统)事务的声明总是必须的。在数据库事务之外,就无法和数据库通讯(这可能会让那些习惯于自动提交事务模式的开发人员感到迷惑)。永远使用清晰的事务声明,即使只读操作也是如此。进行 显式的事务声明并不总是需要的,这取决于你的事务隔离级别和数据库的能力,但不管怎么说,声明事务总归有益无害。当然,一个单独的数据库事务总是比很多琐碎的事务性能更好,即时对读数据而言也是一样。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A Hibernate application can run in non-managed (i.e., standalone, simple Web- or Swing applications) and managed J2EE environments. In a non-managed environment, Hibernate is usually responsible for its own database connection pool. The application developer has to manually set transaction boundaries (begin, commit, or rollback database transactions) themselves. A managed environment usually provides container-managed transactions (CMT), with the transaction assembly defined declaratively (in deployment descriptors of EJB session beans, for example). Programmatic transaction demarcation is then no longer necessary."
+msgstr "一个 Hibernate 应用程序可以运行在非托管环境中(也就是独立运行的应用程序,简单 Web 应用程序,或者Swing图形桌面应用程序),也可以运行在托管的 J2EE 环境中。在一个非托管环境中,Hibernate 通常自己负责管理数据库连接池。应用程序开发人员必须手工设置事务声明,换句话说,就是手工启 动,提交,或者回滚数据库事务。一个托管的环境通常提供了容器管理事务(CMT),例如事务装配通过可声明的方式定义在 EJB session beans 的部署描述符中。可编程式事务声明不再需要,即使是 <literal>Session</literal> 的同步也可以自动完成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "However, it is often desirable to keep your persistence layer portable between non-managed resource-local environments, and systems that can rely on JTA but use BMT instead of CMT. In both cases use programmatic transaction demarcation. Hibernate offers a wrapper API called <literal>Transaction</literal> that translates into the native transaction system of your deployment environment. This API is actually optional, but we strongly encourage its use unless you are in a CMT session bean."
+msgstr "让持久层具备可移植性是人们的理想,这种移植发生在非托管的本地资源环境,与依赖 JTA 但是使用 BMT 而非 CMT 的系统之间。在两种情况下你都可以使用编程式的事务管理。Hibernate 提供了一套称为 <literal>Transaction</literal> 的封装 API, 用来把你的部署环境中的本地事务管理系统转换到 Hibernate 事务上。这个 API 是可选的,但是我们强烈推荐你使用,除非你用 CMT session bean。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Ending a <literal>Session</literal> usually involves four distinct phases:"
+msgstr "通常情况下,结束 <literal>Session</literal> 包含了四个不同的阶段: "
+
+#. Tag: para
+#, no-c-format
+msgid "flush the session"
+msgstr "同步 session(flush,刷出到磁盘)"
+
+#. Tag: para
+#, no-c-format
+msgid "commit the transaction"
+msgstr "提交事务"
+
+#. Tag: para
+#, no-c-format
+msgid "close the session"
+msgstr "关闭 session"
+
+#. Tag: para
+#, no-c-format
+msgid "handle exceptions"
+msgstr "处理异常"
+
+#. Tag: para
+#, no-c-format
+msgid "We discussed Flushing the session earlier, so we will now have a closer look at transaction demarcation and exception handling in both managed and non-managed environments."
+msgstr "session 的同步(flush,刷出)前面已经讨论过了,我们现在进一步考察在托管和非托管环境下的事务声明和异常处理。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Non-managed environment"
+msgstr "非托管环境"
+
+#. Tag: para
+#, no-c-format
+msgid "If a Hibernate persistence layer runs in a non-managed environment, database connections are usually handled by simple (i.e., non-DataSource) connection pools from which Hibernate obtains connections as needed. The session/transaction handling idiom looks like this:"
+msgstr "如果 Hibernat 持久层运行在一个非托管环境中,数据库连接通常由 Hibernate 的简单(即非 DataSource)连接池机制 来处理。session/transaction 处理方式如下所示: "
+
+#. Tag: para
+#, no-c-format
+msgid "You do not have to <literal>flush()</literal> the <literal>Session</literal> explicitly: the call to <literal>commit()</literal> automatically triggers the synchronization depending on the <link linkend=\"objectstate-flushing\">FlushMode</link> for the session. A call to <literal>close()</literal> marks the end of a session. The main implication of <literal>close()</literal> is that the JDBC connection will be relinquished by the session. This Java code is portable and runs in both non-managed and JTA environments."
+msgstr "你不需要显式 <literal>flush()</literal> <literal>Session</literal> — 对 <literal>commit()</literal> 的调用会自动触发 session 的同步(取决于 session 的 <xref linkend=\"objectstate-flushing\" />)。调用 <literal>close()</literal> 标志 session 的结束。<literal>close()</literal> 方法重要的暗示是,<literal>session</literal> 释放了 JDBC 连接。这段 Java 代码在非托管环境下和 JTA 环境下都可以运行。 "
+
+#. Tag: para
+#, no-c-format
+msgid "As outlined earlier, a much more flexible solution is Hibernate's built-in \"current session\" context management:"
+msgstr "更加灵活的方案是 Hibernate 内置的 \"current session\" 上下文管理,前文已经讲过: "
+
+#. Tag: para
+#, no-c-format
+msgid "You will not see these code snippets in a regular application; fatal (system) exceptions should always be caught at the \"top\". In other words, the code that executes Hibernate 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. The current context management by Hibernate can significantly simplify this design by accessing a <literal>SessionFactory</literal>. Exception handling is discussed later in this chapter."
+msgstr "你很可能从未在一个通常的应用程序的业务代码中见过这样的代码片断:致命的(系统)异常应该总是 在应用程序“顶层”被捕获。换句话说,执行 Hibernate 调用的代码(在持久层)和处理 <literal>RuntimeException</literal> 异常的代码(通常只能清理和退出应用程序)应该在不同 的应用程序逻辑层。Hibernate 的当前上下文管理可以极大地简化这一设计,你所有的一切就是 <literal>SessionFactory</literal>。异常处理将在本章稍后进行讨论。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You should select <literal>org.hibernate.transaction.JDBCTransactionFactory</literal>, which is the default, and for the second example select <literal>\"thread\"</literal> as your <literal>hibernate.current_session_context_class</literal>."
+msgstr "请注意,你应该选择 <literal>org.hibernate.transaction.JDBCTransactionFactory</literal> (这是默认选项),对第二个例子来说,<literal>hibernate.current_session_context_class</literal>应该是 <literal>\"thread\"</literal>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Using JTA"
+msgstr "使用 JTA"
+
+#. Tag: para
+#, no-c-format
+msgid "If your persistence layer runs in an application server (for example, behind EJB session beans), every datasource connection obtained by Hibernate will automatically be part of the global JTA transaction. You can also install a standalone JTA implementation and use it without EJB. Hibernate offers two strategies for JTA integration."
+msgstr "如果你的持久层运行在一个应用服务器中(例如,在 EJB session beans 的后面),Hibernate 获取的每个数据源连接将自动成为全局 JTA 事务的一部分。你可以安装一个独立的 JTA 实现,使用它而不使用 EJB。Hibernate 提供了两种策略进行 JTA 集成。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you use bean-managed transactions (BMT), Hibernate will tell the application server to start and end a BMT transaction if you use the <literal>Transaction</literal> API. The transaction management code is identical to the non-managed environment."
+msgstr "如果你使用 bean 管理事务(BMT),可以通过使用 Hibernate 的 <literal>Transaction</literal> API 来告诉应用服务器启动和结束 BMT 事务。因此,事务管理代码和在非托管环境下是一样的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you want to use a transaction-bound <literal>Session</literal>, that is, the <literal>getCurrentSession()</literal> functionality for easy context propagation, use the JTA <literal>UserTransaction</literal> API directly:"
+msgstr "如果你希望使用与事务绑定的 <literal>Session</literal>,也就是使用 <literal>getCurrentSession()</literal> 来简化上下文管理,你将不得不直接使用 JTA  <literal>UserTransaction</literal> API。 "
+
+#. Tag: para
+#, no-c-format
+msgid "With CMT, transaction demarcation is completed in session bean deployment descriptors, not programmatically. The code is reduced to:"
+msgstr "在 CMT 方式下,事务声明是在 session bean 的部署描述符中,而不需要编程。因此,代码被简化为:"
+
+#. Tag: para
+#, no-c-format
+msgid "In a CMT/EJB, even rollback happens automatically. An unhandled <literal>RuntimeException</literal> thrown by a session bean method tells the container to set the global transaction to rollback. <emphasis>You do not need to use the Hibernate <literal>Transaction</literal> API at all with BMT or CMT, and you get automatic propagation of the \"current\" Session bound to the transaction.</emphasis>"
+msgstr "在 CMT/EJB 中甚至会自动 rollback,因为假若有未捕获的 <literal>RuntimeException</literal> 从 session bean 方法中抛出,这就会通知容器把全局事务回滚。<emphasis>这就意味着,在 BMT 或者 CMT 中,你根本就不需要使用 Hibernate <literal>Transaction</literal> API,你自动得到了绑定到事务的“当前” Session。</emphasis>"
+
+#. Tag: para
+#, no-c-format
+msgid "When configuring Hibernate's transaction factory, choose <literal>org.hibernate.transaction.JTATransactionFactory</literal> if you use JTA directly (BMT), and <literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT session bean. Remember to also set <literal>hibernate.transaction.manager_lookup_class</literal>. Ensure that your <literal>hibernate.current_session_context_class</literal> is either unset (backwards compatibility), or is set to <literal>\"jta\"</literal>."
+msgstr "注意,当你配置 Hibernate 的 transaction factory 的时候,在直接使用 JTA 的时候(BMT),你应该选择 <literal>org.hibernate.transaction.JTATransactionFactory</literal>,在 CMT session bean 中选择 <literal>org.hibernate.transaction.CMTTransactionFactory</literal>。记得也要设置 <literal>hibernate.transaction.manager_lookup_class</literal>。还有,确认你的 <literal>hibernate.current_session_context_class</literal> 未设置(为了向下兼容),或者设置为 <literal>\"jta\"</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>getCurrentSession()</literal> operation has one downside in a JTA environment. There is one caveat to the use of <literal>after_statement</literal> connection release mode, which is then used by default. 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. Most applications can easily avoid using <literal>scroll()</literal> or <literal>iterate()</literal> from the JTA or CMT code.)"
+msgstr "<literal>getCurrentSession()</literal>在 JTA 环境中有一个弊端。对 <literal>after_statement</literal> 连接释放方式有一个警告,这是被默认使用的。因为 JTA 规范的一个很愚蠢的限制,Hibernate 不可能自动清理任何未关闭的 <literal>ScrollableResults</literal> 或者<literal>Iterator</literal>,它们是由 <literal>scroll()</literal> 或 <literal>iterate()</literal> 产生的。你 <emphasis>must</emphasis> 通过在 <literal>finally</literal> 块中,显式调用 <literal>ScrollableResults.close()</literal> 或者 <literal>Hibernate.close(Iterator)</literal> 方法来释放底层数据库游标。(当然,大部分程序完全可以很容易的避免在 JTA 或 CMT 代码中出现 <literal>scroll()</literal> 或 <literal>iterate()</literal>。) "
+
+#. Tag: title
+#, no-c-format
+msgid "Exception handling"
+msgstr "异常处理"
+
+#. Tag: para
+#, no-c-format
+msgid "If the <literal>Session</literal> throws an exception, including any <literal>SQLException</literal>, immediately rollback the database transaction, call <literal>Session.close()</literal> and discard the <literal>Session</literal> instance. Certain methods of <literal>Session</literal> will <emphasis>not</emphasis> leave the session in a consistent state. No exception thrown by Hibernate can be treated as recoverable. Ensure that the <literal>Session</literal> will be closed by calling <literal>close()</literal> in a <literal>finally</literal> block."
+msgstr "如果 <literal>Session</literal> 抛出异常(包括任何 <literal>SQLException</literal>),你应该立即回滚数据库事务,调用 <literal>Session.close()</literal> ,丢弃该  <literal>Session</literal> 实例。<literal>Session</literal> 的某些方法可能会导致 session 处于不一致的状态。所有由 Hibernate 抛出的异常都视为不可以恢复的。确保在  <literal>finally</literal> 代码块中调用 <literal>close()</literal> 方法,以关闭掉  <literal>Session</literal>。"
+
+#. Tag: para
+#, 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. It was not in older versions of Hibernate. In our opinion, we should not force the application developer to catch an unrecoverable exception at a low layer. In most systems, unchecked and fatal exceptions are handled in one of the first frames of the method call stack (i.e., in higher layers) and either an error message is presented to the application user or some other appropriate action is taken. Note that Hibernate might also throw other unchecked exceptions that are not a <literal>HibernateException</literal>. These are not recoverable and appropriate action should be taken."
+msgstr "<literal>HibernateException</literal> 是一个非检查期异常(这不同于 Hibernate 老的版本),它封装了 Hibernate 持久层可能出现的大多数错误。我们的观点是,不应该强迫应用程序开发人员 在底层捕获无法恢复的异常。在大多数软件系统中,非检查期异常和致命异常都是在相应方法调用 的堆栈的顶层被处理的(也就是说,在软件上面的逻辑层),并且提供一个错误信息给应用软件的用户 (或者采取其他某些相应的操作)。请注意,Hibernate 也有可能抛出其他并不属于 <literal>HibernateException</literal> 的非检查期异常。这些异常同样也是无法恢复的,应该 采取某些相应的操作去处理。"
+
+#. Tag: para
+#, 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 "在和数据库进行交互时,Hibernate 把捕获的 <literal>SQLException</literal> 封装为 Hibernate 的  <literal>JDBCException</literal>。事实上,Hibernate 尝试把异常转换为更有实际含义的 <literal>JDBCException</literal> 异常的子类。底层的 <literal>SQLException</literal> 可以通过 <literal>JDBCException.getCause()</literal> 来得到。Hibernate 通过使用关联到  <literal>SessionFactory</literal> 上的 <literal>SQLExceptionConverter</literal> 来把 <literal>SQLException</literal> 转换为一个对应的 <literal>JDBCException</literal> 异常的子类。默认情况下,<literal>SQLExceptionConverter</literal> 可以通过配置 dialect 选项指定;此外,也可以使用用户自定义的实现类(参考 javadocs <literal>SQLExceptionConverterFactory</literal> 类来了解详情)。标准的 <literal>JDBCException</literal> 子类型是: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>JDBCConnectionException</literal>: indicates an error with the underlying JDBC communication."
+msgstr "<literal>JDBCConnectionException</literal>:指明底层的 JDBC 通讯出现错误。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>SQLGrammarException</literal>: indicates a grammar or syntax problem with the issued SQL."
+msgstr "<literal>SQLGrammarException</literal>:指明发送的 SQL 语句的语法或者格式错误。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ConstraintViolationException</literal>: indicates some form of integrity constraint violation."
+msgstr "<literal>ConstraintViolationException</literal>:指明某种类型的约束违例错误"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockAcquisitionException</literal>: indicates an error acquiring a lock level necessary to perform the requested operation."
+msgstr "<literal>LockAcquisitionException</literal>:指明了在执行请求操作时,获取所需的锁级别时出现的错误。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>GenericJDBCException</literal>: a generic exception which did not fall into any of the other categories."
+msgstr "<literal>GenericJDBCException</literal>:不属于任何其他种类的原生异常。"
+
+#. Tag: title
+#, no-c-format
+msgid "Transaction timeout"
+msgstr "事务超时"
+
+#. Tag: para
+#, no-c-format
+msgid "An important feature provided by a managed environment like EJB, that is never provided for non-managed code, is transaction timeout. Transaction timeouts ensure that no misbehaving transaction can indefinitely tie up resources while returning no response to the user. Outside a managed (JTA) environment, Hibernate cannot fully provide this functionality. However, Hibernate can at least control data access operations, ensuring that database level deadlocks and queries with huge result sets are limited by a defined timeout. In a managed environment, Hibernate can delegate transaction timeout to JTA. This functionality is abstracted by the Hibernate <literal>Transaction</literal> object."
+msgstr "EJB 这样的托管环境有一项极为重要的特性,而它从未在非托管环境中提供过,那就是事务超时。在出现错误的事务行为的时候,超时可以确保不会无限挂起资源、对用户没有交代。在托管(JTA)环境之外,Hibernate 无法完全提供这一功能。但是,Hiberante 至少可以控制数据访问,确保数据库级别的死锁,和返回巨大结果集的查询被限定在一个规定的时间内。在托管环境中,Hibernate 会把事务超时转交给 JTA。这一功能通过 Hibernate <literal>Transaction</literal> 对象进行抽象。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>setTimeout()</literal> cannot be called in a CMT bean, where transaction timeouts must be defined declaratively."
+msgstr "注意 <literal>setTimeout()</literal> 不应该在 CMT bean 中调用,此时事务超时值应该是被声明式定义的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr "乐观并发控制(Optimistic concurrency control)"
+
+#. Tag: para
+#, 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 three possible approaches to writing application code that uses optimistic concurrency. The use cases we discuss are in the context of long conversations, but version checking also has the benefit of preventing lost updates in single database transactions."
+msgstr "唯一能够同时保持高并发和高可伸缩性的方法就是使用带版本化的乐观并发控制。版本检查使用版本号、 或者时间戳来检测更新冲突(并且防止更新丢失)。Hibernate 为使用乐观并发控制的代码提供了三种可 能的方法,应用程序在编写这些代码时,可以采用它们。我们已经在前面应用程序对话那部分展示了 乐观并发控制的应用场景,此外,在单个数据库事务范围内,版本检查也提供了防止更新丢失的好处。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Application version checking"
+msgstr "应用程序级别的版本检查(Application version checking)"
+
+#. Tag: para
+#, no-c-format
+msgid "In an implementation without much help from Hibernate, each interaction with the database occurs in a new <literal>Session</literal> and the developer is responsible for reloading all persistent instances from the database before manipulating them. The application is forced to carry out its own version checking to ensure conversation transaction isolation. This approach is the least efficient in terms of database access. It is the approach most similar to entity EJBs."
+msgstr "未能充分利用 Hibernate 功能的实现代码中,每次和数据库交互都需要一个新的  <literal>Session</literal>,而且开发人员必须在显示数据之前从数据库中重新载入所有的持久化对象实例。这种方式迫使应用程序自己实现版本检查来确保对话事务的隔离,从数据访问的角度来说是最低效的。这种使用方式和 entity EJB 最相似。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>version</literal> property is mapped using <literal>&lt;version&gt;</literal>, and Hibernate will automatically increment it during flush if the entity is dirty."
+msgstr "<literal>version</literal> 属性使用 <literal>&lt;version&gt;</literal> 来映射,如果对象是脏数据,在同步的时候,Hibernate 会自动增加版本号。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you are operating in a low-data-concurrency environment, and do not require version checking, you can use this approach and skip the version check. In this case, <emphasis>last commit wins</emphasis> is the default strategy for long conversations. Be aware 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 "当然,如果你的应用是在一个低数据并发环境下,并不需要版本检查的话,你照样可以使用这种方式,只不过跳过版本检查就是了。在这种情况下,<emphasis>最晚提交生效</emphasis> (<emphasis>last commit wins</emphasis>)就是你的长对话的默认处理策略。请记住这种策略可能会让应用软件的用户感到困惑,因为他们有可能会碰上更新丢失掉却没有出错信息,或者需要合并更改冲突的情况。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Manual version checking is only feasible in 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 an extended <literal>Session</literal> or detached instances as the design paradigm."
+msgstr "很明显,手工进行版本检查只适合于某些软件规模非常小的应用场景,对于大多数软件应用场景来说并不现实。通常情况下,不仅是单个对象实例需要进行版本检查,整个被修改过的关联对象图也都需要进行版本检查。作为标准设计范例,Hibernate 使用扩展周期的 <literal>Session</literal> 的方式,或者脱管对象实例的方式来提供自动版本检查。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Extended session and automatic versioning"
+msgstr "扩展周期的 session 和自动版本化"
+
+#. Tag: para
+#, no-c-format
+msgid "A single <literal>Session</literal> instance and its persistent instances that are used for the whole conversation are known as <emphasis>session-per-conversation</emphasis>. Hibernate checks instance versions at flush time, throwing an exception if concurrent modification is detected. It is up to the developer to catch and handle this exception. Common options are the opportunity for the user to merge changes or to restart the business conversation with non-stale data."
+msgstr "单个 <literal>Session</literal> 实例和它所关联的所有持久化对象实例都被用于整个对话,这被称为 <emphasis>session-per-conversation</emphasis>。Hibernate 在同步的时候进行对象实例的版本检查,如果检测到并发修改则抛出异常。由开发人员来决定是否需要捕获和处理这个异常(通常的抉择是给用户 提供一个合并更改,或者在无脏数据情况下重新进行业务对话的机会)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>Session</literal> is disconnected from any underlying JDBC connection when waiting for user interaction. This approach is the most efficient in terms of database access. The application does not version check or reattach detached instances, nor does it have to reload instances in every database transaction."
+msgstr "在等待用户交互的时候, <literal>Session</literal> 断开底层的 JDBC 连接。这种方式以数据库访问的角度来说是最高效的方式。应用程序不需要关心版本检查或脱管对象实例的重新关联,在每个数据库事务中,应用程序也不需要载入读取对象实例。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>foo</literal> object knows which <literal>Session</literal> it was loaded in. Beginning a new database transaction on an old session obtains a new connection and resumes the session. Committing a database transaction disconnects a session from the JDBC connection and returns the connection to the pool. After reconnection, to force a version check on data you are not updating, you can call <literal>Session.lock()</literal> with <literal>LockMode.READ</literal> on any objects that might have been updated by another transaction. You do not need to lock any data that you <emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode.MANUAL</literal> on an extended <literal>Session</literal>, so that only the last database transaction cycle is allowed to actually persist all modifications made in this conversation. Only this last database transaction will include the <literal>flush()</literal> operation, and then <literal>close()</literal> the se!
 ssion to end the conversation."
+msgstr "<literal>foo</literal> 对象知道它是在哪个 <literal>Session</literal> 中被装入的。在一个旧 session 中开启一个新的数据库事务,会导致 session 获取一个新的连接,并恢复 session 的功能。将数据库事务提交,使得 session 从 JDBC 连接断开,并将此连接交还给连接池。在重新连接之后,要强制对你没有更新的数据进行一次版本检查,你可以对所有可能被其他事务修改过的对象,使用参数 <literal>LockMode.READ</literal> 来调用 <literal>Session.lock()</literal>。你不用 lock 任何你<emphasis>正在</emphasis>更新的数据。一般你会在扩展的 <literal>Session</literal> 上设置 <literal>FlushMode.NEVER</literal>,因此只有最后一个数据库事务循环才会真正的把整个对话中发生的修改发送到数据库。因此,只有这最后一次数据库事务才会包含 <literal>flush()</literal> 操作,然后在整个对话结束后ï¼!
 Œè¿˜è¦ <literal>close()</literal> 这个 session。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This pattern is problematic if the <literal>Session</literal> is too big to be stored during user think time (for example, an <literal>HttpSession</literal> should be kept as small as possible). As the <literal>Session</literal> is also the first-level cache and contains all loaded objects, we can probably use this strategy only for a few request/response cycles. Use a <literal>Session</literal> only for a single conversation as it will soon have stale data."
+msgstr "如果在用户思考的过程中,<literal>Session</literal> 因为太大了而不能保存,那么这种模式是有问题的。举例来说,一个 <literal>HttpSession</literal> 应该尽可能的小。由于  <literal>Session</literal> 是一级缓存,并且保持了所有被载入过的对象,因此我们只应该在那些少量的 request/response 情况下使用这种策略。你应该只把一个 <literal>Session</literal> 用于单个对话,因为它很快就会出现脏数据。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "Earlier versions of Hibernate required explicit disconnection and reconnection of a <literal>Session</literal>. These methods are deprecated, as beginning and ending a transaction has the same effect."
+msgstr "注意,早期的 Hibernate 版本需要明确的对 <literal>Session</literal> 进行 disconnect 和 reconnect。这些方法现在已经过时了,打开事务和关闭事务会起到同样的效果。"
+
+#. Tag: para
+#, no-c-format
+msgid "Keep the disconnected <literal>Session</literal> close to the persistence layer. Use an EJB stateful session bean to hold the <literal>Session</literal> in a three-tier environment. Do not transfer it to the web layer, or even serialize it to a separate tier, to store it in the <literal>HttpSession</literal>."
+msgstr "此外,也请注意,你应该让与数据库连接断开的 <literal>Session</literal> 对持久层保持关闭状态。换句话说,在三层环境中,使用有状态的 EJB session bean 来持 有<literal>Session</literal>, 而不要把它传递到 web 层(甚至把它序列化到一个单独的层),保存在 <literal>HttpSession</literal> 中。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The extended session pattern, or <emphasis>session-per-conversation</emphasis>, is more difficult to implement with automatic current session context management. You need to supply your own implementation of the <literal>CurrentSessionContext</literal> for this. See the Hibernate Wiki for examples."
+msgstr "扩展 session 模式,或者被称为<emphasis>每次对话一个session(session-per-conversation)</emphasis>,自动管理当前 session 上下文联用的时候会更困难。你需要提供你自己的 <literal>CurrentSessionContext</literal> 实现。请参阅 Hibernate Wiki 以获得示例。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr "脱管对象(deatched object)和自动版本化"
+
+#. Tag: para
+#, no-c-format
+msgid "Each interaction with the persistent store occurs in a new <literal>Session</literal>. 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 <literal>Session</literal> and then reattaches them using <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</literal>."
+msgstr "这种方式下,与持久化存储的每次交互都发生在一个新的 <literal>Session</literal> 中。然而,同一持久化对象实例可以在多次与数据库的交互中重用。应用程序操纵脱管对象实例 的状态,这个脱管对象实例最初是在另一个 <literal>Session</literal> 中载入的,然后调用 <literal>Session.update()</literal>,<literal>Session.saveOrUpdate()</literal>,或者  <literal>Session.merge()</literal> 来重新关联该对象实例。"
+
+#. Tag: para
+#, no-c-format
+msgid "Again, Hibernate will check instance versions during flush, throwing an exception if conflicting updates occurred."
+msgstr "Hibernate 会再一次在同步的时候检查对象实例的版本,如果发生更新冲突,就抛出异常。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can also call <literal>lock()</literal> instead of <literal>update()</literal>, and use <literal>LockMode.READ</literal> (performing a version check and bypassing all caches) if you are sure that the object has not been modified."
+msgstr "如果你确信对象没有被修改过,你也可以调用 <literal>lock()</literal> 来设置  <literal>LockMode.READ</literal>(绕过所有的缓存,执行版本检查),从而取代  <literal>update()</literal> 操作。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Customizing automatic versioning"
+msgstr "定制自动版本化行为"
+
+#. Tag: para
+#, no-c-format
+msgid "You can disable Hibernate's automatic version increment for particular properties and collections by setting the <literal>optimistic-lock</literal> mapping attribute to <literal>false</literal>. Hibernate will then no longer increment versions if the property is dirty."
+msgstr "对于特定的属性和集合,通过为它们设置映射属性 <literal>optimistic-lock</literal> 的值为 <literal>false</literal>,来禁止 Hibernate 的版本自动增加。这样的话,如果该属性脏数据,Hibernate 将不再增加版本号。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Legacy database schemas are often static and cannot be modified. Or, other applications might access the same database and will not know how to handle version numbers or even timestamps. In both cases, versioning cannot rely on a particular column in a table. To force a version check with a comparison of the state of all fields in a row but without a version or timestamp property mapping, turn on <literal>optimistic-lock=\"all\"</literal> in the <literal>&lt;class&gt;</literal> mapping. This conceptually only works if Hibernate can compare the old and the new state (i.e., if you use a single long <literal>Session</literal> and not session-per-request-with-detached-objects)."
+msgstr "遗留系统的数据库 Schema 通常是静态的,不可修改的。或者,其他应用程序也可能访问同一数据库,根本无法得知如何处理版本号,甚至时间戳。在以上的所有场景中,实现版本化不能依靠数据库表的某个特定列。在 <literal>&lt;class&gt;</literal> 的映射中设置  <literal>optimistic-lock=\"all\"</literal> 可以在没有版本或者时间戳属性映射的情况下实现版本检查,此时 Hibernate 将比较一行记录的每个字段的状态。请注意,只有当 Hibernate 能够比较新旧状态的情况下,这种方式才能生效,也就是说,你必须使用单个长生命周期 <literal>Session</literal> 模式,而不能使用 session-per-request-with-detached-objects 模式。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Concurrent modification can be permitted in instances where the changes that have been made do not overlap. If you set <literal>optimistic-lock=\"dirty\"</literal> when mapping the <literal>&lt;class&gt;</literal>, Hibernate will only compare dirty fields during flush."
+msgstr "有些情况下,只要更改不发生交错,并发修改也是允许的。当你在 <literal>&lt;class&gt;</literal> 的映射中设置 <literal>optimistic-lock=\"dirty\"</literal>,Hibernate 在同步的时候将只比较有脏数据的字段。 "
+
+#. Tag: para
+#, no-c-format
+msgid "In both cases, with dedicated version/timestamp columns or with a full/dirty field comparison, Hibernate uses a single <literal>UPDATE</literal> statement, with an appropriate <literal>WHERE</literal> clause, per entity to execute the version check and update the information. If you use transitive persistence to cascade reattachment to associated entities, Hibernate may execute unnecessary updates. This is usually not a problem, but <emphasis>on update</emphasis> triggers in the database might be executed even when no changes have been made to detached instances. You can customize this behavior by setting <literal>select-before-update=\"true\"</literal> in the <literal>&lt;class&gt;</literal> mapping, forcing Hibernate to <literal>SELECT</literal> the instance to ensure that changes did occur before updating the row."
+msgstr "在以上所有场景中,不管是专门设置一个版本/时间戳列,还是进行全部字段/脏数据字段比较,Hibernate 都会针对每个实体对象发送一条 <literal>UPDATE</literal>(带有相应的 <literal>WHERE</literal> 语句 )的 SQL 语句来执行版本检查和数据更新。如果你对关联实体 设置级联关系使用传播性持久化(transitive persistence),那么 Hibernate 可能会执行不必 要的update语句。这通常不是个问题,但是数据库里面对 <emphasis>on update</emphasis> 点火 的触发器可能在脱管对象没有任何更改的情况下被触发。因此,你可以在 <literal>&lt;class&gt;</literal> 的映射中,通过设置<literal>select-before-update=\"true\"</literal> 来定制这一行为,强制 Hibernate  <literal>SELECT</literal> 这个对象实例,从而保证,在更新记录之前,对象的确是被修改过。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Pessimistic locking"
+msgstr "悲观锁定(Pessimistic Locking) "
+
+#. Tag: para
+#, no-c-format
+msgid "It is not intended that users spend much time worrying about locking strategies. It is usually enough to specify an isolation level for the JDBC connections and then simply let the database do all the work. However, advanced users may wish to obtain exclusive pessimistic locks or re-obtain locks at the start of a new transaction."
+msgstr "用户其实并不需要花很多精力去担心锁定策略的问题。通常情况下,只要为 JDBC 连接指定一下隔离级别,然后让数据库去搞定一切就够了。然而,高级用户有时候希望进行一个排它的悲观锁定,或者在一个新的事务启动的时候,重新进行锁定。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will always use the locking mechanism of the database; it never lock objects in memory."
+msgstr "Hibernate 总是使用数据库的锁定机制,从不在内存中锁定对象。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>LockMode</literal> class defines the different lock levels that can be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr "类 <literal>LockMode</literal> 定义了 Hibernate 所需的不同的锁定级别。一个锁定可以通过以下的机制来设置:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate updates or inserts a row."
+msgstr "当 Hibernate 更新或者插入一行记录的时候,锁定级别自动设置为 <literal>LockMode.WRITE</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.UPGRADE</literal> can be acquired upon explicit user request using <literal>SELECT ... FOR UPDATE</literal> on databases which support that syntax."
+msgstr "当用户显式的使用数据库支持的 SQL 格式 <literal>SELECT ... FOR UPDATE</literal> 发送 SQL 的时候,锁定级别设置为 <literal>LockMode.UPGRADE</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.UPGRADE_NOWAIT</literal> can be acquired upon explicit user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under Oracle."
+msgstr "当用户显式的使用 Oracle 数据库的 SQL 语句 <literal>SELECT ... FOR UPDATE NOWAIT</literal> 的时候,锁定级别设置 <literal>LockMode.UPGRADE_NOWAIT</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.READ</literal> is acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. It can be re-acquired by explicit user request."
+msgstr "当 Hibernate 在“可重复读”或者是“序列化”数据库隔离级别下读取数据的时候,锁定模式自动设置为 <literal>LockMode.READ</literal>。这种模式也可以通过用户显式指定进行设置。 "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>LockMode.NONE</literal> represents the absence of a lock. All objects switch to this lock mode at the end of a <literal>Transaction</literal>. Objects associated with the session via a call to <literal>update()</literal> or <literal>saveOrUpdate()</literal> also start out in this lock mode."
+msgstr "<literal>LockMode.NONE</literal> 代表无需锁定。在 <literal>Transaction</literal> 结束时, 所有的对象都切换到该模式上来。与 session 相关联的对象通过调用 <literal>update()</literal> 或者 <literal>saveOrUpdate()</literal> 脱离该模式。"
+
+#. Tag: para
+#, no-c-format
+msgid "The \"explicit user request\" is expressed in one of the following ways:"
+msgstr "\"显式的用户指定\"可以通过以下几种方式之一来表示:"
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</literal>."
+msgstr "调用 <literal>Session.load()</literal> 的时候指定<literal>锁定模式(LockMode)</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Session.lock()</literal>."
+msgstr "调用 <literal>Session.lock()</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "A call to <literal>Query.setLockMode()</literal>."
+msgstr "调用 <literal>Query.setLockMode()</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "If <literal>Session.load()</literal> is called with <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was not yet loaded by the session, the object is loaded using <literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is called for an object that is already loaded with a less restrictive lock than the one requested, Hibernate calls <literal>lock()</literal> for that object."
+msgstr "如果在 <literal>UPGRADE</literal> 或者 <literal>UPGRADE_NOWAIT</literal> 锁定模式下调用 <literal>Session.load()</literal>,并且要读取的对象尚未被 session 载入过,那么对象通过 <literal>SELECT ... FOR UPDATE</literal> 这样的 SQL 语句被载入。如果为一个对象调用  <literal>load()</literal> 方法时,该对象已经在另一个较少限制的锁定模式下被载入了,那么  Hibernate 就对该对象调用 <literal>lock()</literal> 方法。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Session.lock()</literal> performs a version number check if the specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>. In the case of <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR UPDATE</literal> is used."
+msgstr "如果指定的锁定模式是 <literal>READ</literal>,<literal>UPGRADE</literal> 或  <literal>UPGRADE_NOWAIT</literal>,那么 <literal>Session.lock()</literal> 就执行版本号检查。(在 <literal>UPGRADE</literal> 或者 <literal>UPGRADE_NOWAIT</literal> 锁定模式下,执行 <literal>SELECT ... FOR UPDATE</literal>这样的SQL语句。)"
+
+#. Tag: para
+#, no-c-format
+msgid "If the requested lock mode is not supported by the database, Hibernate uses an appropriate alternate mode instead of throwing an exception. This ensures that applications are portable."
+msgstr "如果数据库不支持用户设置的锁定模式,Hibernate 将使用适当的替代模式(而不是扔出异常)。这一点可以确保应用程序的可移植性。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Connection release modes"
+msgstr "连接释放模式(Connection Release Modes) "
+
+#. Tag: para
+#, no-c-format
+msgid "One of the legacies of Hibernate 2.x JDBC connection management meant that a <literal>Session</literal> would obtain a connection when it was first required and then maintain that connection until the session was closed. Hibernate 3.x introduced the notion of connection release modes that would instruct a session how to handle its JDBC connections. The following discussion is pertinent only to connections provided through a configured <literal>ConnectionProvider</literal>. User-supplied connections are outside the breadth of this discussion. The different release modes are identified by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</literal>:"
+msgstr "Hibernate 关于 JDBC 连接管理的旧(2.x)行为是,<literal>Session</literal> 在第一次需要的时候获取一个连接,在 session 关闭之前一直会持有这个连接。Hibernate 引入了连接释放的概念,来告诉 session 如何处理它的 JDBC 连接。注意,下面的讨论只适用于采用配置 <literal>ConnectionProvider</literal> 来提供连接的情况,用户自己提供的连接与这里的讨论无关。通过 <literal>org.hibernate.ConnectionReleaseMode</literal> 的不同枚举值来使用不用的释放模式:"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>ON_CLOSE</literal>: is the legacy behavior described above. The Hibernate session obtains a connection when it first needs to perform some JDBC access and maintains that connection until the session is closed."
+msgstr "<literal>ON_CLOSE</literal>:基本上就是上面提到的老式行为。Hibernate session 在第一次需要进行 JDBC 操作的时候获取连接,然后持有它,直到 session 关闭。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>AFTER_TRANSACTION</literal>: releases connections after a <literal>org.hibernate.Transaction</literal> has been completed."
+msgstr "<literal>AFTER_TRANSACTION</literal>:在 <literal>org.hibernate.Transaction</literal> 结束后释放连接。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release): releases connections after every statement execution. This aggressive releasing is skipped if that statement leaves open resources associated with the given session. Currently the only situation where this occurs is through the use of <literal>org.hibernate.ScrollableResults</literal>."
+msgstr "<literal>AFTER_STATEMENT</literal>(也被称做积极释放):在每一条语句被执行后就释放连接。但假若语句留下了与 session 相关的资源,那就不会被释放。目前唯一的这种情形就是使用 <literal>org.hibernate.ScrollableResults</literal>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The configuration parameter <literal>hibernate.connection.release_mode</literal> is used to specify which release mode to use. The possible values are as follows:"
+msgstr "<literal>hibernate.connection.release_mode</literal> 配置参数用来指定使用哪一种释放模式。可能的值有: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>auto</literal> (the default): this choice delegates to the release mode returned by the <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, this returns ConnectionReleaseMode.AFTER_TRANSACTION. Do not change this default behavior as failures due to the value of this setting tend to indicate bugs and/or invalid assumptions in user code."
+msgstr "<literal>auto</literal>(默认):这一选择把释放模式委派给 <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> 方法。对 JTATransactionFactory 来说,它会返回 ConnectionReleaseMode.AFTER_STATEMENT;对 JDBCTransactionFactory 来说,则是ConnectionReleaseMode.AFTER_TRANSACTION。很少需要修改这一默认行为,因为假若设置不当,就会带来 bug,或者给用户代码带来误导。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>on_close</literal>: uses ConnectionReleaseMode.ON_CLOSE. This setting is left for backwards compatibility, but its use is discouraged."
+msgstr "<literal>on_close</literal>:使用 ConnectionReleaseMode.ON_CLOSE。这种方式是为了向下兼容的,但是已经完全不被鼓励使用了。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>after_transaction</literal>: uses ConnectionReleaseMode.AFTER_TRANSACTION. This setting should not be used in JTA environments. Also note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is considered to be in auto-commit mode, connections will be released as if the release mode were AFTER_STATEMENT."
+msgstr "<literal>after_transaction</literal>:使用 ConnectionReleaseMode.AFTER_TRANSACTION。这一设置不应该在 JTA 环境下使用。也要注意,使用 ConnectionReleaseMode.AFTER_TRANSACTION 的时候,假若session 处于 auto-commit 状态,连接会像 AFTER_STATEMENT 那样被释放。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>after_statement</literal>: uses ConnectionReleaseMode.AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</literal> is consulted to see if it supports this setting (<literal>supportsAggressiveRelease()</literal>). If not, the release mode is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only safe in environments where we can either re-acquire the same underlying JDBC connection each time you make a call into <literal>ConnectionProvider.getConnection()</literal> or in auto-commit environments where it does not matter if we re-establish the same connection."
+msgstr "<literal>after_statement</literal>:使用 ConnectionReleaseMode.AFTER_STATEMENT。除此之外,会查询配置的 <literal>ConnectionProvider</literal>,是否它支持这一设置(<literal>supportsAggressiveRelease()</literal>)。假若不支持,释放模式会被设置为  ConnectionReleaseMode.AFTER_TRANSACTION。只有在你每次调用  <literal>ConnectionProvider.getConnection()</literal> 获取底层 JDBC 连接的时候,都可以确信获得同一个连接的时候,这一设置才是安全的;或者在 auto-commit 环境中,你可以不管是否每次都获得同一个连接的时候,这才是安全的。"
+
+#~ msgid "foo==bar"
+#~ msgstr "foo==bar"
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[// Non-managed environment idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    factory.getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    factory.getCurrentSession().getTransaction().commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    factory.getCurrentSession().getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[// BMT idiom\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "Transaction tx = null;\n"
+#~ "try {\n"
+#~ "    tx = sess.beginTransaction();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    if (tx != null) tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[// BMT idiom with getCurrentSession()\n"
+#~ "try {\n"
+#~ "    UserTransaction tx = (UserTransaction)new InitialContext()\n"
+#~ "                            .lookup(\"java:comp/UserTransaction\");\n"
+#~ "\n"
+#~ "    tx.begin();\n"
+#~ "\n"
+#~ "    // Do some work on Session bound to transaction\n"
+#~ "    factory.getCurrentSession().load(...);\n"
+#~ "    factory.getCurrentSession().persist(...);\n"
+#~ "\n"
+#~ "    tx.commit();\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    tx.rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ...\n"
+#~ "]]>"
+#~ msgstr ""
+#~ "<![CDATA[// CMT idiom\n"
+#~ " Session sess = factory.getCurrentSession();\n"
+#~ "\n"
+#~ " // do some work\n"
+#~ " ...\n"
+#~ "]]>"
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "Session sess = factory.openSession();\n"
+#~ "try {\n"
+#~ "    //set transaction timeout to 3 seconds\n"
+#~ "    sess.getTransaction().setTimeout(3);\n"
+#~ "    sess.getTransaction().begin();\n"
+#~ "\n"
+#~ "    // do some work\n"
+#~ "    ...\n"
+#~ "\n"
+#~ "    sess.getTransaction().commit()\n"
+#~ "}\n"
+#~ "catch (RuntimeException e) {\n"
+#~ "    sess.getTransaction().rollback();\n"
+#~ "    throw e; // or display error message\n"
+#~ "}\n"
+#~ "finally {\n"
+#~ "    sess.close();\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+#~ "();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "\n"
+#~ "int oldVersion = foo.getVersion();\n"
+#~ "session.load( foo, foo.getKey() ); // load the current state\n"
+#~ "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+#~ "();\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation]]>"
+#~ msgstr ""
+#~ "<![CDATA[// foo is an instance loaded earlier by the old session\n"
+#~ "Transaction t = session.beginTransaction(); // Obtain a new JDBC "
+#~ "connection, start transaction\n"
+#~ "\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "\n"
+#~ "session.flush();    // Only for last transaction in conversation\n"
+#~ "t.commit();         // Also return JDBC connection\n"
+#~ "session.close();    // Only for last transaction in conversation]]>"
+#~ msgid ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[// foo is an instance loaded by a previous Session\n"
+#~ "foo.setProperty(\"bar\");\n"
+#~ "session = factory.openSession();\n"
+#~ "Transaction t = session.beginTransaction();\n"
+#~ "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been "
+#~ "loaded already\n"
+#~ "t.commit();\n"
+#~ "session.close();]]>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/tutorial.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/tutorial.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/tutorial.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,1965 @@
+# translation of tutorial.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007, 2009.
+# translation of Collection_Mapping.po to
+msgid ""
+msgstr ""
+"Project-Id-Version: tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-11T05:38:16\n"
+"PO-Revision-Date: 2010-03-16 09:56+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Tutorial"
+msgstr "教程"
+
+#. Tag: para
+#, no-c-format
+msgid "Intended for new users, this chapter provides an step-by-step introduction to Hibernate, starting with a simple application using an in-memory database. The tutorial is based on an earlier tutorial developed by Michael Gloegl. All code is contained in the <filename>tutorials/web</filename> directory of the project source."
+msgstr "面向新用户,从一个简单的使用内存数据库的例子开始,本章提供对 Hibernate 的逐步介绍。本教程基于 Michael Gloegl 早期编写的手册。所有代码都包含在 <filename>tutorials/web</filename> 目录下。"
+
+#. Tag: para
+#, no-c-format
+msgid "This tutorial expects the user have knowledge of both Java and SQL. If you have a limited knowledge of JAVA or SQL, it is advised that you start with a good introduction to that technology prior to attempting to learn Hibernate."
+msgstr "本教程期望用户具备 Java 和 SQL 知识。如果你这方面的知识有限,我们建议你在学习 Hibernate 之前先好好了解这些技术。"
+
+#. Tag: para
+#, no-c-format
+msgid "The distribution contains another example application under the <filename>tutorial/eg</filename> project source directory."
+msgstr "本版本在源代码目录 <filename>tutorial/eg</filename> 下还包含另外一个例程。"
+
+#. Tag: title
+#, no-c-format
+msgid "Part 1 - The first Hibernate Application"
+msgstr "第一部分 - 第一个 Hibernate 应用程序"
+
+#. Tag: para
+#, no-c-format
+msgid "For this example, we will set up a small database application that can store events we want to attend and information about the host(s) of these events."
+msgstr "在这个例子里,我们将设立一个小应用程序可以保存我们希望参加的活动(events)和这些活动主办方的相关信息。(译者注:在本教程的后面部分,我们将直接使用 event 而不是它的中文翻译“活动”,以免混淆。)"
+
+#. Tag: para
+#, no-c-format
+msgid "Although you can use whatever database you feel comfortable using, we will use <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink> (an in-memory, Java database) to avoid describing installation/setup of any particular database servers."
+msgstr "虽然你可以使用任何数据库,我们还是用 <ulink url=\"http://hsqldb.org/\">HSQLDB</ulink>(一个用 Java 编写的内存数据库)来避免花费篇章对数据库服务器的安装/配置进行解释。"
+
+#. Tag: title
+#, no-c-format
+msgid "Setup"
+msgstr "设置"
+
+#. Tag: para
+#, no-c-format
+msgid "The first thing we need to do is to set up the development environment. We will be using the \"standard layout\" advocated by alot of build tools such as <ulink url=\"http://maven.org\">Maven</ulink>. Maven, in particular, has a good resource describing this <ulink url=\"http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html\">layout</ulink>. As this tutorial is to be a web application, we will be creating and making use of <filename>src/main/java</filename>, <filename>src/main/resources</filename> and <filename>src/main/webapp</filename> directories."
+msgstr "我们需要做的第一件事情是设置开发环境。我们将使用许多构建工具如 <ulink url=\"http://maven.org\">Maven</ulink> 所鼓吹的“标准格式”。特别是 Maven,它的资源对这个<ulink url=\"http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html\">格式(layout)</ulink>有着很好的描述。因为本教程使用的是 web 应用程序,我么将创建和使用 <filename>src/main/java</filename>、<filename>src/main/resources</filename> 和 <filename>src/main/webapp</filename> 目录。"
+
+#. Tag: para
+#, no-c-format
+msgid "We will be using Maven in this tutorial, taking advantage of its transitive dependency management capabilities as well as the ability of many IDEs to automatically set up a project for us based on the maven descriptor."
+msgstr "在本教程里我们将使用 Maven,利用其 transitive dependency 管理以及根据 Maven 描述符用 IDE 自动设置项目的能力。"
+
+#. Tag: para
+#, no-c-format
+msgid "It is not a requirement to use Maven. If you wish to use something else to build this tutoial (such as Ant), the layout will remain the same. The only change is that you will need to manually account for all the needed dependencies. If you use something like <ulink url=\"http://ant.apache.org/ivy/\">Ivy</ulink> providing transitive dependency management you would still use the dependencies mentioned below. Otherwise, you'd need to grab <emphasis>all</emphasis> dependencies, both explicit and transitive, and add them to the project's classpath. If working from the Hibernate distribution bundle, this would mean <filename>hibernate3.jar</filename>, all artifacts in the <filename>lib/required</filename> directory and all files from either the <filename>lib/bytecode/cglib</filename> or <filename>lib/bytecode/javassist</filename> directory; additionally you will need both the servlet-api jar and one of the slf4j logging backends."
+msgstr "Maven 并不要求这样。如果你希望使用其他技术来构建这个教程(如 Ant),格式将保持不变。唯一的改变是你将需要手工管理所有的依赖关系。如果你使用 <ulink url=\"http://ant.apache.org/ivy/\">Ivy</ulink> 来提供 transitive dependency 管理,你将仍然下面提到的依赖关系。否则,你将需要找到所有的依赖关系(显性的和过渡的)并把它们添加到项目的 classpath 里。如果使用 Hibernate 捆绑版本,这意味着 <filename>hibernate3.jar</filename>、<filename>lib/required</filename> 目录下的所有 artifact 和 <filename>lib/bytecode/cglib</filename> 或 <filename>lib/bytecode/javassist</filename> 下的所有文件,此外你将需要 servlet-api jar 和一个 slf4j 日志后台文件。  "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>pom.xml</filename> in the project root directory."
+msgstr "把这个文件保存为项目根目录下的 <filename>pom.xml</filename>。"
+
+#. Tag: title
+#, no-c-format
+msgid "The first class"
+msgstr "第一个 class"
+
+#. Tag: para
+#, no-c-format
+msgid "Next, we create a class that represents the event we want to store in the database; it is a simple JavaBean class with some properties:"
+msgstr "接下来我们创建一个类,用来代表那些我们希望储存在数据库里的 event,这是一个具有一些属性的简单 JavaBean 类:"
+
+#. Tag: para
+#, no-c-format
+msgid "This class uses standard JavaBean naming conventions for property getter and setter methods, as well as private visibility for the fields. Although this is the recommended design, it is not required. Hibernate can also access fields directly, the benefit of accessor methods is robustness for refactoring."
+msgstr "你可以看到这个类对属性的存取方法(getter and setter method)使用了标准 JavaBean 命名约定,同时把类属性(field)的访问级别设成私有的(private)。这是推荐的设计,但并不是必须的。Hibernate 也可以直接访问这些 field,而使用访问方法(accessor method)的好处是提供了重构时的健壮性(robustness)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>id</literal> property holds a unique identifier value for a particular event. All persistent entity classes (there are less important dependent classes as well) will need such an identifier property if we want to use the full feature set of Hibernate. In fact, most applications, especially web applications, need to distinguish objects by identifier, so you should consider this a feature rather than a limitation. However, we usually do not manipulate the identity of an object, hence the setter method should be private. Only Hibernate will assign identifiers when an object is saved. Hibernate can access public, private, and protected accessor methods, as well as public, private and protected fields directly. The choice is up to you and you can match it to fit your application design."
+msgstr "对一特定的 event, <literal>id</literal> 属性持有唯一的标识符(identifier)的值。如果我们希望使用 Hibernate 提供的所有特性,那么所有的持久化实体(persistent entity)类(这里也包括一些次要依赖类)都需要一个这样的标识符属性。而事实上,大多数应用程序(特别是 web 应用程序)都需要通过标识符来区别对象,所以你应该考虑使用标识符属性而不是把它当作一种限制。然而,我们通常不会操作对象的标识(identity),因此它的 setter 方法的访问级别应该声明 private。这样当对象被保存的时候,只有 Hibernate 可以为它分配标识符值。你可看到Hibernate可以直接访问 public,private 和 protected 的访问方法和 field。所以选择哪种方式完全取决于你,你可以使你的选择与你的应用程序设计相吻合。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The no-argument constructor is a requirement for all persistent classes; Hibernate has to create objects for you, using Java Reflection. The constructor can be private, however package or public visibility is required for runtime proxy generation and efficient data retrieval without bytecode instrumentation."
+msgstr "所有的持久化类(persistent classes)都要求有无参的构造器,因为 Hibernate 必须使用 Java 反射机制来为你创建对象。构造器(constructor)的访问级别可以是 private,然而当生成运行时代理(runtime proxy)的时候则要求使用至少是 package 级别的访问控制,这样在没有字节码指令(bytecode instrumentation)的情况下,从持久化类里获取数据会更有效率。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain</filename> directory."
+msgstr "把这个文件保存到 <filename>src/main/java/org/hibernate/tutorial/domain</filename> 目录下。"
+
+#. Tag: title
+#, no-c-format
+msgid "The mapping file"
+msgstr "映射文件"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate needs to know how to load and store objects of the persistent class. This is where the Hibernate mapping file comes into play. The mapping file tells Hibernate what table in the database it has to access, and what columns in that table it should use."
+msgstr "Hibernate 需要知道怎样去加载(load)和存储(store)持久化类的对象。这正是 Hibernate 映射文件发挥作用的地方。映射文件告诉 Hibernate 它应该访问数据库(database)里面的哪个表(table)及应该使用表里面的哪些字段(column)。"
+
+#. Tag: para
+#, no-c-format
+msgid "The basic structure of a mapping file looks like this:"
+msgstr "一个映射文件的基本结构看起来像这样:"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate DTD is sophisticated. You can use it for auto-completion of XML mapping elements and attributes in your editor or IDE. Opening up the DTD file in your text editor is the easiest way to get an overview of all elements and attributes, and to view the defaults, as well as some comments. Hibernate will not load the DTD file from the web, but first look it up from the classpath of the application. The DTD file is included in <filename>hibernate-core.jar</filename> (it is also included in the <filename>hibernate3.jar</filename>, if using the distribution bundle)."
+msgstr "注意 Hibernate 的 DTD 是非常复杂的。你的编辑器或者 IDE 里使用它来自动完成那些用来映射的 XML 元素(element)和属性(attribute)。你也可以在文本编辑器里打开 DTD — 这是最简单的方式来概览所有的元素和 attribute,并查看它们的缺省值以及注释。注意 Hibernate 不会从 web 加载 DTD 文件,但它会首先在应用程序的 classpath 中查找。DTD 文件已包括在 <literal>hibernate3.jar</literal> 里,同时也在 Hibernate 发布包的 <literal>src/</literal> 目录下。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We will omit the DTD declaration in future examples to shorten the code. It is, of course, not optional."
+msgstr "为缩短代码长度,在以后的例子里我们会省略 DTD 的声明。当然,在实际的应用程序中,DTD 声明是必需的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Between the two <literal>hibernate-mapping</literal> tags, include a <literal>class</literal> element. All persistent entity classes (again, there might be dependent classes later on, which are not first-class entities) need a mapping to a table in the SQL database:"
+msgstr "在 <literal>hibernate-mapping</literal> 标签(tag)之间, 含有一个 <literal>class</literal> 元素。所有的持久化实体类(再次声明,或许接下来会有依赖类,就是那些次要的实体)都需要一个这样的映射,来把类对象映射到 SQL 数据库里的表:"
+
+#. Tag: para
+#, no-c-format
+msgid "So far we have told Hibernate how to persist and load object of class <literal>Event</literal> to the table <literal>EVENTS</literal>. Each instance is now represented by a row in that table. Now we can continue by mapping the unique identifier property to the tables primary key. As we do not want to care about handling this identifier, we configure Hibernate's identifier generation strategy for a surrogate primary key column:"
+msgstr "到目前为止,我们告诉了 Hibernate 怎样把 <literal>Events</literal> 类的对象持久化到数据库的 <literal>EVENTS</literal> 表里,以及怎样从 <literal>EVENTS</literal> 表加载到 <literal>Events</literal> 类的对象。每个实例对应着数据库表中的一行。现在我们将继续讨论有关唯一标识符属性到数据库表的映射。另外,由于我们不关心怎样处理这个标识符,我们就配置由 Hibernate 的标识符生成策略来产生代理主键字段:"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>id</literal> element is the declaration of the identifier property. The <literal>name=\"id\"</literal> mapping attribute declares the name of the JavaBean property and tells Hibernate to use the <literal>getId()</literal> and <literal>setId()</literal> methods to access the property. The column attribute tells Hibernate which column of the <literal>EVENTS</literal> table holds the primary key value."
+msgstr "<literal>id</literal> 元素是对 identifier 属性的声明。<literal>name=\"id\"</literal> 映射属性声明了 JavaBean 属性的名称并告诉 Hibernate 使用 <literal>getId()</literal> 和 <literal>setId()</literal> 方法来访问这个属性。column 属性告诉 Hibernate  <literal>EVENTS</literal> 表的哪个字段持有主键值。"
+
+#. Tag: para
+#, no-c-format
+msgid "The nested <literal>generator</literal> element specifies the identifier generation strategy (aka how are identifier values generated?). In this case we choose <literal>native</literal>, which offers a level of portability depending on the configured database dialect. Hibernate supports database generated, globally unique, as well as application assigned, identifiers. Identifier value generation is also one of Hibernate's many extension points and you can plugin in your own strategy."
+msgstr "嵌套的 <literal>generator</literal> 元素指定标识符的生成策略(也就是标识符值是怎么产生的)。在这个例子里,我们选择 <literal>native</literal>,它提供了取决于数据库方言的可移植性。Hibernate 数据库生成的、全局性唯一的以及应用程序分配的标识符。标识符值的生成也是 Hibernate 的扩展功能之一,你可以插入自己的策略。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>native</literal> is no longer consider the best strategy in terms of portability. for further discussion, see <xref linkend=\"portability-idgen\" />"
+msgstr "从移植性来说,<literal>native</literal> 不再被认为是最好的策略。进一步的讨论,请参考 <xref linkend=\"portability-idgen\" />。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Lastly, we need to tell Hibernate about the remaining entity class properties. By default, no properties of the class are considered persistent:"
+msgstr "最后我们在映射文件里面包含需要持久化属性的声明。默认情况下,类里面的属性都被视为非持久化的: "
+
+#. Tag: para
+#, no-c-format
+msgid "Similar to the <literal>id</literal> element, the <literal>name</literal> attribute of the <literal>property</literal> element tells Hibernate which getter and setter methods to use. In this case, Hibernate will search for <literal>getDate()</literal>, <literal>setDate()</literal>, <literal>getTitle()</literal> and <literal>setTitle()</literal> methods."
+msgstr "和 <literal>id</literal> 元素一样,<literal>property</literal> 元素的 <literal>name</literal> 属性告诉 Hibernate 使用哪个 getter 和 setter 方法。在此例中,Hibernate 会寻找 <literal>getDate()</literal>、<literal>setDate()</literal>、<literal>getTitle()</literal> 和 <literal>setTitle()</literal> 方法。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Why does the <literal>date</literal> property mapping include the <literal>column</literal> attribute, but the <literal>title</literal> does not? Without the <literal>column</literal> attribute, Hibernate by default uses the property name as the column name. This works for <literal>title</literal>, however, <literal>date</literal> is a reserved keyword in most databases so you will need to map it to a different name."
+msgstr "为什么 <literal>date</literal> 属性的映射含有 <literal>column</literal> attribute,而 <literal>title</literal> 却没有?当没有设定 <literal>column</literal> attribute 的时候,Hibernate 缺省地使用 JavaBean 的属性名作为字段名。对于 <literal>title</literal>,这样工作得很好。然而,<literal>date</literal> 在多数的数据库里,是一个保留关键字,所以我们最好把它映射成一个不同的名字。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>title</literal> mapping also lacks a <literal>type</literal> attribute. The types declared and used in the mapping files are not Java data types; they are not SQL database types either. These types are called <emphasis>Hibernate mapping types</emphasis>, converters which can translate from Java to SQL data types and vice versa. Again, Hibernate will try to determine the correct conversion and mapping type itself if the <literal>type</literal> attribute is not present in the mapping. In some cases this automatic detection using Reflection on the Java class might not have the default you expect or need. This is the case with the <literal>date</literal> property. Hibernate cannot know if the property, which is of <literal>java.util.Date</literal>, should map to a SQL <literal>date</literal>, <literal>timestamp</literal>, or <literal>time</literal> column. Full date and time information is preserved by mapping the property with a <literal>timestamp</literal>!
  converter."
+msgstr "另一有趣的事情是 <literal>title</literal> 属性缺少一个 <literal>type</literal> attribute。我们在映射文件里声明并使用的类型,却不是我们期望的那样,是 Java 数据类型,同时也不是 SQL 数据库的数据类型。这些类型就是所谓的 Hibernate 映射类型<emphasis>(mapping types)</emphasis>,它们能把 Java 数据类型转换到 SQL 数据类型,反之亦然。再次重申,如果在映射文件中没有设置 <literal>type</literal> 属性的话,Hibernate 会自己试着去确定正确的转换类型和它的映射类型。在某些情况下这个自动检测机制(在 Java 类上使用反射机制)不会产生你所期待或需要的缺省值。<literal>date</literal> 属性就是个很好的例子,Hibernate 无法知道这个属性(<literal>java.util.Date</literal> 类型的)应该被映射成:SQL <literal>date</literal>,或 <literal>timestamp</literal>,还是 <literal>time</litera!
 l> 字段。在此例中,把这个属性映射成 <literal>timestamp</literal> 转换器,这样我们预留了日期和时间的全部信息。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate makes this mapping type determination using reflection when the mapping files are processed. This can take time and resources, so if startup performance is important you should consider explicitly defining the type to use."
+msgstr "当处理映射文件时,Hibernate 用反射(reflection)来决定这个映射类型。这需要时间和资源,所以如果你注重启动性能,你应该考虑显性地定义所用的类型。"
+
+#. Tag: para
+#, no-c-format
+msgid "Save this mapping file as <filename>src/main/resources/org/hibernate/tutorial/domain/Event.hbm.xml</filename>."
+msgstr "把这个映射文件保存为 <filename>src/main/resources/org/hibernate/tutorial/domain/Event.hbm.xml</filename>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Hibernate configuration"
+msgstr "Hibernate 配置"
+
+#. Tag: para
+#, no-c-format
+msgid "At this point, you should have the persistent class and its mapping file in place. It is now time to configure Hibernate. First let's set up HSQLDB to run in \"server mode\""
+msgstr "此时,你应该有了持久化类和它的映射文件。现在是配置 Hibernate 的时候了。首先让我们设立 HSQLDB 使其运行在“服务器模式”。"
+
+#. Tag: para
+#, no-c-format
+msgid "We do this do that the data remains between runs."
+msgstr "数据在程序运行期间需要保持有效。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We will utilize the Maven exec plugin to launch the HSQLDB server by running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see it start up and bind to a TCP/IP socket; this is where our application will connect later. If you want to start with a fresh database during this tutorial, shutdown HSQLDB, delete all files in the <filename>target/data</filename> directory, and start HSQLDB again."
+msgstr "在开发的根目录下创建一个 <literal>data</literal> 目录 - 这是 HSQL DB 存储数据文件的地方。此时在 data 目录中运行 <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</literal> 就可启动数据库。你可以在 log 中看到它的启动,及绑定到 TCP/IP 套接字,这正是我们的应用程序稍后会连接的地方。如果你希望在本例中运行一个全新的数据库,就在窗口中按下 <literal>CTRL + C</literal> 来关闭 HSQL 数据库,并删除 <literal>data/</literal> 目录下的所有文件,再重新启动 HSQL 数据库。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate will be connecting to the database on behalf of your application, so it needs to know how to obtain connections. For this tutorial we will be using a standalone connection pool (as opposed to a <interfacename>javax.sql.DataSource</interfacename>). Hibernate comes with support for two third-party open source JDBC connection pools: <ulink url=\"https://sourceforge.net/projects/c3p0\">c3p0</ulink> and <ulink url=\"http://proxool.sourceforge.net/\">proxool</ulink>. However, we will be using the Hibernate built-in connection pool for this tutorial."
+msgstr "Hibernate 将为你的应用程序连接到数据库,所以它需要知道如何获取连接。在这个教程里,我们使用一个独立连接池(和 <interfacename>javax.sql.DataSource</interfacename> 相反)。Hibernate 支持两个第三方的开源 JDBC 连接池:<ulink url=\"https://sourceforge.net/projects/c3p0\">c3p0</ulink> 和 <ulink url=\"http://proxool.sourceforge.net/\">proxool</ulink>。然而,在本教程里我们将使用 Hibernate 内置的连接池。"
+
+#. Tag: para
+#, no-c-format
+msgid "The built-in Hibernate connection pool is in no way intended for production use. It lacks several features found on any decent connection pool."
+msgstr "嵌入的 Hibernate 连接池不用于产品环境。它缺乏连接池里的几个功能。"
+
+#. Tag: para
+#, no-c-format
+msgid "For Hibernate's configuration, we can use a simple <literal>hibernate.properties</literal> file, a more sophisticated <literal>hibernate.cfg.xml</literal> file, or even complete programmatic setup. Most users prefer the XML configuration file:"
+msgstr "为了保存 Hibernate 的配置,我们可以使用一个简单的 <literal>hibernate.properties</literal> 文件,或者一个稍微复杂的 <literal>hibernate.cfg.xml</literal>,甚至可以完全使用程序来配置 Hibernate。多数用户更喜欢使用 XML 配置文件: "
+
+#. Tag: para
+#, no-c-format
+msgid "Notice that this configuration file specifies a different DTD"
+msgstr "请注意,这个配置文件指定了一个不同的 DTD。"
+
+#. Tag: para
+#, no-c-format
+msgid "You configure Hibernate's <literal>SessionFactory</literal>. SessionFactory is a global factory responsible for a particular database. If you have several databases, for easier startup you should use several <literal>&lt;session-factory&gt;</literal> configurations in several configuration files."
+msgstr "注意这个 XML 配置使用了一个不同的 DTD。在这里,我们配置了 Hibernate 的<literal>SessionFactory</literal> — 一个关联于特定数据库全局的工厂(factory)。如果你要使用多个数据库,就要用多个的 <literal>&lt;session-factory&gt;</literal>,通常把它们放在多个配置文件中(为了更容易启动)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The first four <literal>property</literal> elements contain the necessary configuration for the JDBC connection. The dialect <literal>property</literal> element specifies the particular SQL variant Hibernate generates."
+msgstr "签名 4 个 <literal>property</literal> 元素包含了 JDBC 连接所必需的配置。方言 <literal>property</literal> 元素指定了 Hibernate 生成的特定 SQL 语句。"
+
+#. Tag: para
+#, no-c-format
+msgid "In most cases, Hibernate is able to properly determine which dialect to use. See <xref linkend=\"portability-dialectresolver\" /> for more information."
+msgstr "在大多数情况下,Hibernate 都能够正确地决定所使用的方言。更多信息请参考 <xref linkend=\"portability-dialectresolver\" />。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate's automatic session management for persistence contexts is particularly useful in this context. The <literal>hbm2ddl.auto</literal> option turns on automatic generation of database schemas directly into the database. This can also be turned off by removing the configuration option, or redirected to a file with the help of the <literal>SchemaExport</literal> Ant task. Finally, add the mapping file(s) for persistent classes to the configuration."
+msgstr "最开始的 4 个 <literal>property</literal> 元素包含必要的 JDBC 连接信息。方言(dialect)的 <literal>property</literal> 元素指明 Hibernate 生成的特定 SQL 变量。你很快会看到,Hibernate 对持久化上下文的自动 session 管理就会派上用场。 打开 <literal>hbm2ddl.auto</literal> 选项将自动生成数据库模式(schema)- 直接加入数据库中。当然这个选项也可以被关闭(通过去除这个配置选项)或者通过 Ant 任务 <literal>SchemaExport</literal> 的帮助来把数据库 schema 重定向到文件中。最后,在配置中为持久化类加入映射文件。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this file as <filename>hibernate.cfg.xml</filename> into the <filename>src/main/resources</filename> directory."
+msgstr "把这个文件保存为 <filename>src/main/resources</filename> 目录下的 <filename>hibernate.cfg.xml</filename>。"
+
+#. Tag: title
+#, no-c-format
+msgid "Building with Maven"
+msgstr "用 Maven 构建  "
+
+#. Tag: para
+#, no-c-format
+msgid "We will now build the tutorial with Maven. You will need to have Maven installed; it is available from the <ulink url=\"http://maven.apache.org/download.html\">Maven download page</ulink>. Maven will read the <filename>/pom.xml</filename> file we created earlier and know how to perform some basic project tasks. First, lets run the <literal>compile</literal> goal to make sure we can compile everything so far:"
+msgstr "我们将用 Maven 构建这个教程。你将需要安装 Maven;你可以从 <ulink url=\"http://maven.apache.org/download.html\">Maven 下载页面</ulink>获得 Maven。Maen 将读取我们先前创建的 <filename>/pom.xml</filename> 并知道执行基本的项目任务。首先,让我们运行 <literal>compile</literal> 目标来确保我们可以编译到目前为止的所有程序:"
+
+#. Tag: title
+#, no-c-format
+msgid "Startup and helpers"
+msgstr "启动和辅助类"
+
+#. Tag: para
+#, no-c-format
+msgid "It is time to load and store some <literal>Event</literal> objects, but first you have to complete the setup with some infrastructure code. You have to startup Hibernate by building a global <interfacename>org.hibernate.SessionFactory</interfacename> object and storing it somewhere for easy access in application code. A <interfacename>org.hibernate.SessionFactory</interfacename> is used to obtain <interfacename>org.hibernate.Session</interfacename> instances. A <interfacename>org.hibernate.Session</interfacename> represents a single-threaded unit of work. The <interfacename>org.hibernate.SessionFactory</interfacename> is a thread-safe global object that is instantiated once."
+msgstr "是时候来加载和储存一些 <literal>Event</literal> 对象了,但首先我们得编写一些基础的代码以完成设置。我们必须启动 Hibernate,此过程包括创建一个全局的 <literal>SessoinFactory</literal>,并把它储存在应用程序代码容易访问的地方。<literal>SessionFactory</literal> 可以创建并打开新的 <literal>Session</literal>。一个 <literal>Session</literal> 代表一个单线程的单元操作,<interfacename>org.hibernate.SessionFactory</interfacename> 则是个线程安全的全局对象,只需要被实例化一次。 "
+
+#. Tag: para
+#, no-c-format
+msgid "We will create a <literal>HibernateUtil</literal> helper class that takes care of startup and makes accessing the <interfacename>org.hibernate.SessionFactory</interfacename> more convenient."
+msgstr "我们将创建一个 <literal>HibernateUtil</literal> 辅助类(helper class)来负责启动 Hibernate 和更方便地操作 <interfacename>org.hibernate.SessionFactory</interfacename>。让我们来看一下它的实现:"
+
+#. Tag: para
+#, no-c-format
+msgid "Save this code as <filename>src/main/java/org/hibernate/tutorial/util/HibernateUtil.java</filename>"
+msgstr "把这段代码保存为 <filename>src/main/java/org/hibernate/tutorial/util/HibernateUtil.java</filename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "This class not only produces the global <interfacename>org.hibernate.SessionFactory</interfacename> reference in its static initializer; it also hides the fact that it uses a static singleton. We might just as well have looked up the <interfacename>org.hibernate.SessionFactory</interfacename> reference from JNDI in an application server or any other location for that matter."
+msgstr "这个类不但在它的静态初始化过程(仅当加载这个类的时候被 JVM 执行一次)中产生全局的 <interfacename>org.hibernate.SessionFactory</interfacename>,而且隐藏了它使用了静态 singleton 的事实。它也可能在应用程序服务器中的 JNDI 查找 <interfacename>org.hibernate.SessionFactory</interfacename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "If you give the <interfacename>org.hibernate.SessionFactory</interfacename> a name in your configuration, Hibernate will try to bind it to JNDI under that name after it has been built. Another, better option is to use a JMX deployment and let the JMX-capable container instantiate and bind a <literal>HibernateService</literal> to JNDI. Such advanced options are discussed later."
+msgstr "如果你在配置文件中给 <interfacename>org.hibernate.SessionFactory</interfacename> 一个名字,在 它创建后,Hibernate 会试着把它绑定到 JNDI。要完全避免这样的代码,你也可以使用 JMX 部署,让具有 JMX 能力的容器来实例化 <literal>HibernateService</literal> 并把它绑定到 JNDI。这些高级可选项在后面的章节中会讨论到。"
+
+#. Tag: para
+#, no-c-format
+msgid "You now need to configure a logging system. Hibernate uses commons logging and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy <literal>log4j.properties</literal> from the Hibernate distribution in the <literal>etc/</literal> directory to your <literal>src</literal> directory, next to <literal>hibernate.cfg.xml</literal>. If you prefer to have more verbose output than that provided in the example configuration, you can change the settings. By default, only the Hibernate startup message is shown on stdout."
+msgstr "再次编译这个应用程序应该不会有问题。最后我们需要配置一个日志(logging)系统 — Hibernate 使用通用日志接口,允许你在 Log4j 和 JDK 1.4 日志之间进行选择。多数开发者更喜欢 Log4j:从 Hibernate 的发布包中(它在 <literal>etc/</literal> 目录下)拷贝 <literal>log4j.properties</literal> 到你的 <literal>src</literal> 目录,与 <literal>hibernate.cfg.xml</literal> 放在一起。看一下配置示例,如果你希望看到更加详细的输出信息,你可以修改配置。默认情况下,只有 Hibernate 的启动信息才会显示在标准输出上。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The tutorial infrastructure is complete and you are now ready to do some real work with Hibernate."
+msgstr "示例的基本框架完成了 — 现在我们可以用 Hibernate 来做些真正的工作。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Loading and storing objects"
+msgstr "加载并存储对象"
+
+#. Tag: para
+#, no-c-format
+msgid "We are now ready to start doing some real worjk with Hibernate. Let's start by writing an <literal>EventManager</literal> class with a <literal>main()</literal> method:"
+msgstr "我们终于可以使用 Hibernate 来加载和存储对象了,编写一个带有 <literal>main()</literal> 方法的 <literal>EventManager</literal> 类: "
+
+#. Tag: para
+#, no-c-format
+msgid "In <literal>createAndStoreEvent()</literal> we created a new <literal>Event</literal> object and handed it over to Hibernate. At that point, Hibernate takes care of the SQL and executes an <literal>INSERT</literal> on the database."
+msgstr "在 <literal>createAndStoreEvent()</literal> 来里我们创建了一个新的 <literal>Event</literal> 对象并把它传递给 Hibernate。现在 Hibernate 负责与 SQL 打交道,并把 <literal>INSERT</literal> 命令传给数据库。"
+
+#. Tag: para
+#, no-c-format
+msgid "A <interface>org.hibernate.Session</interface> is designed to represent a single unit of work (a single atmoic piece of work to be performed). For now we will keep things simple and assume a one-to-one granularity between a Hibernate <interface>org.hibernate.Session</interface> and a database transaction. To shield our code from the actual underlying transaction system we use the Hibernate <interfacename>org.hibernate.Transaction</interfacename> API. In this particular case we are using JDBC-based transactional semantics, but it could also run with JTA."
+msgstr "一个 <interface>org.hibernate.Session</interface> 就是个单一的工作单元。我们暂时让事情简单一些,并假设 Hibernate <interface>org.hibernate.Session</interface> 和数据库事务是一一对应的。为了让我们的代码从底层的事务系统中脱离出来(此例中是 JDBC,但也可能是 JTA),我们使用 <interfacename>org.hibernate.Transaction</interfacename> API。在这个例子里我们使用基于 JDBC 的事务性 semantic,但它也可以和 JTA 一起运行。"
+
+#. Tag: para
+#, no-c-format
+msgid "What does <literal>sessionFactory.getCurrentSession()</literal> do? First, you can call it as many times and anywhere you like once you get hold of your <interfacename>org.hibernate.SessionFactory</interfacename>. The <literal>getCurrentSession()</literal> method always returns the \"current\" unit of work. Remember that we switched the configuration option for this mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg.xml</filename>? Due to that setting, the context of a current unit of work is bound to the current Java thread that executes the application."
+msgstr "<literal>sessionFactory.getCurrentSession()</literal> 是干什么的呢?首先,只要你持有 <interfacename>org.hibernate.SessionFactory</interfacename>,大可在任何时候、任何地点调用这个方法。<literal>getCurrentSession()</literal> 方法总会返回“当前的”工作单元。记得我们在 <filename>src/main/resources/hibernate.cfg.xml</filename> 中把这一配置选项调整为 \"thread\" 了吗?因此,因此,当前工作单元被绑定到当前执行我们应用程序的 Java 线程。但是,这并非是完全准确的,你还得考虑工作单元的生命周期范围(scope),它何时开始,又何时结束。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate offers three methods of current session tracking. The \"thread\" based method is not intended for production use; it is merely useful for prototyping and tutorials such as this one. Current session tracking is discussed in more detail later on."
+msgstr "Hibernate 提供三种跟踪当前会话的方法。基于“线程”的方法不适合于产品环境,它仅用于 prototyping 和教学用途。后面将更详细地讨论会话跟踪。"
+
+#. Tag: para
+#, no-c-format
+msgid "A <interface>org.hibernate.Session</interface> begins when the first call to <literal>getCurrentSession()</literal> is made for the current thread. It is then bound by Hibernate to the current thread. When the transaction ends, either through commit or rollback, Hibernate automatically unbinds the <interface>org.hibernate.Session</interface> from the thread and closes it for you. If you call <literal>getCurrentSession()</literal> again, you get a new <interface>org.hibernate.Session</interface> and can start a new unit of work."
+msgstr "<interface>org.hibernate.Session</interface> 在第一次被使用的时候,即第一次调用 <literal>getCurrentSession()</literal> 的时候,其生命周期就开始。然后它被 Hibernate 绑定到当前线程。当事务结束的时候,不管是提交还是回滚,Hibernate 会自动把 <interface>org.hibernate.Session</interface> 从当前线程剥离,并且关闭它。假若你再次调用 <literal>getCurrentSession()</literal>,你会得到一个新的 <interface>org.hibernate.Session</interface>,并且开始一个新的工作单元。"
+
+#. Tag: para
+#, no-c-format
+msgid "Related to the unit of work scope, should the Hibernate <interface>org.hibernate.Session</interface> be used to execute one or several database operations? The above example uses one <interface>org.hibernate.Session</interface> for one operation. However this is pure coincidence; the example is just not complex enough to show any other approach. The scope of a Hibernate <interface>org.hibernate.Session</interface> is flexible but you should never design your application to use a new Hibernate <interface>org.hibernate.Session</interface> for <emphasis>every</emphasis> database operation. Even though it is used in the following examples, consider <emphasis>session-per-operation</emphasis> an anti-pattern. A real web application is shown later in the tutorial which will help illustrate this."
+msgstr "和工作单元的生命周期这个话题相关,Hibernate <interface>org.hibernate.Session</interface> 是否被应该用来执行多次数据库操作?上面的例子对每一次操作使用了一个 <interface>org.hibernate.Session</interface>,这完全是巧合,这个例子不是很复杂,无法展示其他方式。Hibernate <interface>org.hibernate.Session</interface> 的生命周期可以很灵活,但是你绝不要把你的应用程序设计成为<emphasis>每一次</emphasis>数据库操作都用一个新的 Hibernate <interface>org.hibernate.Session</interface>。因此就算下面的例子(它们都很简单)中你可以看到这种用法,记住<emphasis>每次操作一个 session</emphasis> 是一个反模式。在本教程的后面会展示一个真正的(web)程序。"
+
+#. Tag: para
+#, no-c-format
+msgid "See <xref linkend=\"transactions\" /> for more information about transaction handling and demarcation. The previous example also skipped any error handling and rollback."
+msgstr "关于事务处理及事务边界界定的详细信息,请参看 <xref linkend=\"transactions\" /> 。在上面的例子中,我们也忽略了所有的错误与回滚的处理。 "
+
+#. Tag: para
+#, no-c-format
+msgid "To run this, we will make use of the Maven exec plugin to call our class with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
+msgstr "要运行它,我们将使用 Maven exec 插件以及必要的 classpath 设置来进行调用:<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>。"
+
+#. Tag: para
+#, no-c-format
+msgid "You may need to perform <command>mvn compile</command> first."
+msgstr "你可能需要先执行 <command>mvn compile</command>。"
+
+#. Tag: para
+#, no-c-format
+msgid "You should see Hibernate starting up and, depending on your configuration, lots of log output. Towards the end, the following line will be displayed:"
+msgstr "你应该会看到,编译以后,Hibernate 根据你的配置启动,并产生一大堆的输出日志。在日志最后你会看到下面这行: "
+
+#. Tag: para
+#, no-c-format
+msgid "This is the <literal>INSERT</literal> executed by Hibernate."
+msgstr "执行 HQL <literal>INSERT</literal> 语句的例子如下: "
+
+#. Tag: para
+#, no-c-format
+msgid "To list stored events an option is added to the main method:"
+msgstr "我们想要列出所有已经被存储的 events,就要增加一个条件分支选项到 main 方法中:"
+
+#. Tag: para
+#, no-c-format
+msgid "A new <literal>listEvents() method is also added</literal>:"
+msgstr "我们也增加一个新的 <literal>listEvents()</literal> 方法: "
+
+#. Tag: para
+#, no-c-format
+msgid "Here, we are using a Hibernate Query Language (HQL) query to load all existing <literal>Event</literal> objects from the database. Hibernate will generate the appropriate SQL, send it to the database and populate <literal>Event</literal> objects with the data. You can create more complex queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
+msgstr "我们在这里是用一个 HQL(Hibernate Query Language-Hibernate查询语言)查询语句来从数据库中加载所有存在的 <literal>Event</literal> 对象。Hibernate 会生成适当的 SQL,把它发送到数据库,并操作从查询得到数据的 <literal>Event</literal> 对象。当然,你可以使用 HQL 来创建更加复杂的查询。更多信息请参考 <xref linkend=\"queryhql\"/>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Now we can call our new functionality, again using the Maven exec plugin: <command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"list\"</command>"
+msgstr "现在我们可以再次用 Maven exec plugin - <command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"list\"</command> 调用新的功能了。"
+
+#. Tag: title
+#, no-c-format
+msgid "Part 2 - Mapping associations"
+msgstr "第二部分 - 关联映射"
+
+#. Tag: para
+#, no-c-format
+msgid "So far we have mapped a single persistent entity class to a table in isolation. Let's expand on that a bit and add some class associations. We will add people to the application and store a list of events in which they participate."
+msgstr "我们已经映射了一个持久化实体类到表上。让我们在这个基础上增加一些类之间的关联。首先我们往应用程序里增加人(people)的概念,并存储他们所参与的一个 Event 列表。(译者注:与 Event 一样,我们在后面将直接使用 person 来表示“人”而不是它的中文翻译) "
+
+#. Tag: title
+#, no-c-format
+msgid "Mapping the Person class"
+msgstr "映射 Person 类"
+
+#. Tag: para
+#, no-c-format
+msgid "The first cut of the <literal>Person</literal> class looks like this:"
+msgstr "最初简单的 <literal>Person</literal> 类: "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this to a file named <filename>src/main/java/org/hibernate/tutorial/domain/Person.java</filename>"
+msgstr "把它保存为文件 <filename>src/main/java/org/hibernate/tutorial/domain/Person.java</filename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Next, create the new mapping file as <filename>src/main/resources/org/hibernate/tutorial/domain/Person.hbm.xml</filename>"
+msgstr "然后,创建新的映射文件 <filename>src/main/resources/org/hibernate/tutorial/domain/Person.hbm.xml</filename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, add the new mapping to Hibernate's configuration:"
+msgstr "最后,把新的映射加入到 Hibernate 的配置中:"
+
+#. Tag: para
+#, no-c-format
+msgid "Create an association between these two entities. Persons can participate in events, and events have participants. The design questions you have to deal with are: directionality, multiplicity, and collection behavior."
+msgstr "现在我们在这两个实体之间创建一个关联。显然,persons 可以参与一系列 events,而 events 也有不同的参加者(persons)。我们需要处理的设计问题是关联方向(directionality),阶数(multiplicity)和集合(collection)的行为。 "
+
+#. Tag: title
+#, no-c-format
+msgid "A unidirectional Set-based association"
+msgstr "单向 Set-based 的关联"
+
+#. Tag: para
+#, no-c-format
+msgid "By adding a collection of events to the <literal>Person</literal> class, you can easily navigate to the events for a particular person, without executing an explicit query - by calling <literal>Person#getEvents</literal>. Multi-valued associations are represented in Hibernate by one of the Java Collection Framework contracts; here we choose a <interfacename>java.util.Set</interfacename> because the collection will not contain duplicate elements and the ordering is not relevant to our examples:"
+msgstr "我们将向 <literal>Person</literal> 类增加一连串的 events。那样,通过调用 <literal>aPerson.getEvents()</literal>,就可以轻松地导航到特定 person 所参与的 events,而不用去执行一个显式的查询。我们使用 Java 的集合类(collection):<literal>Set</literal>,因为 set 不包含重复的元素及与我们无关的排序。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Before mapping this association, let's consider the other side. We could just keep this unidirectional or create another collection on the <literal>Event</literal>, if we wanted to be able to navigate it from both directions. This is not necessary, from a functional perspective. You can always execute an explicit query to retrieve the participants for a particular event. This is a design choice left to you, but what is clear from this discussion is the multiplicity of the association: \"many\" valued on both sides is called a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's many-to-many mapping:"
+msgstr "在映射这个关联之前,先考虑一下此关联的另外一端。很显然,我们可以保持这个关联是单向的。或者,我们可以在 <literal>Event</literal> 里创建另外一个集合,如果希望能够双向地导航,如:<literal>anEvent.getParticipants()</literal>。从功能的角度来说,这并不是必须的。因为你总可以显式地执行一个查询,以获得某个特定 event 的所有参与者。这是个在设计时需要做出的选择,完全由你来决定,但此讨论中关于关联的阶数是清楚的:即两端都是“多”值的,我们把它叫做<emphasis>多对多(many-to-many)</emphasis>关联。因而,我们使用 Hibernate 的多对多映射: "
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports a broad range of collection mappings, a <literal>set</literal> being most common. For a many-to-many association, or <emphasis>n:m</emphasis> entity relationship, an association table is required. Each row in this table represents a link between a person and an event. The table name is decalred using the <literal>table</literal> attribute of the <literal>set</literal> element. The identifier column name in the association, for the person side, is defined with the <literal>key</literal> element, the column name for the event's side with the <literal>column</literal> attribute of the <literal>many-to-many</literal>. You also have to tell Hibernate the class of the objects in your collection (the class on the other side of the collection of references)."
+msgstr "Hibernate 支持各种各样的集合映射,<literal>&lt;set&gt;</literal> 使用的最为普遍。对于多对多关联(或叫 <emphasis>n:m</emphasis> 实体关系), 需要一个关联表(association table)。<literal>表</literal>里面的每一行代表从 person 到 event 的一个关联。表名是由 <literal>set</literal> 元素的 <literal>table</literal> 属性配置的。关联里面的标识符字段名,对于 person 的一端,是由 <literal>&lt;key&gt;</literal> 元素定义,而 event 一端的字段名是由 <literal>&lt;many-to-many&gt;</literal> 元素的 <literal>column</literal> 属性定义。你也必须告诉 Hibernate 集合中对象的类(也就是位于这个集合所代表的关联另外一端的类)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "The database schema for this mapping is therefore:"
+msgstr "因而这个映射的数据库 schema 是:"
+
+#. Tag: title
+#, no-c-format
+msgid "Working the association"
+msgstr "使关联工作"
+
+#. Tag: para
+#, no-c-format
+msgid "Now we will bring some people and events together in a new method in <literal>EventManager</literal>:"
+msgstr "我们把一些 people 和 events 一起放到 <literal>EventManager</literal> 的新方法中: "
+
+#. Tag: para
+#, no-c-format
+msgid "After loading a <literal>Person</literal> and an <literal>Event</literal>, simply modify the collection using the normal collection methods. There is no explicit call to <literal>update()</literal> or <literal>save()</literal>; Hibernate automatically detects that the collection has been modified and needs to be updated. This is called <emphasis>automatic dirty checking</emphasis>. You can also try it by modifying the name or the date property of any of your objects. As long as they are in <emphasis>persistent</emphasis> state, that is, bound to a particular Hibernate <interfacename>org.hibernate.Session</interfacename>, Hibernate monitors any changes and executes SQL in a write-behind fashion. The process of synchronizing the memory state with the database, usually only at the end of a unit of work, is called <emphasis>flushing</emphasis>. In our code, the unit of work ends with a commit, or rollback, of the database transaction."
+msgstr "在加载一 <literal>Person</literal> 和 <literal>Event</literal> 后,使用普通的集合方法就可容易地修改我们定义的集合。如你所见,没有显式的 <literal>update()</literal> 或 <literal>save()</literal>,Hibernate 会自动检测到集合已经被修改并需要更新回数据库。这叫做自动脏检查(<emphasis>automatic dirty checking</emphasis>),你也可以尝试修改任何对象的 name 或者 date 属性,只要他们处于<emphasis>持久化</emphasis>状态,也就是被绑定到某个 Hibernate 的 <literal>Session</literal> 上(如:他们刚刚在一个单元操作被加载或者保存),Hibernate 监视任何改变并在后台隐式写的方式执行 SQL。同步内存状态和数据库的过程,通常只在单元操作结束的时候发生,称此过程为清理缓存<emphasis>(flushing)</emphasis>。在我们的代码中,工作单元由数据库事务的提交(或者回滚)来结束——!
 这是由 <literal>CurrentSessionContext</literal> 类的 <literal>thread</literal> 配置选项定义的。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can load person and event in different units of work. Or you can modify an object outside of a <interfacename>org.hibernate.Session</interfacename>, when it is not in persistent state (if it was persistent before, this state is called <emphasis>detached</emphasis>). You can even modify a collection when it is detached:"
+msgstr "当然,你也可以在不同的单元操作里面加载 person 和 event。或在 <literal>Session</literal> 以外修改不是处在持久化(persistent)状态下的对象(如果该对象以前曾经被持久化,那么我们称这个状态为<emphasis>脱管(detached)</emphasis>)。你甚至可以在一个集合被脱管时修改它: "
+
+#. Tag: para
+#, no-c-format
+msgid "The call to <literal>update</literal> makes a detached object persistent again by binding it to a new unit of work, so any modifications you made to it while detached can be saved to the database. This includes any modifications (additions/deletions) you made to a collection of that entity object."
+msgstr "对 <literal>update</literal> 的调用使一个脱管对象重新持久化,你可以说它被绑定到一个新的单元操作上,所以在脱管状态下对它所做的任何修改都会被保存到数据库里。这也包括你对这个实体对象的集合所作的任何改动(增加/删除)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This is not much use in our example, but it is an important concept you can incorporate into your own application. Complete this exercise by adding a new action to the main method of the <literal>EventManager</literal> and call it from the command line. If you need the identifiers of a person and an event - the <literal>save()</literal> method returns it (you might have to modify some of the previous methods to return that identifier):"
+msgstr "这对我们当前的情形不是很有用,但它是非常重要的概念,你可以把它融入到你自己的应用程序设计中。在<literal>EventManager</literal>的 main 方法中添加一个新的动作,并从命令行运行它来完成我们所做的练习。如果你需要 person 及 event 的标识符 — 那就用 <literal>save()</literal> 方法返回它(你可能需要修改前面的一些方法来返回那个标识符): "
+
+#. Tag: para
+#, no-c-format
+msgid "This is an example of an association between two equally important classes : two entities. As mentioned earlier, there are other classes and types in a typical model, usually \"less important\". Some you have already seen, like an <literal>int</literal> or a <classname>java.lang.String</classname>. We call these classes <emphasis>value types</emphasis>, and their instances <emphasis>depend</emphasis> on a particular entity. Instances of these types do not have their own identity, nor are they shared between entities. Two persons do not reference the same <literal>firstname</literal> object, even if they have the same first name. Value types cannot only be found in the JDK , but you can also write dependent classes yourself such as an <literal>Address</literal> or <literal>MonetaryAmount</literal> class. In fact, in a Hibernate application all JDK classes are considered value types."
+msgstr "上面是个关于两个同等重要的实体类间关联的例子。像前面所提到的那样,在特定的模型中也存在其它的类和类型,这些类和类型通常是“次要的”。你已看到过其中的一些,像 <literal>int</literal> 或 <literal>String</literal>。我们称这些类为<emphasis>值类型(value type)</emphasis>,它们的实例<emphasis>依赖(depend)</emphasis>在某个特定的实体上。这些类型的实例没有它们自己的标识(identity),也不能在实体间被共享(比如,两个 person 不能引用同一个 <literal>firstname</literal> 对象,即使他们有相同的 first name)。当然,值类型并不仅仅在 JDK 中存在(事实上,在一个 Hibernate 应用程序中,所有的 JDK 类都被视为值类型),而且你也可以编写你自己的依赖类,例如 <literal>Address</literal>,<literal>MonetaryAmount</literal>。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can also design a collection of value types. This is conceptually different from a collection of references to other entities, but looks almost the same in Java."
+msgstr "你也可以设计一个值类型的集合,这在概念上与引用其它实体的集合有很大的不同,但是在 Java 里面看起来几乎是一样的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Collection of values"
+msgstr "值类型的集合"
+
+#. Tag: para
+#, no-c-format
+msgid "Let's add a collection of email addresses to the <literal>Person</literal> entity. This will be represented as a <interfacename>java.util.Set</interfacename> of <classname>java.lang.String</classname> instances:"
+msgstr "让我们在 <literal>Person</literal> 实体里添加一个电子邮件的集合。这将以 <classname>java.lang.String</classname> 实例的 <interfacename>java.util.Set</interfacename> 出现:"
+
+#. Tag: para
+#, no-c-format
+msgid "The mapping of this <literal>Set</literal> is as follows:"
+msgstr "这个 <literal>Set</literal> 的映射如下:"
+
+#. Tag: para
+#, no-c-format
+msgid "The difference compared with the earlier mapping is the use of the <literal>element</literal> part which tells Hibernate that the collection does not contain references to another entity, but is rather a collection whose elements are values types, here specifically of type <literal>string</literal>. The lowercase name tells you it is a Hibernate mapping type/converter. Again the <literal>table</literal> attribute of the <literal>set</literal> element determines the table name for the collection. The <literal>key</literal> element defines the foreign-key column name in the collection table. The <literal>column</literal> attribute in the <literal>element</literal> element defines the column name where the email address values will actually be stored."
+msgstr "比较这次和此前映射的差别,主要在于 <literal>element</literal> 部分,这次并没有包含对其它实体引用的集合,而是元素类型为 <literal>String</literal> 的集合(在映射中使用小写的名字”string“是向你表明它是一个 Hibernate 的映射类型或者类型转换器)。和之前一样,<literal>set</literal> 元素的 <literal>table</literal> 属性决定了用于集合的表名。<literal>key</literal> 元素定义了在集合表中外键的字段名。<literal>element</literal> 元素的 <literal>column</literal> 属性定义用于实际保存 <literal>String</literal> 值的字段名。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Here is the updated schema:"
+msgstr "看一下修改后的数据库 schema。 "
+
+#. Tag: para
+#, no-c-format
+msgid "You can see that the primary key of the collection table is in fact a composite key that uses both columns. This also implies that there cannot be duplicate email addresses per person, which is exactly the semantics we need for a set in Java."
+msgstr "你可以看到集合表的主键实际上是个复合主键,同时使用了两个字段。这也暗示了对于同一个 person 不能有重复的 email 地址,这正是 Java 里面使用 Set 时候所需要的语义(Set 里元素不能重复)。"
+
+#. Tag: para
+#, no-c-format
+msgid "You can now try to add elements to this collection, just like we did before by linking persons and events. It is the same code in Java:"
+msgstr "你现在可以试着把元素加入到这个集合,就像我们在之前关联 person 和 event 的那样。其实现的 Java 代码是相同的: "
+
+#. Tag: para
+#, no-c-format
+msgid "This time we did not use a <emphasis>fetch</emphasis> query to initialize the collection. Monitor the SQL log and try to optimize this with an eager fetch."
+msgstr "这次我们没有使用 <emphasis>fetch</emphasis> 查询来初始化集合。因此,调用其 getter 方法会触发另一附加的 select 来初始化集合,这样我们才能把元素添加进去。检查 SQL log,试着通过预先抓取来优化它。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Bi-directional associations"
+msgstr "双向关联"
+
+#. Tag: para
+#, no-c-format
+msgid "Next you will map a bi-directional association. You will make the association between person and event work from both sides in Java. The database schema does not change, so you will still have many-to-many multiplicity."
+msgstr "接下来我们将映射双向关联(bi-directional association)— 在 Java 里让 person 和 event 可以从关联的任何一端访问另一端。当然,数据库 schema 没有改变,我们仍然需要多对多的阶数。一个关系型数据库要比网络编程语言更加灵活,所以它并不需要任何像导航方向(navigation direction)的东西 — 数据可以用任何可能的方式进行查看和获取。 "
+
+#. Tag: para
+#, no-c-format
+msgid "A relational database is more flexible than a network programming language, in that it does not need a navigation direction; data can be viewed and retrieved in any possible way."
+msgstr "关系型数据库比网络编程语言更为灵活,因为它不需要方向导航,其数据可以用任何可能的方式进行查看和提取。"
+
+#. Tag: para
+#, no-c-format
+msgid "First, add a collection of participants to the <literal>Event</literal> class:"
+msgstr "首先,把一个参与者(person)的集合加入 <literal>Event</literal> 类中: "
+
+#. Tag: para
+#, no-c-format
+msgid "Now map this side of the association in <literal>Event.hbm.xml</literal>."
+msgstr "在 <literal>Event.hbm.xml</literal> 里面也映射这个关联。 "
+
+#. Tag: para
+#, no-c-format
+msgid "These are normal <literal>set</literal> mappings in both mapping documents. Notice that the column names in <literal>key</literal> and <literal>many-to-many</literal> swap in both mapping documents. The most important addition here is the <literal>inverse=\"true\"</literal> attribute in the <literal>set</literal> element of the <literal>Event</literal>'s collection mapping."
+msgstr "如你所见,两个映射文件里都有普通的 <literal>set</literal> 映射。注意在两个映射文件中,互换了 <literal>key</literal> 和 <literal>many-to-many</literal> 的字段名。这里最重要的是 <literal>Event</literal> 映射文件里增加了 <literal>set</literal> 元素的 <literal>inverse=\"true\"</literal> 属性。 "
+
+#. Tag: para
+#, no-c-format
+msgid "What this means is that Hibernate should take the other side, the <literal>Person</literal> class, when it needs to find out information about the link between the two. This will be a lot easier to understand once you see how the bi-directional link between our two entities is created."
+msgstr "这意味着在需要的时候,Hibernate 能在关联的另一端 — <literal>Person</literal> 类得到两个实体间关联的信息。这将会极大地帮助你理解双向关联是如何在两个实体间被创建的。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Working bi-directional links"
+msgstr "使双向连起来"
+
+#. Tag: para
+#, no-c-format
+msgid "First, keep in mind that Hibernate does not affect normal Java semantics. How did we create a link between a <literal>Person</literal> and an <literal>Event</literal> in the unidirectional example? You add an instance of <literal>Event</literal> to the collection of event references, of an instance of <literal>Person</literal>. If you want to make this link bi-directional, you have to do the same on the other side by adding a <literal>Person</literal> reference to the collection in an <literal>Event</literal>. This process of \"setting the link on both sides\" is absolutely necessary with bi-directional links."
+msgstr "首先请记住,Hibernate 并不影响通常的 Java 语义。 在单向关联的例子中,我们是怎样在 <literal>Person</literal> 和 <literal>Event</literal> 之间创建联系的?我们把 <literal>Event</literal> 实例添加到 <literal>Person</literal> 实例内的 event 引用集合里。因此很显然,如果我们要让这个关联可以双向地工作,我们需要在另外一端做同样的事情 - 把 <literal>Person</literal> 实例加入 <literal>Event</literal> 类内的 Person 引用集合。这“在关联的两端设置联系”是完全必要的而且你都得这么做。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Many developers program defensively and create link management methods to correctly set both sides (for example, in <literal>Person</literal>):"
+msgstr "许多开发人员防御式地编程,创建管理关联的方法来保证正确的设置了关联的两端,比如在 <literal>Person</literal> 里: "
+
+#. Tag: para
+#, no-c-format
+msgid "The get and set methods for the collection are now protected. This allows classes in the same package and subclasses to still access the methods, but prevents everybody else from altering the collections directly. Repeat the steps for the collection on the other side."
+msgstr "注意现在对于集合的 get 和 set 方法的访问级别是 protected — 这允许在位于同一个包(package)中的类以及继承自这个类的子类可以访问这些方法,但禁止其他任何人的直接访问,避免了集合内容的混乱。你应尽可能地在另一端也把集合的访问级别设成 protected。 "
+
+#. Tag: para
+#, no-c-format
+msgid "What about the <literal>inverse</literal> mapping attribute? For you, and for Java, a bi-directional link is simply a matter of setting the references on both sides correctly. Hibernate, however, does not have enough information to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</literal> statements (to avoid constraint violations). Making one side of the association <literal>inverse</literal> tells Hibernate to consider it a <emphasis>mirror</emphasis> of the other side. That is all that is necessary for Hibernate to resolve any issues that arise when transforming a directional navigation model to a SQL database schema. The rules are straightforward: all bi-directional associations need one side as <literal>inverse</literal>. In a one-to-many association it has to be the many-side, and in many-to-many association you can select either side."
+msgstr "<literal>inverse</literal> 映射属性究竟表示什么呢?对于你和 Java 来说,一个双向关联仅仅是在两端简单地正确设置引用。然而,Hibernate 并没有足够的信息去正确地执行 <literal>INSERT</literal> 和 <literal>UPDATE</literal> 语句(以避免违反数据库约束),所以它需要一些帮助来正确的处理双向关联。把关联的一端设置为 <literal>inverse</literal> 将告诉 Hibernate 忽略关联的这一端,把这端看成是另外一端的一个<emphasis>镜象(mirror)</emphasis>。这就是所需的全部信息,Hibernate 利用这些信息来处理把一个有向导航模型转移到数据库 schema 时的所有问题。你只需要记住这个直观的规则:所有的双向关联需要有一端被设置为 <literal>inverse</literal>。在一对多关联中它必须是代表多(many)的那端。而在多对多(many-to-many)关联中,你可以任意选取一端,因为两端之!
 间并没有差别。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Part 3 - The EventManager web application"
+msgstr "第三部分 - EventManager web 应用程序"
+
+#. Tag: para
+#, no-c-format
+msgid "A Hibernate web application uses <literal>Session</literal> and <literal>Transaction</literal> almost like a standalone application. However, some common patterns are useful. You can now write an <literal>EventManagerServlet</literal>. This servlet can list all events stored in the database, and it provides an HTML form to enter new events."
+msgstr "Hibernate web 应用程序使用 <literal>Session</literal> 和 <literal>Transaction</literal> 的方式几乎和独立应用程序是一样的。但是,有一些常见的模式(pattern)非常有用。现在我们编写一个 <literal>EventManagerServlet</literal>。这个 servlet 可以列出数据库中保存的所有的 events,还提供一个 HTML 表单来增加新的 events。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Writing the basic servlet"
+msgstr "编写基本的 servlet"
+
+#. Tag: para
+#, no-c-format
+msgid "First we need create our basic processing servlet. Since our servlet only handles HTTP <literal>GET</literal> requests, we will only implement the <literal>doGet()</literal> method:"
+msgstr "这个 servlet 只处理 HTTP <literal>GET</literal> 请求,因此,我们要实现的是 <literal>doGet()</literal> 方法: "
+
+#. Tag: para
+#, no-c-format
+msgid "Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/EventManagerServlet.java</filename>"
+msgstr "把这个 servlet 保存为 <filename>src/main/java/org/hibernate/tutorial/web/EventManagerServlet.java</filename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The pattern applied here is called <emphasis>session-per-request</emphasis>. When a request hits the servlet, a new Hibernate <literal>Session</literal> is opened through the first call to <literal>getCurrentSession()</literal> on the <literal>SessionFactory</literal>. A database transaction is then started. All data access occurs inside a transaction irrespective of whether the data is read or written. Do not use the auto-commit mode in applications."
+msgstr "我们称这里应用的模式为每次请求一个 session<emphasis>(session-per-request)</emphasis>。当有请求到达这个 servlet 的时候,通过对 <literal>SessionFactory</literal> 的第一次调用,打开一个新的 Hibernate <literal>Session</literal>。然后启动一个数据库事务 — 所有的数据访问都是在事务中进行,不管是读还是写(我们在应用程序中不使用 auto-commit 模式)。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> for every database operation. Use one Hibernate <literal>Session</literal> that is scoped to the whole request. Use <literal>getCurrentSession()</literal>, so that it is automatically bound to the current Java thread."
+msgstr "<emphasis>不要</emphasis>为每次数据库操作都使用一个新的 Hibernate <literal>Session</literal>。将 Hibernate <literal>Session</literal> 的范围设置为整个请求。要用 <literal>getCurrentSession()</literal>,这样它自动会绑定到当前 Java 线程。"
+
+#. Tag: para
+#, no-c-format
+msgid "Next, the possible actions of the request are processed and the response HTML is rendered. We will get to that part soon."
+msgstr "下一步,对请求的可能动作进行处理,渲染出反馈的 HTML。我们很快就会涉及到那部分。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, the unit of work ends when processing and rendering are complete. If any problems occurred during processing or rendering, an exception will be thrown and the database transaction rolled back. This completes the <literal>session-per-request</literal> pattern. Instead of the transaction demarcation code in every servlet, you could also write a servlet filter. See the Hibernate website and Wiki for more information about this pattern called <emphasis>Open Session in View</emphasis>. You will need it as soon as you consider rendering your view in JSP, not in a servlet."
+msgstr "最后,当处理与渲染都结束的时候,这个工作单元就结束了。假若在处理或渲染的时候有任何错误发生,会抛出一个异常,回滚数据库事务。这样,<literal>session-per-request</literal> 模式就完成了。为了避免在每个 servlet 中都编写事务边界界定的代码,可以考虑写一个 servlet 过滤器(filter)来更好地解决。关于这一模式的更多信息,请参阅 Hibernate 网站和 Wiki,这一模式叫做 <emphasis>Open Session in View</emphasis> — 只要你考虑用JSP来渲染你的视图(view),而不是在servlet中,你就会很快用到它。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Processing and rendering"
+msgstr "处理与渲染"
+
+#. Tag: para
+#, no-c-format
+msgid "Now you can implement the processing of the request and the rendering of the page."
+msgstr "我们来实现处理请求以及渲染页面的工作。 "
+
+#. Tag: para
+#, no-c-format
+msgid "This coding style, with a mix of Java and HTML, would not scale in a more complex application&mdash;keep in mind that we are only illustrating basic Hibernate concepts in this tutorial. The code prints an HTML header and a footer. Inside this page, an HTML form for event entry and a list of all events in the database are printed. The first method is trivial and only outputs HTML:"
+msgstr "必须承认,这种编码风格把 Java 和 HTML 混在一起,在更复杂的应用程序里不应该大量使用 — 记住,在本章里我们仅仅是展示了 Hibernate 的基本概念。这段代码打印出了 HTML 页眉和页脚,在这个页面里,还打印了一个输入 events 条目的表单单并列出了数据库里的有的 events。第一个方法微不足道,仅仅是输出 HTML:"
+
+#. Tag: para
+#, no-c-format
+msgid "The <literal>listEvents()</literal> method uses the Hibernate <literal>Session</literal> bound to the current thread to execute a query:"
+msgstr "<literal>listEvents()</literal> 方法使用绑定到当前线程的 Hibernate <literal>Session</literal> 来执行查询:"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, the <literal>store</literal> action is dispatched to the <literal>createAndStoreEvent()</literal> method, which also uses the <literal>Session</literal> of the current thread:"
+msgstr "最后,<literal>store</literal> 动作会被导向到 <literal>createAndStoreEvent()</literal> 方法,它也使用当前线程的 <literal>Session</literal>:"
+
+#. Tag: para
+#, no-c-format
+msgid "The servlet is now complete. A request to the servlet will be processed in a single <literal>Session</literal> and <literal>Transaction</literal>. As earlier in the standalone application, Hibernate can automatically bind these objects to the current thread of execution. This gives you the freedom to layer your code and access the <literal>SessionFactory</literal> in any way you like. Usually you would use a more sophisticated design and move the data access code into data access objects (the DAO pattern). See the Hibernate Wiki for more examples."
+msgstr "大功告成,这个 servlet 写完了。Hibernate 会在单一的 <literal>Session</literal> 和 <literal>Transaction</literal> 中处理到达的 servlet 请求。如同在前面的独立应用程序中那样,Hibernate 可以自动的把这些对象绑定到当前运行的线程中。这给了你用任何你喜欢的方式来对代码分层及访问 <literal>SessionFactory</literal> 的自由。通常,你会用更加完备的设计,把数据访问代码转移到数据访问对象中(DAO 模式)。请参见 Hibernate Wiki,那里有更多的例子。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Deploying and testing"
+msgstr "部署与测试"
+
+#. Tag: para
+#, no-c-format
+msgid "To deploy this application for testing we must create a Web ARchive (WAR). First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/web.xml</filename>"
+msgstr "要部署这个应用程序以进行测试,我们必须出具一个 Web ARchive (WAR)。首先我们必须定义 WAR 描述符为 <filename>src/main/webapp/WEB-INF/web.xml</filename>。"
+
+#. Tag: para
+#, no-c-format
+msgid "To build and deploy call <literal>mvn package</literal> in your project directory and copy the <filename>hibernate-tutorial.war</filename> file into your Tomcat <filename>webapps</filename> directory."
+msgstr "在你的开发目录中,调用 <literal>ant war</literal> 来构建、打包,然后把 <literal>hibernate-tutorial.war</literal> 文件拷贝到你的 tomcat 的 <literal>webapps</literal> 目录下。假若你还没安装 Tomcat,就去下载一个,按照指南来安装。对此应用的发布,你不需要修改任何 Tomcat 的配置。 "
+
+#. Tag: para
+#, no-c-format
+msgid "If you do not have Tomcat installed, download it from <ulink url=\"http://tomcat.apache.org/\" /> and follow the installation instructions. Our application requires no changes to the standard Tomcat configuration."
+msgstr "如果你还没有安装 Tomcat,请从 <ulink url=\"http://tomcat.apache.org/\" /> 下载并按照安装说明进行安装。我们的应用程序不需要对标准的 Tomcat 配置进行修改。 "
+
+#. Tag: para
+#, no-c-format
+msgid "Once deployed and Tomcat is running, access the application at <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. Make sure you watch the Tomcat log to see Hibernate initialize when the first request hits your servlet (the static initializer in <literal>HibernateUtil</literal> is called) and to get the detailed output if any exceptions occurs."
+msgstr "在部署完,启动 Tomcat 之后,通过 <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal> 进行访问你的应用,在第一次 servlet 请求发生时,请在 Tomcat log 中确认你看到 Hibernate 被初始化了(<literal>HibernateUtil</literal> 的静态初始化器被调用),假若有任何异常抛出,也可以看到详细的输出。"
+
+#. Tag: title
+#, no-c-format
+msgid "Summary"
+msgstr "总结"
+
+#. Tag: para
+#, no-c-format
+msgid "This tutorial covered the basics of writing a simple standalone Hibernate application and a small web application. More tutorials are available from the Hibernate <ulink url=\"http://hibernate.org\">website</ulink>."
+msgstr "本章覆盖了如何编写一个简单独立的 Hibernate 命令行应用程序及小型的 Hibernate web 应用程序的基本要素。更多的教程可以在 <ulink url=\"http://hibernate.org\">website</ulink> 上找到。"
+
+#~ msgid ""
+#~ "<![CDATA[<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n"
+#~ "         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://"
+#~ "maven.apache.org/xsd/maven-4.0.0.xsd\">\n"
+#~ "\n"
+#~ "    <modelVersion>4.0.0</modelVersion>\n"
+#~ "\n"
+#~ "    <groupId>org.hibernate.tutorials</groupId>\n"
+#~ "    <artifactId>hibernate-tutorial</artifactId>\n"
+#~ "    <version>1.0.0-SNAPSHOT</version>\n"
+#~ "    <name>First Hibernate Tutorial</name>\n"
+#~ "\n"
+#~ "    <build>\n"
+#~ "         <!-- we dont want the version to be part of the generated war "
+#~ "file name -->\n"
+#~ "         <finalName>${artifactId}</finalName>\n"
+#~ "    </build>\n"
+#~ "\n"
+#~ "    <dependencies>\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>org.hibernate</groupId>\n"
+#~ "            <artifactId>hibernate-core</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Because this is a web app, we also have a dependency on the "
+#~ "servlet api. -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>javax.servlet</groupId>\n"
+#~ "            <artifactId>servlet-api</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Hibernate uses slf4j for logging, for our purposes here use "
+#~ "the simple backend -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>org.slf4j</groupId>\n"
+#~ "            <artifactId>slf4j-simple</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Hibernate gives you a choice of bytecode providers between "
+#~ "cglib and javassist -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>javassist</groupId>\n"
+#~ "            <artifactId>javassist</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "    </dependencies>\n"
+#~ "\n"
+#~ "</project>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n"
+#~ "         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://"
+#~ "maven.apache.org/xsd/maven-4.0.0.xsd\">\n"
+#~ "\n"
+#~ "    <modelVersion>4.0.0</modelVersion>\n"
+#~ "\n"
+#~ "    <groupId>org.hibernate.tutorials</groupId>\n"
+#~ "    <artifactId>hibernate-tutorial</artifactId>\n"
+#~ "    <version>1.0.0-SNAPSHOT</version>\n"
+#~ "    <name>First Hibernate Tutorial</name>\n"
+#~ "\n"
+#~ "    <build>\n"
+#~ "         <!-- we dont want the version to be part of the generated war "
+#~ "file name -->\n"
+#~ "         <finalName>${artifactId}</finalName>\n"
+#~ "    </build>\n"
+#~ "\n"
+#~ "    <dependencies>\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>org.hibernate</groupId>\n"
+#~ "            <artifactId>hibernate-core</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Because this is a web app, we also have a dependency on the "
+#~ "servlet api. -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>javax.servlet</groupId>\n"
+#~ "            <artifactId>servlet-api</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Hibernate uses slf4j for logging, for our purposes here use "
+#~ "the simple backend -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>org.slf4j</groupId>\n"
+#~ "            <artifactId>slf4j-simple</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "\n"
+#~ "        <!-- Hibernate gives you a choice of bytecode providers between "
+#~ "cglib and javassist -->\n"
+#~ "        <dependency>\n"
+#~ "            <groupId>javassist</groupId>\n"
+#~ "            <artifactId>javassist</artifactId>\n"
+#~ "        </dependency>\n"
+#~ "    </dependencies>\n"
+#~ "\n"
+#~ "</project>]]>"
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "public class Event {\n"
+#~ "    private Long id;\n"
+#~ "\n"
+#~ "    private String title;\n"
+#~ "    private Date date;\n"
+#~ "\n"
+#~ "    public Event() {}\n"
+#~ "\n"
+#~ "    public Long getId() {\n"
+#~ "        return id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void setId(Long id) {\n"
+#~ "        this.id = id;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public Date getDate() {\n"
+#~ "        return date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setDate(Date date) {\n"
+#~ "        this.date = date;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public String getTitle() {\n"
+#~ "        return title;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setTitle(String title) {\n"
+#~ "        this.title = title;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "[...]\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version=\"1.0\"?>\n"
+#~ "<!DOCTYPE hibernate-mapping PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+#~ "\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "[...]\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/"
+#~ ">\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "<![CDATA[\n"
+#~ "<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Event\" table=\"EVENTS\">\n"
+#~ "        <id name=\"id\" column=\"EVENT_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/"
+#~ ">\n"
+#~ "        <property name=\"title\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgid ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <session-factory>\n"
+#~ "\n"
+#~ "        <!-- Database connection settings -->\n"
+#~ "        <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+#~ "property>\n"
+#~ "        <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+#~ "property>\n"
+#~ "        <property name=\"connection.username\">sa</property>\n"
+#~ "        <property name=\"connection.password\"></property>\n"
+#~ "\n"
+#~ "        <!-- JDBC connection pool (use the built-in) -->\n"
+#~ "        <property name=\"connection.pool_size\">1</property>\n"
+#~ "\n"
+#~ "        <!-- SQL dialect -->\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Enable Hibernate's automatic session context management -->\n"
+#~ "        <property name=\"current_session_context_class\">thread</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Disable the second-level cache  -->\n"
+#~ "        <property name=\"cache.provider_class\">org.hibernate.cache."
+#~ "NoCacheProvider</property>\n"
+#~ "\n"
+#~ "        <!-- Echo all executed SQL to stdout -->\n"
+#~ "        <property name=\"show_sql\">true</property>\n"
+#~ "\n"
+#~ "        <!-- Drop and re-create the database schema on startup -->\n"
+#~ "        <property name=\"hbm2ddl.auto\">update</property>\n"
+#~ "\n"
+#~ "        <mapping resource=\"org/hibernate/tutorial/domain/Event.hbm.xml\"/"
+#~ ">\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+#~ "<!DOCTYPE hibernate-configuration PUBLIC\n"
+#~ "        \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+#~ "        \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+#~ "\">\n"
+#~ "\n"
+#~ "<hibernate-configuration>\n"
+#~ "\n"
+#~ "    <session-factory>\n"
+#~ "\n"
+#~ "        <!-- Database connection settings -->\n"
+#~ "        <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+#~ "property>\n"
+#~ "        <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+#~ "property>\n"
+#~ "        <property name=\"connection.username\">sa</property>\n"
+#~ "        <property name=\"connection.password\"></property>\n"
+#~ "\n"
+#~ "        <!-- JDBC connection pool (use the built-in) -->\n"
+#~ "        <property name=\"connection.pool_size\">1</property>\n"
+#~ "\n"
+#~ "        <!-- SQL dialect -->\n"
+#~ "        <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Enable Hibernate's automatic session context management -->\n"
+#~ "        <property name=\"current_session_context_class\">thread</"
+#~ "property>\n"
+#~ "\n"
+#~ "        <!-- Disable the second-level cache  -->\n"
+#~ "        <property name=\"cache.provider_class\">org.hibernate.cache."
+#~ "NoCacheProvider</property>\n"
+#~ "\n"
+#~ "        <!-- Echo all executed SQL to stdout -->\n"
+#~ "        <property name=\"show_sql\">true</property>\n"
+#~ "\n"
+#~ "        <!-- Drop and re-create the database schema on startup -->\n"
+#~ "        <property name=\"hbm2ddl.auto\">update</property>\n"
+#~ "\n"
+#~ "        <mapping resource=\"org/hibernate/tutorial/domain/Event.hbm.xml\"/"
+#~ ">\n"
+#~ "\n"
+#~ "    </session-factory>\n"
+#~ "\n"
+#~ "</hibernate-configuration>]]>"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.util;\n"
+#~ "\n"
+#~ "import org.hibernate.SessionFactory;\n"
+#~ "import org.hibernate.cfg.Configuration;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory = "
+#~ "buildSessionFactory();\n"
+#~ "\n"
+#~ "    private static SessionFactory buildSessionFactory() {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            return new Configuration().configure().buildSessionFactory"
+#~ "();\n"
+#~ "        }\n"
+#~ "        catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package util;\n"
+#~ "\n"
+#~ "import org.hibernate.*;\n"
+#~ "import org.hibernate.cfg.*;\n"
+#~ "\n"
+#~ "public class HibernateUtil {\n"
+#~ "\n"
+#~ "    private static final SessionFactory sessionFactory;\n"
+#~ "\n"
+#~ "    static {\n"
+#~ "        try {\n"
+#~ "            // Create the SessionFactory from hibernate.cfg.xml\n"
+#~ "            sessionFactory = new Configuration().configure()."
+#~ "buildSessionFactory();\n"
+#~ "        } catch (Throwable ex) {\n"
+#~ "            // Make sure you log the exception, as it might be swallowed\n"
+#~ "            System.err.println(\"Initial SessionFactory creation failed."
+#~ "\" + ex);\n"
+#~ "            throw new ExceptionInInitializerError(ex);\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public static SessionFactory getSessionFactory() {\n"
+#~ "        return sessionFactory;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial;\n"
+#~ "\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.*;\n"
+#~ "\n"
+#~ "import org.hibernate.tutorial.domain.Event;\n"
+#~ "import org.hibernate.tutorial.util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "import org.hibernate.Session;\n"
+#~ "\n"
+#~ "import java.util.Date;\n"
+#~ "\n"
+#~ "import util.HibernateUtil;\n"
+#~ "\n"
+#~ "public class EventManager {\n"
+#~ "\n"
+#~ "    public static void main(String[] args) {\n"
+#~ "        EventManager mgr = new EventManager();\n"
+#~ "\n"
+#~ "        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory().close();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    private void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        session.save(theEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, "
+#~ "EVENT_ID) values (?, ?, ?)]]>"
+#~ msgstr ""
+#~ "[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values "
+#~ "(?, ?, ?)"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        if (args[0].equals(\"store\")) {\n"
+#~ "            mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "        }\n"
+#~ "        else if (args[0].equals(\"list\")) {\n"
+#~ "            List events = mgr.listEvents();\n"
+#~ "            for (int i = 0; i < events.size(); i++) {\n"
+#~ "                Event theEvent = (Event) events.get(i);\n"
+#~ "                System.out.println(\n"
+#~ "                        \"Event: \" + theEvent.getTitle() + \" Time: \" + "
+#~ "theEvent.getDate()\n"
+#~ "                );\n"
+#~ "            }\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "if (args[0].equals(\"store\")) {\n"
+#~ "    mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "}\n"
+#~ "else if (args[0].equals(\"list\")) {\n"
+#~ "    List events = mgr.listEvents();\n"
+#~ "    for (int i = 0; i &lt; events.size(); i++) {\n"
+#~ "        Event theEvent = (Event) events.get(i);\n"
+#~ "        System.out.println(\"Event: \" + theEvent.getTitle() +\n"
+#~ "                           \" Time: \" + theEvent.getDate());\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private List listEvents() {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "        List result = session.createQuery(\"from Event\").list();\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "        return result;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private List listEvents() {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    List result = session.createQuery(\"from Event\").list();\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    return result;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.domain;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "package events;\n"
+#~ "\n"
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Long id;\n"
+#~ "    private int age;\n"
+#~ "    private String firstname;\n"
+#~ "    private String lastname;\n"
+#~ "\n"
+#~ "    public Person() {}\n"
+#~ "\n"
+#~ "    // Accessor methods for all properties, private setter for 'id'\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<hibernate-mapping package=\"org.hibernate.tutorial.domain\">\n"
+#~ "\n"
+#~ "    <class name=\"Person\" table=\"PERSON\">\n"
+#~ "        <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "            <generator class=\"native\"/>\n"
+#~ "        </id>\n"
+#~ "        <property name=\"age\"/>\n"
+#~ "        <property name=\"firstname\"/>\n"
+#~ "        <property name=\"lastname\"/>\n"
+#~ "    </class>\n"
+#~ "\n"
+#~ "</hibernate-mapping>]]>"
+#~ msgstr ""
+#~ "&lt;hibernate-mapping&gt;\n"
+#~ "\n"
+#~ "    &lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "        &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "            &lt;generator class=\"native\"/&gt;\n"
+#~ "        &lt;/id&gt;\n"
+#~ "        &lt;property name=\"age\"/&gt;\n"
+#~ "        &lt;property name=\"firstname\"/&gt;\n"
+#~ "        &lt;property name=\"lastname\"/&gt;\n"
+#~ "    &lt;/class&gt;\n"
+#~ "\n"
+#~ "&lt;/hibernate-mapping&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
+#~ "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
+#~ msgstr ""
+#~ "&lt;mapping resource=\"events/Event.hbm.xml\"/&gt;\n"
+#~ "&lt;mapping resource=\"events/Person.hbm.xml\"/&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "public class Person {\n"
+#~ "\n"
+#~ "    private Set events = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Person\" table=\"PERSON\">\n"
+#~ "    <id name=\"id\" column=\"PERSON_ID\">\n"
+#~ "        <generator class=\"native\"/>\n"
+#~ "    </id>\n"
+#~ "    <property name=\"age\"/>\n"
+#~ "    <property name=\"firstname\"/>\n"
+#~ "    <property name=\"lastname\"/>\n"
+#~ "\n"
+#~ "    <set name=\"events\" table=\"PERSON_EVENT\">\n"
+#~ "        <key column=\"PERSON_ID\"/>\n"
+#~ "        <many-to-many column=\"EVENT_ID\" class=\"Event\"/>\n"
+#~ "    </set>\n"
+#~ "\n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "&lt;class name=\"events.Person\" table=\"PERSON\"&gt;\n"
+#~ "    &lt;id name=\"id\" column=\"PERSON_ID\"&gt;\n"
+#~ "        &lt;generator class=\"native\"/&gt;\n"
+#~ "    &lt;/id&gt;\n"
+#~ "    &lt;property name=\"age\"/&gt;\n"
+#~ "    &lt;property name=\"firstname\"/&gt;\n"
+#~ "    &lt;property name=\"lastname\"/&gt;\n"
+#~ "\n"
+#~ "    &lt;set name=\"events\" table=\"PERSON_EVENT\"&gt;\n"
+#~ "        &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "        &lt;many-to-many column=\"EVENT_ID\" class=\"events.Event\"/&gt;\n"
+#~ "    &lt;/set&gt;\n"
+#~ "\n"
+#~ "&lt;/class&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "    _____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | <--> | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ "   |             |      |                  |       _____________\n"
+#~ "   |   EVENTS    |      |   PERSON_EVENT   |      |             |\n"
+#~ "   |_____________|      |__________________|      |    PERSON   |\n"
+#~ "   |             |      |                  |      |_____________|\n"
+#~ "   | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             |\n"
+#~ "   |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  |\n"
+#~ "   |  TITLE      |      |__________________|      |  AGE        |\n"
+#~ "   |_____________|                                |  FIRSTNAME  |\n"
+#~ "                                                  |  LASTNAME   |\n"
+#~ "                                                  |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "        aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addPersonToEvent(Long personId, Long eventId) "
+#~ "{\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session\n"
+#~ "                .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "                .setParameter(\"pid\", personId)\n"
+#~ "                .uniqueResult(); // Eager fetch the collection so we can "
+#~ "use it detached\n"
+#~ "        Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "\n"
+#~ "        // End of first unit of work\n"
+#~ "\n"
+#~ "        aPerson.getEvents().add(anEvent); // aPerson (and its collection) "
+#~ "is detached\n"
+#~ "\n"
+#~ "        // Begin second unit of work\n"
+#~ "\n"
+#~ "        Session session2 = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session2.beginTransaction();\n"
+#~ "        session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "        session2.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addPersonToEvent(Long personId, Long eventId) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session\n"
+#~ "            .createQuery(\"select p from Person p left join fetch p."
+#~ "events where p.id = :pid\")\n"
+#~ "            .setParameter(\"pid\", personId)\n"
+#~ "            .uniqueResult(); // Eager fetch the collection so we can use "
+#~ "it detached\n"
+#~ "\n"
+#~ "    Event anEvent = (Event) session.load(Event.class, eventId);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "\n"
+#~ "    // End of first unit of work\n"
+#~ "\n"
+#~ "    aPerson.getEvents().add(anEvent); // aPerson (and its collection) is "
+#~ "detached\n"
+#~ "\n"
+#~ "    // Begin second unit of work\n"
+#~ "\n"
+#~ "    Session session2 = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session2.beginTransaction();\n"
+#~ "\n"
+#~ "    session2.update(aPerson); // Reattachment of aPerson\n"
+#~ "\n"
+#~ "    session2.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "            Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date"
+#~ "());\n"
+#~ "            Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "            mgr.addPersonToEvent(personId, eventId);\n"
+#~ "            System.out.println(\"Added person \" + personId + \" to event "
+#~ "\" + eventId);\n"
+#~ "        }]]>"
+#~ msgstr ""
+#~ "else if (args[0].equals(\"addpersontoevent\")) {\n"
+#~ "    Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+#~ "    Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+#~ "    mgr.addPersonToEvent(personId, eventId);\n"
+#~ "    System.out.println(\"Added person \" + personId + \" to event \" + "
+#~ "eventId);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getEmailAddresses() {\n"
+#~ "        return emailAddresses;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "        this.emailAddresses = emailAddresses;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set emailAddresses = new HashSet();\n"
+#~ "\n"
+#~ "public Set getEmailAddresses() {\n"
+#~ "    return emailAddresses;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setEmailAddresses(Set emailAddresses) {\n"
+#~ "    this.emailAddresses = emailAddresses;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR"
+#~ "\">\n"
+#~ "            <key column=\"PERSON_ID\"/>\n"
+#~ "            <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\"&gt;\n"
+#~ "    &lt;key column=\"PERSON_ID\"/&gt;\n"
+#~ "    &lt;element type=\"string\" column=\"EMAIL_ADDR\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[\n"
+#~ "  _____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | <--> | *EVENT_ID        |      |             |      |"
+#~ "___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | <--> | *PERSON_ID  | <--> |  "
+#~ "*PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|\n"
+#~ " ]]>"
+#~ msgstr ""
+#~ "_____________        __________________\n"
+#~ " |             |      |                  |       _____________\n"
+#~ " |   EVENTS    |      |   PERSON_EVENT   |      |             |       "
+#~ "___________________\n"
+#~ " |_____________|      |__________________|      |    PERSON   |      "
+#~ "|                   |\n"
+#~ " |             |      |                  |      |_____________|      | "
+#~ "PERSON_EMAIL_ADDR |\n"
+#~ " | *EVENT_ID   | &lt;--&gt; | *EVENT_ID        |      |             "
+#~ "|      |___________________|\n"
+#~ " |  EVENT_DATE |      | *PERSON_ID       | &lt;--&gt; | *PERSON_ID  | "
+#~ "&lt;--&gt; |  *PERSON_ID       |\n"
+#~ " |  TITLE      |      |__________________|      |  AGE        |      |  "
+#~ "*EMAIL_ADDR      |\n"
+#~ " |_____________|                                |  FIRSTNAME  |      |"
+#~ "___________________|\n"
+#~ "                                                |  LASTNAME   |\n"
+#~ "                                                |_____________|"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void addEmailToPerson(Long personId, String "
+#~ "emailAddress) {\n"
+#~ "        Session session = HibernateUtil.getSessionFactory()."
+#~ "getCurrentSession();\n"
+#~ "        session.beginTransaction();\n"
+#~ "\n"
+#~ "        Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "        // adding to the emailAddress collection might trigger a lazy "
+#~ "load of the collection\n"
+#~ "        aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "        session.getTransaction().commit();\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void addEmailToPerson(Long personId, String emailAddress) {\n"
+#~ "\n"
+#~ "    Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+#~ "();\n"
+#~ "    session.beginTransaction();\n"
+#~ "\n"
+#~ "    Person aPerson = (Person) session.load(Person.class, personId);\n"
+#~ "\n"
+#~ "    // The getEmailAddresses() might trigger a lazy load of the "
+#~ "collection\n"
+#~ "    aPerson.getEmailAddresses().add(emailAddress);\n"
+#~ "\n"
+#~ "    session.getTransaction().commit();\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "    public Set getParticipants() {\n"
+#~ "        return participants;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void setParticipants(Set participants) {\n"
+#~ "        this.participants = participants;\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private Set participants = new HashSet();\n"
+#~ "\n"
+#~ "public Set getParticipants() {\n"
+#~ "    return participants;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void setParticipants(Set participants) {\n"
+#~ "    this.participants = participants;\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        <set name=\"participants\" table=\"PERSON_EVENT\" "
+#~ "inverse=\"true\">\n"
+#~ "            <key column=\"EVENT_ID\"/>\n"
+#~ "            <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
+#~ "        </set>]]>"
+#~ msgstr ""
+#~ "&lt;set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true"
+#~ "\"&gt;\n"
+#~ "    &lt;key column=\"EVENT_ID\"/&gt;\n"
+#~ "    &lt;many-to-many column=\"PERSON_ID\" class=\"events.Person\"/&gt;\n"
+#~ "&lt;/set&gt;"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected Set getEvents() {\n"
+#~ "        return events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    protected void setEvents(Set events) {\n"
+#~ "        this.events = events;\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void addToEvent(Event event) {\n"
+#~ "        this.getEvents().add(event);\n"
+#~ "        event.getParticipants().add(this);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "    public void removeFromEvent(Event event) {\n"
+#~ "        this.getEvents().remove(event);\n"
+#~ "        event.getParticipants().remove(this);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected Set getEvents() {\n"
+#~ "    return events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "protected void setEvents(Set events) {\n"
+#~ "    this.events = events;\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void addToEvent(Event event) {\n"
+#~ "    this.getEvents().add(event);\n"
+#~ "    event.getParticipants().add(this);\n"
+#~ "}\n"
+#~ "\n"
+#~ "public void removeFromEvent(Event event) {\n"
+#~ "    this.getEvents().remove(event);\n"
+#~ "    event.getParticipants().remove(this);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[package org.hibernate.tutorial.web;\n"
+#~ "\n"
+#~ "// Imports\n"
+#~ "\n"
+#~ "public class EventManagerServlet extends HttpServlet {\n"
+#~ "\n"
+#~ "    protected void doGet(\n"
+#~ "            HttpServletRequest request,\n"
+#~ "            HttpServletResponse response) throws ServletException, "
+#~ "IOException {\n"
+#~ "\n"
+#~ "        SimpleDateFormat dateFormatter = new SimpleDateFormat( \"dd.MM."
+#~ "yyyy\" );\n"
+#~ "\n"
+#~ "        try {\n"
+#~ "            // Begin unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "beginTransaction();\n"
+#~ "\n"
+#~ "            // Process request and render page...\n"
+#~ "\n"
+#~ "            // End unit of work\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().commit();\n"
+#~ "        }\n"
+#~ "        catch (Exception ex) {\n"
+#~ "            HibernateUtil.getSessionFactory().getCurrentSession()."
+#~ "getTransaction().rollback();\n"
+#~ "            if ( ServletException.class.isInstance( ex ) ) {\n"
+#~ "                throw ( ServletException ) ex;\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                throw new ServletException( ex );\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}]]>"
+#~ msgstr ""
+#~ "protected void doGet(HttpServletRequest request,\n"
+#~ "                     HttpServletResponse response)\n"
+#~ "        throws ServletException, IOException {\n"
+#~ "\n"
+#~ "    SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy"
+#~ "\");\n"
+#~ "\n"
+#~ "    try {\n"
+#~ "        // Begin unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().beginTransaction();\n"
+#~ "\n"
+#~ "        // Process request and render page...\n"
+#~ "\n"
+#~ "        // End unit of work\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().commit();\n"
+#~ "\n"
+#~ "    } catch (Exception ex) {\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().getTransaction().rollback();\n"
+#~ "        throw new ServletException(ex);\n"
+#~ "    }\n"
+#~ "\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[        // Write HTML header\n"
+#~ "        PrintWriter out = response.getWriter();\n"
+#~ "        out.println(\"<html><head><title>Event Manager</title></"
+#~ "head><body>\");\n"
+#~ "\n"
+#~ "        // Handle actions\n"
+#~ "        if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "            String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "            String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "            if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "                out.println(\"<b><i>Please enter event title and date.</"
+#~ "i></b>\");\n"
+#~ "            }\n"
+#~ "            else {\n"
+#~ "                createAndStoreEvent(eventTitle, dateFormatter.parse"
+#~ "(eventDate));\n"
+#~ "                out.println(\"<b><i>Added event.</i></b>\");\n"
+#~ "            }\n"
+#~ "        }\n"
+#~ "\n"
+#~ "        // Print page\n"
+#~ "       printEventForm(out);\n"
+#~ "       listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "       // Write HTML footer\n"
+#~ "       out.println(\"</body></html>\");\n"
+#~ "       out.flush();\n"
+#~ "       out.close();]]>"
+#~ msgstr ""
+#~ "// Write HTML header\n"
+#~ "PrintWriter out = response.getWriter();\n"
+#~ "out.println(\"&lt;html&gt;&lt;head&gt;&lt;title&gt;Event Manager&lt;/"
+#~ "title&gt;&lt;/head&gt;&lt;body&gt;\");\n"
+#~ "\n"
+#~ "// Handle actions\n"
+#~ "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+#~ "\n"
+#~ "    String eventTitle = request.getParameter(\"eventTitle\");\n"
+#~ "    String eventDate = request.getParameter(\"eventDate\");\n"
+#~ "\n"
+#~ "    if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Please enter event title and date."
+#~ "&lt;/i&gt;&lt;/b&gt;\");\n"
+#~ "    } else {\n"
+#~ "        createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
+#~ "        out.println(\"&lt;b&gt;&lt;i&gt;Added event.&lt;/i&gt;&lt;/b&gt;"
+#~ "\");\n"
+#~ "    }\n"
+#~ "}\n"
+#~ "\n"
+#~ "// Print page\n"
+#~ "printEventForm(out);\n"
+#~ "listEvents(out, dateFormatter);\n"
+#~ "\n"
+#~ "// Write HTML footer\n"
+#~ "out.println(\"&lt;/body&gt;&lt;/html&gt;\");\n"
+#~ "out.flush();\n"
+#~ "out.close();"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void printEventForm(PrintWriter out) {\n"
+#~ "        out.println(\"<h2>Add new event:</h2>\");\n"
+#~ "        out.println(\"<form>\");\n"
+#~ "        out.println(\"Title: <input name='eventTitle' length='50'/><br/>"
+#~ "\");\n"
+#~ "        out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' "
+#~ "length='10'/><br/>\");\n"
+#~ "        out.println(\"<input type='submit' name='action' value='store'/>"
+#~ "\");\n"
+#~ "        out.println(\"</form>\");\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void printEventForm(PrintWriter out) {\n"
+#~ "    out.println(\"&lt;h2&gt;Add new event:&lt;/h2&gt;\");\n"
+#~ "    out.println(\"&lt;form&gt;\");\n"
+#~ "    out.println(\"Title: &lt;input name='eventTitle' length='50'/&gt;&lt;"
+#~ "br/&gt;\");\n"
+#~ "    out.println(\"Date (e.g. 24.12.2009): &lt;input name='eventDate' "
+#~ "length='10'/&gt;&lt;br/&gt;\");\n"
+#~ "    out.println(\"&lt;input type='submit' name='action' value='store'/&gt;"
+#~ "\");\n"
+#~ "    out.println(\"&lt;/form&gt;\");\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    private void listEvents(PrintWriter out, SimpleDateFormat "
+#~ "dateFormatter) {\n"
+#~ "\n"
+#~ "        List result = HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().createCriteria(Event.class).list();\n"
+#~ "        if (result.size() > 0) {\n"
+#~ "            out.println(\"<h2>Events in database:</h2>\");\n"
+#~ "            out.println(\"<table border='1'>\");\n"
+#~ "            out.println(\"<tr>\");\n"
+#~ "            out.println(\"<th>Event title</th>\");\n"
+#~ "            out.println(\"<th>Event date</th>\");\n"
+#~ "            out.println(\"</tr>\");\n"
+#~ "            Iterator it = result.iterator();\n"
+#~ "            while (it.hasNext()) {\n"
+#~ "                Event event = (Event) it.next();\n"
+#~ "                out.println(\"<tr>\");\n"
+#~ "                out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
+#~ "                out.println(\"<td>\" + dateFormatter.format(event.getDate"
+#~ "()) + \"</td>\");\n"
+#~ "                out.println(\"</tr>\");\n"
+#~ "            }\n"
+#~ "            out.println(\"</table>\");\n"
+#~ "        }\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) "
+#~ "{\n"
+#~ "\n"
+#~ "    List result = HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().createCriteria(Event.class).list"
+#~ "();\n"
+#~ "    if (result.size() &gt; 0) {\n"
+#~ "        out.println(\"&lt;h2&gt;Events in database:&lt;/h2&gt;\");\n"
+#~ "        out.println(\"&lt;table border='1'&gt;\");\n"
+#~ "        out.println(\"&lt;tr&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event title&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;th&gt;Event date&lt;/th&gt;\");\n"
+#~ "        out.println(\"&lt;/tr&gt;\");\n"
+#~ "        for (Iterator it = result.iterator(); it.hasNext();) {\n"
+#~ "            Event event = (Event) it.next();\n"
+#~ "            out.println(\"&lt;tr&gt;\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + event.getTitle() + \"&lt;/td&gt;"
+#~ "\");\n"
+#~ "            out.println(\"&lt;td&gt;\" + dateFormatter.format(event."
+#~ "getDate()) + \"&lt;/td&gt;\");\n"
+#~ "            out.println(\"&lt;/tr&gt;\");\n"
+#~ "        }\n"
+#~ "        out.println(\"&lt;/table&gt;\");\n"
+#~ "    }\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[    protected void createAndStoreEvent(String title, Date "
+#~ "theDate) {\n"
+#~ "        Event theEvent = new Event();\n"
+#~ "        theEvent.setTitle(title);\n"
+#~ "        theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "        HibernateUtil.getSessionFactory()\n"
+#~ "                .getCurrentSession().save(theEvent);\n"
+#~ "    }]]>"
+#~ msgstr ""
+#~ "protected void createAndStoreEvent(String title, Date theDate) {\n"
+#~ "    Event theEvent = new Event();\n"
+#~ "    theEvent.setTitle(title);\n"
+#~ "    theEvent.setDate(theDate);\n"
+#~ "\n"
+#~ "    HibernateUtil.getSessionFactory()\n"
+#~ "                    .getCurrentSession().save(theEvent);\n"
+#~ "}"
+
+#, fuzzy
+#~ msgid ""
+#~ "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+#~ "<web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun."
+#~ "com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
+#~ "\n"
+#~ "    <servlet>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <servlet-class>org.hibernate.tutorial.web.EventManagerServlet</"
+#~ "servlet-class>\n"
+#~ "    </servlet>\n"
+#~ "\n"
+#~ "    <servlet-mapping>\n"
+#~ "        <servlet-name>Event Manager</servlet-name>\n"
+#~ "        <url-pattern>/eventmanager</url-pattern>\n"
+#~ "    </servlet-mapping>\n"
+#~ "</web-app>]]>"
+#~ msgstr ""
+#~ "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+#~ "&lt;web-app version=\"2.4\"\n"
+#~ "    xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+#~ "    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+#~ "    xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\n"
+#~ "        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\"&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;servlet-class&gt;events.EventManagerServlet&lt;/servlet-"
+#~ "class&gt;\n"
+#~ "    &lt;/servlet&gt;\n"
+#~ "\n"
+#~ "    &lt;servlet-mapping&gt;\n"
+#~ "        &lt;servlet-name&gt;Event Manager&lt;/servlet-name&gt;\n"
+#~ "        &lt;url-pattern&gt;/eventmanager&lt;/url-pattern&gt;\n"
+#~ "    &lt;/servlet-mapping&gt;\n"
+#~ "&lt;/web-app&gt;"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/xml.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/xml.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/content/xml.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,441 @@
+# translation of Collection_Mapping.po to
+# Xi Huang <xhuang at redhat.com>, 2006.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Collection_Mapping\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-10T07:25:35\n"
+"PO-Revision-Date: 2010-03-16 10:02+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#, no-c-format
+msgid "XML Mapping"
+msgstr "XML 映射"
+
+#. Tag: para
+#, no-c-format
+msgid "<emphasis> XML Mapping is an experimental feature in Hibernate 3.0 and is currently under active development. </emphasis>"
+msgstr "<emphasis>注意 XML 映射只是 Hibernate 3.0 的一个实验性的特性。这一特性仍在积极开发中。</emphasis> "
+
+#. Tag: title
+#, no-c-format
+msgid "Working with XML data"
+msgstr "用 XML 数据进行工作"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate allows you to work with persistent XML data in much the same way you work with persistent POJOs. A parsed XML tree can be thought of as another way of representing the relational data at the object level, instead of POJOs."
+msgstr "Hibernate 使得你可以用 XML 数据来进行工作,恰如你用持久化的 POJO 进行工作那样。解析过的 XML 树 可以被认为是代替 POJO 的另外一种在对象层面上表示关系型数据的途径。"
+
+#. Tag: para
+#, no-c-format
+msgid "Hibernate supports dom4j as API for manipulating XML trees. You can write queries that retrieve dom4j trees from the database and have any modification you make to the tree automatically synchronized to the database. You can even take an XML document, parse it using dom4j, and write it to the database with any of Hibernate's basic operations: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not yet supported)."
+msgstr "Hibernate 支持采用 dom4j 作为操作 XML 树的 API。你可以写一些查询从数据库中检索出 dom4j 树,随后你对这颗树做的任何修改都将自动同步回数据库。你甚至可以用 dom4j 解析 一篇 XML 文档,然后使用 Hibernate 的任一基本操作将它写入数据库:<literal>persist(),saveOrUpdate(),merge(),delete(),replicate()</literal> (合并操作merge()目前还不支持)。"
+
+#. Tag: para
+#, no-c-format
+msgid "This feature has many applications including data import/export, externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr "这一特性可以应用在很多场合,包括数据导入导出,通过 JMS 或 SOAP 具体化实体数据以及 基于 XSLT 的报表。"
+
+#. Tag: para
+#, no-c-format
+msgid "A single mapping can be used to simultaneously map properties of a class and nodes of an XML document to the database, or, if there is no class to map, it can be used to map just the XML."
+msgstr "一个单一的映射就可以将类的属性和 XML 文档的节点同时映射到数据库。如果不需要映射类,它也可以用来只映射 XML 文档。 "
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying XML and class mapping together"
+msgstr "指定同时映射 XML 和类"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example of mapping a POJO and XML simultaneously:"
+msgstr "这是一个同时映射 POJO 和 XML 的例子:"
+
+#. Tag: title
+#, no-c-format
+msgid "Specifying only an XML mapping"
+msgstr "只定义 XML 映射"
+
+#. Tag: para
+#, no-c-format
+msgid "Here is an example where there is no POJO class:"
+msgstr "这是一个不映射 POJO 的例子:"
+
+#. Tag: para
+#, no-c-format
+msgid "This mapping allows you to access the data as a dom4j tree, or as a graph of property name/value pairs or java <literal>Map</literal>s. The property names are purely logical constructs that can be referred to in HQL queries."
+msgstr "这个映射使得你既可以把数据作为一棵 dom4j 树那样访问,又可以作为由属性键值对(java <literal>Map</literal>)组成的图那样访问。属性名字纯粹是逻辑上的结构,你可以在 HQL 查询中引用它。"
+
+#. Tag: title
+#, no-c-format
+msgid "XML mapping metadata"
+msgstr "XML 映射元数据"
+
+#. Tag: para
+#, no-c-format
+msgid "A range of Hibernate mapping elements accept the <literal>node</literal> attribute. This lets you specify the name of an XML attribute or element that holds the property or entity data. The format of the <literal>node</literal> attribute must be one of the following:"
+msgstr "许多 Hibernate 映射元素具有 <literal>node</literal> 属性。这使你可以指定用来保存 属性或实体数据的 XML 属性或元素。<literal>node</literal> 属性必须是下列格式之一: "
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name\"</literal>: map to the named XML element"
+msgstr "<literal>\"element-name\"</literal>:映射为指定的 XML 元素"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"@attribute-name\"</literal>: map to the named XML attribute"
+msgstr "<literal>\"@attribute-name\"</literal>:映射为指定的 XML 属性"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\".\"</literal>: map to the parent element"
+msgstr "<literal>\".\"</literal>:映射为父元素"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>\"element-name/@attribute-name\"</literal>: map to the named attribute of the named element"
+msgstr "<literal>\"element-name/@attribute-name\"</literal>:映射为指定元素的指定属性"
+
+#. Tag: para
+#, no-c-format
+msgid "For collections and single valued associations, there is an additional <literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</literal>, the default, the XML tree for the associated entity (or collection of value type) will be embedded directly in the XML tree for the entity that owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, then only the referenced identifier value will appear in the XML for single point associations and collections will not appear at all."
+msgstr "对于集合和单值的关联,有一个额外的 <literal>embed-xml</literal> 属性可用。这个属性的缺省值是真(<literal>embed-xml=\"true\"</literal>)。如果 <literal>embed-xml=\"true\"</literal>,则对应于被关联实体或值类型的集合的XML树将直接嵌入拥有这些关联的实体的 XML 树中。否则,如果 <literal>embed-xml=\"false\"</literal>,那么对于单值的关联,仅被引用的实体的标识符出现在 XML 树中(被引用实体本身不出现),而集合则根本不出现。"
+
+#. Tag: para
+#, no-c-format
+msgid "Do not leave <literal>embed-xml=\"true\"</literal> for too many associations, since XML does not deal well with circularity."
+msgstr "你应该小心,不要让太多关联的 embed-xml 属性为真(<literal>embed-xml=\"true\"</literal>),因为 XML 不能很好地处理循环引用。"
+
+#. Tag: para
+#, no-c-format
+msgid "In this case, the collection of account ids is embedded, but not the actual account data. The following HQL query:"
+msgstr "在这个例子中,我们决定嵌入帐目号码(account id)的集合,但不嵌入实际的帐目数据。下面的 HQL 查询: "
+
+#. Tag: para
+#, no-c-format
+msgid "would return datasets such as this:"
+msgstr "返回的数据集将是这样: "
+
+#. Tag: para
+#, no-c-format
+msgid "If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-many&gt;</literal> mapping, the data might look more like this:"
+msgstr "如果你把一对多映射 <literal>&lt;one-to-many&gt;</literal> 的 embed-xml 属性置为真(<literal>embed-xml=\"true\"</literal>),则数据看上去就像这样:"
+
+#. Tag: title
+#, no-c-format
+msgid "Manipulating XML data"
+msgstr "操作 XML 数据"
+
+#. Tag: para
+#, no-c-format
+msgid "You can also re-read and update XML documents in the application. You can do this by obtaining a dom4j session:"
+msgstr "你也可以重新读入和更新应用程序中的 XML 文档。通过获取一个 dom4j 会话可以做到这一点:"
+
+#. Tag: para
+#, no-c-format
+msgid "When implementing XML-based data import/export, it is useful to combine this feature with Hibernate's <literal>replicate()</literal> operation."
+msgstr "将这一特色与 Hibernate 的 <literal>replicate()</literal> 操作结合起来对于实现的基于 XML 的数据导入/导出将非常有用。"
+
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"accountId\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customer\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgid ""
+#~ "<![CDATA[<class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class entity-name=\"Account\" \n"
+#~ "        table=\"ACCOUNTS\" \n"
+#~ "        node=\"account\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"ACCOUNT_ID\" \n"
+#~ "            node=\"@id\" \n"
+#~ "            type=\"string\"/>\n"
+#~ "            \n"
+#~ "    <many-to-one name=\"customerId\" \n"
+#~ "            column=\"CUSTOMER_ID\" \n"
+#~ "            node=\"customer/@id\" \n"
+#~ "            embed-xml=\"false\" \n"
+#~ "            entity-name=\"Customer\"/>\n"
+#~ "            \n"
+#~ "    <property name=\"balance\" \n"
+#~ "            column=\"BALANCE\" \n"
+#~ "            node=\"balance\" \n"
+#~ "            type=\"big_decimal\"/>\n"
+#~ "            \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgid ""
+#~ "<![CDATA[<class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\">\n"
+#~ "        <key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/>\n"
+#~ "        <map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/>\n"
+#~ "        <one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/>\n"
+#~ "    </map>\n"
+#~ "    \n"
+#~ "    <component name=\"name\" \n"
+#~ "            node=\"name\">\n"
+#~ "        <property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/>\n"
+#~ "        <property name=\"initial\" \n"
+#~ "                node=\"initial\"/>\n"
+#~ "        <property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<class name=\"Customer\" \n"
+#~ "        table=\"CUSTOMER\" \n"
+#~ "        node=\"customer\">\n"
+#~ "        \n"
+#~ "    <id name=\"id\" \n"
+#~ "            column=\"CUST_ID\" \n"
+#~ "            node=\"@id\"/>\n"
+#~ "            \n"
+#~ "    <map name=\"accounts\" \n"
+#~ "            node=\".\" \n"
+#~ "            embed-xml=\"true\">\n"
+#~ "        <key column=\"CUSTOMER_ID\" \n"
+#~ "                not-null=\"true\"/>\n"
+#~ "        <map-key column=\"SHORT_DESC\" \n"
+#~ "                node=\"@short-desc\" \n"
+#~ "                type=\"string\"/>\n"
+#~ "        <one-to-many entity-name=\"Account\"\n"
+#~ "                embed-xml=\"false\" \n"
+#~ "                node=\"account\"/>\n"
+#~ "    </map>\n"
+#~ "    \n"
+#~ "    <component name=\"name\" \n"
+#~ "            node=\"name\">\n"
+#~ "        <property name=\"firstName\" \n"
+#~ "                node=\"first-name\"/>\n"
+#~ "        <property name=\"initial\" \n"
+#~ "                node=\"initial\"/>\n"
+#~ "        <property name=\"lastName\" \n"
+#~ "                node=\"last-name\"/>\n"
+#~ "    </component>\n"
+#~ "    \n"
+#~ "    ...\n"
+#~ "    \n"
+#~ "</class>]]>"
+#~ msgid ""
+#~ "<![CDATA[from Customer c left join fetch c.accounts where c.lastName "
+#~ "like :lastName]]>"
+#~ msgstr ""
+#~ "<![CDATA[from Customer c left join fetch c.accounts where c.lastName "
+#~ "like :lastName]]>"
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account short-desc=\"Savings\">987632567</account>\n"
+#~ "    <account short-desc=\"Credit Card\">985612323</account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account short-desc=\"Savings\">987632567</account>\n"
+#~ "    <account short-desc=\"Credit Card\">985612323</account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgid ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account id=\"987632567\" short-desc=\"Savings\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>100.29</balance>\n"
+#~ "    </account>\n"
+#~ "    <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>-2370.34</balance>\n"
+#~ "    </account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgstr ""
+#~ "<![CDATA[<customer id=\"123456789\">\n"
+#~ "    <account id=\"987632567\" short-desc=\"Savings\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>100.29</balance>\n"
+#~ "    </account>\n"
+#~ "    <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+#~ "        <customer id=\"123456789\"/>\n"
+#~ "        <balance>-2370.34</balance>\n"
+#~ "    </account>\n"
+#~ "    <name>\n"
+#~ "        <first-name>Gavin</first-name>\n"
+#~ "        <initial>A</initial>\n"
+#~ "        <last-name>King</last-name>\n"
+#~ "    </name>\n"
+#~ "    ...\n"
+#~ "</customer>]]>"
+#~ msgid ""
+#~ "<![CDATA[Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Document doc = ....;\n"
+#~ "       \n"
+#~ "Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "List results = dom4jSession\n"
+#~ "    .createQuery(\"from Customer c left join fetch c.accounts where c."
+#~ "lastName like :lastName\")\n"
+#~ "    .list();\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    //add the customer data to the XML document\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    doc.add(customer);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgid ""
+#~ "<![CDATA[Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+#~ msgstr ""
+#~ "<![CDATA[Session session = factory.openSession();\n"
+#~ "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+#~ "Transaction tx = session.beginTransaction();\n"
+#~ "\n"
+#~ "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+#~ "for ( int i=0; i<results.size(); i++ ) {\n"
+#~ "    Element customer = (Element) results.get(i);\n"
+#~ "    //change the customer name in the XML and database\n"
+#~ "    Element name = customer.element(\"name\");\n"
+#~ "    name.element(\"first-name\").setText(firstName);\n"
+#~ "    name.element(\"initial\").setText(initial);\n"
+#~ "    name.element(\"last-name\").setText(lastName);\n"
+#~ "}\n"
+#~ "\n"
+#~ "tx.commit();\n"
+#~ "session.close();]]>"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Conventions.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Conventions.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Conventions.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,214 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-16 11:39+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Document Conventions"
+msgstr "文档规则"
+
+#. Tag: para
+#, no-c-format
+msgid "This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information."
+msgstr "本手册使用了几种规则来突出某些文字和短语以及某些信息。"
+
+#. Tag: para
+#, no-c-format
+msgid "In PDF and paper editions, this manual uses typefaces drawn from the <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default."
+msgstr "在 PDF 版本里,本手册使用 <ulink url=\"https://fedorahosted.org/liberation-fonts/\">Liberation Fonts</ulink> 集里抽取的 typefaces。如果你安装了 Liberation Fonts 集,它也会用在 HTML 版本里。如果没有安装,则会使用其他相等的 typefaces。请注意,红帽企业版 Linux 5 和之后的版本缺省都包含了 Liberation Fonts 集。"
+
+#. Tag: title
+#, no-c-format
+msgid "Typographic Conventions"
+msgstr "印刷规则"
+
+#. Tag: para
+#, no-c-format
+msgid "Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows."
+msgstr "我们使用了四种印刷规则来突出特殊的文字和短语。下面是这些规则以及其适用的情况。"
+
+#. Tag: para
+#, no-c-format
+msgid "<literal>Mono-spaced Bold</literal>"
+msgstr "<literal>Mono-spaced Bold</literal>"
+
+#. Tag: para
+#, no-c-format
+msgid "Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:"
+msgstr "用来高亮显示系统输入,包括 shell 命令、文件名和路径。它也用于高亮显示键和键组合。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command."
+msgstr "要查看当前工作目录里的 <filename>my_next_bestselling_novel</filename> 的内容,请在 shell 提示符下输入 <command>cat my_next_bestselling_novel</command> 并按<keycap>Enter</keycap> 来执行命令。"
+
+#. Tag: para
+#, no-c-format
+msgid "The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context."
+msgstr "上面包括了一个文件名、一个 shell 命令和键,它们都以 mono-spaced bold 出现并和上下文区分。"
+
+#. Tag: para
+#, no-c-format
+msgid "Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:"
+msgstr "键组合可以通过连字符和键来区分。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycap>Enter</keycap> to execute the command."
+msgstr "按 <keycap>Enter</keycap> 来执行这个命令。"
+
+#. Tag: para
+#, no-c-format
+msgid "Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session."
+msgstr "按 <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> 切换至第一个虚拟终端。按 <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> 返回到 X-Windows 会话。"
+
+#. Tag: para
+#, no-c-format
+msgid "The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously)."
+msgstr "第一段高亮显示了特殊的键。第二段高亮显示了两个键组合(每个都由三个同时按住的键构成)。"
+
+#. Tag: para
+#, no-c-format
+msgid "If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:"
+msgstr "在源码中提及的类名、方法、函数、变量和返回值都将以 <literal>mono-spaced bold</literal> 出现。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions."
+msgstr "文件相关的类包括用于文件系统的 <classname>filesystem</classname>、用于文件的 <classname>file</classname> 和用于目录的 <classname>dir</classname>。每个类都有自己的一套权限。"
+
+#. Tag: para
+#, no-c-format
+msgid "<application>Proportional Bold</application>"
+msgstr "<application>Proportional Bold</application>"
+
+#. Tag: para
+#, no-c-format
+msgid "This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:"
+msgstr "它表示系统里的文字或短语,包括程序名、对话框文本、标签按钮、复选框和单选框、菜单和子菜单标题。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand)."
+msgstr "从主菜单选择 <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem></menuchoice> 来启动 <application>Mouse Preferences</application>。在 <guilabel>Buttons</guilabel> 标签页里,点击 <guilabel>Left-handed mouse</guilabel> 复选框并点击 <guibutton>Close</guibutton> 来把鼠标主按钮从左切换到右(适合于习惯用左手的人)。"
+
+#. Tag: para
+#, no-c-format
+msgid "To insert a special character into a <application>gedit</application> file, choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice> from the main menu bar. Next, choose <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice> from the <application>gedit</application> menu bar."
+msgstr "要在 <application>gedit</application> 文件里插入特殊字符,从主菜单里选择 <menuchoice><guimenu>Applications</guimenu><guisubmenu>Accessories</guisubmenu><guimenuitem>Character Map</guimenuitem></menuchoice>。然后,从 <application>Character Map</application> 菜单条里选择 <menuchoice><guimenu>Search</guimenu><guimenuitem>Find&hellip;</guimenuitem></menuchoice>,在 <guilabel>Search</guilabel>字段里输入字符并点击 <guibutton>Next</guibutton>。你要搜索的字符会在 <guilabel>Character Table</guilabel> 里高亮显示。双击这个高亮显示的字符并放入 <guilabel>Text to copy</guilabel> 字段里,然后点击 <guibutton>Copy</guibutton> 按钮。现在切换回你的文档并从 <application>gedit</application> 菜单条里选择<menuchoice><guimenu>Edit</guimenu><guimenuitem>Paste</guimenuitem></menuchoice>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context."
+msgstr "上面的内容包括了程序名称、系统级的菜单名和条目、程序专有的菜单名、图形界面里的按钮和文本,它们都以 proportional bold 出现并和其他内容区分。"
+
+#. Tag: para
+#, no-c-format
+msgid "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>"
+msgstr "<command><replaceable>Mono-spaced Bold Italic</replaceable></command> 或 <application><replaceable>Proportional Bold Italic</replaceable></application>"
+
+#. Tag: para
+#, no-c-format
+msgid "Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:"
+msgstr "无论是 mono-spaced bold 还是 proportional bold,斜体都表示可替换的或可变的文本。斜体表示非输入的文本,它根据周围的内容而变化。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>."
+msgstr "要用 ssh 连接到远程机器,在 shell 提示下输入 <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command>。如果这个远程主机是 <filename>example.com</filename> 且你的用户名是 john,请输入 <command>ssh john at example.com</command>。"
+
+#. Tag: para
+#, no-c-format
+msgid "The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>."
+msgstr "<command>mount -o remount <replaceable>file-system</replaceable></command> 命令重新挂载文件系统。例如,要重新挂载 <filename>/home</filename>,命令是 <command>mount -o remount /home</command>。"
+
+#. Tag: para
+#, no-c-format
+msgid "To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>."
+msgstr "要查看当前安装的软件包的版本,你可以使用 <command>rpm -q <replaceable>package</replaceable></command> 命令。它将返回这样的结果集:<command><replaceable>package-version-release</replaceable></command>。"
+
+#. Tag: para
+#, no-c-format
+msgid "Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system."
+msgstr "请注意上面字体为粗斜体的文字 &mdash; username, domain.name, file-system, package, version 和 release。无论是你输入的命令还是系统显示的文本,每个文字都是一个占位符。"
+
+#. Tag: para
+#, no-c-format
+msgid "Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:"
+msgstr "除了表示标题的标准用法之外,斜体表示新的和重要的术语的第一次使用。例如:"
+
+#. Tag: para
+#, no-c-format
+msgid "Publican is a <firstterm>DocBook</firstterm> publishing system."
+msgstr "Publican 是一个基于 <firstterm>DocBook</firstterm> 的发布系统。"
+
+#. Tag: title
+#, no-c-format
+msgid "Pull-quote Conventions"
+msgstr "副标题规则"
+
+#. Tag: para
+#, no-c-format
+msgid "Terminal output and source code listings are set off visually from the surrounding text."
+msgstr "终端输出和源代码列表由周围的文本来烘托。"
+
+#. Tag: para
+#, no-c-format
+msgid "Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:"
+msgstr "发送到终端的输出在 <computeroutput>mono-spaced roman</computeroutput> 设置且以这种形式出现:"
+
+#. Tag: para
+#, no-c-format
+msgid "Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:"
+msgstr "源码列表也在 <computeroutput>mono-spaced roman</computeroutput> 里设置但添加了如下的语法高亮显示:"
+
+#. Tag: title
+#, no-c-format
+msgid "Notes and Warnings"
+msgstr "注意和警告"
+
+#. Tag: para
+#, no-c-format
+msgid "Finally, we use three visual styles to draw attention to information that might otherwise be overlooked."
+msgstr "最后,我们使用三章可视风格来引起对可能被忽视的信息的注意。"
+
+#. Tag: title
+#, no-c-format
+msgid "Note"
+msgstr "注意"
+
+#. Tag: para
+#, no-c-format
+msgid "Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier."
+msgstr "注意是完成手中任务的提示、快捷方式或其他方法。忽略”注意“不会产生负面影响,但你可能会错失使你受益的技巧。"
+
+#. Tag: title
+#, no-c-format
+msgid "Important"
+msgstr "重要信息"
+
+#. Tag: para
+#, no-c-format
+msgid "Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration."
+msgstr "重要信息显示容易被错过的信息:只适用于当前会话的配置改动、或需要重启来生效的服务。忽略标记为”重要信息“的对话框不会导致数据丢失但会引发问题。"
+
+#. Tag: title
+#, no-c-format
+msgid "Warning"
+msgstr "警告"
+
+#. Tag: para
+#, no-c-format
+msgid "Warnings should not be ignored. Ignoring warnings will most likely cause data loss."
+msgstr "警告不应该被忽略。忽略警告将导致数据丢失。"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Feedback.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Feedback.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Feedback.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,24 @@
+#
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-03-12T00:03:48\n"
+"PO-Revision-Date: 2010-03-16 10:17+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "We Need Feedback!"
+msgstr "我们需要你的反馈!"
+
+#. Tag: para
+#, no-c-format
+msgid "You should over ride this by creating your own local Feedback.xml file."
+msgstr "用自己的 Feedback.xml 文件覆盖本段内容。"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Legal_Notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Legal_Notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/fallback_content/Legal_Notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,19 @@
+# 
+# AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 0\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-16 10:18+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: None\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)."
+msgstr "Copyright <trademark class=\"copyright\"></trademark> &YEAR; &HOLDER; 本文档只可以按照 GNU Free Documentation License (GFDL), V1.2 或更新协议进行分发(GNU 的最新版本请参考 <ulink url=\"http://www.gnu.org/licenses/fdl.txt\">http://www.gnu.org/licenses/fdl.txt</ulink>)。"
+

Added: core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/legal_notice.po
===================================================================
--- core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/legal_notice.po	                        (rev 0)
+++ core/branches/gradle2/hibernate-release/src/main/docbook/zh-CN/legal_notice.po	2010-06-10 16:31:26 UTC (rev 19714)
@@ -0,0 +1,52 @@
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2010-02-04T04:51:23\n"
+"PO-Revision-Date: 2010-03-15 08:45+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#, no-c-format
+msgid "Legal Notice"
+msgstr "Legal Notice"
+
+#. Tag: para
+#, no-c-format
+msgid "<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, <state>NC</state><postcode>27709</postcode><country>USA</country> </address>"
+msgstr "<address> <street>1801 Varsity Drive</street> <city>Raleigh</city>, <state>NC</state><postcode>27606-2072</postcode><country>USA</country> <phone>Phone: +1 919 754 3700</phone> <phone>Phone: 888 733 4281</phone> <fax>Fax: +1 919 754 3701</fax> <pob>PO Box 13588</pob><city>Research Triangle Park</city>, <state>NC</state><postcode>27709</postcode><country>USA</country> </address> "
+
+#. Tag: para
+#, no-c-format
+msgid "Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General Public License</ulink>, as published by the Free Software Foundation."
+msgstr "Copyright <trademark class=\"copyright\"></trademark> 2007 by Red Hat, Inc. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU <ulink url=\"http://www.gnu.org/licenses/lgpl-2.1.html\">Lesser General Public License</ulink>, as published by the Free Software Foundation."
+
+#. Tag: para
+#, no-c-format
+msgid "Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red Hat, Inc. in the United States and other countries."
+msgstr "Red Hat and the Red Hat \"Shadow Man\" logo are registered trademarks of Red Hat, Inc. in the United States and other countries."
+
+#. Tag: para
+#, no-c-format
+msgid "All other trademarks referenced herein are the property of their respective owners."
+msgstr "All other trademarks referenced herein are the property of their respective owners."
+
+#. Tag: para
+#, no-c-format
+msgid "The GPG fingerprint of the security at redhat.com key is:"
+msgstr "The GPG fingerprint of the security at redhat.com key is:"
+
+#. Tag: para
+#, no-c-format
+msgid "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+msgstr "CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E"
+
+#~ msgid "ROLES_OF_TRANSLATORS"
+#~ msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+
+#~ msgid "CREDIT_FOR_TRANSLATORS"
+#~ msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"



More information about the hibernate-commits mailing list